web-dev-qa-db-fra.com

iptables: autorise certaines ips et bloque toutes les autres connexions

Comment autoriser certains IPS et bloquer toutes les autres connexions dans iptables?

27
David

J'ai écrit un article de blog sur les règles de base d'Iptables pour l'utilisateur de burea il y a longtemps et vous devriez probablement le lire, et son article lié sur Conception d'un pare-feu dynamique . Mais pré noyau 2.6.39 (qui inclut ipset et vous voudrez peut-être l'utiliser pour ajouter des IP à la liste blanche si vous avez plus de 10 à ajouter à la liste blanche (où 10 est arbitraire)).

Commencez par gérer les états que nous savons que nous voulons accepter ou supprimer, et les interfaces.

iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept

Si vous voulez juste faire une autorisation par IP uniquement, sans état

iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

vous êtes susceptible de rencontrer des problèmes en faisant cela, et je suggère d'utiliser l'état pour vous faciliter la vie. Par exemple, ne pas autoriser -i lo et -o lo causera certainement des problèmes pour certaines applications.

29
xenoterracide

Voici un exemple (non testé!) Qui bloque uniquement les connexions entrantes. Les connexions via l'interface de bouclage, provenant de 192.168.3.x, ICMP, ou vers le port SSH sont autorisées. Toutes les autres connexions sont rejetées.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

La règle ci-dessous autorisera uniquement votre IP et bloquera toutes les autres IP sur le port 22 ou ssh. Testez avec un nouveau terminal avant de vous déconnecter.

iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
7
Ishtiyaque Noori

Voici un exemple de travail complet.
Fait également fonctionner les applications (re: mon commentaire à propos de keepass ne démarre pas)

https://github.com/skironDotNet/linux-allow-only-single-ip

0
Pawel Cioch