Le but de ce document est de fournir quelques astuces pour sécuriser sa Débian.
Moins il y a de services qui fonctionnent, mois la machine est sensible aux attaques, et évidement, plus elle est performante. Vous ne gagnerez pas beaucoup en désactivant quelques services non utilisé, mais c’est toujours ca de gagné. Le fait d’avoir une installation propre rend l’administration plus agréable et plus efficace :)
Commencons déja par mettre à jours notre distribution. Pour plus de sécurité, si vous êtes vraiment très frileux, restez en « stable », sinon vous pouvez passer sans trop de crainte en « unstable » afin d’avoir des mises à jours des packages plus régulieres pour vos applications.
1 2 3 4 | # vi /etc/apt/sources.list deb http://debian-mirror.dedibox.fr/debian/ unstable main deb-src http://debian-mirror.dedibox.fr/debian/ unstable main deb http://security.debian.org/ stable/updates main |
Nous gardons ici les mirroirs dédibox, pour bénéficier de la bonne bande passante :)
Penser a executer # apt-get update si vous modifier le fichier: /etc/apt/sources.list
Pensez à ne jamais dire « oui/yes » lorsqu’on vous propose de passer un applicatif en suid.
Continuons par supprimer les services/packages non nécessaire:
1 2 3 4 5 | # apt-get remove --assume-yes --force-yes lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig # apt-get remove portmap # update-rc.d -f inetd remove # update-rc.d -f ppp remove # update-rc.d -f atd remove |
Vous remarquerez que je n’utilise pas atd … cela n’engage que moi :)
Notons que la plupart des services fonctionnent de nos jours en standalone, donc sauf cas particulier de controle au niveau des connexions (que vous pouvez faire par exemple avec iptables la plupart du temps) inetd n’est pour moi plus nécessaire. On va tout de même le laisser installer, de toute manière il installera un autre super demon si on tente de le supprimer.
Petite touche personnelle, qui n’apporte rien à la sécurité, mais étant donné que c’est un dédié en location, rien ne sert d’avoir 25 consoles de disponibles, donc:
1 | # vi /etc/inittab |
et modifier les lignes suivantes:
1 2 3 4 5 6 | 1:2345:respawn:/sbin/getty 38400 tty1 #2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6 |
Vous gagnerez un peu de mémoire, c’est toujours ca de fait.
Il faut bien évidement rebooter la machine ou lancer un « init q » (merci Sunix) pour que ce soit pris en compte
Un des premiers reflexes à avoir avec SSH est de désactiver la connexion pour root. Cela se fait simplement, en modifiant /etc/ssh/sshd_config avec la ligne suivante suivante:
1 | PermitRootLogin no |
Si vous poussèdez plusieurs utilisateurs systèmes, mais pour des raisons obscures vous ne voulez pas qu’ils puissent se connecter via SSH, vous avez la possibilité via la directive AllowUsers de spécifier qui à le droit de se connecter en SSH. Il existe aussi la directive AllowGroups, pour appliquer cette restriction aux groupes d’utilisteurs.
1 | AllowUsers toto |
Vous pouvez de plus spécifier l’host, sous la forme user@host. SSH vérifira donc la provenance, ce qui permet de rajouter une sécurité simplémentaire.
A noter qu’il existe les directives DenyUsers et DenyGroups, pour faire l’inverse.
Je ne rentrerais pas dans les détails, ce n’est pas le but, mais voici quelques modifications que vous pouvez apporter à votre machine pour la sécuriser et la rendre plus stable.
Il existe bien d’autres valeurs à modifier/changer pour tweaker son systeme, cela n’est qu’un échantillon de ce qu’il est possible de faire avec sysctl.
Smurf Attack
Se protéger contre les Smurf Attack:
1 | # echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts |
Ressources:
* http://www.cert.org/advisories/CA-1998-01.html
* http://en.wikipedia.org/wiki/Smurf_attack
* http://www.networksorcery.com/enp/protocol/icmp/msg0.htm
* http://en.wikipedia.org/wiki/ICMP_Echo_Reply
* http://www.cert.org/tech_tips/denial_of_service.html
* http://en.wikipedia.org/wiki/Denial_of_service
Source routing
Eviter le source routing:
1 | # echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route |
Ressources:
* http://www.iss.net/…/Underground/Hacking/Methods/Technical/Source_Routing/default.htm
Syn Flood
Se protéger des attaques de type Syn Flood:
1 2 3 | # echo "1" > /proc/sys/net/ipv4/tcp_syncookies # echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog # echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter |
Ressources:
* http://www.cert.org/advisories/CA-1996-21.html
* http://www.iss.net/security_center/advice/Exploits/TCP/SYN_flood/default.htm
* Documentation du kernel: Documentation/networking/ip-sysctl.txt
Redirects
Désactivez l’autorisation des redirections ICMP:
1 2 | # echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects |
Bad error messages
Eviter le log des paquets icmp erroné:
1 | # echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses |
Log Martians
Active le logging des packets aux adresses sources falficiées ou non routable:
1 | # echo "1" > /proc/sys/net/ipv4/conf/all/log_martians |



Bonjour, pour inittab, pas besoin de reboot la box (cela n'est pas du Windows :) ).
Un simple 'init q' permet de d'appliquer la modification immédiatement :p