[RESOLU]Forward ssh

Forward ssh [RESOLU] - Réseaux - Systèmes & Réseaux Pro

Marsh Posté le 16-10-2010 à 10:14:29    

Bonjour,
 
Soit le schema suivant :
 
FW <----> host A <-----> host B
 
Le FW redirige les connexions entrante ssh vers l'hôte A sur le port 2222.
Le FW ne sait communiquer qu'avec l'hôte A.
L'hôte A écoute en ssh sur le port 22 et 2222.
 
Je voudrais pouvoir rediriger les requêtes entrantes sur A et sur le port 2222 vers l'hôte B en écoute sur sa socket ssh sur le port 22.
 
J'ai pensé dans un premier temps à utiliser iptables et les chaines PREROUTING et FORWARD sur l'hôte A.
 

Code :
  1. iptables -t nat -I PREROUTING -p tcp --dport 2222 -j DNAT --to 192.168.1.24:22
  2. iptables -I FORWARD -p tcp -d 192.168.1.24 --dport 22 -j ACCEPT


 
Cela ne fonctionne pas. Les requêtes arrivent sur l'hôte A mais ne sont pas redirigées vers l'hôte B.
 
Cela ne doit pas marcher car j'utilise la même interface et je ne suis pas dans le cas d'un routage de paquets. Je me place plus dans une situation de gateway ou de reverse proxy.
 
J'aimerai avoir votre avis sur cette question.
 
Je vous remercie.


Message édité par sneakz le 21-10-2010 à 07:44:01
Reply

Marsh Posté le 16-10-2010 à 10:14:29   

Reply

Marsh Posté le 16-10-2010 à 11:32:29    

Active le routage sur A
spécifie l'interface d'entre dans ta règle PREROUTING
SNAT le trafic sortant de A vers internet

Message cité 1 fois
Message édité par o'gure le 16-10-2010 à 11:33:49

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-10-2010 à 11:37:21    

Désolé, mon contexte manquait de précisions.
 
A et B sont sur le LAN
 
WAN <--> FW <----> host A <-----> host B  
 
Sur A :
 
# cat /proc/sys/net/ipv4/ip_forward
1

Reply

Marsh Posté le 16-10-2010 à 11:45:34    

o'gure a écrit :

SNAT le trafic sortant de A vers internet



---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-10-2010 à 12:10:11    

Mes tests pour le moment sont effectués depuis un hôte C sur le LAN.
 
ssh -p 2222 user@A
 
La requête arrive sur A mais n'est pas transmise sur B.
 
Un tcpdump sur B avec un filtre sur le port 22 ne me retourne rien.
 
Je parviens bien à attaquer B depuis C :
 
ssh user@C
 
Si je flush les règles d'iptables, je parviens à attaquer A depuis C :
 
ssh -p 2222 user@C


Message édité par sneakz le 16-10-2010 à 12:10:34
Reply

Marsh Posté le 16-10-2010 à 19:56:55    

Hôte A : 192.168.1.20
Hôte C : 192.168.1.22
Hôte B : 192.168.1.24
 
La requête arrive sur A et elle est bien transmise sur B (contrairement à ce que j'ai pu écrire avant). Un tcpdump sur A me retourne :
 

Code :
  1. # tcpdump dst host 192.168.1.24 and tcp[13] = 0x02 and dst port 22
  2. tcpdump: WARNING: arptype 65535 not supported by libpcap - falling back to cooked socket
  3. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  4. listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
  5. 18:58:16.069225 IP 192.168.1.20.42203 > 192.168.1.24.22: S 1824465620:1824465620(0) win 5840 <mss 1460,sackOK,timestamp 26877610 0,nop,wscale 7>


 
Par contre, je ne vois aucune requête arriver sur B.
 
 
Si je flushe les règles d'iptables sur A, et que je lance une connexion ssh de C vers B, C reçoit l'établissement de la connexion.
 

Code :
  1. # tcpdump -i venet0:0 tcp[13] = 0x02
  2. tcpdump: WARNING: arptype 65535 not supported by libpcap - falling back to cooked socket
  3. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  4. listening on venet0:0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
  5. 18:57:35.064743 IP 192.168.1.22.52445 > 192.168.1.24.22: S 1176639152:1176639152(0) win 5840 <mss 1460,sackOK,timestamp 26867358 0,nop,wscale 7>


 
 
 
 

Reply

Marsh Posté le 17-10-2010 à 01:07:41    

Il me manquait effectivement la chaine après routage et la substitution de l'adresse IP source de C (le client) par l'adresse IP de A (le proxy).
 

Code :
  1. iptables -t nat -A POSTROUTING -s 192.168.1.22 -j SNAT --to-source 192.168.1.20


 
Merci o'gure  ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed