Gérer les règles iptables sous Linux

17

J'ai beaucoup de règles pour ma configuration iptables (routage, interdictions ssh, etc.) J'ai également récupéré une liste d'adresses IP à interdire à partir d'ici http://blacklist.linuxadmin.org et maintenant ça devient vraiment compliqué.

Mon /etc/sysconfig/iptablesest vraiment long. Existe-t-il un moyen de gérer les règles en incluant des règles provenant de fichiers externes?

Par exemple:

#include "pre_routing_rules"
#include "ssh_bans"

Cela inclura les règles ajoutées dans les fichiers "pre_routing_rules" et "ssh_bans". De cette façon, je peux facilement gérer mes règles sans chercher cat /etc/sysconfig/iptables.

peterh - Réintégrer Monica
la source

Réponses:

11

Essayez les ipsets d'iptables . les ipsets sont configurés séparément, et ils sont également plus rapides si vous avez suffisamment d'adresses IP à gérer.

La règle iptables peut faire référence à un ipset comme ceci:

iptables -A FORWARD -m set --set blocklist src, dst -j DROP

Alexey Naidyonov
la source
Mon plus gros problème est avec l'adresse IP, donc je peux l'utiliser.
J'utilise cette fonctionnalité. Mes IP de liste noire / liste blanche sont les plus grandes, donc elles peuvent aller dans un ipset. Je pense que le pré-routage peut rester dans la liste de configuration principale
Ce fil de discussion contient quelques exemples de scripts utilisant des ipsets: forums.gentoo.org/viewtopic-t-863121.html
mivk
3

Une solution simple consiste à utiliser plusieurs scripts bash pour chaque section, quelque chose comme:

iptables-routing.sh
iptables-ssh-bans.sh
iptables-blacklist.sh

Et exécutez ces fichiers à partir d'un script maître.

Andrei Savu
la source
Eh bien, c'est ce que je fais. Mais si je dois afficher la liste des règles iptables (par exemple, cat / etc / sysconfig / iptables), cela me montrera toutes les règles qui ont été ajoutées via iptables-routing.sh iptables-blacklist.sh
2

iptables ne lit pas directement le fichier, ce qui est fait par un programme appelé iptables-restore. Ceci est généralement appelé à partir de l'un de vos scripts d'initialisation.

Vous pouvez ajouter des fichiers d'entrée supplémentaires à votre ligne de restauration iptables. Vous devrez trouver où cette ligne se trouve sur votre système mais sur ma boîte Debain, elle se trouve dans /etc/init.d/nat

La ligne se lit actuellement comme suit:

/sbin/iptables-restore < /etc/network/iptables

Peut-être que cela pourrait être changé en quelque chose comme ceci:

cat /etc/network/iptables \
    /etc/network/pre_routing_tables \
    /etc/network/ssh_bans | /sbin/iptables-restore
Adam Pierce
la source
2

J'ai tendance à utiliser l'un des nombreux scripts / outils de pare-feu sur iptables, comme Firestarter ou Shorewall, ils sont livrés avec de nombreux fichiers, séparés par objectif, ajoutent des règles intéressantes pour se protéger contre certains types de faux paquets et ils fonctionnent généralement bien.

Vinko Vrsalovic
la source
Sont-ils utilisables via la ligne de commande? Mon serveur est distant et je ne préfère vraiment pas faire X avec SSH
Shorewall est un ensemble de fichiers texte plats qui génèrent des règles iptables. Il est très utilisable depuis la ligne de commande et dispose d'excellents outils de documentation et de diagnostic.
Paul Gear
0

Je ne suis pas sûr de la distribution que vous exécutez, car le mien ne possède pas le fichier auquel vous faites référence - mais généralement les fichiers qui contiennent des règles iptables ne sont que des scripts shell - vous devriez donc être en mesure de faire ce que vous voulez en ayant une ligne tel que :

. / etc / sysconfig / pre_routing_rules

ou comme en haut du fichier iptables auquel vous vous référez.

GodEater
la source
J'exécute Fedora et CentOS