Vous êtes sur la page 1sur 12

Debian Lenny - lments de scurisation

Debian GNU/Linux

Matthieu Vogelweith 24 fvrier 2009

Rsum
Ce document a t rdig en LaTeX en utilisant lexcellent Vim sous Debian GNU/Linux. Il est A disponible aux formats XHTML et PDF. Les sources LaTeX sont disponibles ici : LTEX

Licence
Copyright c 2009 Matthieu VOGELWEITH <matthieu@vogelweith.com>. Vous avez le droit de copier, distribuer et/ou modier ce document selon les termes de la GNU Free Documentation License, Version 1.3 ou ultrieure publie par la Free Software Foundation ; avec aucune section inaltrable, aucun texte de premire page de couverture, et aucun texte de dernire page de couverture. Une copie de la licence est disponible dans la page GNU Free Documentation License.

Table des matires


Table des matires 1 Les bases 1.1 Un systme minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Systme de messagerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Pare feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Surveillance des journaux 2.1 Logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Personnalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Les mises jour de scurit 3.1 Mises jour APT . . . . . . 3.2 Checkrestart . . . . . . . . 3.3 Cron-apt . . . . . . . . . . 3.4 La liste de diffusion Security 4 Intgrit du systme 4.1 Prsentation . . 4.2 debsums . . . . 4.3 rkhunter . . . . . 4.4 integrit . . . . . 3 4 4 4 4 5 5 5 6 6 6 7 7 8 8 8 8 9

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

5 Scurit des services 10 5.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.2 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6 Rfrences 11

Chapitre 1

Les bases
1.1 Un systme minimal

- Le script necessaire install.

1.2

Systme de messagerie

- reception des alertes mails

1.3

Pare feu

En complment des lments indiqus dans cette page, il est indispensable de protger la machine par un pare feu adapt aux services qui tournent sur la machine. La mise en place dun pare feu bas sur Shorewall est dtaille dans le document suivant : [1].

Chapitre 2

Surveillance des journaux


2.1 Logcheck

La surveillance des journaux est essentielle pour apprcier ltat dun systme. Cette surveillance est par contre trs complexe dans le sens ou il faut arriver dtecter simplement les messages critiques des messages dinformations. Pour cela il existe plusieurs outils qui vont "purer" les journaux automatiquement pour ne remonter que les informations qui ncessite une attention particulire. Parmi eux on peut distinguer Logcheck [2] qui est la fois trs puissant et trs souple dans sa conguration. Linstallation se fait avec la commande suivante :
# aptitude install logcheck logcheck - database

Le paquet supplmentaire logckeck-database install avec la commande ci-dessus fournit un ensemble de rgles permettant de ltrer les journaux. Pour chaque service, il fournit une ou plusieurs expression rgulires qui excluent les informations "non critique" des journaux.

2.2

Personnalisation

Il est tout a fait possible dajouter de nouvelles rgles pour afner le traitement des journaux. Par exemple, on peut estimer quil nest pas intressant de recevoir les lignes indiquant que Shorewall a "DROPPER" un paquet. Pour cela, il suft de crer un chier /etc/logcheck/ignore.d.server/shorewall contenant la ligne suivante :
^\ w {3} [ :[: digit :]]{11} [. _ [: alnum :] -]+ kernel : \[[ 0 -9\.]*\] Shorewall :[[: alnum :]]+: DROP : IN =

Ainsi, les journaux seront conservs dans le syslog mais ne seront pas reports par logcheck dans lalerte. Par ailleurs, voici un chier contenant quelques rgles utiles pour afner le traitement des journaux que lon peut mettre dans un chier /etc/logcheck/ignore.d.server/custom : [3]

Chapitre 3

Les mises jour de scurit


3.1 Mises jour APT

Dans /etc/apt/sources.lists :
# Security updates deb http :// security . debian . org / lenny / updates main contrib non - free

Faire des mises jour journalires, aid par exemple de cron-apt.

3.2

Checkrestart

Aprs une mise jour de scurit, il est important de vrier que tous les services impacts par ces mises jour ont bien t redmarrs. Lors de la mise jour dune library par exemple, il est possible que des services utilisent encore lancienne version de la library jusqua ce quils soient redmarrs. Pour dtecter ce type de problmes, le paquet debian-goodies fournit lutilitaire checkrestart qui va rechercher tous les services utilisant une version obsolte dun librairie :
# aptitude install debian - goodies # checkrestart Found 12 processes using old versions of upgraded files (1 distinct program ) (1 distinct packages ) Of these , 1 seem to contain init scripts which can be used to restart them : The following packages seem to have init scripts that could be used to restart them : apache2 -mpm - prefork : 27676 / usr / sbin / apache2 31279 / usr / sbin / apache2 30910 / usr / sbin / apache2 5565 / usr / sbin / apache2 2047 / usr / sbin / apache2 26909 / usr / sbin / apache2 25558 / usr / sbin / apache2 25991 / usr / sbin / apache2 30891 / usr / sbin / apache2 30628 / usr / sbin / apache2 31289 / usr / sbin / apache2 31288 / usr / sbin / apache2

