Je pense avoir presque terminé la configuration de mon ordinateur 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 le contexte, cette machine est un hôte d'application Web Virtual Private Server.
Dans une question précédente , Lee B a déclaré que je devrais "verrouiller ICMP un peu plus". Pourquoi ne pas simplement le bloquer complètement? Que se passerait-il si je le faisais (quel mal arriverait-il)?
Si je n'ai pas besoin de bloquer ICMP, comment pourrais-je m'y prendre davantage?
Réponses:
ICMP est bien plus qu'un simple "traceroute" et "ping". Il est utilisé pour les commentaires lorsque vous exécutez un serveur DNS (port inaccessible) qui, dans un serveur DNS moderne, peut en fait aider à sélectionner un autre ordinateur à interroger plus rapidement.
Comme indiqué ci-dessus, ICMP est également utilisé pour la découverte du chemin MTU. Il est fort probable que votre système d’exploitation «DF» (ne fragmente pas) sur les paquets TCP qu’il envoie. Il s'attend à récupérer un paquet ICMP "fragmentation requise" si quelque chose le long du chemin ne parvient pas à gérer cette taille de paquet. Si vous bloquez tous les messages ICMP, votre machine devra utiliser d'autres mécanismes de secours qui, fondamentalement, utilisent un délai d'attente pour détecter un "trou noir" du PMTU et n'optimiseront jamais correctement.
De plus, vous devriez vous demander pourquoi vous souhaitez bloquer ICMP. Qu'essayez-vous précisément d'empêcher ici? Il est clair que vous ne comprenez pas à quoi sert ICMP, ce qui est plutôt courant. Je serais extrêmement prudent en bloquant quelque chose que vous ne comprenez pas bien.
Pour en savoir plus sur ce sujet, de nombreux ouvrages sur les pare-feu disent «bloquer ICMP» - il est clair que leurs auteurs n'ont jamais lu de RFC ni n'ont dû résoudre de problèmes entourant de tels conseils. C'est un mauvais conseil de bloquer tous les ICMP.
Maintenant, limiter le taux peut aussi faire mal. Si votre machine est occupée, ou même si ce n'est pas le cas, vous pouvez obtenir une bonne quantité de trafic ICMP. Mon serveur Web reçoit probablement environ 10 à 100 paquets ICMP par minute, dont la plupart sont des fonctions de découverte PMTU. Même si quelqu'un a choisi d'attaquer mon serveur avec des paquets ICMP, ce n'est vraiment pas si grave. Si votre ordinateur accepte même une seule connexion TCP (ssh, http, mail, etc.), il est fort probable que ce soit un vecteur d'attaque plus grand qu'un ICMP mal compris.
la source
redirect
. C'est le seul type ICMP que vous devriez envisager de bloquer.redirect
. Je comprends maintenant que je devrais y réfléchir, mais je ne suis pas mieux loti - je ne peux toujours pas décider d'une manière ou d'une autre :) Est-ce un risque ou non?ICMP est utilisé pour une gamme de fonctions de diagnostic (par exemple, ping, traceroute) et de contrôle de réseau (par exemple, découverte de PMTU). Le blocage indiscriminé de l'ICMP provoque chez toutes les personnes toutes sortes de brûlures d'estomac et, à moins que vous ne sachiez exactement ce que vous faites, vous devriez le laisser tranquille.
la source
Comme je l'ai dit plus haut, je n'ai jamais compris pourquoi les gens utilisent l'horloge ICMP. Cela ne fait que causer des maux de tête à vous-même et aux autres. Vous pouvez déterminer si un hôte fonctionne suffisamment facilement et tant qu'il est suffisamment limité pour ne pas être utilisé comme DOS, je n'ai jamais entendu de raison impérieuse de le bloquer. (Si quelqu'un peut trouver une raison s'il vous plaît poster)
la source
vous pouvez simplement essayer de limiter icmp de cette façon, il ne peut pas être utilisé comme une attaque DOS. mais il y a beaucoup trop d'outils de dépannage tels que ping, mtr (j'oublie l'équivalent windows), traceroute (tracert), qui utilisent icmp. les abandonner entièrement est simplement idiot. C'est un bon moyen de vérifier si votre instance est active bien que vous ne puissiez pas utiliser telnet sur aucun port.
à vos règles icmp est probablement une limite décente compte tenu de tout ce qu'un ordinateur peut réellement gérer.la source
Voici un autre point de vue, dans l’esprit de ce que la théorie de la sécurité suggérerait. D’autres affiches ont raison, les pratiques en matière de sécurité sont souvent excessivement zélées, mais la plupart des bases sont valables.
La théorie de la sécurité est généralement que vous n'activez que CE QU'IL VOUS FAUT. Un attaquant peut également utiliser d'autres éléments (par exemple, les réponses ping) pour analyser votre système, ou éventuellement comme vecteur d'attaque pour une vulnérabilité encore à découvrir.
En regardant les types de messages ICMP, de quoi avez-vous BESOIN pour un fonctionnement normal et correct de votre système?
...etc. Si vous voulez vraiment comprendre cela, allez en apprendre davantage sur les différents types d’ICMP et à quoi ils servent. L' article de Wikipédia est un bon point de départ.
En pratique, le plus moche est redirigé; si vous voulez simplement faire quelque chose de rapide et d’utile, bloquez-le et laissez le reste.
J'ajouterais que le suivi de connexion IPtables autorisera les paquets ICMP de retour appropriés pour les connexions actives. Ainsi, si vous exécutez conntrack, vous devriez pouvoir bloquer la plupart des messages entrants ICMP, tant que vous acceptez les paquets RELATED (avant de bloquer ICMP dans votre jeu de règles).
la source
C'est un outil de diagnostic utile pour résoudre les problèmes de connectivité réseau.
Il vous permet également d'utiliser des connexions ailleurs sur Internet utilisant des MTU plus petits que ceux de votre réseau. Si vous essayez d'envoyer un paquet trop volumineux et ne pouvant pas être fragmenté, l'appareil le supprime et renvoie un paquet nécessaire à la fragmentation ICMP à l'expéditeur. Si vous supprimez tous les paquets ICMP, vous perdez ces événements étranges sur votre réseau.
La vraie question est "pourquoi bloquer ICMP?" Que gagnez-vous? Ayez juste de bonnes règles de filtrage à la frontière et devant vos précieux atouts.
la source
ping est un bon outil de diagnostic, vous souhaiterez vraiment l'avoir un jour. J'utilise ces:
vous voudrez peut-être aussi l'étrangler.
la source
De nos jours, même limiter les paquets ICMP côté serveur peut créer des maux de tête lors d'attaques DDoS. Les attaques sont généralement effectuées en envoyant des demandes ICMP de fenêtre volumineuses à un serveur. Si le serveur tente de répondre à chacune d’elles, devinez ce qui se passe?
La principale chose qui fait que nous avons un serveur teamspeak qui reçoit de mauvais paquets tous les jours, c’était quelques jours en deux mois où nous avions un peu de temps libre. Ce que nous avions fait, c’est que nous avons complètement désactivé / bloqué les réponses ICMP, nous n’avons aucun serveur DNS sur le serveur, aucun serveur NTP, aucun serveur de messagerie, aucun serveur FTP, seulement deux Apache et teamspeak. tous les ports inutiles pour les services sont désactivés. Nous prévoyons de bloquer même le ssh et de ne laisser que deux ports ouverts. Aujourd'hui, il y a 21k (!) Interdictions permanentes.
La situation est que les attaquants utilisent principalement des tunnels ICMP et que peu de lignes de journalisation vraiment intéressantes ont été discutées avec les administrateurs du serveur et qu'ils ont déclaré avoir des requêtes ICMP sur le serveur. Cela semble bizarre mais c'est vrai.
Si vous n'avez pas besoin de diagnostics de votre serveur et si vous êtes capable de bloquer complètement les demandes ou de les filtrer pour supprimer des fenêtres énormes, faites-le. Je vous suggère également de bloquer complètement: la Chine, la Corée, la Thaïlande, la Turquie car la majorité des adresses IP provient de là. J'avais des listes entières de ces pays, mais presque chaque jour, de nouvelles en sortaient.
Je dis ce que je fais, si vous n'êtes pas d'accord - ne le faites pas. Aussi simple que cela. Bonne chance
la source
Au minimum, vous devez autoriser le passage des types icmp 3 (destination inaccessible), 4 (extinction de la source) et 11 (délai dépassé). Tous ces types sont utilisés pour traiter des problèmes de réseau et ne doivent pas être filtrés.
(Le type d'extinction source est actuellement obsolète, mais il ne fera pas de mal de le laisser ouvert)
la source
J'autorise le trafic ICMP depuis l'intranet local, le bloque depuis Internet. De cette façon, mon serveur est quasiment invisible en ligne (il ne répond que sur un port SSH non standard).
Cela l'insère après la boucle de rappel standard, établie, la liste blanche LAN, la liste blanche du fournisseur VOIP et les ACCEPT de port SSH. J'autorise le trafic que je souhaite, puis je fais de mon mieux pour que le serveur reste invisible pour le reste du monde.
la source