Espero que me hecheis una mano, que llevo unas semanas con esto y no lo consigo.
Bueno, estoy montando mi propio servidor, con las posibilidades de servidor via FTP y servidor HTTP.
Bueno, a la hora de añadir variables y reglas a IPtables v1.3.8 me lo hace correctamente, puedo navegar, tengo todo en politica DROP, excepto lo que me interesa que se accede desde la red externa, como el puerto 80, 20 y 21.
Hasta aqui va todo bien, me rechaza lo que no quiero, puedo navegar por la web y el Apache funciona perfectamente accediendo desde fuero, pero en cuanto al servidor via FTP, a la hora de logearme a nivel de red externa, por ejemplo, con mi DNS, me acepta en el sistema, quiero decir, que me detecta que el usuario es correcto, y el pass tambien e incluso aparece el banner que yo previamente he configurado, pero a la hora de listar el directorio, se queda parado, no lo lista y por lo tanto no puedes acceder, pero sin embargo, esta logeado.
He probado esto aplicandole la politica de todo ACCEPT o desactivando IPTables y funciona el FTP perfetamente. Entonces esta claro que el pequeño error no proviene de mi LAN o a raiz de una mala configuracion del router, es dedibo a IPTables. Sin embargo, si puedo acceder con iptables activado desde mi propia LAN.
Aqui os muesto el log del cliente FTP
200 TYPE es ahora 8-bit binary
PWD
Cargando listado de directorio / desde el servidor (LC_TIME=es_ES.UTF-8)
PASV
227 Entering Passive Mode
Y aqui os pongo el código Script que tengo para aplicar a IPTables
#!/bin/sh
## SCRIPT de IPTABLES - Rijndael Server
echo -n Aplicando Reglas de Firewall Rijndael...
iptables -F INPUT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -i eth0 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 192.168.2.55 -j ACCEPT
iptables -A OUTPUT -d 192.168.2.55 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -s 192.168.2.80 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -s 192.168.2.80 -p tcp --dport 5500:5950 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -s 192.168.2.68 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -s 192.168.2.68 -p tcp --dport 5500:5950 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -m state --state NEW -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -m state --state NEW -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -P INPUT DROP
iptables -F FORWARD
iptables -P FORWARD DROP
iptables -F OUTPUT
iptables -P OUTPUT ACCEPT
# Deshabilitar la redirección del ping
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
/bin/echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects
# Anti-flooding o inundación de tramas SYN.
iptables -N syn-flood
iptables -A INPUT -i $IFACE -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP
# Guardar los accesos con paquetes fragmentados, recurso utilizado para tirar
# servidores y otras maldades (bug en Apache por ejemplo)
iptables -A INPUT -i $IFACE -f -j LOG --log-prefix "Fragmento! "
iptables -A INPUT -i $IFACE -f -j DROP
# Anti-spoofing (falseo de ip origen)
iptables -A INPUT -i $IFACE -s $IPADDR -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_A -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_B -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_C -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_D_MULTICAST -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_E_RESERVED_NET -j DROP
iptables -A INPUT -i $IFACE -d $LOOPBACK -j DROP
iptables -A INPUT -i $IFACE -d $BROADCAST -j DROP
# Fin del script
Bueno, espero que me podais hechar una mano. Muchas gracias de antemano!
PD: uso OpenSUSE 10.3