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

Re: Situacion con tcpwrappers y denyhost



El lun, 24-03-2008 a las 12:29 -0300, ciracusa escribió:
> Buenas nuevamente Lista, hoy quiero dedicarle un tiempo a mejorar la 
> seguridad de mis hosts y estoy preguntón!!! 
> 
> :)
> 
> Les consulto, dado un host en el cual implemente tcpwrappers y denyhosts 
> tengo algo como esto (solo son pruebas y esto no pretende ser la 
> configuración de un hosts de la NASA):
> 
> /etc/hosts.allow
> ALL: 127.0.0.1
> sshd: 192.168.1.100
> 
> /etc/hosts.deny
> ALL:ALL EXCEPT localhost:DENY
> 
> En el /etc/denyhosts.conf he determinado -entre otras cosas- que cuando 
> un usuario conocido se autentique erroneamente mas de 3 veces este sea 
> baneado.
> 
> Ahora, el tema es este:
> 
> Si desde la pc 192.168.1.100 (que tengo permitida en /etc/hosts.allow) 
> simulo intentos fallidos, esta ip es agregada en /etc/hosts.deny, pero 
> como figura en hosts.allow sigue permitiéndole loguearse.
> 
> Es correcto esto?

Si

> Las pruebas las estoy haciendo desde dentro de mi red para evitar 
> ataques y/o pruebas de algunos hosts internos (dudosos).
> 
> Será que en hosts.allow debo permitir rangos de ips y no ips concretas y 
> entonces al agregarse en hosts.deny -mediante acción de denyhosts- les 
> evitará conectarse?

No

Si permites un rango en el allow, y la ip que mete denyhosts en
el .deny, está dentro de ese rango permitido, siempre podrá entrar.

El orden en el que se leen esos fichero es:

1) Si un host, dirección o subred aparece en el .allow, gana el acceso
2) Si _no_ aparece en el allow y aparece en el deny, deniega acceso
3) Si no aparece en ninguno de los dos, gana el acceso

Es decir, si en el allow pones 192.168.1.100, siempre tendrá acceso.
Si pones 192.168.1.0/255.255.255.0 también tendrá siempre acceso, aunque
aparezca en el deny en cualquiera de los dos casos, porque la definición
de esa red, incluye a la 192168.1.100, por lo tanto "aparece" en el
allow.

Se supone que si utilizas esta técnica, los hosts/subredes que pongas en
el .allow son de confianza y _siempre_ pueden acceder. La filosofía de
denyhosts, es circunstancial, no es estática como una definición manual.

Si quieres implementar un filtrado más fino, que permita a toda una
subred acceder o a una máquina, pero si falla tres veces le deniege la
conexión se suele utilizar iptables:

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 3 \
-j DROP

Con eso le deniegas el ssh a quien haga más de 3 intentos de conexión en
el plazo de un minuto. Es decir... si te equivocas dos veces con la
password, mejor que esperes 59 segundos... jeje

Si no, siempre puedes utilizar fail2ban, que es más o menos lo mismo que
denyhosts pero utiliza iptables en vez de tcpwrappers:

http://www.fail2ban.org

Ambos, tanto denyhosts como fail2ban, son altamente configurables y
conviene repasar a fondo su fichero de configuración.

Saludos



Reply to: