Aide avec iptables


2

J'ai récemment installé Oracle Linux 6 sur un serveur domestique et je ne parviens pas à autoriser les ports dépassant le pare-feu (iptables). J'ai essayé d'ajouter des ports avec la commande

iptables -I INPUT -p tcp --dport 80 -s 192.168.0.0/24 -j ACCEPT

Ma configuration de règles actuelle est la suivante:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:ldap 
ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:x11 
ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:vnc-server 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with     icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Pourtant, je ne peux pas accéder à ces ports (à l'exception de ssh, qui était apparemment configuré automatiquement) à partir de périphériques de mon réseau (qui commencent tous par 192.168.0. *). Si je vide les tables (iptables -F), toutes les connexions sont fonctionnelles. J'ai sauvegardé et rechargé la table. Des idées quant à pourquoi cela ne fonctionne pas?

Réponses:


3

iptablestraite les paquets selon chaque règle dans l'ordre. Vous ajoutez la règle pour accepter le trafic HTTP après la règle qui rejette tout le trafic:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

...

ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http

Si un paquet ne correspond à aucune des règles précédentes, il se termine ici. S'il s'agit d'une nouvelle connexion TCP à SSH, elle correspond à la première règle. Si ce n'est pas le cas (par exemple, s'il s'agit d'un paquet HTTP), il passe à la règle suivante qui rejette tout trafic qui n'a pas été mis en correspondance jusqu'à ce point. De ce fait, la dernière règle ne sera jamais mise en correspondance, car tout nouveau trafic HTTP aura déjà été rejeté par la règle précédente.

Je ne sais pas comment Oracle Linux vous recommande de configurer vos règles de pare-feu (Ubuntu, par exemple, encourage l'utilisation de ufw). Une chose simple est d'insérer la règle HTTP avant le REJECT( iptables -I INPUT $INDEX, où $INDEXest l'index de la REJECTrègle). Un autre, plus dans "l'esprit" de, iptablesconsiste à supprimer la REJECTrègle explicite et à modifier la stratégie par défaut en REJECT. Cela entraîne implicitement le rejet des paquets pour tous les paquets qui ne sont pas associés à une règle. Vous pouvez donc simplement ajouter des ACCEPTs à la fin sans vous soucier de les placer avant l'explicite REJECT.


Comment puis-je le changer en implicite?
Intrépide

Oh, et OL6 est très similaire à RHEL si cela aide.
Intrépide
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.