Impossible d'accéder au port 80 à partir d'un emplacement distant mais fonctionne sur local?

14

J'ai un serveur Linux sur la configuration avec apache. Cependant, je ne peux pas y accéder à l'aide d'un ordinateur distant.

Je peux ssh vers le serveur normalement.

ma table IP:

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

en utilisant Curl SERVERIP:80et curl localhost:80, les deux renvoient la page par défaut d'apache.

Quel pourrait être le problème?

DucDigital
la source

Réponses:

26

Vous devez activer l'accès à votre serveur sur le port 80 car il est actuellement bloqué par iptables.

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

Cela insérera la règle dans votre configuration iptables au début. Une fois que vous avez fait cela et vérifié que cela fonctionne, vous devez enregistrer la configuration afin qu'elle soit utilisée la prochaine fois que le service démarre,

sudo /sbin/service iptables save

cela va écrire la configuration actuelle /etc/sysconfig/iptables.

Si vous utilisez CentOS 7, FirewallD est la bonne solution:

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

Vérifiez avec votre navigateur que cela fonctionne, puis:

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

firewall-cmd --reload

Pour rendre les modifications permanentes

Iain
la source
1

Vos règles iptables n'autorisent que les connexions entrantes sur le port 22. Ouvrez également le port 80.

Paweł Brodacki
la source
... et le cmd estiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik
... ce qui est correct, mais ne fonctionnera pas, car il ajoutera cette règle derrière celle qui REJETTE toutes les connexions entrantes non ACCEPTÉES plus tôt.
Paweł Brodacki
C'est vrai, je suis juste habitué à l'ajouter au fichier de règles dans la bonne position, j'ai oublié de le mentionner. iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited, puis la précédente, puis ajoutez la règle d'interdiction de tout refuser aveciptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
onik
0

Vous pouvez également utiliser directement le service http par défaut

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

Edmond Chui
la source