Iptables, NAT et https

dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Salut,

je continue dans ma lancée de mini réseaux virtuels sous virtual box qui commence à fonctionner.
Pour rappel :
mon pc host est mon poste de travail dans la boîte, il tourne sous windows XP et l'outil utilisé est donc virtual box 3.012. Il se connecte à internet via un proxy géré par une boîtes de sous-traitances (je ne peux donc y faire aucune action).

j'ai mis en place une passerelle sous virtual box :
debian 5
eth 0 est connectée au réseau virtuel VB en IP dynamique
eth 1 est relié à un réseau interne virtuel avec une adresse fixe de style 192.168.1.10 (un truc bateau quoi).
ip_forcarding est activité pour ipv4
j'ai mis en place un petit serveur dhcp pour réseau interne :
debian 5
eth0 connectée au réseau interne avec IP fixe.
un petit serveur web :
eth0 en ip fixe avec un apache2 tout simple.

tout ce petit monde se cause et fonctionne à peu près bien moyennant la configuration du proxy de la boîte pour sortir sur internet
Sur la passerelle, j'ai commencé à mettre en place des iptables, en particulier pour que ce soit le serveur virtuel qui réponde aux requêtes http qui viennent sur mon poste. A priori ça fonctionne (en tapant l'ip de mon poste dans un navigateur j'atteins le serveur web virtuel).

Du coup, j'ai installer un client KUBUNTU9.10, toujours virtuel.
Ca fonctionne plutôt bien mais :
l'interface eth0 n'est pas configurée au démarrage. Il a fallut que j'ajoute la déclaration et la conf de eth0 dans le fichier interface :/ . Du coup, apparemment, le réseau n'a pas fonctionné à l'installation de la Kubuntu.
Depuis conquéror, après configuration du proxy, il est possible de naviguer sur le web. Sauf pour le https ! Aucune page sous ce protocole ne fonctionne :/

voici , en l'état, le fichier de conf iptables utilisé :
[cpp]#!/bin/sh

# eth0 est attachée à l'extérieur
# eth1 est attachée au réseau 192.168.168.0

echo "Configuration NAT"

#
# Suppression des régles déjà existantes
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X


#
# le trafic sur la boucle local est accepté
#
iptables -A INPUT -i lo -j ACCEPT

# les paquets de connexions déjà existantes sont acceptés
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Tout le traffic sortant est accepté
iptables -A OUTPUT -j ACCEPT

# Web
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# SSH
#iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT


#
# les paquets qui arrivent sur le port 80 sont transmis au serveur web
#
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.168.10:80

#
# Masquerade
#
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -j REJECT
#iptables -A FORWARD -j REJECT
[/cpp]



Merci de votre attnetion et de vos suggestions !
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

c'est le serveur Apache de la VM qui écoute sur le port 443 en HTTPS ?
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Salut,

non, j'ai des soucis pour naviguer depuis une VM derrière ma passerelle.
par exemple, impossible d'accèder au webmail de google.
Je n'ai pas encore tester l'hébergement d'un site accessible via https sur une VM ! Mais comme cela fonctionne pour le port 80 je croise les doigts pour que cela fonctionne aussi pour le 443.
Maintenant, il y a effectivement peut-être un conflit Tous les paquets qui arrivent de l'extérieur via le port 443 pour répondre à une requête d'un navigateur par exemple, sont reroutés vers le serveur web virtuel.
Mais alors, comment le vérifier ?!

Merci de ton attention :jap:
fighting_falcon
Messages : 656
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par fighting_falcon »

Tous les paquets qui arrivent de l'extérieur via le port 443 pour répondre à une requête d'un navigateur par exemple, sont reroutés vers le serveur web virtuel.
:heink:

Paquets réponse pour la visite d'un site en HTTPS : port source 443, port destination X
Paquets d'un client qui veut voir ton site publié en HTTPS : port source Y, port destination 443

Y'a pas de conflits ..

Ceci dit, j'arrive pas à piger pour tu n'arrives pas à voir les sites en HTTPS, et juste ceux en HTTPS
Depuis ta machine direct, ça marche ? C'est pas un soucis de proxy des fois ?
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Salut !

Je ne pense pas qu'il y ai conflit non plus... mais dans le soute !

Pour la machine directe :
C'est donc mon poste sous windows xp. j'arrive à joindre les sites en https !
Le proxy est configuré sur toutes les machines virtuelles. Dans le cas de la KUbuntu, le proxy est configuré pour Konqueror et dans la conf du système.
Cela peut effectivement venir du proxy car en essayant de joindre un site ne https je dois m'authentifier sur le proxy puis la requête échoue presque instantanément.
Il ne s'agit d'un time out . Le message d'erreur m'indique clairement que la machine distante à "fermée" la connexion (en gros elle a refusé si je ne me trompe pas).
Alors effectivement, est-ce qu'à force d'encapsulation/désencapsulation le paquets n'est pas droppé car "trop vieux" ou considéré "comme suspect" ? Autant en http cela passe, autant en https il y a peut-être des paramètres plus restrictifs pour des questions de sécurité... M'enfin, ça me parait quand même un peu fumeux comme explication ^^

