Nel caso non ancora risolto. I tuoi iptables dicono:
state RELATED,ESTABLISHED
Il che significa che lascia passare solo le connessioni già stabilite... cioè stabilite da te, non da macchine remote. Quindi puoi vedere le eccezioni a questo nelle regole successive:
state NEW tcp dpt:ssh
Che conta solo per ssh, quindi dovresti aggiungere una regola/riga simile per http, cosa che puoi fare in questo modo:
state NEW tcp dpt:80
Cosa che puoi fare in questo modo:
sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
(In questo caso scelgo di aggiungere la nuova regola nella quarta riga)
Ricorda che dopo aver modificato il file dovresti salvarlo in questo modo:
sudo /etc/init.d/iptables save
CentOS 7 utilizza firewalld per impostazione predefinita ora. Ma tutte le risposte si concentrano su iptables. Quindi volevo aggiungere una risposta relativa a firewalld.
Poiché firewalld è un "wrapper" per iptables, l'utilizzo della risposta di antonio-fornie sembra ancora funzionare ma non sono riuscito a "salvare" quella nuova regola. Quindi non sono stato in grado di connettermi al mio server Apache non appena si è verificato un riavvio del firewall. Fortunatamente in realtà è molto più semplice apportare una modifica equivalente con i comandi firewalld. Per prima cosa controlla se firewalld è in esecuzione:
firewall-cmd --state
Se è in esecuzione, la risposta sarà semplicemente una riga che dice "in esecuzione".
Per consentire connessioni http (porta 80) temporaneamente nella zona pubblica:
sudo firewall-cmd --zone=public --add-service=http
Quanto sopra non verrà "salvato", al prossimo riavvio del servizio firewalld tornerà alle regole predefinite. Dovresti usare questa regola temporanea per testare e assicurarti che risolva il tuo problema di connessione prima di andare avanti.
Per consentire in modo permanente le connessioni http sulla zona pubblica:
sudo firewall-cmd --zone=public --permanent --add-service=http
Se esegui il comando "permanente" senza eseguire anche il comando "temporaneo", dovrai riavviare firewalld per ottenere le nuove regole predefinite (questo potrebbe essere diverso per i sistemi non CentOS):
sudo systemctl restart firewalld.service
Se questo non ha risolto i tuoi problemi di connessione, potrebbe essere perché la tua interfaccia non si trova nella "zona pubblica". Il seguente collegamento è un'ottima risorsa per conoscere firewalld. Spiega in dettaglio come controllare, assegnare e configurare le zone:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
SELinux impedisce ad Apache (e quindi a tutti i moduli Apache) di stabilire connessioni remote per impostazione predefinita.
# setsebool -P httpd_can_network_connect=1