GNU/Linux >> Linux Esercitazione >  >> Linux

apache non accetta connessioni in entrata dall'esterno di localhost

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

Linux
  1. Il nome utente [Risolto] non è nel file sudoers

  2. Come aprire le porte 80 e 443 in FirewallD

  3. Installa Apache su Debian 10

  4. Installa Apache 2 da Source su Linux

  5. visudo:comando non trovato

Perché Find non accetta '-exec Cp {} Dir +'?

Diventare root dall'interno di Vim?

Misura il traffico dal registro degli accessi di Apache

comando apache suexec non in docroot

sudo:python:comando non trovato

sudo non funziona su alcuni comandi