@+
fighting_falcon
Messages : 656
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par fighting_falcon »

Peux tu essayer en baissant la valeur du MTU sur la carte réseau de ta machine virtuelle ?
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

oulà, je ne sais paas comment ça se règle ça.
J'essaie et je tiens au courant !

merci ! :jap:
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Zedoune »

ifconfig bidule0 mtu 1000 ?
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Salut,

alors j'ai essayé en descednant le mtu à 1000, même soucis :
[cpp]Impossible d'achever l'opération demandée
La connexion a été refusée par le serveur
Détails de la requête :
URL : https://mail.google.com
Protocole : https
Date et heure : mardi 2 février 2010 09:13
Informations supplémentaires : mail.google.com: Proxy connection closed prematurely
Description :
Le serveur mail.google.com a rejeté la tentative de connexion de cet ordinateur.
Causes possibles :
Le serveur, bien que connecté à l'Internet, n'a peut-être pas été configuré pour autoriser les requêtes.
Le serveur, bien que connecté à l'Internet, n'exécute peut-être pas le service demandé (https).
Un pare-feu (périphérique servant à restreindre les requêtes d'accès réseau), protégeant votre réseau ou celui du serveur, est peut-être intervenu, faisant obstacle à votre requête.
Solutions possibles :
Réessayez, maintenant ou plus tard.
Contactez l'administrateur du serveur pour une aide plus approfondie.
Contactez votre assistance technique, qu'il s'agisse de votre administrateur système ou d'un groupe d'assistance technique, pour une aide plus approfondie.[/cpp]

je vais essayer depuis ma passerelle virtuelle pour voir !

@++
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Je n'y arrive pas :( . Même en passant l'interface réseau d'une VM en "NAT", impossible de se connecter à du https :/

J'ai rapidos activé le SSL sur un serveur apache dans une VM, et il est possible de l'atteindre depuis l'extérieur du réseau virtuel !

Je ne comprends pas trop ce qui se passe....

Je vais essayer de faire du "bridge" pour l'interface de la VM passerelle qui pointe vers l'extérieur.

Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

coucou :)
bon j'ai parcouru rapidos. Si je résume :
apache qui écoute sur le 80 et 443 sur la VM. Tu veux rerouter toutes les connexion 80 + 443 à destination de ton poste vers la VM right ?
voici comment faire :
- Est-ce que tu ping la VM ?
si oui, est-ce que la VM ping la paserelle (qui est l'hôte dans ton cas) ?
si oui alors, sur l'hôte, tu vas ajouter sur netfilter les règles suivantes :

$iptables -t nat -I PREROUTING 1 -d IP HOTE -p tcp --dport 80 -j DNAT --to IP-VM
$iptables -t nat -I PREROUTING 1 -d IP HOTE -p tcp --dport 443 -j DNAT --to IP-VM

et
$iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
pour que la VM reroute tous les paquets vers l'ip de l'hôte.
Avec ça tu as un nat de base en place.
Et tu peux même aller sur le net, puisque via le masquerading, c'est l'ip de l'hôte qui est écrite dans les datagrammes.

Effacte toutes les règles et pour le moment n'utilise pas ton script. Tapes simplement les lignes à la main. Si ça marche, tu pourras simplement indiquer qu'au démarrage de l'interface, tu charges les règles
pre-up iptables-restore < iptables.rules
par ex :)



edti : j'ai oublié le forward :
$iptables -i eth0 -o IP-GATEWAY-VIRTUELLE -j ACCEPT
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

SAlut,

merci pour la réponse.

Je vérifierais ce que j'ai par rapport ce que tu as mis :jap:

Hélas non mon problème est différent.


J'ai une VM "passerelle" qui à deux interfaces réseaux :
->eth0 est configurée en "NAT", elle prend l'ip 10.0.2.15 "classique" sous Virtual Box.
->eth1 est configurée en "réseau interne".
J'ai activé l'ip forwarding sur cette machine virtuelle, et j'ai écrit le script cité au-dessus (depuis, j'ai commenté toutes les régles de filtrage et j'ai ajouté la redirection du port 443).
J'ai également activé le forwarding sur eth0 (en ligne de commande via vbox manage) de telle manière qu'une requpete sur le port 80 ou 443 est qui arrive sur la machine hôte est redirigée sur la passerelle virtuelle qui a son tour le redirige vers la machine vrituelle "serveur web".

Tout cela fonctionne !, dans un navigateur sur le système d'exploitation hôte, si je tape l'adresse ip réseau de l'ordi, j'arrive sur le serveur apache du serveur web virtualisé. Aussi bien en http qu'en https.

