Evita ataques SSH de Bots directos contra tu cuenta en Mac OS X

13/10/2008 por Redacción

Mi máquina estaba siendo atacada por muchos ataques automatizados que intentan adivinar los nombres y contraseñas vía sshd. (este problema ha sido comentado en esta truco) Gracias a Little Snitch, es muy fácil ver cuando esto pasa. De cualquier manera, es molesto, y quería añadir una regla ipfw para bloquear estas máquinas que no pueden conectarse después de 15 intentos o más. Así que escribí un script para hacer esto.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>Label</key>

<string>se.sics.lra.denyhosts</string>

<key>ProgramArguments</key>

<array>

<string>/usr/bin/awk</string>

<string>

substr( $5, 0, 4) == "sshd" && $6 == "Failed" {

ip = $13

count[ip] += 1

}

END {

s = "ipfw delete 101; "

sep = "ipfw add 101 deny src-ip "

for (ip in count) {

if (count[ip] > 15) {

s = s sep ip

sep = ", "

print count[ip] " failed attempts from " ip

}

}

print

system(s)

}

</string>

<string>/var/log/secure.log</string>

</array>

<key>StartInterval</key>

<integer>20</integer>

<key>UserName</key>

<string>root</string>

<key>StandardOutPath</key>

<string>/tmp/denyhosts.out</string>

</dict>

</plist>

Puse el script terminado en: /Library/LaunchAgents/se.sics.lra.denyhosts.plist

y puse el propietario del script como Root:

# chmod root:wheel /Library/LaunchAgents/se.sics.lra.denyhosts.plist

Para iniciarlo (sin reiniciar) sólo haz esto (en la Terminal como root)

# launchctl load /Library/LaunchAgents/se.sics.lra.denyhosts.plist

El script escanea /var/log/system.log cada 20 segundos para buscar intentos de autentificación ssh. Si encuentra más de 15 de una dirección en particular, esa dirección es deshabilitada por ipfw. Haz sudo ipfw list para ver las reglas activas. Nota que cuando las entradas desaparezcan del registro las reglas ipwf son eliminadas. El script desafortunadamente debe ejecutarse como root, pues sólo root tiene permiso de leer /var/log/system.log y modificar las reglas ipwf.

Fuente:

Comentarios

  • avatar
    #1 Anónimo el 13/10/2008
    Si te están llegando peticiones contra el ssh de tu ordenador, creo que estás tomando medidas demasiado tarde. ¿No será mejor (además de tener el firewall de mac os x activado) cerrar el acceso ANTES de que llegue al ordenador? Los routers adsl tienen una bonita funcionalidad de firewall que desgraciadamente muy poca gente utiliza. Muchos de ellos tienen el famoso iptables y puedes configurar reglas en modo duro (línea de comandos) o con la interfaz web, con la que es tan sencillo como elegir origen, destino, puerto y protocolo.

    Si configuras bien una única regla que permita el ssh desde la ip que tú le digas (si es que realmente necesitas acceso ssh desde internet a tu mac) no tienes que preocuparte de cargar de un trabajo extra y poco valioso a tu mac.
  • #2 Administrador el 13/10/2008
    MI cablemodem no tiene ninguna posibilidad de ese tipo ... y hay muchos Modem-routers-etc que tampoco disponen de esas características y/o no tienes acceso a su firmware por diferentes motivos, así que no queda otro remedio que poner las ametralladoras en la segunda linea de defensa.
  • avatar
    #3 Anónimo el 06/12/2008
    Hace unos días que estoy recibiendo este tipo de ataques, pero no logro que funcione el script el "property list editor" me comenta que hay errores en el código que no se solucionar


Escribe un comentario

Regístrate o identifícate para poder comentar