[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Sobre iptables con DROP por default



El lun, 24-03-2008 a las 12:09 -0300, Leonardo E. Dodorico escribió:
> En un host de mi red he decido aplicarle un firewall -mediante un script 
> de iptables- que tenga por default todo a DROP.
> 
> 
> Aclaro que este host tiene solo una interfaz de red, y no hace las veces 
> de firewall de borde ni router ni nada por el estilo, su fin es brindar 
> servicios a la red interna.
> 
> De momento funciona bastante bien, salvo que no estoy pudiendo descargar 
> paquetes de los repositorios de Debian, digo, no funcionan las descargas 
> por ftp, razón por la cual he aplicado lo siguiente sin éxito:
> 
> iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT
> iptables -A OUTPUT -o eth0 -p tcp --dport 20 -j ACCEPT
> iptables -A OUTPUT -o eth0 -p udp --dport 21 -j ACCEPT
> iptables -A OUTPUT -o eth0 -p udp --dport 20 -j ACCEPT
> 
> Que podrá estar faltando?

El udp no te hace falta para nada ( cat /etc/services | grep ftp)

Te está pasando que al igual que con el IRC, son protocolos que manejan
más de un puerto.

Yo suelo aplicar reglas stateful, es decir, denegar el estado INVALID,
permitir ESTABLISHED y RELATED, y luego en las reglas vas abriendo las
conexiones NEW y los módulos de estado (puedes usar state o conntrack)
hacen todo lo demás por tí.

Para el caso este, sería algo así:

# Denegar estados INVALID
iptables -t filter -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -t filter -A OUTPUT -m conntrack --ctstate INVALID -j DROP
iptables -t filter -A FORWARD -m conntrack --ctstate INVALID -j DROP


# Permitir coexiones RELATED y ESTABLISHED
for chain in INPUT OUTPUT FORWARD ; do
	iptables -t filter -A "${chain}" \
	-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
done

# Permitir salida ftp, hace falta un módulo especial
module_is_loaded="$(modprobe -l | grep ip_conntrack_ftp)"

[[ -z "${module_is_loaded}" ]] && modprobe ip_conntrack_ftp

iptables -A OUTPUT -p tcp --dport 21 \
-m conntrack --ctstate NEW -j ACCEPT


> Al margen de lo anterior, quisiera hacerles 2 consultas relacionadas:
> 
> 1) Para permitir las consultas DNS desde este host he agregado lo siguiente:
> 
> iptables -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
> iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
> 
> Funciona perfecto!
> 
> Ahora en algunos blogs he visto que solo aplican la línea de UDP, lo 
> cual también funciona pero mas lento, es correcto lo que hice o es mejor 
> solo aplicar upd?


Si utilizas tcpdump para monitorizar el tráfico, verás que solo salen
consultas udp.

tcpdump -n -i eth0 port 53

> 2) Por último, he visto que para evitar ataques de diccionario al ssh 
> aplican lo siguiente (entre otras cosas):
> 
> iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m 
> recent --set
> iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m 
> recent --update
> --seconds 60 --hitcount 4 -j DROP
> 
> Que opinan?
> 
> Yo he implementado tcpwrappers y denyhosts pero si con lo anterior 
> mejora se aumenta un poco la seguridad bienvenido sea!
> 
> Desde ya muchas gracias!

Si siempre vas a acceder desde una máquina (IP), abre a esa y cierra a
todo lo demás. Si no, con denyhosts bien configurado va perfecto.

> Salu2.

Saludos



Reply to: