En caso de que aún no esté resuelto. Tus iptables dicen:
RELACIONADO CON EL ESTADO, ESTABLECIDO
Lo que significa que deja pasar solo conexiones ya establecidas... eso lo estableces tú, no máquinas remotas. Luego puede ver excepciones a esto en las siguientes reglas:
state NEW tcp dpt:ssh
Lo que solo cuenta para ssh, por lo que debe agregar una regla/línea similar para http, que puede hacer así:
state NEW tcp dpt:80
Que puedes hacer así:
sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
(En este caso, elijo agregar la nueva regla en la cuarta línea)
Recuerda que después de editar el archivo debes guardarlo así:
sudo /etc/init.d/iptables save
CentOS 7 usa firewalld por defecto ahora. Pero todas las respuestas se centran en iptables. Así que quería agregar una respuesta relacionada con firewalld.
Dado que firewalld es un "envoltorio" para iptables, el uso de la respuesta de antonio-fornie todavía parece funcionar, pero no pude "guardar" esa nueva regla. Así que no pude conectarme a mi servidor apache tan pronto como se reinició el firewall. Afortunadamente, en realidad es mucho más sencillo hacer un cambio equivalente con los comandos de firewalld. Primero verifique si firewalld se está ejecutando:
firewall-cmd --state
Si se está ejecutando, la respuesta será simplemente una línea que diga "en ejecución".
Para permitir conexiones http (puerto 80) temporalmente en la zona pública:
sudo firewall-cmd --zone=public --add-service=http
Lo anterior no se "guardará", la próxima vez que se reinicie el servicio firewalld volverá a las reglas predeterminadas. Debe usar esta regla temporal para probar y asegurarse de que resuelva su problema de conexión antes de continuar.
Para permitir permanentemente las conexiones http en la zona pública:
sudo firewall-cmd --zone=public --permanent --add-service=http
Si ejecuta el comando "permanente" sin ejecutar también el comando "temporal", deberá reiniciar firewalld para obtener sus nuevas reglas predeterminadas (esto podría ser diferente para los sistemas que no son CentOS):
sudo systemctl restart firewalld.service
Si esto no ha resuelto sus problemas de conexión, puede deberse a que su interfaz no está en la "zona pública". El siguiente enlace es un gran recurso para aprender sobre firewalld. Repasa en detalle cómo verificar, asignar y configurar zonas:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
SELinux evita que Apache (y, por lo tanto, todos los módulos de Apache) realicen conexiones remotas de forma predeterminada.
# setsebool -P httpd_can_network_connect=1