Mi escenario actual implica permitir varias reglas, pero necesito que se pueda acceder a ftp desde cualquier lugar. El sistema operativo es Cent 5 y estoy usando VSFTPD. Parece que no puedo obtener la sintaxis correcta. Todas las demás reglas funcionan correctamente.
## Filter all previous rules
*filter
## Loopback address
-A INPUT -i lo -j ACCEPT
## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
##Allow FTP
## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT
Las siguientes son reglas que he probado.
##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
Respuestas:
Aquí está el documento al que remito a las personas para que puedan seguir el protocolo FTP: http://slacksite.com/other/ftp.html
No tiene nada en relación con su cadena de SALIDA en su publicación, así que también la incluiré aquí. Si su cadena de SALIDA es predeterminada, entonces esto es importante.
Agregue estas reglas a su configuración de iptables:
Para admitir FTP en modo pasivo, debe cargar el módulo ip_conntrack_ftp en el arranque. Descomente y modifique la línea IPTABLES_MODULES en el archivo / etc / sysconfig / iptables-config para leer:
Guarde la configuración de iptables y reinicie iptables.
Para descartar completamente VSFTPD como un problema, detenga VSFTPD, verifique que no esté escuchando en el puerto 21 con un "netstat -a" y luego ejecute un:
Esto comenzará a escuchar netcat en el puerto 21 y hará eco de la entrada a su shell. Desde otro host, TELNET al puerto 21 de su servidor y verifique que obtiene una conexión TCP y que ve la salida en el shell cuando escribe la conexión TELNET.
Finalmente, recupere VSFTPD, verifique que esté escuchando en el puerto 21 e intente conectarse nuevamente. Si la conexión a netcat funcionó, entonces sus reglas de iptables están bien. Si la conexión a VSFTPD no funciona después de que lo hace netcat, entonces algo está mal con su configuración de VSFTPD.
fuente
Prueba esta regla. Nota:
$EXTIP
es su dirección IP externa para el servidor FTP.fuente
En mi caso, me faltaba el módulo del kernel ip_conntrack_ftp. Necesita ser cargado. Entonces puedes probar esto:
Y también agregue ip_conntrack_ftp a / etc / modules para que funcione después de reiniciar
fuente