Filtrage basique via iptables

Bonjour,

Sur un VPS Ubuntu fraîchement installée, j'essaie de configurer un filtrage firewall basique des flux entrants via ipables (ufw a été désinstallé) mais je constate un comportement étrange.

Ma configuration est simple :

sudo iptables -L -v
Chain INPUT (policy DROP 243 packets, 9281 bytes)
 pkts bytes target     prot opt in     out     source               destination
14620 1117K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
    8   540 ACCEPT     all  --  lo     any     anywhere             anywhere

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Le problème est que lorsque je configure la chaîne INPUT avec une policy par défaut à DROP comme ci-dessus, je ne peux plus accéder à l'extérieur (plus de résolution DNS, plus de ping même sur une IP telle que 8.8.8.8, plus de ping sur la gateway par défaut). Si je configure la chaîne INPUT avec une policy par défaut à ACCEPT, j'ai de nouveau accès à l'extérieur, mais du coup le filtrage ne sert plus à rien...

Je ne comprends pas pourquoi filtrer les flux entrants me coupe les flux sortants. Quelqu'un aurait-il une idée de la raison de ce comportement ?

Bonjour,

Je serais tenté de dire que les requêtes DNS de base se faisant en UDP, la réponse devient une connexion entrante et sera donc filtrée.

Salut,

Après ton DROP sur la chaine INPUT :

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser les résolutions de noms
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT