HomeMapIndexSearchNewsArchivesLinksAbout LF
[Top Bar]
[BottomBar]
[Photo of theAuthor] 
Michael Jastremski  
A propos de l'auteur: Michael Jastremski a piraté Unix pendant les quatre dernières années. Son site web est à l'adresse http://westphila.net/mike. Il remercie Andrew pour la langue anglaise. 

Table des matières
Introduction 
Les étapes vers la sécurité
 

Améliorer la sécurité de distributions Linux classiques

[Illustration] 

Résumé: Cet article discute quelques manières à la disposition des administrateurs système pour sécuriser leurs systèmes  contre les intrus. Il indique plusieurs façons d'améliorer la sécurité des systèmes Linux. 


Introduction

Les tentatives à large échelles pour compromettre la sécurité des ordinateurs connectés à Internet deviennent monnaie courante. Deplus en plus, les serveurs Linux et FreeBSD sont devenus la cible d'attaques récentes, exploitant des dépassements des mémoires tampons dans les programmes imapd et BIND. Chaque jour, des vulnérabilités de toutes formes et tailles sont révélées au presque 20.000 abonnés de la liste de diffusion BUGTRAQ (si vous devez choisir une seule liste de diffusion concernant la sécurité, c'est celle là). 

Il serait judicieux d'assumer qu'au moins un des 39.305 abonnés va écrire une boucle for() avec un peu de logique et de couper/ coller, dans l'espoir d'accéder efficacement à autant d'ordinateurs que possible. 

Tôt ou tard, la boucle construira l'adresse de votre ordinateur. Il n'est que temps de vous préparer. 

Quoique certains "experts" aient pu dire, installer et maintenir un ordinateur protégé n'est pas une science inaccessible au commun des mortels. Une administration de système réfléchie fournit une bonne protection contre les menaces du réseau mondial. Cet article décrit le précautions que je prends généralement lorsque je configure un système Linux RedHat. Cet article propose des directives pour protéger votre ordinateur des intentions coupables, il ne prétend néanmoins pas être une référence complète. 
 
La suite de l'article présente les étapes qui éviteront à votre installation d'être la prochaine victime de la dernière brêche publiée dans le logiciel de réseau. ATTENTION: si vous n'êtes pas certain de ce que vous faites, ne le faites pas. Certaines de ces étapes supposent de votre part un degré suffisant de connaissance du système. Une bibliographie est proposée à la fin de cet article. 

Etapes vers la sécurité 

