elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Usas Skype? Protégete de los Skype Resolver


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  Abrir puertos FTP con iptables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Abrir puertos FTP con iptables  (Leído 540 veces)
Drakaris

Desconectado Desconectado

Mensajes: 164


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Abrir puertos FTP con iptables
« en: 6 Octubre 2019, 01:05 »

Hola, estoy confgurando los puertos de mi servidor. Para ello bloqueé todos los puertos. Y abrí el puerto SSH (ssh-server) y HTTP (apache2), ya que tiene el servicio apache2 y un servidor ssh. Esta es por ahora mis reglas
Código:
*filter
:INPUT DROP [9048:4904870]
:FORWARD DROP [0:0]
:OUTPUT DROP [5753:7485333]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
COMMIT

Los puertos 22,80 y 21 están abiertos. Según me he informado el puerto 21 es el puerto predeterminado del FTP (vsftpd) pero solamente permite la conexión al host, después esta el puerto 20 que permite la transferencia de los archivos, así que lo abro con estas reglas
Código:
iptables -I INPUT -p tcp --dport 20 -j ACCEPT #le digo que en el puerto de entrada si hay un paquete con el puerto de destino 20 lo acepte
iptables -I INPUT -p tcp --sport 20 -j ACCEPT #si el origen del puerto es 20
iptables -I OUTPUT -p tcp --sport 20 -j ACCEPT #si el puerto de origen es 20
iptables -I OUTPUT -p tcp --dport 20 -j ACCEPT #si el puerto de destino es 20

AL insertar estas reglas, puedo logearme al servidor pero no me carga los archivos, además cuando hago una comprobacion de puertos abiertos me dice que esta cerrado.

En que estoy fallando?

Atentamete Drakaris


« Última modificación: 8 Octubre 2019, 00:10 por Drakaris » En línea

MinusFour
Moderador
***
Desconectado Desconectado

Mensajes: 4.683


I'm fourth.


Ver Perfil WWW
Re: Abrir puertos FTP con iptables
« Respuesta #1 en: 6 Octubre 2019, 01:18 »

Pon la lista tal cual tienes ahora:

Código
  1. sudo iptables -L

No abras los mismos puertos para origen y destino. Si tu eres el servidor filtras por destino (dport) en INPUT y por origen (sport) en OUTPUT (a menos que estés haciendo una conexión inversa).


En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 14.766



Ver Perfil
Re: Abrir puertos FTP con iptables
« Respuesta #2 en: 6 Octubre 2019, 01:32 »

Código:
:INPUT DROP [9048:4904870]
:FORWARD DROP [0:0]
:OUTPUT DROP [5753:7485333]

cuidado con reglas complicadas...

el forward drop usualmente es solo necesario cuando tu servidor es un proxy o vpn, de resto no debe tener reglas de forward (y aun así a menos que sepas bien lo que haces no se recomienda mucho)

el output drop tampoco es muy buena idea, eso es en caso que estés evitando que un usuario saque datos mas allá de los puertos permitidos,, pero aplica mas o menos igual que con forward...

input drop sería la unica necesaria, ya que si no escucha inputs no hay outputs

Citar
AL insertar estas reglas, puedo logearme al servidor pero no me carga los archivos, además cuando hago una comprobacion de puertos abiertos me dice que esta cerrado.

si puedes logearte el puerto está abierto, los escaner de puertos hay que entender que hay "bajo el capó" para entender con claridad los resultados, no hay mejor prueba que la conexión


te recomiendo limpiar esas configuraciones que te dije y puedes olvidarte de todas las reglas con --sport ya que no hay output drop, solo importan ahora las --dport, desploquea 20, 21 y 22 y luego prueba
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Drakaris

Desconectado Desconectado

Mensajes: 164


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Re: Abrir puertos FTP con iptables
« Respuesta #3 en: 6 Octubre 2019, 02:05 »

Código:
:INPUT DROP [9048:4904870]
:FORWARD DROP [0:0]
:OUTPUT DROP [5753:7485333]

cuidado con reglas complicadas...

