Installation et sécurisation d'une station Debian 3.0 stable15/05/2004
3. PREMIER ACCES AU SYSTEME ET SECURISATION MINIMALE
3.1. Logguez vous sous votre utilisateur puis en root.
3.2. Lancez Dselect
3.3. Fichiers de configuration de l'environnement administrateur.
3.4. Fichiers de configuration de l'environnement super-utilisateur.
3.5. Sécurisation minimale (en mode super-utilisateur)
3.6. Recompilation du noyau pour le support firewall ipchains
3.7. Configuration du firewall Ipchains
3.8. Mise à jour sécurite du système (super-utilisateur)
3. PREMIER ACCES AU SYSTEME ET SECURISATION MINIMALE
Vous venez de finir la configuration initiale du système et votre station n'est
normalement pas encore connectée au réseau.
3.1. Logguez 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.
-
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 :
3.3. 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
3.4. Fichiers de configuration de l'environnement super-utilisateur.
Logguez 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
3.5. 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 facon à 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
Editez /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'.
3.6. 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 ou 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
selectionné.
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
Editer 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
3.7. 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
3.8. Mise à jour sécurite 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
Copyright (c) 2003 Simon Castro, scastro [ at ] entreelibre.com.
Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.2 or any later version
published by the Free Software Foundation; with the Invariant Sections being
LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the
Back-Cover Texts being LIST.
You must have received a copy of the license with this document and it should
be présent in the fdl.txt file.
If you did not receive this file or if you don't think this fdl.txt license is
correct, have a look on the official http://www.fsf.org/licenses/fdl.txt
licence file.
|