Sie können nicht von einem entfernten Standort auf Port 80 zugreifen, arbeiten aber lokal?

14

Ich habe einen Linux-Server zur Konfiguration mit Apache. Ich kann jedoch nicht über einen Remotecomputer darauf zugreifen.

Ich kann normal auf den Server ssh.

meine IP-Tabelle:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

netstat -ant

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 SERVERIP:80                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:45117               0.0.0.0:*                   LISTEN
tcp        0    196 SERVERIP:22                 MyIP:3149                   ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::47193                    :::*                        LISTEN

Mit Curl SERVERIP:80und geben curl localhost:80beide die Standardseite von Apache zurück.

Woran könnte das liegen?

DucDigital
quelle

Antworten:

26

Sie müssen den Zugriff auf Ihren Server über Port 80 aktivieren, da er derzeit von iptables blockiert wird.

sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Dadurch wird die Regel zu Beginn in Ihre iptables-Konfiguration eingefügt. Sobald Sie dies getan und getestet haben, dass es funktioniert, sollten Sie die Konfiguration speichern, damit sie beim nächsten Start des Dienstes verwendet wird.

sudo /sbin/service iptables save

Dadurch wird die aktuelle Konfiguration in geschrieben /etc/sysconfig/iptables.

Wenn Sie CentOS 7 verwenden, ist FirewallD der richtige Weg:

firewall-cmd --zone = public --add-port = 80 / tcp

Überprüfen Sie mit Ihrem Browser, dass es funktioniert, und dann:

firewall-cmd --zone = public --add-port = 80 / tcp --permanent

firewall-cmd --reload

Änderungen dauerhaft vornehmen

Iain
quelle
1

Ihre iptables-Regeln erlauben nur eingehende Verbindungen über Port 22. Öffnen Sie auch Port 80.

Paweł Brodacki
quelle
... und der cmd istiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik
... was korrekt ist, aber nicht funktioniert, da diese Regel hinter der Regel angehängt wird, die alle eingehenden Verbindungen ablehnt, die zuvor nicht akzeptiert wurden.
Paweł Brodacki
Das stimmt, ich bin nur daran gewöhnt, es der Regeldatei an der richtigen Position hinzuzufügen, vergessen zu erwähnen. iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited, dann die vorherige, dann fügen Sie die allerneueste Regel mitiptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
onik
0

Sie können den Standard-http-Dienst auch direkt verwenden

firewall-cmd --permanent --zone = public --add-service = http

Edmond Chui
quelle