Par contre, il m'est impossible depuis une machine virtuelle d'accéder à un site en https !
La grosse différence avec le cas ou "j'héberge" c'est que pour accéder à un site https je suis obligé de "sortir" de la machine hôte et de sortir du réseau de l'entreprise via un proxy. Cependant, ça fonctionne en http (j'arrive à surfer depuis un VM sur smp par exemple). Par contre, impossible d'accéder à google mail (pris au hasard pour tester le https).

Voilà, j'espère être un peu clair.

J'ai également testé avec une machine virtuelle qui dispose d'une seul interface réseau configuér en NAT. J'ai le même problème. Plus étonnant encore, si j'active deux machines virtuelles configurées en NAT en même temps, elles disposent toutes les deux de l'adresse 10.0.2.15 ......
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

ok dans ce cas, c'est peut-être parce que tu n'as pas rerouté les paquets en sortie vers la passerelle. ajoute ça sur la passerelle :
$iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
comme ça, traffic sortant d'une VM -> passerelle eth1 -> passerelle eth0 -> hôte -> internet.

dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Ok, merci de l'info :jap:

je teste ça demain (lesz VM sont sur mon poste au boulot).

:hello:
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

oki \o/
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

ok dans ce cas, c'est peut-être parce que tu n'as pas rerouté les paquets en sortie vers la passerelle. ajoute ça sur la passerelle :
$iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
comme ça, traffic sortant d'une VM -> passerelle eth1 -> passerelle eth0 -> hôte -> internet.
Oui, cette ligne y est :(

Bon, je crois que je vais réinstaller VirtualBox parce que ça sent le truc louche.

Merci :jap:
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

si tu suis les lignes que je t'ai filé, ça marchera sans souci.
Sur mon proxmox de prod, j'ai l'archi suivante
Hôte Proxmox - passerelle 1 - Firewall 1 (deux cartes réseaux) -> Carte 1 sur passerelle 1
Carte 2 en passerelle pour les VM "en dessous"
Du coup sur un VM par exemple, je vais avoir un serveur MySql, on a donc IP RIpe -> Hôte -> firewall -> Serveur MySql
:)
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Salut,

je ne remets pas en cause ce que tu as dit :jap: , loin de là !

Bon alors, j'ai essayé via kubuntu virtualisé avec Firefox et ... ça marche. C'est avec Konqueror que cela échoue. Le plus étrange c'est que manifestement c'est une authentification au proxy de la société qui échoue.... De même, le logiciel de gestion des paquets sous KDE échoue, alors que apt en ligne de commande fonctionne... c'est donc un problème de configuration logiciel et non système !!!

Merci de votre aide !! :jap:
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

Salut,

je ne remets pas en cause ce que tu as dit :jap: , loin de là !
j'ai pas dit ça [:kronick:7] :hello:

du coup je serais tenté de vérifier la configuration DNS, ça sent typiquement un serveur DNS non enregistré .
$ cat /etc/resolv.conf

Est-ce que sur la VM sur laquelle ça ne marche pas, la résolution DNS se fait correctement ?
$nslookup gogole.fr par ex

:hello:
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Et bien, cette VM ça ne marche pas avec les logiciels "KDE".
Alors je me dis que ça doit être une configuration quelques part dans KDE.

[cpp]dric@KU910:~$ sudo nslookup google.fr
[sudo] password for dric:
Server: 172.17.52.29
Address: 172.17.52.29#53

Non-authoritative answer:
Name: google.fr
Address: 216.239.59.104
Name: google.fr
Address: 74.125.77.104
Name: google.fr
Address: 209.85.229.104
[/cpp]

l'adresse du serveur DNS est la bonne.
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

oki,
donc tout marche nickel avec l'autre VM ?
PS : faut être root pour faire un nslookup, je pense pas :p
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Yep, je pense que tout fonctionne :jap:

J'en sais rien pour le nslookup... c'est une habitude depuis je ne sais plus OS qui obligeait de passer en root pour tout faire.

Merci de ton aide :jap:
fighting_falcon
Messages : 656
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par fighting_falcon »

J'en sais rien pour le nslookup...
:heink:
bien sur que non qu'a pas besoin !! :o
c'est une habitude depuis je ne sais plus OS qui obligeait de passer en root pour tout faire.
Windows ? :whistle:
Kronick
Messages : 3372
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par Kronick »

hin hin
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Iptables, NAT et https

Message par dricfr »

Bong, j'ai installé pfsense dans une VM pour remplacer ma passerelle. Toujours le même soucis avec kde... mais je n'arrive plus à accéder au serveur web malgré une petite conf du port forwarding en NAT et de la modif des règles du firewall ^^. La configuration semble très fine et donc compliquée !

VirtualBox n'est pas très pratique pour savoir quels ports sont suivis et vers où au niveau du réseau virtuel :/ .

Est-ce que qq'un pourrait me dire ce que c'est que le NAT 1:1 ?
Moi je fais un bête port forwarding....

:jap:
Répondre