PF et reverse ftp proxy...

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

PF et reverse ftp proxy...

Mikaël Pirio
Bonjour à tous,

J'aimerai avoir votre avis sur ma configuration PF au niveau sécurité :

Je possède un pare-feu OpenBSD avec deux interfaces : une externe sur mon ADSL et une interne pour mon réseau local.

Sur mon réseau local, j'ai placé un serveur Debian GNU/Linux, d'adresse IP x.x.x.x, avec un service ftp (vsftpd). De mon réseau local, j'accède directement sans problème à ce service sur le port 21 pour la connexion et sur les ports 2020 à 2025 pour les données (j'ai volontairement limité le nombre de ports pour les données).

Je souhaiterai que des personnes externes (de l'Internet) puissent se connecter en mode passif à ce service ftp. Au niveau d'OpenBSD, dans "/etc/inetd.conf", j'ai ajouté la ligne suivante :

  21 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy -R x.x.x.x -m 2020 -M 2025


Puis j'ai redémarré inetd à l'aide de la commande :
  root#  kill -HUP `cat /var/run/inetd.pid`

Enfin, au niveau de "pf.conf", j'ai ajouté ces lignes :

  pass in quick on $ext_if inet proto tcp to $ext_ip port 21 flags S/SA keep state queue (ext_std, ext_ack)
  pass in quick on $ext_if inet proto tcp to $ext_ip port 2020:2025 flags S/SA keep state queue (ext_std, ext_ack)
  pass in quick on $ext_if inet proto tcp to $ftp_ip port 21 flags S/SA keep state queue (ext_std, ext_ack)
  pass in quick on $ext_if inet proto tcp to $ftp_ip port 2020:2025 flags S/SA keep state queue (ext_std, ext_ack)

($ext_if correspond à mon interface externe, tandis que $ext_ip correspond à mon ip externe. Enfin $ftp_ip correspond à l'ip du serveur ftp, c'est à dire x.x.x).


Cela fonctionne... Mais cette configuration m'a obligé à ouvrir les ports 21 et 2020:2025 sur le pare-feu :(

J'ai aussi tenté une redirection des connexions externe vers 127.0.0.1:21 de façon à ne faire tourner le ftp-proxy en écoute que sur l'adresse 127.0.0.1. De cette façon, je pouvais éliminer les deux premières règles. Cela correspond un peu à la façon dont fonctionne le ftp-proxy lorsqu'un utilisateur interne désire se connecter à un serveur FTP sur l'Internet. Malheureusement, cette configuration ne fonctionne pas car lors du passage en mode passive de l'utilisateur externe, le ftp-proxy lui renvoyait toujours l'IP 127.0.0.1 pour la connexion des données :( N'existe-t'il pas un moyen d'indiquer à ftp-proxy quelle adresse renvoyer dans ce cas ?

Merci d'avance pour toute l'aide que vous pourrez m'apporter à ce sujet.
--
Mikaël,

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: PF et reverse ftp proxy...

Eric Paumerat
salut,

1) je ne crois pas que'on puisse utiliser ftp-proxy dans ce sens, c'est
uniquement pour les connexions clients->serveurs ftp externes à ton réseau
2) quoi qu'il arrive si tu as un serveur ftp interne et des gens qui s'y
connectent depuis Internet tu devras ouvrir les ports sur ton firewall,
proxy dessus ou pas...
3) il existe un proxy ftp dans les ports pour eviter de faire du NAT
jusqu'a ton serveur interne mais je me souviens que la conf n'est pas
triviale.
cd /usr/ports && sudo make search key="proxy"
4) pour faire simple tu n'as qu'a faire du NAT avec pf, c'est expliqué
dans le faq-pf.

Bon courage.

> Bonjour à tous,
>
> J'aimerai avoir votre avis sur ma configuration PF au niveau sécurité :
>
> Je possède un pare-feu OpenBSD avec deux interfaces : une externe sur mon
> ADSL et une interne pour mon réseau local.
>
> Sur mon réseau local, j'ai placé un serveur Debian GNU/Linux, d'adresse IP
> x.x.x.x, avec un service ftp (vsftpd). De mon réseau local, j'accède
> directement sans problème à ce service sur le port 21 pour la connexion et
> sur les ports 2020 à 2025 pour les données (j'ai volontairement limité le
> nombre de ports pour les données).
>
> Je souhaiterai que des personnes externes (de l'Internet) puissent se
> connecter en mode passif à ce service ftp. Au niveau d'OpenBSD, dans
> "/etc/inetd.conf", j'ai ajouté la ligne suivante :
>
>   21 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy -R x.x.x.x -m
> 2020 -M 2025
>
>
> Puis j'ai redémarré inetd à l'aide de la commande :
>   root#  kill -HUP `cat /var/run/inetd.pid`
>
> Enfin, au niveau de "pf.conf", j'ai ajouté ces lignes :
>
>   pass in quick on $ext_if inet proto tcp to $ext_ip port 21 flags S/SA
> keep state queue (ext_std, ext_ack)
>   pass in quick on $ext_if inet proto tcp to $ext_ip port 2020:2025 flags
> S/SA keep state queue (ext_std, ext_ack)
>   pass in quick on $ext_if inet proto tcp to $ftp_ip port 21 flags S/SA
> keep state queue (ext_std, ext_ack)
>   pass in quick on $ext_if inet proto tcp to $ftp_ip port 2020:2025 flags
> S/SA keep state queue (ext_std, ext_ack)
>
> ($ext_if correspond à mon interface externe, tandis que $ext_ip correspond
> à mon ip externe. Enfin $ftp_ip correspond à l'ip du serveur ftp, c'est à
> dire x.x.x).
>
>
> Cela fonctionne... Mais cette configuration m'a obligé à ouvrir les ports
> 21 et 2020:2025 sur le pare-feu :(
>
> J'ai aussi tenté une redirection des connexions externe vers 127.0.0.1:21
> de façon à ne faire tourner le ftp-proxy en écoute que sur l'adresse
> 127.0.0.1. De cette façon, je pouvais éliminer les deux premières règles.
> Cela correspond un peu à la façon dont fonctionne le ftp-proxy lorsqu'un
> utilisateur interne désire se connecter à un serveur FTP sur l'Internet.
> Malheureusement, cette configuration ne fonctionne pas car lors du passage
> en mode passive de l'utilisateur externe, le ftp-proxy lui renvoyait
> toujours l'IP 127.0.0.1 pour la connexion des données :( N'existe-t'il pas
> un moyen d'indiquer à ftp-proxy quelle adresse renvoyer dans ce cas ?
>
> Merci d'avance pour toute l'aide que vous pourrez m'apporter à ce sujet.
> --
> Mikaël,
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail:
> [hidden email]
>
>
>


--
Eric Paumerat
Iniflux
5, rue du Chevalier de St George Paris 75008
Std: 0142603665
Fax: 0142963901
Mob: 0660940462


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: PF et reverse ftp proxy...

Mikaël Pirio
Le Vendredi 27 Janvier 2006 16:00, Eric Paumerat a écrit :
> salut,

bonjour,

> 1) je ne crois pas que'on puisse utiliser ftp-proxy dans ce sens

sisi, avec l'option -R du programme proxy-ftp.

> 4) pour faire simple tu n'as qu'a faire du NAT avec pf, c'est expliqué
> dans le faq-pf.