el forward drop usualmente es solo necesario cuando tu servidor es un proxy o vpn, de resto no debe tener reglas de forward (y aun así a menos que sepas bien lo que haces no se recomienda mucho)

el output drop tampoco es muy buena idea, eso es en caso que estés evitando que un usuario saque datos mas allá de los puertos permitidos,, pero aplica mas o menos igual que con forward...

input drop sería la unica necesaria, ya que si no escucha inputs no hay outputs

si puedes logearte el puerto está abierto, los escaner de puertos hay que entender que hay "bajo el capó" para entender con claridad los resultados, no hay mejor prueba que la conexión


te recomiendo limpiar esas configuraciones que te dije y puedes olvidarte de todas las reglas con --sport ya que no hay output drop, solo importan ahora las --dport, desploquea 20, 21 y 22 y luego prueba

Hola, he puesto la politica de INPUT en DROP y las demás en ACCEPT, y después inserté las reglas correspondiente.
Código:
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

El servidor web responde, y el ssh también. El problema es que en el servidor FTP abro el puerto 21 que es de conexion y también el puerto 20, y no me funciona. Pero pasa algo currioso ya que si accedo desde el navegador o desde nautilus no puedo acceder a los archivos pero en el caso del navegador se intenta conectar y en nautilus se conecta pero no muestra los archivos se queda cargando.  Pero si lo ejecuto desde la terminal
Código:
#ftp 192.168.0.2
y pongo las credenciales si puedo acceder y editar los archivos.

Por que ocurre esto?
Además he mirado mis puertos abierto con netstat -p tcp -n | grep ftp y sale esto:
Código:
tcp6       0      0 192.168.0.2:21          192.168.0.3:49670       ESTABLISHED
Parece que el protocolo es tcp6 que en el caso de iptables no se como abrir este tipo de protocolo. y la dport es un puerto mayor a 1024 por la cual tambien probé esta regla
Código:
iptables -I INPUT -p tcp --sport 20 -j ACCEPT

y no funciona ni tampoco con -6

Que puede pasar?
En línea

MinusFour
Moderador
***
Desconectado Desconectado

Mensajes: 4.683


I'm fourth.


Ver Perfil WWW
Re: Abrir puertos FTP con iptables
« Respuesta #4 en: 6 Octubre 2019, 03:06 »

Si te funciona el cliente FTP no es problema del servidor, es problema de nautilus o desde el equipo que estás intentando conectarte con Nautilus.
En línea

Drakaris

Desconectado Desconectado

Mensajes: 164


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Re: Abrir puertos FTP con iptables
« Respuesta #5 en: 7 Octubre 2019, 00:10 »

Si te funciona el cliente FTP no es problema del servidor, es problema de nautilus o desde el equipo que estás intentando conectarte con Nautilus.
Si.

El servidor cuando hace una conexion FTP lo hace por el puerto 21, pero cuando debe de hacer transferencia de datos,teóricamente tendría que entrar/salir por el puerto 20, pero snifeé la red y no ocurre esto, lo que hace es que los sport y dport son puertos aleatorios mayor que 1024, (no siempre).

img: https://drive.google.com/file/d/1rfUIrP5mi1IVQa_6NKPSrD1xVCkzAYiD/view?usp=sharing

Haciendo así que se conecta pero no se muestra los archivos.
La pregunta es..¿como le digo a vsftpd que el puerto de transferencia de datos es el 20? Para ello estan estas configuraciones del vsftpd.conf
Código:
pasv_enable
pasv_max_port
pasv_min_port
ftp_data_port
pero probé con todas aquellas y no me funciona.

¿Como puedo decirle que el puerto de data sea el que yo quiera?
o sino ¿como puedo hacer una regla qcon iptables que cuando detecte un paquete con el protocolo ftp-data me lo habilite, sin importar que puerto sea el de entrada o salida?
En línea

MinusFour
Moderador
***
Desconectado Desconectado

Mensajes: 4.683


I'm fourth.


Ver Perfil WWW
Re: Abrir puertos FTP con iptables
« Respuesta #6 en: 7 Octubre 2019, 00:45 »

Si, lo que pasa ahí es que estás usando el modo pasivo de FTP. Necesitas establecer un rango de puertos:

