Accès serveur apache par ip externe impossible ? - réseaux et sécurité - Linux et OS Alternatifs
Marsh Posté le 31-12-2007 à 14:00:14
je ne connais pas les regles de filtrage de fedora mais c'est bien étrange ce que tu raconte !
déja balance ton fichier de conf apache. tu dois avoir des virtualhosts qui te font aboutir sur des dossiers différents selon que tu y accede en local ou depuis ton ip publique.
et que donne "iptable -L" ?
quels sont les droits unix sur les DocumentRoot ?
Marsh Posté le 31-12-2007 à 14:33:44
voici mon httpd.conf :
Code :
|
voici ce que donne la commande iptables -L :
Code :
|
le repertoire DocumentRoot est en 777 (pour mes testes)
Marsh Posté le 31-12-2007 à 15:03:09
Faut configurer ton routeur pour que toutes les connections http soit renvoyer vers ton serveur.
Marsh Posté le 31-12-2007 à 15:04:57
t'aurai pas pu mêtre plus long encore ?!
ça essai useCanonicalName à on
et ton serveur web m'a pas l'air joignable de l'extérieur, vu les regles iptables.
Pour ouvrir: iptable -A INPUT -p tcp --dport 80 -j ACCEPT
clean un peu ton fichier de conf.
De plus un DocumentRoot à /var c'est quoi cette conf ?!
Marsh Posté le 31-12-2007 à 15:06:22
Ik12 a écrit : Faut configurer ton routeur pour que toutes les connections http soit renvoyer vers ton serveur. |
effectivement les ports forwardés sur ta freebox on s'en fou (8080), il faut forwarder le port 80 vers l'ip de ton serveur (port 80 également)
Marsh Posté le 31-12-2007 à 15:12:45
A IK12 :
Mais je croyais que c'était ce que j'avais fait en redirigeant les ports 8080 tcp/udp vers l'ip locale de mon serveur 192.168.0.2 ?
A zecrazytux :
oui je sais mais il s'agit de teste actuellement comme je l'ai préciser. De toute façon un DocumentRoot sur /home/monSite/www avait aussi précédemment échoué.
Et pour information j'ai déjà essayer de rerouter le port 80, mais là il n'accède carément pas au serveur. Il me met "serveur inaccessible".
Je vais recommencer avec le port 80, on va voir
"effectivement les ports forwardés sur ta freebox on s'en fou (8080)", je ne comprend plus je croyais que c'était cette configuration qui orientait les requête de l'extérieur vers la bonne machine de l'intranet ????
Marsh Posté le 31-12-2007 à 15:17:34
Citation : A IK12 : |
HTTP c'est port 80 en TCP
Citation : |
C'est crade, test ou pas ! pourquoi ne pas laisser /var/www/ ?
Citation : |
justement le port forwarding était bon, et le serveur inacessible car tes regles iptables t'empêchait d'y acceder !
Citation : |
pas sur le port 8080 sauf config bizarroide de ta part (un listen 8080 pour apache) et de toute façon un client va acceder à ton site via le port 80 donc la redirection était de toute façon incorrecte. (ne sert a rien)
Marsh Posté le 31-12-2007 à 15:20:15
voila j'ai changer le port 8080 en port 80 sur tcp et udp.
Voici je message d'erreur à présent :
Code :
|
A noter que j'ai déjà mis un serveur de ce type en place sur une mandrake avec plein de virtualhost qui marchait très bien...
Marsh Posté le 31-12-2007 à 15:34:49
80 udp pas besoin, le http c'est du TCP.
as tu ouvert le port 80 sur ton serveur comme je te l'ai déja dit 3 fois ?
Marsh Posté le 31-12-2007 à 15:40:34
Ce n'est pas le peine d'être désagréable. J'essaye d'apprendre c'est tout.
Oui j'ai fait cette manipulation et j'ai ouvert SEULEMENT le port 80 tcp.
Mais il faut peut être que je redémarre complètement ma machine.
Marsh Posté le 31-12-2007 à 15:47:56
Il n'y a pas besoin de redémarrer ta machine pour quoi que ce soit.
Met la configuration qui marche pour le réseau local.
Met sur la freebox le forward de port pour le port 80 vers l'adresse de ta machine et :
- soit teste depuis l'extérieur de ton réseau (un ami, un cyber café...)
- soit teste depuis ton réseau mais en utilisant un proxy qui lui se trouve sur internet.
Ne teste pas en utilisant ton adresse public depuis ton réseau local.
Marsh Posté le 31-12-2007 à 15:55:11
Alors je ne comprends plus.
ça signifie que je ne peux pas accéder à mon site internet à partir d'un poste du réseaux local, même si j'utilise internet. (Ex http://ip_public/mon_fichier.php) ?
Je croyais que c'était possible ??!!!
Marsh Posté le 31-12-2007 à 15:58:37
Ca dépend des routeurs, certains "n'aiment pas" ce genre de trafic. Pour la freebox je ne suis pas sûr (il me semble avoir déja eut des cas sur ce forum avec la freebox), c'est pour ca que je te donne la bonne manière pour tester correctement de manière sûre !
Ceci s'explique par le fait que certains routeurs mettent la règle du NAT (redirection de trafic pour le port 80 dans notre cas) uniquement pour le trafic qui provient réellement d'internet. La ton trafic provient du LAN, il se peut qui ne soit pas confronté.
Pour comprendre un peu mieux, renseigne toi par exemple sur comment marche netfilter.
edit: et ta phrase :
"ça signifie que je ne peux pas accéder à mon site internet à partir d'un poste du réseaux local, même si j'utilise internet."
n'est pas claire.
Ca veut juste dire que depuis ton LAN tu utilises l'adresse privée, et depuis internet tu utilises l'adresse public. C'est tout.
Marsh Posté le 31-12-2007 à 16:24:43
o'gure a écrit : Ca dépend des routeurs, certains "n'aiment pas" ce genre de trafic. Pour la freebox je ne suis pas sûr (il me semble avoir déja eut des cas sur ce forum avec la freebox), c'est pour ca que je te donne la bonne manière pour tester correctement de manière sûre ! |
Mon site/blog est hébergé dans mon placard derrière une freebox et je n'ai aucun problème.
Marsh Posté le 31-12-2007 à 16:29:09
jamesbond2 a écrit : Ce n'est pas le peine d'être désagréable. J'essaye d'apprendre c'est tout. |
je ne suis pas désagréable. C'est toi qui a certainement mal pris le "comme je te l'ai déja dit 3 fois ?", mais je ne pouvais pas deviner puisque tu n'avais pas confirmé l'avoir fait !
D'ailleurs cette directive, il serai bon que tu l'intègre à ton script de filtrage car au redémarrage elle n'y sera plus.
bon, qu'on y voit un peu plus clair:
iptable -L
netstat -lapute
nmap ip_du_serveur
Marsh Posté le 31-12-2007 à 16:33:17
cette manipulation : "iptable -A INPUT -p tcp --dport 80 -j ACCEPT " est-elle a effectuer à chaque fois que je redémarre ma machine ou un fois suffit ?
Ceci étant, le problème reste entier.
Ce qui me surprend le plus, c'est qu'un serveur mandrake 10 derrière une freebox (sur mon lieu de travail) avait déjà accueilli notre serveur interne de sauvegarde et ce serveur était tout à fait accessible depuis l'intranet par son ip public...
y aurait-il un paramètrage quelconque au niveau de mon firewall peut être ?
Marsh Posté le 31-12-2007 à 16:42:18
effectivement j'avais mal compris....
iptables -L :
Code :
|
netstat -lapute :
Code :
|
nmap 82.XXX.XXX.XXX
Code :
|
Marsh Posté le 31-12-2007 à 17:10:42
Le problème est que le port 80 n'est pas ouvert sur ton serveur. Si tu as bien tappé mon commande c'est étonnant...
je ne connais pas fedora (quelques tests il y a quelques années), essai de trouver où configurer le firewall ou où est placé le script de filtrage iptable.
J'ai l'habitude de scripter moi même un iptable-start et stop
en tout cas il te faut la règle suivante:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
au démarrage !
edit: pas si étonnant, puisque la regle est rajouté après la policy rh-firewall-1-input qui prend tout le reste.
il faut au choix: modifier la policy rh-firewall-1-input pour y associer l'ouverture du port 80, soit ouvrir le port 80 avant d'appliquer la policy rh-...
pour tester: regles de bases pour accepter seulement http
(vide les regles iptables et autorise le port 80)
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Marsh Posté le 31-12-2007 à 17:34:14
Voici le iptables après avoir effectué tes instructions :
Code :
|
Marsh Posté le 31-12-2007 à 17:45:57
ça me semble correct.
un nmap sur l'ip du serveur devrait te donner une ligne:
80/tcp OPEN www ou http
et ton serveur devrait être joignable du reseau local ou du net si le port forwarding est correctement configuré
Marsh Posté le 31-12-2007 à 17:53:10
le souci c'est que les instructions précédentes m'ont coupé d'internet, j'ai du redémarrer la machine.
Donc au démarrage je refais un :
Code :
|
mais le nmap de me donne que :
Code :
|
Faut-il qu'à chaque redémarrage je fasse toutes les instructions que tu m'a précisé ou le "iptables -A INPUT..." suffit ?
Marsh Posté le 31-12-2007 à 18:08:45
Citation : le souci c'est que les instructions précédentes m'ont coupé d'internet, j'ai du redémarrer la machine. |
Coupé internet de qui ? tu poste depuis le serveur ? tu accede au net en NAT derrière ce serveur ?
mes instructions autorisent seulement le port 80 en entrée. (tout en sortie, pas de ping)
Citation :
|
oui, comme dit dans mon "edit" d'un post précédent la règle est inefficace car après la policy rh-firewall-1-input.
insère là plutôt de cette manière:
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
celà aura pour effet d'insérer la règle en première position
Citation : |
Avec l'insertion, seule cette instruction suffit. il faudrait l'ajouter dans un script pour eviter d'avoir a faire ça à la main à chaque fois
Marsh Posté le 31-12-2007 à 18:18:20
SUPER !!!
j'ai saisi le nouvel iptables et mon nmap me renvoie bien
80/tcp open http
et l'url suivante marche à présent http://82.XXX.XXX.XXX/index.html
Donc en gros tu dis au firewall de laisser passer les requetes du port 80 ? c'est ça ?
Cela dois venir du firewall fedora, car avec mon ancienne mandrake, je n'ai jamais eu à faire ça...
Marsh Posté le 31-12-2007 à 18:30:15
jamesbond2 a écrit : SUPER !!! |
vi, alors le mieux pour comprendre tout ça c'est de lire un ti tuto iptables
en vitesse:
Des règles de filtrage iptables te permettent de décider quels ports ports sont ouverts ou fermés. de cette manière tu peux autoriser ou non des protocoles puisque ceux-cis utilisent un ou plusieurs ports, généralement définis (fixes)
Ainsi tu désire ouvrir le port 80 en entrée (tu est serveur, ce sont tes visiteurs qui viennent chez toi).
on ajoute/insere donc une regle pour celà dans la chaine INPUT.
Or la chain INPUT laisse une partie du filtrage à une chaine crée par fedora, la fameuse chaine RH-Firewall-1-INPUT
D'autres règles de filtrage sont donc définies dans cette chaine propre à fedora (red hat)
C'est pour ne pas mélanger les règles de base et les règles par défaut du niveau de sécurité de fedora (il y a en a plusieurs, au moins 3 de tête, et tu peux remarquer le chiffre 1 dans le nom de la chaine je supose donc que tu a choisis un niveau de sécurité faible pour ta distro )
sur Mandriva, c'est shorewall qui est utilisé maintenant afin de définir les règles iptables mais je ne sais pas ce qui était mis en place sur la mandrake 10.
Tout celà varie celon les distros, à toi de t'adapter à celle que tu utilise (et de lire sa doc correspondante ). Sous Debian par exemple tout est ouvert, il n'y a pas de règle, pas de firewall, on écris nous même les règles.
Marsh Posté le 31-12-2007 à 11:38:28
salut,
J'ai un gros souci avec la mise en place d'un serveur http local apache.
Je suis sur Linux Fedora 8 avec apache 2. Mon FAI est free.
Les accès à mon site par des ip autres que l'ip local de la machine du serveur apache échouent.
J'accède bien à mon RocumentRoot par le réseaux local genre 192.168.0.2 (machine serveur), mais pas par l'ip externe de ma freebox 82.XXX.XXX.XXX
Il me met l'erreur suivante si je charge http://82.XXX.XXX.XXX
Ce qui me surprend c'est que si je charge la même ip avec un nom de fichier de mon site (Ex : http://82.XXX.XXX.XXX/essai.txt), il me met
A noter qu'il ne me met aucune erreur si je charge http://192.168.0.2/essai.txt
Cela veut donc dire que je n'abouti pas au même répertoire de mon disque selon que je charge l'ip externe ou l'ip interne ????!!!!
Je ne comprends pas trop pourquoi !
Pour les testes, tous les répertoires de / jusqu'à DocumentRoot sont en droit 755 et les fichiers de mon site en droit 777
Voici ma configuration sur ma freebox qui est en mode routeur NAT:
ip freebox : 192.168.0.254
début DHCP : 192.168.0.1
fin DHCP : 192.168.0.50
ip DMZ : rien
ip freeplayer : rien
Réponse ping : désactiver
proxy WOL : désactiver
Redirection ports :
8080 tcp 192.168.0.2 8080
6220 tcp 192.168.0.1 6220
5852 udp 192.168.0.1 5852
8080 udp 192.168.0.2 8080
Apparemment la redirection doit se faire sur le port 8080 car linux fedora inclus un firewall par défaut. Le port pour traverser ce firewall est apparemment 8080.
Ai-je oubvlié quelque chose, pourquoi je ne peux pas y accéder la un ip externe ?