Au cas où pas encore résolu. Vos iptables disent :
État CONNEXE, ÉTABLI
Ce qui signifie qu'il ne laisse passer que les connexions déjà établies... qui sont établies par vous, pas par des machines distantes. Ensuite, vous pouvez voir les exceptions à cela dans les règles suivantes :
state NEW tcp dpt:ssh
Ce qui ne compte que pour ssh, vous devez donc ajouter une règle/ligne similaire pour http, ce que vous pouvez faire comme ceci :
state NEW tcp dpt:80
Ce que vous pouvez faire comme ceci :
sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
(Dans ce cas, je choisis d'ajouter la nouvelle règle à la quatrième ligne)
N'oubliez pas qu'après avoir modifié le fichier, vous devez l'enregistrer comme ceci :
sudo /etc/init.d/iptables save
CentOS 7 utilise désormais un pare-feu par défaut. Mais toutes les réponses se concentrent sur iptables. Je voulais donc ajouter une réponse liée à firewalld.
Étant donné que firewalld est un "wrapper" pour iptables, l'utilisation de la réponse d'antonio-fornie semble toujours fonctionner, mais je n'ai pas pu "enregistrer" cette nouvelle règle. Je n'ai donc pas pu me connecter à mon serveur apache dès qu'un redémarrage du pare-feu s'est produit. Heureusement, il est en fait beaucoup plus simple d'effectuer une modification équivalente avec les commandes firewalld. Vérifiez d'abord si firewalld est en cours d'exécution :
firewall-cmd --state
S'il est en cours d'exécution, la réponse sera simplement une ligne indiquant "en cours d'exécution".
Pour autoriser temporairement les connexions http (port 80) sur la zone publique :
sudo firewall-cmd --zone=public --add-service=http
Ce qui précède ne sera pas "enregistré", la prochaine fois que le service firewalld sera redémarré, il reviendra aux règles par défaut. Vous devez utiliser cette règle temporaire pour tester et vous assurer qu'elle résout votre problème de connexion avant de continuer.
Pour autoriser en permanence les connexions http sur la zone publique :
sudo firewall-cmd --zone=public --permanent --add-service=http
Si vous exécutez la commande "permanent" sans exécuter également la commande "temporaire", vous devrez redémarrer firewalld pour obtenir vos nouvelles règles par défaut (cela peut être différent pour les systèmes non CentOS) :
sudo systemctl restart firewalld.service
Si cela n'a pas résolu vos problèmes de connexion, c'est peut-être parce que votre interface n'est pas dans la "zone publique". Le lien suivant est une excellente ressource pour en savoir plus sur firewalld. Il explique en détail comment vérifier, attribuer et configurer des zones :https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
SELinux empêche Apache (et donc tous les modules Apache) d'établir des connexions à distance par défaut.
# setsebool -P httpd_can_network_connect=1