Discussion:
Puertos para NFS
(demasiado antiguo para responder)
jma
2004-10-16 21:55:47 UTC
Permalink
Tengo Mdk 10.0 y estoy haciendo pruebas con NFS y veo que con el
Firewall activado, no me funciona, lo cual me parece correcto.

He leido que debo abrir los puertos 2049/tcp y 111/tcp, pero no me
funciona (en cuanto desactivo el firewall si funciona).

¿hay algun otro puerto que deba abrir?

JMA
Count Zero
2004-10-16 23:29:39 UTC
Permalink
Post by jma
Tengo Mdk 10.0 y estoy haciendo pruebas con NFS y veo que con el
Firewall activado, no me funciona, lo cual me parece correcto.
He leido que debo abrir los puertos 2049/tcp y 111/tcp, pero no me
funciona (en cuanto desactivo el firewall si funciona).
¿hay algun otro puerto que deba abrir?
La verdad es que varios (muchos). Aunque no soy 'cliente habitual' de este
servicio y lo que te voy a decir puede ser impreciso e incorrecto el
problema con NFS y los firewalls es el siguiente:

NFS usa RPC Remote Procedure Call (Llamada a procedimiento remoto). Veras
como tienes un demonio también llamado portmap (mapeador de puertos) que
es el que usa el puerto 111.

El problema es que tanto en el cliente como en el servidor NFS escoje un
puerto al azar y notifica de ello al demonio portmap.

Qualquier transacción NFS primero consulta al portmap (puerto 111) en que
puerto debe enviarla (al NFS).

La solución pasa por permitir conexiones en los puertos superiores para
permitir trafico RPC (NFS, NIS y algun otro) para la red local. Y
limitar todos los puertos en el firewall que da a internet (que de hecho
dudo que te interese que alguien exterior 'monte' tu NFS).

Aún así mejor esperes alguna otra respuesta antes de hacer nada, ya que
puedo equivocarme en algo y quizás alguien tenga una solución mejor.

Salut
Count.
jma
2004-10-17 09:52:17 UTC
Permalink
Post by Count Zero
La solución pasa por permitir conexiones en los puertos superiores para
permitir trafico RPC (NFS, NIS y algun otro) para la red local. Y
limitar todos los puertos en el firewall que da a internet (que de hecho
dudo que te interese que alguien exterior 'monte' tu NFS).
Gracias por responder. Creo que en esta frase esta la clave de lo que
quiero o deberia hacer.

El ordenador que esta conectado a Internet (el servidor), tiene 2
tarjetas: eth0 con DHCP sale a internet, y eth1 con IP fija
(192.168.0.xx) esta conectada a un hub interno (es una red domestica).

El firewall lo tengo activado pero contra "eth0": del exterior no quiero
ni necesito ninguna conexion, es solo para compartir carpetas internamente.

Porqué, cuando activo el firewall de Mandrake, que al aceptar selecciono
"eth0", me filtra tambien la red local (con eth1) ?

O dicho de otra forma, lo que querria es activar el firewall "solo" para
el exterior (eth0) y dejar via libre en la red local (eth1).

JMA
Hue-Bond
2004-10-16 23:59:14 UTC
Permalink
Post by jma
He leido que debo abrir los puertos 2049/tcp y 111/tcp, pero no me
funciona (en cuanto desactivo el firewall si funciona).
¿hay algun otro puerto que deba abrir?
Hasta hace cosa de un mes y medio, bastaba con abrir el rango de
puertos especificado en /proc/sys/net/ipv4/ip_local_port_range (que se
puede cambiar). Entonces actualicé y parece que desde entonces
rpc.statd y rpc.mountd usan el rango 600-1023. No lo tengo claro al
100% pero he abierto ese rango y los problemas desaparecieron. No es
que sea una solución que me tiene muy contento pero...

/etc/init.d/nfs-kernel-server restart &> /dev/null
/etc/init.d/nfs-common restart &> /dev/null
netstat -ptan|grep rpc

