Ayuda para proporcionar salida a ftp

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

Ayuda para proporcionar salida a ftp

I.S.C. Jorge Octavio Guzmán Sánchez-2

resulta que tengo tres segmentos a los que debo atender, 51, 41, 15 y
funciona bien darles internet y filtrar las paginas con el squid, pero
para que puedan usar ftp no lo he logrado, si hago NAT  al puerto 21
entonces se pueden conectar pero solo en el modo activo al pasar al
pasivo falla, esto se describe en "PF: Cuestiones Relacionadas con
FTP" http://www.openbsd.org/faq/pf/es/ftp.html, por eso recurri a la
solucion que alli plantean:

en el archivo inetd.conf agrege la linea que dice que las conexiones
que llegen en el puerto 8021

127.0.0.18021   stream  tcp     nowait  root    /usr/libexec/ftp-proxy
 ftp-proxy

y en el pf.conf

ext_if="rl0"
ext_ip="148.208.246.251"
int_if="{bge0 rl1 ne3}"
protos="{tcp udp}"
r15_if="bge0"
r51_if="rl1"
r41_if="ne3"
#15 51 41
net15="192.168.15.0/24"
net51="192.168.51.0/24"
net41="192.168.41.0/24"
psin="{22 25 53 80 110 143}"
pnat="{22 25 53 80 110 143 159 171 213 443}"
ms="{1863 1864 5050 20}"
table <prof> persist file "/etc/maestros"
table <srvs> persist file "/etc/servidores"
table <ctrl>  {192.168.15.31, 192.168.15.253, 192.168.15.1
192.168.15.219 192.168.15.220}

nat on $ext_if from $net15 to any port $pnat -> $ext_if
nat on $ext_if from $net51 to any port $pnat -> $ext_if
nat on $ext_if from $net41 to any -> $ext_if
nat on $ext_if from <prof> to any -> $ext_if
nat on $ext_if from <srvs> to any -> $ext_if
nat on $r41_if from <ctrl> to 192.168.41.1 -> $r41_if

rdr on $int_if proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

block in on $ext_if all
pass in quick on $ext_if proto {tcp udp} from any port $pnat modulate state
pass in quick on $ext_if proto {tcp udp} from any to 148.208.246.251
port $psin modulate state

### para la separacion en las sub redes
#pass  quick on $int_if from any to 192.168.41.1 modulate state
pass  quick on $int_if from <ctrl> modulate state
block quick on $r51_if from { 192.168.41.0/24 192.168.15.0/24 }
block quick on $r41_if from { 192.168.51.0/24 192.168.15.0/24 }
block quick on $r15_if from { 192.168.41.0/24 192.168.51.0/24 }
----

rdr pass on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
(agrege el pass de acuerdo al man 8 ftp-proxy) pero sin el tampoco
funciona, que me falta, gracias por su ayuda
Reply | Threaded
Open this post in threaded view
|

Re: Ayuda para proporcionar salida a ftp

Gerardo Santana Gómez Garrido

El 17/11/05, I.S.C. Jorge Octavio Guzmán Sánchez<[hidden email]> escribió:
>
> resulta que tengo tres segmentos a los que debo atender, 51, 41, 15 y
> funciona bien darles internet y filtrar las paginas con el squid, pero
> para que puedan usar ftp no lo he logrado, si hago NAT  al puerto 21
> entonces se pueden conectar pero solo en el modo activo al pasar al
> pasivo falla, esto se describe en "PF: Cuestiones Relacionadas con
> FTP" http://www.openbsd.org/faq/pf/es/ftp.html, por eso recurri a la
> solucion que alli plantean:

Utiliza el parámetro -D de ftp-proxy para aumentar el nivel de
depuración, para poder diagnosticar mejor. También servirá que
observes con tcpdump -nettti $ext_if  host $ftpserver qué es lo que
ocurre (substituye las variables por datos reales).

>
> en el archivo inetd.conf agrege la linea que dice que las conexiones
> que llegen en el puerto 8021
>
> 127.0.0.18021   stream  tcp     nowait  root    /usr/libexec/ftp-proxy
>  ftp-proxy

Ahí faltan ':'. Debe decir:

127.0.0.1:8021 stream tcp nowait root  /usr/libexec/ftp-proxy  ftp-proxy

--
Gerardo Santana
Reply | Threaded
Open this post in threaded view
|

Re: Ayuda para proporcionar salida a ftp

I.S.C. Jorge Octavio Guzmán Sánchez-2

gracias, cheque con tcpdump, pero solo use -ni rl0 (para que me diese
menos informacion) y encontre que solo se enviava el SYN  pero no
aceptaba, eso es porque yo si podia pedira algo, pero no aceptaba nada
que no fuese en los puertos psin (psin="{22 25 53 80 110 143}"),
enontces agrege

pass out quick on $ext_if proto tcp from $ext_ip to any port 21 modulate state

y ademas le puse el rango de puertos (en el inetd.conf) para la
conexion passiva desde
127.0.0.1:8021  stream  tcp     nowait  root    /usr/libexec/ftp-proxy
-n -D 3 -M 49160  -m 49152       ftp-proxy

y abri esos puertos en el pf
pass in quick on $ext_if proto {tcp udp} from any to $ext_ip port 49152:49160

por el momento los dejo en tcp y udp, no he checado pero creo que solo
seria udp, ademas de que no me gusta tener puertos abiertos, existe
alguna forma de decirle que los abra solo para maquinas con las que
comence antes una conexion desde su puerto 21?,

gracias gerardo
Reply | Threaded
Open this post in threaded view
|

Re: Ayuda para proporcionar salida a ftp

Gerardo Santana Gómez Garrido

El 21/11/05, I.S.C. Jorge Octavio Guzmán Sánchez<[hidden email]> escribió:

>
> gracias, cheque con tcpdump, pero solo use -ni rl0 (para que me diese
> menos informacion) y encontre que solo se enviava el SYN  pero no
> aceptaba, eso es porque yo si podia pedira algo, pero no aceptaba nada
> que no fuese en los puertos psin (psin="{22 25 53 80 110 143}"),
> enontces agrege
>
> pass out quick on $ext_if proto tcp from $ext_ip to any port 21 modulate state
>
> y ademas le puse el rango de puertos (en el inetd.conf) para la
> conexion passiva desde
> 127.0.0.1:8021  stream  tcp     nowait  root    /usr/libexec/ftp-proxy
> -n -D 3 -M 49160  -m 49152       ftp-proxy
>
> y abri esos puertos en el pf
> pass in quick on $ext_if proto {tcp udp} from any to $ext_ip port 49152:49160
>
> por el momento los dejo en tcp y udp, no he checado pero creo que solo
> seria udp, ademas de que no me gusta tener puertos abiertos, existe
> alguna forma de decirle que los abra solo para maquinas con las que
> comence antes una conexion desde su puerto 21?,
>
> gracias gerardo
>

En realidad sería sólo el protocolo TCP. Podrías hacer esto (tomado de
http://www.openbsd.org/faq/pf/ftp.html#client):

pass in on $ext_if inet proto tcp from port 20 to ($ext_if) \
    user proxy flags S/SA keep stat

de esta manera permites entradas sólo de aquellas conexiones cuyo
puerto remoto sea el 20 (ftp-data) y que provengan de ftp-proxy (user
proxy)

--
Gerardo Santana
"Between individuals, as between nations, respect for the rights of
others is peace" - Don Benito Juárez