Quiero permitir el tráfico FTP entrante.
CentOS 5.4:
Este es mi /etc/sysconfig/iptables
archivo
# Generated by iptables-save v1.3.5 on Thu Oct 3 21:23:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133:14837]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
COMMIT
# Completed on Thu Oct 3 21:23:07 2013
Además, de forma predeterminada, el módulo ip_conntrack_netbios_n se está cargando.
#service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
Loading additional iptables modules: ip_conntrack_netbios_n[ OK ]
Pero el problema no es con ese módulo, ya que intenté descargarlo y todavía no tuve suerte.
Si desactivo iptables, puedo transferir mi copia de seguridad de otra máquina a FTP. Si se aplica iptables, la transferencia falló.
fuente
--sport 1024: and --dport 1024:
significa que estamos incluyendo todos los puertos en el rango1024:32535
que son puertos sin privilegios, lo que significa que los usuarios sin acceso de privilegios pueden usar estos puertos para probar sus aplicaciones.--sport
un modo sin privilegios para solucionar problemas de firewall y permitir que los clientes se conecten al servidor.NEW,ESTABLISHED
pero eso no debería importar. Primero, una conexión siempre está en unNEW
estado y luego salta, loRELATED
que indica que esta conexión está relacionada con una conexión ya permitida. Cuando la conexión cambia alESTABLISHED
estado, nos informa que se ha establecido una conexión en ambos lados (servidor / cliente). Podrías intentarlo en su-m state --state ...
lugar.NEW
realmente importa. No parece funcionar sin él.--sport 1024:
. ¿Por qué el puerto del cliente sería útil para la regla? Si se conecta desde un puerto 80 a los puertos pasivos del servidor, también se le debe permitir que se conecte.Ya vi reglas tan extensas en varios blogs, etc., y me pregunté por qué no simplemente usar
junto con el
nf_conntrack_ftp
módulo Esto es más conciso y legible, lo que generalmente es algo bueno, especialmente con firewalls ...FWIW, parece que hubo un cambio en el kernel 4.7, por lo que es necesario configurar a
net.netfilter.nf_conntrack_helper=1
través desysctl
(por ejemplo, ponerlo/etc/sysctl.d/conntrack.conf
) o usar(ver aquí para más detalles)
fuente
echo "1" > /proc/sys/net/netfilter/nf_conntrack_helper
y todo funciona como se esperaba.Cliente FTP:
SERVIDOR FTP:
Para alternar entre modo pasivo y activo en el lado del cliente
fuente
Agregar NUEVO lo arregló, creo.
Ahora, mi archivo iptables se ve así ...
Escribiéndolo como respuesta, ya que no se permiten demasiados caracteres en los comentarios. Muchas gracias por su ayuda.
fuente
--dport 20:65535
está dejando todos los puertos del 20 al 65535 abiertos desde cualquier puerto de origen entre 1024: 65535, lo que deja expuestos muchos servicios que probablemente no deberían, a menos que se permita explícitamente. Creo que lo que se pretendía es--dport 1024:65535
Si necesita conexiones activas y pasivas, y ya acepta
ESTABLISHED
conexiones, como:Entonces solo necesita abrir el puerto 21 y agregar una regla especial para puertos pasivos. No se necesita ninguna regla para el puerto 20, ya que la
ESTABLISHED
regla anterior ya la acepta .Primero acepte nuevas conexiones en
port 21
:Luego agregue el ayudante CT para puertos pasivos
1024:
:Ver también:
Nota: debe configurar el
1024:
como en su servidor FTP: busque los puertos pasivos predeterminados en su configuración FTP. De lo contrario, abriría demasiados puertos que pueden no ser relativos a FTP.Nota importante: no agregué
OUTPUT
reglas ya que mis valores predeterminados van coniptables -P OUTPUT ACCEPT
. Lo que significa que confío en lo que sale de mi caja. Esa puede no ser una buena opción, especialmente en una configuración NAT.Nota muy importante: FTPS no funcionará con dicha configuración, ya que el puerto pasivo está oculto (encriptado), por lo tanto, no hay forma de
iptables
adivinar el buen puerto. Consulte Cambiar las tablas IP para permitir FTP a través de TLS mediante puertos pasivos y https://serverfault.com/questions/811431/are-my-iptables-for-ftps-with-tls-okfuente