Mon réseau est complètement verrouillé, à l'exception de quelques sites qui sont sur liste blanche. Tout cela se fait via iptables, qui ressemble à ceci:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...
Évidemment, ces adresses sont hypothétiques, mais vous voyez l'idée. Mon pare-feu devient énorme. Il serait beaucoup plus facile à entretenir si je pouvais simplement faire ceci:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
Je crois que cela est possible, car man iptables
dit:
L'adresse peut être soit un nom de réseau, un nom d'hôte (veuillez noter que la spécification d'un nom à résoudre avec une requête distante telle que DNS est une très mauvaise idée), une adresse IP réseau (avec / mask), ou une adresse IP ordinaire.
Mais ce qui m'inquiète, c'est la partie qui dit "spécifier tout nom à résoudre avec ... DNS est une très mauvaise idée". pourquoi est-ce une mauvaise idee? Est-ce que cela ralentit tout?
Si je ne devrais vraiment pas utiliser de noms d'hôtes dans les règles iptables, que dois-je faire pour simplifier mon pare-feu?
la source
Réponses:
Si votre but est de bloquer l'accès HTTP, alors vous êtes généralement bien mieux de mettre en place un logiciel conçu pour filtrer à ce niveau (par exemple squid + squidquard).
la source
Si vous utilisez des noms d'hôtes dans votre pare-feu, votre pare-feu dépend maintenant du DNS. Cela ouvre le pare-feu à un certain nombre de problèmes:
Si vous utilisez des noms d'hôtes et que vous ne contrôlez pas le DNS, quelqu'un d'autre contrôle efficacement vos règles IPtables. Les erreurs, les erreurs ou les problèmes de sécurité de leur côté deviennent des problèmes pour vous.
La seule fois où j'ai vu des noms d'hôtes bien utilisés est pour les opérations internes. J'ai travaillé dans un bureau où des adresses IP et des noms d'hôtes ont été attribués via DHCP. Les pare-feu utilisaient des noms d'hôtes pour mettre des barrières entre différents groupes. Comme tout était contrôlé en interne, cela fonctionnait bien.
la source
Vous pouvez utiliser un wrapper autour d'iptables comme shorewall pour rendre vos règles plus faciles à maintenir.
la source
Comme les autres l'ont déjà dit, vous ne devez pas utiliser de noms résolvables DNS dans les règles iptables. Ils sont inexacts, contrôlés par des tiers et sont généralement une mauvaise chose (tm). J'ajouterais également que votre DNS peut échouer ou être inaccessible au moment où le service iptables démarre. Dans ce cas, la règle ne sera pas ajoutée du tout et un tout nouveau type de problèmes peut survenir (comme la perte de l'accès ssh après le redémarrage).
Ce que vous pouvez faire, c'est:
ipset
s pour regrouper et séparer les adresses des règlesDe plus, personne n'a dit de mal à propos des noms d'hôtes qui ne sont pas résolus par DNS (c'est-à-dire qui sont spécifiés dans
hosts
. Vous pouvez les utiliser si vous en avez vraiment besoin)la source
ipset
c'est la réponse. Avec un script exécuté à partir de crontab pour mettre à jour l'ipset.Personnellement, j'attribue un nom d'hôte à une adresse IP manuellement dans / etc / hosts , puis je l'utilise dans iptables.
De cette façon, vous
la source