Le NAT est configuré...

Mais là n'est pas le pb. Sans ce reverse proxy et avec les règles de
redirection et d'accès qui vont bien, imagine une connexion d'un client
externe sur le port 21 de mon pare-feu. Ce dernier va rediriger cette
connexion vers mon serveur ftp port 21. OK, pas de problème : le client et le
serveur discutent.

Maintenant le client envoie la commande PASV pour passer en mode passif. Le
serveur va donc renvoyer à ce client son adresse IP et le port sur lequel le
client devra se connecter. Dans mon cas, le serveur va donc renvoyer son IP
x.x.x.x et un port compris entre 2020 et 2025.
Et c'est là le problème : lorsque le client va initier une connexion données,
il va la faire sur cette adresse x.x.x.x et obtiendra une erreur genre "no
route" car il s'agit d'une IP non routable sur l'Internet...

> Bon courage.

merci :)

--
Mikaël,

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: PF et reverse ftp proxy...

Mikaël Pirio
In reply to this post by Eric Paumerat
Mikaël a écrit :
>Et c'est là le problème : lorsque le client va initier une connexion données,
>il va la faire sur cette adresse x.x.x.x et obtiendra une erreur genre "no
>route" car il s'agit d'une IP non routable sur l'Internet...

Ha, dans toute mon histoire, j'ai oublié de préciser qu'au niveau
configuration du service ftp, j'ai la possibilité de lui indiquer quelle
adresse IP fournir lors d'un passage en mode passif (configuration de vsftpd,
option pasv_address). Cette option règle le problème de la connexion par un
client provenant de l'Internet puisque l'adresse fournie, après une commande
PASV du protocole ftp, par le serveur ftp pourrait être l'adresse externe du
pare-feu...

Mais un autre problème survient : s'il s'agit d'une connexion provenant d'un
client du réseau local, lui aussi après passage en mode passif obtiendra l'IP
externe pour sa connexion données :(

--
Mikaël,

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: PF et reverse ftp proxy...

Mattieu Baptiste
Mikaël Pirio a écrit :

> Mikaël a écrit :
>  
>> Et c'est là le problème : lorsque le client va initier une connexion données,
>> il va la faire sur cette adresse x.x.x.x et obtiendra une erreur genre "no
>> route" car il s'agit d'une IP non routable sur l'Internet...
>>    
>
> Ha, dans toute mon histoire, j'ai oublié de préciser qu'au niveau
> configuration du service ftp, j'ai la possibilité de lui indiquer quelle
> adresse IP fournir lors d'un passage en mode passif (configuration de vsftpd,
> option pasv_address). Cette option règle le problème de la connexion par un
> client provenant de l'Internet puisque l'adresse fournie, après une commande
> PASV du protocole ftp, par le serveur ftp pourrait être l'adresse externe du
> pare-feu...
>
> Mais un autre problème survient : s'il s'agit d'une connexion provenant d'un
> client du réseau local, lui aussi après passage en mode passif obtiendra l'IP
> externe pour sa connexion données :(
>
>  

Salut,

Je ne vois pas pourquoi tu n’es pas satisfait de ta config initiale.
Avec ftp-proxy, tout est très simple, tu le configures dans inetd.conf
(comme tu l'as fait), tu n’as aucune redirection à configurer dans ton
pf.conf, c’est ftp-proxy qui gère tout. Pour finir tu ajoutes tes règles
pour laisser passer le ftp et les ports de data dans ton pf.conf (comme
tu l'as fait). Il n’y a aucune configuration spéciale a faire sur ton
serveur ftp, hormis les ports de data que tu souhaites utiliser… Si tu
te connectes en locale, ton serveur va renvoyer à ton client son adresse
locale, et si tu te connectes en externe, ftp-proxy gère tout.
Et comme l’a dit Eric, si tu veux que ton serveur ftp soit accessible de
l’extérieur, il faut forcément ouvrir les ports sur le firewall…

Mattieu

--
Mattieu Baptiste
"/earth is 98% full ... please delete anyone you can."


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]