Repitiendo esto varias veces (15-20), el rango se hace visible.
--
Hue-Bond
jma
2004-10-17 09:55:34 UTC
Permalink
Post by Hue-Bond
Hasta hace cosa de un mes y medio, bastaba con abrir el rango de
puertos especificado en /proc/sys/net/ipv4/ip_local_port_range (que se
puede cambiar). Entonces actualicé y parece que desde entonces
rpc.statd y rpc.mountd usan el rango 600-1023. No lo tengo claro al
100% pero he abierto ese rango y los problemas desaparecieron. No es
que sea una solución que me tiene muy contento pero...
Tal vez sea eso, tengo una mdk 10.0 con todas las actualizaciones.
Post by Hue-Bond
/etc/init.d/nfs-kernel-server restart &> /dev/null
/etc/init.d/nfs-common restart &> /dev/null
netstat -ptan|grep rpc
Repitiendo esto varias veces (15-20), el rango se hace visible.
Si ha de ser abriendo muchos puertos, prefiero quedarme sin NFS (de
momento con FTP, mas o menos nos arreglamos pero no es muy comodo).


Como le digo a Count-Zero me gustaria poder poner el firewall solo a la
tarjeta que sale a internet.

JMA
Jose Maria Lopez Hernandez
2004-10-17 18:40:30 UTC
Permalink
Post by jma
Tengo Mdk 10.0 y estoy haciendo pruebas con NFS y veo que con el
Firewall activado, no me funciona, lo cual me parece correcto.
He leido que debo abrir los puertos 2049/tcp y 111/tcp, pero no me
funciona (en cuanto desactivo el firewall si funciona).
¿hay algun otro puerto que deba abrir?
JMA
NFS en teoría usa 2049/tcp y 2049/udp. Portmap usa 111/tcp,
pero luego tienes que activar los servicios RPC, que dependen
de portmap, aunque yo tengo como estandar:

RPCLOCKD: 4045/udp
RPCQUOTAD: 762/tcp 762/udp
RPCMOUNTD: 635/tcp 635/udp
RPCSTATD: 1110/tcp 1110/udp

Ahora bién, la única forma de asegurarte de cual es el puerto
exacto que ha asignado portmap a cada servicio es la siguiente:

LOCKD=$(rpcinfo -p localhost|grep "lock"|grep "udp" \
|tr ' ' '\n'|grep -v "lock"|tail -n 2|head -n 1)

RPCRQUOTADTPC=$(rpcinfo -p localhost|grep "quota"|grep "tcp" \
|tr ' ' '\n'|grep -v "quota"|tail -n 2|head -n 1)
RPCRQUOTADUDP=$(rpcinfo -p localhost|grep "quota"|grep "udp" \
|tr ' ' '\n'|grep -v "quota"|tail -n 2|head -n 1)

RPCMOUNTDUTPC=$(rpcinfo -p localhost|grep "mount"|grep "tcp" \
|tr ' ' '\n'|grep -v "mount"|tail -n 2|head -n 1)
RPCMOUNTDUDP=$(rpcinfo -p localhost|grep "mount"|grep "udp" \
|tr ' ' '\n'|grep -v "mount"|tail -n 2|head -n 1)

RPCSTATDUTPC=$(rpcinfo -p localhost|grep "stat"|grep "tcp" \
|tr ' ' '\n'|grep -v "stat"|tail -n 2|head -n 1)
RPCSTATDUDP=$(rpcinfo -p localhost|grep "stat"|grep "udp" \

Es el método más infalible y el que yo aconsejo en bastion-firewall.
--
Jose Maria Lopez Hernandez
Director Tecnico de bgSEC
***@bgsec.com
bgSEC Seguridad y Consultoria de Sistemas Informaticos
http://www.bgsec.com
ESPAÑA

The only people for me are the mad ones -- the ones who are mad to live,
mad to talk, mad to be saved, desirous of everything at the same time,
the ones who never yawn or say a commonplace thing, but burn, burn, burn
like fabulous yellow Roman candles.
-- Jack Kerouac, "On the Road"
Hue-Bond
2004-10-17 21:39:09 UTC
Permalink
Post by Jose Maria Lopez Hernandez
Ahora bién, la única forma de asegurarte de cual es el puerto
Interesante, tomo buena nota :^).
Post by Jose Maria Lopez Hernandez
RPCMOUNTDUTPC=$(rpcinfo -p localhost|grep "mount"|grep "tcp" \
|tr ' ' '\n'|grep -v "mount"|tail -n 2|head -n 1)
RPCMOUNTDUDP=$(rpcinfo -p localhost|grep "mount"|grep "udp" \
|tr ' ' '\n'|grep -v "mount"|tail -n 2|head -n 1)
Sin embargo, y en mi humilde opinión, creo que usar 7 comandos para
cada puerto es bastante poco eficiente, sobre todo cuando basta con
sólo 2 y un poco de bash:

