B.6. Mise à jour de sécurité protégée par un pare-feu
Après une installation standard, un système peut toujours avoir des failles de sécurité. À moins de pouvoir télécharger les mises à jour pour les paquets vulnérables depuis un autre système (ou si vous avez fait un miroir de security.debian.org pour utilisation en local), le système devra être connecté à Internet pour les téléchargements.
Cependant, dès que vous vous connecter à Internet, vous exposez le système. Si l'un des services locaux est vulnérable, votre système peut même être compromis avant la fin de la mise à jour ! Cela peut sembler paranoïaque, mais une analyse du
http://www.honeynet.org a démontré que les systèmes peuvent être compromis en moins de trois jours, même si le système n'est pas connu publiquement (c'est-à-dire, non publié dans les enregistrements DNS).
Lorsque vous faites une mise à jour sur un système non protégé par un système externe comme un pare-feu, il est possible de configurer correctement votre pare-feu pour restreindre les connexions n'impliquant que la mise à jour de sécurité elle-même. L'exemple ci-dessous montre comment mettre en place des telles fonctionnalités de pare-feu, ne permettant que les connexions à security.debian.org et en journalisant toutes les autres.
L'exemple suivant permet de configurer un jeu de règles de pare-feu restreint. Exécutez ces commandes depuis une console locale (pas à distance) pour limiter les risques de vous enfermer hors du système.
# iptables -F
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
# iptables -A OUTPUT -d security.debian.org --dport 80 -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A INPUT -j LOG
# iptables -A OUTPUT -j LOG
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
LOG all -- anywhere anywhere LOG level warning
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT 80 -- anywhere security.debian.org
LOG all -- anywhere anywhere LOG level warning
Remarque : l'utilisation d'une règle
DROP dans la chaîne INPUT est la chose la plus correcte à faire, mais soyez
particulièrement attentif lorsque c'est fait après avoir nettoyé la chaîne depuis une connexion distante. Lors d'un test des jeux de règles de pare-feu à distance, il est préférable d'exécuter un script avec le jeu de règles de pare-feu (au lieu d'introduire les règles une à une depuis la ligne de commande) et, par précaution, de garder une porte dérobée
Bien sûr, toutes les portes dérobées devraient être désactivées avant de placer le système en production configurée pour pouvoir réactiver l'accès au système en cas d'erreur. Ainsi, il ne sera pas nécessaire de se déplacer pour corriger un jeu de règles de pare-feu bloquant.
FIXME : cela nécessite un DNS opérationnel puisqu'il est nécessaire pour résoudre security.debian.org. security.debian.org pourrait être ajouté à /etc/hosts mais c'est un nom canonique pour plusieurs hôtes (il y a plus d'un miroir de sécurité).
FIXME : cela ne fonctionnera qu'avec les URL HTTP car FTP peut avoir besoin du module ip_conntrack_ftp ou d'utiliser le mode passif.