You are on page 1of 7

lunes, 22 de octubre de 2012

FTP Server (modo Pasivo) detras de IPTables
Digamos que tienen un su red un servidor FTP el cual utilizaran para colocar
unos archivos que otros descargaran. No pondrán este servidor FTP
diréctamente de cara a Internet, sino que en el Firewall redireccionaran los
puertos de FTP hacia ese servidor servidor Internet utilizando reglas NAT o
PAT. Como seguro saben, FTP utiliza 2 puertos IP: el puerto 21 y el puerto
20. El puerto 21 es el puerto de control, en el que se inicia la conexión al
servidor, y el puerto 20 se utiliza para la transferencia de datos. Por lo que
lo primero que haríamos seria configurar nuestro IPTables para que redirija
estos 2 puertos a nuestro servidor FTP interno, utilizando reglas como estas:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20 -j DNAT --to
191.0.10.254:20
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to
191.0.10.254:21

Y luego:

Iptables -A FORWARD -p tcp -s 0/0 -d ftp-server-interno -m
multiport --dports 20,21 -j ACCEPT

Debería funcionar cierto? bueno, funcionara siempre y cuando indiquen en
su cliente FTP que utilizaran FTP en modo "activo", que es este modo que
acabamos de describir. En este modo el cliente hace la solicitud de conexión
al servidor al puerto 21, aquí se le indica al servidor el puerto local que el
cliente utilizara para esta conexión y entonces el servidor inicia una nueva
conexión hacia el cliente al puerto que este le indico. O sea que el servidor
inicia una conexión hacia el cliente luego de la negociacion inicial, lo que
significa que si el cliente esta detras de un Firewall la conexión no se podra
lograr, y como la mayoría de Routers ADSL y Firewalls bloquean todo el
trafico entrante no se permitiría esta conexion hacia el cliente. Por esto es
muy probable que las reglas de mas arriba no funcionen. Aquí un pequeño
gráfico del funcionamiento de este modo:

En el siguiente gráfico se muestra el funcionamiento de este modo: Esto quiere decir que tenemos que crear una regla que redirija este rango de puertos a nuestro FTP interno? Por suerte no. se creo el modo "FTP Pasivo". Este puerto aleatorio se escoge dentro del rango de puertos TCP 1024 al 65535. para evitar que el servidor inicie una nueva conexión hacia el cliente. Con esto. Así se evita el problema de filtrado del lado del cliente. para esto utilizamos los módulos "ip_nat_ftp" y "ip_conntrack_ftp" junto a las reglas que definimos mas arriba. IPTables sabra el puerto aleatorio que se .Ahora bien. en este modo el servidor luego de la negociación inicial le envía el cliente un puerto aleatorio para la transferencia de datos y el cliente entonces hace la conexion a este nuevo puerto.

key -out /etc/ssl/certs/proftpd.2. solo tenemos que modificar el archivo /etc/modules y agregar: ip_conntrack_ftp ip_nat_ftp Con estos módulos y utilizando las reglas de IPTables que les mostre mas arriba (las 2 que crean el DNAT y la de FORWARD que permite el trafico de estos puertos hacia nuestro FTP server) tendremos nuestro servidor FTP funcionando detrás de IPTables.crt -nodes -days 365 chmod 0600 /etc/ssl/private/proftpd.negocio para la transferencia de datos y lo direccionará a nuestro FTP Server.key chmod 0640 /etc/ssl/private/proftpd.3 Acesso seguro FTPS (TLS/SSL) . //***************configurar tls**************************77 SERVIDOR FTP(PROFTPD) CON TLS  Generar un certificado para el acceso seguro con el comando: openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd. Como siempre. Para habilitar este modo ejecutamos: # modprobe ip_conntrack_ftp # modprobe ip_nat_ftp Para hacer esto permanente y no tener que ejecutarlo en cada reinicio o incluirlo en algun script. espero que esto les haya servido de ayuda y les haya econimizado unos minutos de busqueda en Google.key 4.

c> TLSEngine TLSLog TLSProtocol on /var/log/proftpd/tls.conf: /etc/proftpd/tls.insecure # [.] <IfModule mod_tls. Primero se debe configurar el módulo TLS en el archivo de configuración /etc/proftpd/tls.c) está desactivado.. Configuración De manera predeterminada. . Su activación tiene dos etapas. el soporte TLS (mod_tls.crt TLSRSACertificateKeyFile /etc/ssl/private/server... la configuración de ProFTPD (ver 4. así como la transmisión de datos encriptados con la activación del soporte TLS (Transport Layer Security)..] # Are clients required to use FTP over TLS when talking to this server? # TLSRequired on # [.. la conexión será rechazada.conf Segundo.conf # [.. porque los nombres de los usuarios y sus contraseñas se transmiten como simple texto. La opción TLSRequired on obliga a que los clientes ftp utilicen el protocolo TLS. sin protección. Sin embargo.. en caso contrario..key.2. es decir..log SSLv23 # [.] Los certificados usados TLSRSACertificateFile y TLSRSACertificateKeyFile ya fueron generados previamente.Objetivo El protocolo ftp se considera inseguro. el servidor ProFTPD puede ser configurado de modo que pueda exigir la autenticación a los usuarios.conf. son fáciles de interceptar por terceros..1. La configuración del módulo TLS se hace en el fichero /etc/proftpd/tls.] # Server SSL certificate. # [. Por esto. en Certificados SSL auto-firmados. el servidor aceptará conexiones seguras e inseguras. ProFTPD). Si esta opción fuera desactivada (TLSRequired off).] TLSRSACertificateFile /etc/ssl/certs/server.. esta configuración debe incluirse en el archivo principal /etc/proftpd/proftpd..] # [.

conf: /etc/proftpd/proftpd.20151016_VLEsta configuración debe incluirse en el archivo de configuración principall /etc/proftpd/proftpd. deberá indicarse explícitamente que pretendemos una conexión al servidor ftp explícitamente con TLS: .] Por último..] # # This is used for FTPS connections # Include /etc/proftpd/tls. debe reiniciarse el servicio ftp para activar las alteraciones: root@server:~# /etc/init.conf # [.d/proftpd restart Utilización Al servidor ftp puede accederse a través de un cliente ftp que soporte el protocolo TLS.conf # [... como Filezilla. Para esto..

aparecerá una ventana donde se muestra el certificado utilizado y se pide que se confirme: .Luego de que se establezca la conexión.

.Cuando se acepte el certificado. todas las comunicaciones entre el cliente y el servidor estarán encriptadas y seguras.