1. Enlevez tous les services réseau inutiles de votre système. Moins de façon de se connecter à votre ordinateur implique moins de moyens pour un intrus d'y pénétrer. Mettez en commentaires tout ce que vous n'utilisez pas dans /etc/inetd.conf. Vous n'avez pas besoin de telnet sur cette machine? Désactivez-le. De même pour ftpd, rshd, rexecd, gopher, chargen, echo, pop3d et consorts. N'oubliez pas la commande 'killall -HUP inetd' après l'édition de inetd.conf. Aussi, n'oubliez pas de vérifier le répertoire /etc/rc.d/init.d. Certains services réseau (BIND, démon d'impression) sont des programmes séparés lancés depuis ces scripts. 

2. Installez SSH. SSH est un direct remplacement pour les antiques commandes 'r' de Berkeley. Extrait de la page d'accueil à  http://www.cs.hut.fi/ssh

Ssh (Secure Shell) est un programme pour se connecter sur
une autre machine à travers le réseau, pour exécuter des 
commandes sur une machine distante, et pour déplacer des 
fichier d'une machine à une autre. Il fournit une forte 
autentification et des communications sécurisées à 
travers des canaux non sécurisés.
Il apporte de nombreuses autres fonctionnalités que tout pirate inspiré devrait trouver intéressant. Téléchargez SSH de http://ftp.rge.com/pub/ssh

3. Utilisez vipw(1) pour verrouiller tout les comptes sans ouverture de session (login). Remarquez que sous la distribution RedHat de Linux, les comptes sans nom de programme d'interface utilisateur (shell) sont renvoyés vers /bin/sh, ce qui n'est probablement pas ce que vous souhaitez. Vérifiez aussi qu'aucun de vos comptes n'a de mot de passe nul. Voici un exemple de la partie système du fichier de mots de passe d'un système sûr: 

  daemon:*:2:2:daemon:/sbin:/bin/sync
  adm:*:3:4:adm:/var/adm:/bin/sync
  lp:*:4:7:lp:/var/spool/lpd:/bin/sync
  sync:*:5:0:sync:/sbin:/bin/sync
  shutdown:*:6:0:shutdown:/bin:/sync
  halt:*:7:0:halt:/sbin:/bin:/sync
  mail:*:8:12:mail:/var/spool/mail:/bin/sync
  news:*:9:13:news:/var/spool/news:/bin/sync
  uucp:*:10:14:uucp:/var/spool/uucp:/bin/sync
  operator:*:11:0:operator:/root:/bin/sync
  games:*:12:100:games:/usr/games:/bin/sync
  gopher:*:13:30:gopher:/usr/lib/gopher-data:/bin/sync
  ftp:*:14:50:FTP User:/home/ftp:/bin/sync
  nobody:*:99:99:Nobody:/:/bin/sync                    
4. Enlevez les bits 's' des programmes appartenant à l'administrateur (utilisateur root) qui n'ont pas besoin d'un tel privilège. La commande 'chmod a-s nomFichier' permet de le réaliser. 

Parmi ces programmes, on peut citer (liste non limitative): 

  1. les programmes jamais utilisés,
  2. les programmes qui ne doivent pas être lancés par un utilisateur autre que root,
  3. les programmes que vous utilisez rarement, et donc vous pouvez utiliser su(1) vers root pour les lancer.
J'ai placer une étoile (*) devant tous les programmes que personnellement je désactive. N'oubliez pas que le système utilise certains programmes qui tournent comme utilisateur administrateur (suid root), donc soyez prudents. 

Une alternative serait de créer un groupe spécial 'suidexec', placer les comptes utilisateurs de confiance dans ce groupe. Changez (avec chgrp(1)) le groupe des programmes douteux pour 'suidexec', puis supprimez les permissions d'exécution pour les utilisateurs n'appartenant pas au groupe 'suidexec'. 

    
# find / -user root -perm "-u+s"    
*/bin/ping              
*/bin/mount              -- administrateur seul devrait monter les systèmes de fichiers
*/bin/umount             -- idem
/bin/su                  -- ne pas modifier!
/bin/login
/sbin/pwdb_chkpwd
*/sbin/cardctl           -- utilitaire de controle des cartes PCMCIA
*/usr/bin/rcp            -- utiliser ssh
*/usr/bin/rlogin         -- idem
*/usr/bin/rsh            --  "
*/usr/bin/at             -- utiliser cron, ou désactiver les deux
*/usr/bin/lpq            -- installer LPRNG
*/usr/bin/lpr            -- "
*/usr/bin/lprm           -- "
*/usr/bin/mh/inc
*/usr/bin/mh/msgchk
/usr/bin/passwd          -- ne pas modifier! 
*/usr/bin/suidperl       -- chaque nouvelle version semble 
                            présenter des dépassements de mémoire tampons
*/usr/bin/sperl5.003     -- seulement si nécessaire
/usr/bin/procmail        -- 
*/usr/bin/chfn
*/usr/bin/chsh
*/usr/bin/newgrp
*/usr/bin/crontab               
*/usr/X11R6/bin/dga      -- nombreux dépassements des tampons
                            dans X11 aussi
*/usr/X11R6/bin/xterm    -- "
*/usr/X11R6/bin/XF86_SVGA   -- "    
*/usr/sbin/usernetctl           
/usr/sbin/sendmail
*/usr/sbin/traceroute    -- vous pouvez taper le mot de passe d'administrateur
                             de temps en temps!
5. Mettez à jour sendmail. Téléchargez le source de ftp://ftp.sendmail.org/pub/sendma il. Extrayez-le et lisez les instructions. Installez smrsh (fourni avec sendmail) si vous avez un peu de temps. Ce programme résout les soucis que se font de nombreuses personnes vis à vis de sendmail, comme par exemple les envois de messages à des programmes. Editez le fichier de configuration (sendmail.cf) et indiquez 'goaway' pour le paramètre 'PrivacyOption':
        O PrivacyOptions=goaway
Si vous ne prévoyez pas de recevoir des messages par internet, N'UTILISEZ PAS SENDMAIL EN MODE RECEPTION (sendmail -bd)! Dans ce cas, désactivez /etc/rc.d/init.d/sendmail.init puis lancez la commande 'killall -TERM sendmail'. Vous pourrez toujours envoyer du courrier électronique.

6. Mettez à jour BIND si vous l'utilisez. La dernière version se trouve à l'adresse http://www.isc.org . Sinon, désactivez-le complètement. 

7. Recompilez le noyau. Généralement, je le fais simplement pour réduire la taille du noyau. CONSEIL: activez les options de pare-feu (firewall) même si votre ordinateur n'et pas un pare-feu.

       
        CONFIG_FIREWALL=y
        CONFIG_NET_ALIAS=y
        CONFIG_INET=y
        # CONFIG_IP_FORWARD is not set
        # CONFIG_IP_MULTICAST is not set
        CONFIG_SYN_COOKIES=y
        CONFIG_RST_COOKIES=y
        CONFIG_IP_FIREWALL=y
        CONFIG_IP_FIREWALL_VERBOSE=y
        # CONFIG_IP_MASQUERADE is not set
        # CONFIG_IP_TRANSPARENT_PROXY is not set
        CONFIG_IP_ALWAYS_DEFRAG=y
        CONFIG_IP_ACCT=y
        # CONFIG_IP_ROUTER is not set
        # CONFIG_NET_IPIP is not set
        CONFIG_IP_ALIAS=m
8. Appliquer les corrections: tous les problèmes connus avec les logiciels impliqués sont répertoriés aux pages errata de RedHat (voir http://www.redhat.com/support/docs/errata.html  pour déterminer les corrections s'appliquant à votre version). RedHat réalise un gros travail pour tenir à jour ces pages. Elles comportent également des liens vers les fichiers RPM à utiliser, avec les instructions pour l'installation.

9. Configurez le programme tcp_wrappers: tcp_wrappers est une méthode pour contrôler quels ordinateurs sur le 'net(c) sont autorisés à communiquer avec votre machine. Cet ensemble, écrit par le guru de la sécurité Wieste Venema, s'établit en frontal des programmes lancés par inetd (ou ceux liés avec sa bibliothèque), et détermine à partir de son fichier de configuration si une transaction réseau doit être autorisée ou refusée. Par exemple, pour autoriser telnet & ftp depuis chez vous par votre fournisseur d'accès Internet, tout en interdisant tout le reste, placez les lignes suivantes dans /etc/hosts.allow: 

        in.ftpd : .dialup.your-isp.com : allow
        all : all : deny 
SSH, sendmail et les autres ensembles logiciels peuvent être compilés avec le support pour tcp_wrappers. Lisez les pages du manuel tcpd(1) pour plus de détails.
 

Corrections pour sécuriser Linux par Solar Designer: 
http://www.false.com/security/linux/ 

Pages RedHat sur la cryptographie chez replay.com: 
http://www.replay.com/redhat/ 

Amélioration de la sécurité de votre site en le cassant: 
http://www.alw.nih.gov/Security/Docs/admin-guide-to-cracking.101.html 

Slashdot est une bonne source pour des informations très récentes:
http://www.slashdot.org 

Restez à jour sur les versions logicielles, visitez FreshMeat régulièrement: 
http://www.freshmeat.net 

Explosez la pile: 
http:/ /reality.sgi.com/nate/machines/security/P49-14-Aleph-One


Traduit par Jean-Denis Girard

© Michael Jastremski 
LinuxFocus 1998