for P in tcp udp; do ## protocolo
for S in mountd status; do ## servicio (ampliar según sea necesario)
let ${P}_${S}=$(rpcinfo -p|awk "/$P +[0-9]+ +$S/ {print \$4; exit}")
done
done

# echo $tcp_mountd $tcp_status $udp_mountd $udp_status
669 697 666 694
# rpcinfo -p
[...]
100005 1 udp 666 mountd
100005 1 tcp 669 mountd
[...]
100024 1 udp 694 status
100024 1 tcp 697 status

El único defecto que le veo es que bash le resta portabilidad...
--
Hue-Bond
Jose Maria Lopez Hernandez
2004-10-18 12:29:35 UTC
Permalink
Post by Hue-Bond
Sin embargo, y en mi humilde opinión, creo que usar 7 comandos para
cada puerto es bastante poco eficiente, sobre todo cuando basta con
for P in tcp udp; do ## protocolo
for S in mountd status; do ## servicio (ampliar según sea necesario)
let ${P}_${S}=$(rpcinfo -p|awk "/$P +[0-9]+ +$S/ {print \$4; exit}")
done
done
# echo $tcp_mountd $tcp_status $udp_mountd $udp_status
669 697 666 694
# rpcinfo -p
[...]
100005 1 udp 666 mountd
100005 1 tcp 669 mountd
[...]
100024 1 udp 694 status
100024 1 tcp 697 status
El único defecto que le veo es que bash le resta portabilidad...
Está perfecto para cualquier usuario que quiera usarlo normalmente,
es una solución muy buena. Solo tiene una pega (para mi), y es que
bastion-firewall define servicio por servicio, entonces hay que
recomendar servicio por servicio (hice copy and paste del fichero
de configuración), y que además una de las premisas de desarrollo
de bastion-firewall era no usar awk, sed ni perl.
--
Jose Maria Lopez Hernandez
Director Tecnico de bgSEC
***@bgsec.com
bgSEC Seguridad y Consultoria de Sistemas Informaticos
http://www.bgsec.com
ESPAÑA

The only people for me are the mad ones -- the ones who are mad to live,
mad to talk, mad to be saved, desirous of everything at the same time,
the ones who never yawn or say a commonplace thing, but burn, burn, burn
like fabulous yellow Roman candles.
-- Jack Kerouac, "On the Road"
jma
2004-10-18 20:04:30 UTC
Permalink
Post by Jose Maria Lopez Hernandez
NFS en teoría usa 2049/tcp y 2049/udp. Portmap usa 111/tcp,
pero luego tienes que activar los servicios RPC, que dependen
RPCLOCKD: 4045/udp
RPCQUOTAD: 762/tcp 762/udp
RPCMOUNTD: 635/tcp 635/udp
RPCSTATD: 1110/tcp 1110/udp
Ahora bién, la única forma de asegurarte de cual es el puerto
LOCKD=$(rpcinfo -p localhost|grep "lock"|grep "udp" \
|tr ' ' '\n'|grep -v "lock"|tail -n 2|head -n 1)
RPCRQUOTADTPC=$(rpcinfo -p localhost|grep "quota"|grep "tcp" \
|tr ' ' '\n'|grep -v "quota"|tail -n 2|head -n 1)
RPCRQUOTADUDP=$(rpcinfo -p localhost|grep "quota"|grep "udp" \
|tr ' ' '\n'|grep -v "quota"|tail -n 2|head -n 1)
RPCMOUNTDUTPC=$(rpcinfo -p localhost|grep "mount"|grep "tcp" \
|tr ' ' '\n'|grep -v "mount"|tail -n 2|head -n 1)
RPCMOUNTDUDP=$(rpcinfo -p localhost|grep "mount"|grep "udp" \
|tr ' ' '\n'|grep -v "mount"|tail -n 2|head -n 1)
RPCSTATDUTPC=$(rpcinfo -p localhost|grep "stat"|grep "tcp" \
|tr ' ' '\n'|grep -v "stat"|tail -n 2|head -n 1)
RPCSTATDUDP=$(rpcinfo -p localhost|grep "stat"|grep "udp" \
Es el método más infalible y el que yo aconsejo en bastion-firewall.
Gracias Jose Maria. Ha funcionado perfectamente. Sin desactivar el
firewall ya me funciona correctamente. Haciendo pruebas lo unico que he
detectado es que los puertos varian cuanto hago un "restart", pero es
problema menor.

Por si acaso, no es que sea muy paranoico, pero en el etc/exports he
puesto acceso solo a la red local (192.168.0.*).

JMA

Continúe leyendo en narkive:
Loading...