57 votes

Pourquoi ne pas bloquer ICMP ?

Je pense que j'ai presque terminé la configuration de mon iptables sur mon système CentOS 5.3. Voici mon script...

# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains

# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP

# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT

# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Block all other traffic 
iptables -A INPUT -j DROP

Pour situer le contexte, cette machine est un hôte d'applications Web Virtual Private Server.

Dans un question précédente Lee B a dit que je devrais "bloquer ICMP un peu plus". Pourquoi ne pas le bloquer complètement ? Que se passerait-il si je faisais cela (quelle mauvaise chose se produirait) ?

Si je ne dois pas bloquer ICMP, comment puis-je m'y prendre pour le verrouiller davantage ?

5voto

Dave Points 864

Il s'agit d'un outil de diagnostic utile pour résoudre les problèmes de connectivité du réseau.

Il vous permet également d'utiliser des connexions ailleurs sur Internet qui utilisent des MTU plus petits que ceux de votre réseau. Si vous essayez d'envoyer un paquet trop volumineux et qui ne peut pas être fragmenté, le périphérique abandonne le paquet et renvoie un paquet ICMP de fragmentation nécessaire à l'expéditeur. Si vous laissez tomber tous les paquets ICMP, vous les perdez et des choses bizarres se produisent sur votre réseau.

La vraie question est "pourquoi bloquer ICMP ?" Qu'est-ce que vous y gagnez ? Il suffit d'avoir de bonnes règles de filtrage à votre frontière et devant vos actifs de valeur.

4voto

neoice Points 864

Ping est un bon outil de diagnostic, vous souhaiterez vraiment l'avoir un jour. J'utilise ceux-ci :

-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT

vous pourriez aussi vouloir l'étrangler.

2voto

Aujourd'hui, même la limitation des paquets ICMP du côté serveur peut créer des maux de tête lors d'attaques DDoS. Les attaques se font principalement en envoyant une énorme fenêtre de requêtes ICMP à un serveur et si le serveur essaie de répondre à chacune d'entre elles, devinez ce qui se passe ?

La chose principale est que nous avons un serveur teamspeak qui reçoit de mauvais paquets tous les jours, il y a eu quelques jours en deux mois où nous avons eu du "temps libre". Ce que nous avons fait est de désactiver/bloquer complètement les réponses ICMP, nous n'avons pas de serveurs DNS sur le serveur, pas de serveurs NTP, pas de serveurs de messagerie, pas de serveurs FTP, seulement deux apaches et teamspeak. tous les ports qui ne sont pas nécessaires pour les services sont désactivés. Nous envisageons de bloquer même le ssh et de ne laisser que deux ports ouverts. Aujourd'hui, il y a 21k ( !) bannissements permanents.

La situation est que les attaquants utilisent principalement des tunnels ICMP et quelques lignes de journal vraiment intéressantes ont été discutées avec les administrateurs du serveur et ils ont dit qu'ils ont des demandes ICMP sur le serveur, donc les attaquants ont utilisé cela pour tunneliser l'attaque à travers eux et nous attaquer. Cela semble bizarre mais c'est vrai.

Si vous n'avez pas besoin de diagnostiquer votre serveur et si vous êtes en mesure de bloquer complètement les requêtes ou de les filtrer afin de supprimer les gros Windows par exemple, alors faites-le. Je vous suggère également de bloquer complètement : Chine, Corée, Thaïlande, Turquie car la majorité des adresses IP proviennent de ces pays. J'avais des listes entières d'adresses IP de ces pays mais presque chaque jour, de nouvelles adresses IP en proviennent.

Je dis ce que je fais, si vous n'êtes pas d'accord, ne le faites pas. C'est aussi simple que cela. Bonne chance

0voto

tvs Points 162

Au minimum, vous devez laisser passer les types icmp 3 (destination inaccessible), 4 (quench source) et 11 (time exceeded). Tous ces types sont utilisés pour traiter les problèmes de réseau et ne doivent pas être filtrés.

iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

(Le type d'extinction de la source est actuellement déprécié, mais il n'y a pas de mal à le laisser ouvert).

-2voto

Furkan Deniz Points 1

J'autorise le trafic ICMP depuis l'intranet local, je le bloque depuis Internet. De cette façon, mon serveur est pratiquement invisible en ligne (il répond uniquement sur un port SSH non standard).

iptables -I INPUT 7 -d 208.180.X.X -p icmp --icmp-type 8  -j DROP
iptables -I INPUT 8 -d 208.180.X.X -p icmp --icmp-type 0  -j DROP
iptables -I INPUT 9 -d 208.180.X.X -p icmp --icmp-type 11 -j DROP

Cela l'insère après les ACCEPTs standard de loopback, établi, liste blanche de LAN, liste blanche de fournisseur de VOIP, et port SSH. J'autorise le trafic que je veux, puis je fais de mon mieux pour que le serveur reste invisible pour le reste du monde.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X