<?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
}
}
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: Mac OS X Hints
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.
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.
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