IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Installation et sécurisation d'une station Debian 3.0 stable


précédentsommairesuivant

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 :

 
Sélectionnez
case "`tty`" in
					/dev/tty[0-9]) clear
					esac

Ajoutez un fichier ~/.bash_profile contenant :

 
Sélectionnez
umask 027
if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi

Modifiez le fichier ~/.bashrc pour y faire figurer :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
~/.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 ?"'
 
Sélectionnez
~/.bash_logout
case "`tty`" in
  /dev/tty[0-9]) clear
esac

Ajoutez un fichier ~/.inputrc contenant :

 
Sélectionnez
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.

 
Sélectionnez
/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

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
**********************************************************
***                  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 :

 
Sélectionnez
password=motdepasse
delay=100
default=Linux
image=/vmlinuz
label=Linux
read-only
restricted

Puis :

 
Sélectionnez
lilo			
chmod 640 /etc/lilo.conf

Man : lilo, lilo.conf
Syslogd :

 
Sélectionnez
cp /etc/syslog.conf /etc/syslog.conf.orig
chmod 640 /etc/syslog.conf

Éditez /etc/syslog.conf pour supprimer les lignes :

 
Sélectionnez
# 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

 
Sélectionnez
cron.*                          /var/log/cron.log

Redémarrez le démon syslogd :

 
Sélectionnez
/etc/init.d/sysklogd restart

Effacez les fichiers de log superflus :

 
Sélectionnez
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.

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
make dep && make modules && make bzImage

Installez le nouveau noyau :

 
Sélectionnez
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 :

 
Sélectionnez
cd /usr/src/linux && make modules_install

Éditez le fichier /etc/lilo.conf pour obtenir :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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) :

 
Sélectionnez
/home/system/scripts/fw/rules_down_ipchains.sh
/home/system/scripts/fw/rules_up_ipchains.sh

Mettez les droits en place :

 
Sélectionnez
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 :

 
Sélectionnez
update-rc.d init_ipchains.sh defaults

Activez le firewall : /etc/init.d/init_ipchains.sh start

 
Sélectionnez
/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 :

 
Sélectionnez
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 :

 
Sélectionnez
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

précédentsommairesuivant

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.