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 Table des matières: Introduction Les étapes vers la sécurité |
Améliorer la sécurité de distributions Linux classiquesRé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.
IntroductionLes 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.
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/sync4. 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):
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=goawaySi 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=m8. 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 : denySSH, 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:
Pages RedHat sur la cryptographie chez replay.com:
Amélioration de la sécurité de votre site en le
cassant:
Slashdot est une bonne source pour des informations très récentes:
Restez à jour sur les versions logicielles, visitez FreshMeat
régulièrement:
Explosez la pile:
|
© Michael Jastremski
LinuxFocus 1998 |