J'essaie d'ouvrir le port 80 dans mon CentOS 6.5, sur ma machine virtuelle, afin que je puisse accéder à Apache depuis le navigateur de mon bureau.
Si vous regardez la capture d'écran ci-dessus .... J'ai ajouté la ligne avant la flèche bleue, comme il est écrit sur http://www.cyberciti.biz/faq/linux-iptables-firewall- open-port-80 / Maintenant, j'obtiens la page de test Apache lorsque j'entre l'adresse IP dans mon navigateur, mais quand je redémarre les iptables, j'obtiens un "ÉCHEC" lorsque CentOS essaie d'appliquer la nouvelle règle.
Quelqu'un connaît-il une solution à cela? Ou dois-je ignorer l'échec?
Plutôt que de saisir manuellement les règles, vous pouvez utiliser iptables
pour ajouter les règles aux chaînes appropriées, puis les enregistrer. Cela vous permettra de déboguer les règles en direct, confirmant qu'elles sont correctes, plutôt que de les ajouter au fichier comme vous semblez le faire.
Pour ouvrir le port 80, je fais ceci:
$ Sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ Sudo /etc/init.d/iptables save
La dernière commande enregistrera les règles ajoutées. C'est la règle que j'utiliserais pour ouvrir le port pour le trafic Web.
Si vous remarquez la règle que vous essayez d'utiliser:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Possède une chaîne appelée "RH-Firewall-1-INPUT". Si vous n'avez pas cette chaîne ou un lien de la chaîne INPUT
vers cette chaîne, cette règle ne sera jamais accessible. Cette règle pourrait probablement ressembler à ceci:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Ou votre chaîne INPUT
doit être liée à cette chaîne RH-Firewall-1-INPUT
avec une règle comme celle-ci:
$ Sudo iptables --list
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
....
REMARQUE: Vous pouvez voir quelles chaînes vous avez avec cette commande:
$ Sudo iptables -L| grep Chain
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
...
Les états peuvent également avoir besoin d'être modifiés afin que les connexions existantes soient également autorisées.
-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT
De plus, lorsque vous utilisez le -A
commutateur vous ajoutez la règle à la chaîne INPUT
. S'il y a d'autres règles avant qui bloquent et/ou interfèrent avec l'atteinte de cette règle, elle ne sera jamais exécutée. Donc, vous voudrez peut-être le déplacer vers le haut en insérant plutôt qu'en ajoutant, comme ceci:
-I INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT
Les pare-feu peuvent être des bêtes compliquées. Donc, vous voudrez peut-être essayer le TUI à la place (les TUI sont des GUI pour le terminal).
$ Sudo system-config-firewall-tui
Vous pouvez ensuite parcourir les différents écrans de configuration des règles iptables
.
Si vous souhaitez modifier vos paramètres de pare-feu mais que vous n'êtes pas familier avec iptables
, je vous suggère d'utiliser le system-config-firewall-tui
outil si vous n'avez pas de serveur X, utilisez le system-config-firewall
, qui est l'outil GUI pour cela.
J'ai récemment installé CentOS 6.5 en tant que machine virtuelle pour la même raison, à utiliser comme serveur Web virtuel. Quoi qu'il en soit, j'ai suivi ce tutoriel très détaillé du wiki CentOS . Ensuite, selon la réponse de @slm, je lui ai ajouté le port 80 et enregistré à l'aide de Sudo /etc/init.d/iptables save
.
iptables -L -v
a cette sortie:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
214 17168 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
1 44 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 169 packets, 15164 bytes)
pkts bytes target prot opt in out source destination