2 votes

Ubuntu iptables autoriser les adresses IP certian

J'ai un cluster riak dont j'ai besoin pour permettre à certaines adresses IP seulement d'accéder aux informations. J'utilise actuellement, -A INPUT -s 192.168.10.200 -j ACCEPT pour autoriser cette adresse IP et en bas de mes règles j'ai -A INPUT -j REJECT et -A FORWARD -j REJECT pour rejeter tout autre trafic. Quelqu'un peut-il me dire où je fais fausse route ? Merci !

Les règles complètes :

-A INPUT -s 192.168.1.181 -j ACCEPT
-I INPUT -p tcp --dport 8098 -j ACCEPT
-I INPUT -p tcp --dport 8099 -j ACCEPT
-I INPUT -p tcp --dport 4369 -j ACCEPT
-I INPUT -p tcp --dport 5678:5679 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 2500 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT -A FORWARD -j REJECT

2voto

Julien Vehent Points 2907

Netfilter a 5 chaînes principales. Vous pouvez ignorer PREROUTING et POSTROUTING pour le moment, donc les 3 que vous devez manipuler sont INPUT, FORWARD et OUTPUT.

INPUT et OUTPUT contrôlent le trafic dirigé vers le système lui-même, tandis que FORWARD contrôle le trafic qui passe à travers et est dirigé vers une autre machine (le cas d'une passerelle).

Dans votre cas, si vous voulez permettre aux utilisateurs externes de se connecter au système lui-même, vous avez besoin de l'ensemble des règles suivantes :

# Rule 1: accept packets from established connections to enter and leave the system
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m state --state ESTABLISHED -j ACCEPT

# Rule 2: accept new connections entering the system
iptables -A INPUT -i eth0 -p tcp -s 192.168.10.200 -m state --state NEW -j ACCEPT 

# Rule 3: block all connections entering and leaving the system (if not previously accepted)
iptables -A INPUT -i eth0 -j DROP

# note: only use the filtering on output if you want to control outgoing connection
# if you want to let all connections leave your system, just comment this out
iptables -A OUTPUT -o eth0 -j DROP 

Les règles 1 et 3 sont générales, la règle 2 est spécifique à la connexion. Utilisez simplement cet exemple et ajoutez une nouvelle règle 2 lorsque vous avez besoin de nouvelles connexions.

Si vous voulez quelque chose de plus solide, jetez un coup d'oeil à ceci : http://1nw.eu/!MJ

1voto

Khaled Points 35208

Il ne suffit pas d'autoriser le trafic entrant en utilisant : -A INPUT -s 192.168.10.200 ou le trafic transféré en utilisant : -A INPUT -s 192.168.10.200 . Il vous manque le trafic associé. Vous devez l'ajouter :

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

INPUT doit être utilisé pour le trafic destiné au pare-feu lui-même. FORWARD doit être utilisé pour le trafic destiné à d'autres machines. Veillez également à activer la redirection d'IP dans ce cas.

1voto

Zsolt Sz. Points 347

Ok, j'ai lu vos règles complètes.

Une chose importante d'abord : S'il vous plaît no mélanger -A avec -I.

  • -A ajoute règles jusqu'au bout de la chaîne
  • -I inserts dans la chaîne (si la position n'est pas spécifiée, elle est insérée dans la section première place )

Donc, vos règles iptables sont en fait :

-A INPUT -p tcp --dport 5678:5679 -j ACCEPT
-A INPUT -p tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp --dport 8099 -j ACCEPT
-A INPUT -p tcp --dport 8098 -j ACCEPT
-A INPUT -s 192.168.1.181 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 2500 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j ACCEPT

Comme vous pouvez le voir, les règles d'ENTRÉE #1 à #4 n'est pas limiter toute adresse source.

Maintenant, si vous voulez vraiment limiter l'accès à ces ports à 192.168.1.181, vous devrez procéder comme suit :

# Established connections should just pass
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopbacks will not match 192.168.1.181, so we ACCEPT them here
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Other than 192.168.1.181, we reject
-A INPUT -s 192.168.1.181 -j in_allow
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
# Allow only the following ports
-A in_allow -p tcp --dport 5678:5679 -j ACCEPT
-A in_allow -p tcp --dport 4369 -j ACCEPT
-A in_allow -p tcp --dport 8099 -j ACCEPT
-A in_allow -p tcp --dport 8098 -j ACCEPT
-A in_allow -p tcp -m state --state NEW --dport 2500 -j ACCEPT
-A in_allow -p icmp -m icmp --icmp-type 8 -j ACCEPT
#
-A FORWARD -j REJECT
-A OUTPUT -j ACCEPT

Une seule question : pourquoi le -m state --state NEW para --dport 2500 ?

Remarque importante : N'oubliez pas de FLUSH et ERASE l'ensemble des règles iptables avant d'appliquer ce qui précède.

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