These are the init scripts : / etc / init .d/ apache2 restart

Dans lexemple ci-dessus, checkrestart a dtect que Apache utilise une version obsolte dun chier mis jour par APT. Aprs un redmarrage dApache, le commande reportera :
# checkrestart Found 0 processes using old versions of upgraded files

3.3

Cron-apt

Cron-APT est un outil qui permet de mettre jour la liste des paquets disponibles et de tlcharger les paquets mettre jour. Loutil permet dexcuter de manire automatique nimporte quelle commande apt-get ou aptitude et de fournir un rapport sur lexcution de la commande. Attention, utiliser cron-apt pour installer automatiquement les mises jour est trs dangereux ! La conguration de base permet de mettre jour la liste des paquets toutes les nuits et de tlcharger les nouveaux paquets de manire a acclrer la procdure de mise jour qui sera faite manuellement par un administrateur. Linstallation se fait tout simplement avec la commande suivante :
# aptitude install cron - apt

Par dfaut, cron-apt fait dj bien le boulot mais on peut modier un peu la conguration pour utiliser aptitude au lieu de apt-get par exemple. Toute la conguration se fait dans le chier /etc/cron-apt/cong :
APTCOMMAND =/ usr / bin / aptitude MAILTO =" root " MAILON =" upgrade "

De cette faon, lutilisateur root recevra un mail chaque fois quun paquet dispose dune mise jour dans les dpts ofciels ou de scurit.

3.4

La liste de diffusion Security

Cron-APT permet dtre noti chaque nouvelle mise jour disponible. Si lon dsire tre prvenu en temps rl et obtenir plus de dtails sur les mises jours, un bon point de dpart est de sinscrire sur le liste de diffusion debian-security-announce [4].

Chapitre 4

Intgrit du systme
4.1 4.2 Prsentation debsums

# aptitude install debsums

# debsums_init

# debsums | grep -v OK

Lancement en cron.daily ?

4.3

rkhunter

- Installation de rkhunter [5]


# aptitude install rkhunter

- Modication de la conguration pour correspondre la conguration SSH ralise ci-dessous. Dans /etc/rkhunter.conf :
ALLOW_SSH_ROOT_USER = no

- Mise jour des bases


# rkhunter -- update # rkhunter -- propupd

4.4

integrit

- Installation de integrit [6]


# aptitude install integrit

- Conguration dans /etc/integrit/integrit.conf


root =/ known =/ var / lib / integrit / known . cdb current =/ var / lib / integrit / current . cdb !/ dev !/ sys !/ home !/ proc !/ tmp !/ var

- Initialisation :
# integrit -C / etc / integrit / integrit . conf -u # mv / var / lib / integrit / current . cdb / var / lib / integrit / known . cdb # integrit -C / etc / integrit / integrit . conf -c

- Dans /etc/integrit/integrit.debian.conf
CONFIGS ="/ etc / integrit / integrit . conf "

Cron execute tous les jours.

Chapitre 5

Scurit des services


5.1 Gnralits

De manire gnrale, tous les services qui offrent un accs extrieur doivent tre lobjet dune attention particulire. Lide premire est de ne laisser transiter aucune information sensible en clair sur le rseau. Pour cela, la plupart des services proposent maintenant un support SSL qui permet de chiffrer les communications et de sassurer de lidentit du service distant. Par ailleurs, les diffrents services offrent souvent la possibilit dtre excuts avec un utilisateur ddi. Cette fonctionnalit permet de cloisonner chaque service et doit tre utilise aussi souvent que possible pour limiter la porte dune eventuelle corruption.

5.2

SSH

Le serveur ssh permet dobtenir un contrle total sur une machine et est un outil quasiment indispensable pour administrer les serveurs distants. Les possibilits offertent par ce service tant trs vastes, une attention particulire doit tre accorde lors de sa conguration. Initialement cette conguration est dj compltement fonctionnelle, on peut simplement modier quelques options pour amliorer la scurit dans le chier /etc/ssh/sshd_cong :
PermitRootLogin no X11Forwarding no AllowUsers admin

Bien entendu, les modications seront prises en compte aprs un re-dmarrage du service :
# / etc / init .d/ ssh restart

Notons quavec la conguration ci-dessus, seul lutilisateur admin pourra se connecter en SSH. An de lutter de manire efcace contre les attaques en "brute force", il est galement possible de limiter le nombre de connexion SSH ralise par secondes. Cette conguration doit tre ralise avec une macro shorewall commen indiqu dans le document ddi ce service [1].

10

Chapitre 6

Rfrences
[1] Mise en place de shorewall. www.vogelweith.com/debian_server/02_shorewall.php. [2] Logcheck. www.logcheck.org. [3] Personnalisation des rgles logcheck. www.vogelweith.com/downloads/logcheck_custom. [4] La liste debian security announce. lists.debian.org/debian-security-announce/. [5] Rootkit hunter. rkhunter.sourceforge.net. [6] Integrit. sourceforge.net/projects/integrit/. [7] Site ofciel du projet debian. www.debian.org. [8] La page debian security. www.debian.org/security/.

11