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

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


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

15/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.


3.2. 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 :


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.
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.