Por ejemplo: 49000-50000 (49000 es min_port y 50000 es max_port). Los puertos son puertos destinos en la cadena de INPUT:

Código
  1. sudo iptables -A INPUT -p tcp --dport 49000:50000

La regla del puerto 20 también debería estar en OUTPUT como puerto de origen (si tienes una política de DROP, sino no tiene caso).

Edit: Por cierto, si utilizas SSH bien puedes utilizar sftp en lugar ftp. No hay modo pasivo ahí, todo va por un solo puerto (22) y encima la información va cifrada.
« Última modificación: 7 Octubre 2019, 00:48 por MinusFour » En línea

Drakaris

Desconectado Desconectado

Mensajes: 164


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Re: Abrir puertos FTP con iptables
« Respuesta #7 en: 8 Octubre 2019, 00:03 »

Hola.Ya pude solucionar el problema.

Como previamente había dicho MinusFour, es que los puertos de los clientes a la conexion al servidor son aleatorios mayor que 1024, por la cual como lo estaba bloqueando todos pues no se hacía la transferencia.

Como comentó él, seleccioné un rango para que escoja un puerto aleatorio a ese rango y yo lo permitiera en iptables.
Código:
pasv_min_port=1025
pasv_max_port=1035
pasv_enable=YES
y después
Código:
iptables -I INPUT -p tcp --dport 1025:1035 -j ACCEPT

Por manías mias seleccione el puerto mínimo 1025 y el máximo 1025, por la cual solo le dejo un puerto para la transferencia de archivos. El resultado sería este:
Código:
Chain INPUT (policy DROP)
target     prot opt source               destination        
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:1025:1035
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ssh
ACCEPT     icmp --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination          
Gracias por vuesto tiempo.
« Última modificación: 15 Noviembre 2019, 16:29 por Drakaris » En línea

MinusFour
Moderador
***
Desconectado Desconectado

Mensajes: 4.683


I'm fourth.


Ver Perfil WWW
Re: Abrir puertos FTP con iptables
« Respuesta #8 en: 8 Octubre 2019, 03:41 »

Honestamente, no conozco lo suficiente del protocolo FTP para decir que un solo puerto puede manejar multiples conexiones al mismo tiempo. Si lo normal es especificar un rango de puertos yo creo que no. Como yo tengo entendido, cuando se hace la transferencia de un archivo en el modo pasivo, el servidor empieza a escuchar en un determinado puerto y le notifica al usuario el puerto en el que está escuchando. Quizás sea posible compartir la conexión pero me imagino que sería algo complicado.
En línea

Drakaris

Desconectado Desconectado

Mensajes: 164


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Re: Abrir puertos FTP con iptables
« Respuesta #9 en: 15 Noviembre 2019, 16:26 »

Honestamente, no conozco lo suficiente del protocolo FTP para decir que un solo puerto puede manejar multiples conexiones al mismo tiempo. Si lo normal es especificar un rango de puertos yo creo que no. Como yo tengo entendido, cuando se hace la transferencia de un archivo en el modo pasivo, el servidor empieza a escuchar en un determinado puerto y le notifica al usuario el puerto en el que está escuchando. Quizás sea posible compartir la conexión pero me imagino que sería algo complicado.

Perdón, es verdad, con un puerto unicamente no puedes teenr multiples sesiones
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Abrir un puerto con iptables
Redes
hernanlp83 1 653 Último mensaje 25 Noviembre 2005, 16:38
por el-brujo
duda bloquear puertos con con squid e iptables
Redes
danielo- 2 6,757 Último mensaje 14 Mayo 2011, 17:28
por danielo-
Permitir solo algunos puertos con iptables
Seguridad
matiasramos 0 880 Último mensaje 28 Junio 2013, 22:25
por matiasramos
Denegar acceso a todos los puertos menos uno en iptables « 1 2 »
GNU/Linux
WHK 12 4,285 Último mensaje 10 Mayo 2015, 04:22
por WHK
iptables puertos redireccionado lan
GNU/Linux
fabiancorreo 1 1,104 Último mensaje 1 Junio 2015, 19:49
por cpu2
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines