III. Premier accès au système et sécurisation minimale▲
Vous venez de finir la configuration initiale du système et votre station n'est normalement pas encore connectée au réseau.
III-A. Loguez vous sous votre utilisateur puis en root.▲
i.e. : connectez vous avec votre utilisateur en mode console, puis entrez la commande 'su -' pour obtenir l'identité super-utilisateur.
III-B. Lancez Dselect▲
- Update
- 'Select' et sélectionnez les packages que vous désirez à partir du CD-ROM (vim, gpm, emacs, etc…)
- 'Install'
NDR : Même si vous ne sélectionnez rien, passez quand même par les étapes 'Update' et 'Install'.
NDR : Il est conseillé de ne pas faire plusieurs choses à la fois : Installation minimale, puis installation des packages absolument nécessaires, puis installation du serveur X par exemple.
NDR : Il FORTEMMENT conseille de n'installer que le STRICT necessaire.
Finissez en lancant les commandes updatedb et mandb
Man : dselect, apt, updatedb et mandb.
Sécurisez un minimum le système :
III-C. Fichiers de configuration de l'environnement administrateur.▲
NDR : J'appelle environnement administrateur, l'environnement des utilisateurs qui auront la possibilité d'administrer la station.
Ajoutez un fichier ~/.bash_logout contenant :
case "`tty`" in
/dev/tty[0-9]) clear
esac
Ajoutez un fichier ~/.bash_profile contenant :
umask 027
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Modifiez le fichier ~/.bashrc pour y faire figurer :
export TMOUT=300
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -l'
alias la='ll -A'
alias l='ll -CF'
alias do_term='eval `tset -s -Q vt100`'
alias show_process='ps ax -o user,pid,command'
# Décommentez ici si vous souhaitez ce type de prompt
# export PS1='\e[1;34m\u\e[0m@\h:[\e[1;31m\t\e[0m]:\e[1;32m\w\e[0m\$ '
Ajoutez un fichier ~/.inputrc contenant :
set bell-style none
"\C-a": beginning-of-line
"\C-e": end-of-line
"\C-b": backward-word
"\C-f": forward-word
"\C-k": kill-line
"\C-j": backward-kill-line
"\C-x": kill-word
"\C-w": backward-kill-word
"\C-r": reverse-search-history
"\C-t": forward-search-history
"\C-space": set-mark
"\C-h": kill-region
"\C-y": yank
"\C-u": undo
source ~/.bashrc => pour utiliser les paramètres du fichier modifié.
chmod 750 /home/username => gestion de droits.
chmod 640 ~/.bash* => gestion de droits.
chmod 640 ~/.inputrc
Man : bash, chmod, chown
III-D. Fichiers de configuration de l'environnement super-utilisateur.▲
Loguez-vous en root et mettez en place les fichiers de configuration suivants :
~/.bashrc
umask 027
export TMOUT=300
export PS1='!!!ROOT!!!@\h:\w\$ '
export HISTFILE=/dev/null
alias l='ls'
alias ll='l -l'
alias la='ll -a'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias userdel='echo "Why not deluser ?"'
alias useradd='echo "Why not adduser ?"'
~/.bash_logout
case "`tty`" in
/dev/tty[0-9]) clear
esac
Ajoutez un fichier ~/.inputrc contenant :
set bell-style none
chmod 750 /root
chmod 640 ~/.bash* ~/.profile
chmod 640 ~/.inputrc
III-E. Sécurisation minimale (en mode super-utilisateur)▲
Man : init, update-rc.d
Inetd :
Commentez l'intégralité du fichier /etc/inetd.conf.
/etc/init.d/inetd stop # Arrêt du service
update-rc.d -f inetd remove # Suppression des services demarrés au boot.
Man : inetd, inetd.conf Dans /etc/rc2.d, supprimez tous les services non obligatoires : lpd, nfs-common, portmap Sshd : Dans /etc/ssh/sshd_config
PermitRootLogin no
RSAAuthentication no
PubkeyAuthentication no
Banner /etc/issue.net
ChallengeResponseAuthentication no
ClientAliveInterval 20
ClientAliveCountMax 3
GatewayPorts no
LoginGraceTime 60
Dans /etc/ssh/ssh_config :
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
StrictHostKeyChecking ask
Finissez par /etc/init.d/ssh restart
Et notez le fingerprint SSH.
Man : sshd, sshd_config
Bannière de login :
Dans /etc/issue.net et /etc/issue, entrez une bannière légale présentant les restrictions d'accès au système.
Vous pouvez par exemple utiliser un message du type :
**********************************************************
*** Serveur {HOSTNAME} ***
*** (@IP) ***
**********************************************************
*** ***
*** Consultez les articles 323.1 a 323.3 du Nouveau ***
*** Code Pénal relatifs aux autorisations d'accès à ce ***
*** système. ***
**********************************************************
*** Toutes les connexions et accès à ce système font ***
*** l'objet d'un enregistrement. ***
**********************************************************
Dans /etc/securetty, commentez toutes les lignes commencant par tty.
NDR : L'action précédente supprimera toute possibilité de vous connecter avec l'utilisateur 'root' en mode console. Vous devrez désormais vous connecter avec un utilisateur puis entrer la commande 'su'.
Man : login, issue, securetty
Modifiez /etc/lilo.conf de façon à obtenir ces lignes :
password=motdepasse
delay=100
default=Linux
image=/vmlinuz
label=Linux
read-only
restricted
Puis :
lilo
chmod 640 /etc/lilo.conf
Man : lilo, lilo.conf
Syslogd :
cp /etc/syslog.conf /etc/syslog.conf.orig
chmod 640 /etc/syslog.conf
Éditez /etc/syslog.conf pour supprimer les lignes :
# Logging for INN news system
#
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
daemon.*;mail.*;\
news.crit;news.err;news.notice;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole
lpr.* -/var/log/lpr.log
uucp.* /var/log/uucp.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
Supprimez tous les '-' devant les noms de fichiers.
Supprimez tous les commentaires restant après *.emerg.
Décommentez la ligne
cron.* /var/log/cron.log
Redémarrez le démon syslogd :
/etc/init.d/sysklogd restart
Effacez les fichiers de log superflus :
cd /var/log && rm -rf mail.err mail.info mail.warn lp* news/ uucp.log
Man : syslogd, syslog.conf
Dans le répertoire '/etc/cron.weekly', commentez toutes les lignes du fichier 'lpr'.
III-F. Recompilation du noyau pour le support firewall ipchains▲
NDR : Le noyau que nous configurons ici ne doit pas être considéré comme le noyau final. Une documentation abondante est présente sur Internet de même que dans le répertoire Documentation figurant dans les sources du noyau.
NOTE : Si vous utilisez le package de la version 2.2.20 comme présenté dans cette documentation, prenez garde à ne pas activer la fonctionnalité 'kernel loader' pour éviter la faille 'ptrace' ou pensez à patcher, sécuriser votre système.
Lancez dselect et ajoutez le package relatif aux sources du noyau que vous désirez installer. L'installation suivante, relative au noyau 2.2.20 devrait cependant être identique quelque soit le noyau 2.2.x dont vous installez les sources.
cd /usr/src
tar xjvf kernel-source-2.2.20.tar.bz2
mv kernel-source-2.2.20 kernel-source-2.2.20-fw
ln -s kernel-source-2.2.20-fw linux && cd linux
Au cas où vous ne suivriez pas cette doc… : make clean && make mrproper Configurez le noyau :
sed 's/^EXTRAVERSION\ =$/EXTRAVERSION\ =\ -fw/' Makefile > .fw
cat .fw > Makefile && rm -f .fw
make menuconfig
Ajoutez les options suivantes au noyau installe :
'Networking Options -> Network firewalls'
'Networking Options -> Ip : Firewalling (NEW)'
Dans 'Network Device Support', vérifiez que votre pilote de carte réseau est sélectionné.
Quittez et sauvez la configuration
Compilez le noyau :
make dep && make modules && make bzImage
Installez le nouveau noyau :
cp arch/i386/boot/bzImage /boot/vmlinuz-2.2.20-fw
cp System.map /boot/System.map-2.2.20-fw
cd /boot/
ln -s vmlinuz-2.2.20-fw linux
ln -s vmlinuz-2.2.20-compact linux_fst
Installez les modules :
cd /usr/src/linux && make modules_install
Éditez le fichier /etc/lilo.conf pour obtenir :
default=linux22
image=/boot/linux
label=linux22
read-only
restricted
image=/boot/linux_fst
label=backup22
read-only
Lancez la commande 'lilo' pour mettre à jour le système.
Rebootez le système.
Si tout c'est bien passé, sauvegardez la configuration :
cp /usr/src/linux/.config /boot/config-2.2.20-fw
III-G. Configuration du firewall Ipchains▲
Man : ipchains, sysctl, sysctl.conf
Créez le répertoire pour le stockage des scripts du firewall :
mkdir -p /home/system/scripts/fw
chown -R root:adm /home/system
chmod 4750 /home/system
Créez les scripts d'activation/désactivation du firewall (voir Annexe 1 - Paramètrage du firewall Ipchains) :
/home/system/scripts/fw/rules_down_ipchains.sh
/home/system/scripts/fw/rules_up_ipchains.sh
Mettez les droits en place :
chmod 750 /home/system/scripts/fw/*
Créez le script /etc/init.d/init_ipchains.sh (voir Annexe 1 - Paramétrage du firewall Ipchains).
Donnez les droits au script : 'chmod 750 /etc/init.d/init_ipchains.sh'
Ajoutez le script pour le démarrage du système :
update-rc.d init_ipchains.sh defaults
Activez le firewall : /etc/init.d/init_ipchains.sh start
/etc/init.d/init_ipchains.sh start
III-H. Mise à jour sécurité du système (super-utilisateur)▲
Vous pouvez maintenant brancher la machine sur le réseau.
Ajoutez le fichier /etc/apt/apt.conf contenant :
DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt || true";};
Acquire::http::Proxy "http://@IP_PROXY:8080/";
Commentez toutes les lignes dans /etc/apt/sources.list
Ajoutez dans /etc/apt/sources.list :
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main non-free
deb http://security.debian.org stable/updates main contrib non-free
apt-get update
apt-get dist-upgrade