Sécuriser sa débian

mai 12th, 2007
|

  • Introduction
  • Le but de ce document est de fournir quelques astuces pour sécuriser sa Débian.

  • Le minimum
  • 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

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

  • /proc, ou comment titiller le kernel
  • 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

    One Comment:

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

    Leave a comment: