los dos ultimos fines de semana tuve q sacar intrusos de servidores q administro, nada peligroso ya q los servers estan actualizados y bastante protegidos dentro de lo posible, pero siempre esta el problema de los usuarios y el cuidado q le dan a sus contraseñas... en ambos casos se vieron comprometidas cuentas de los mismos. en la 1era lograron entrar x ssh y correr un script q enviaba spam, en la 2da simplemente un login de correo con el mismo proposito pero enviando una scam tipica, este era el texto:
Please be informed that you have £100,000 British Pounds Lodged in our Western Union to transfer to you as winner of ECOWAS Lottery Jackpot.
Please Contact: milton_daniel17@yahoo.com
al entrar hizo un par de pruebas enviandose a direcciones propias q son las siguientes:
kenblast2003@yahoo.com
kenblastall@hotmail.com
motide7@aol.com
no fue lo suficientemente inteligente para borrar ni siquiera los correos q enviaba, simplemente consiguio la pass del usuario y me puso en cola 10 millones de correos q se estuvieron enviando durante unas horas hasta q me di cuenta. creo q penso q siendo domingo no lo veria hasta el lunes pero x suerte suelo checkear logs bastante seguido.
los spammers/scammers estan en la escala mas baja de la porqueria existente en internet, tanto desde el punto de vista del usuario q recibe montones de correos q no le importan como del administrador q trata de hacer todo lo posible para minimizar el impacto en el buzon del usuario final.
pero el peligro no esta solo en parar la basura sino tambien en proteger nuestros servers ya q son una codiciada presa para ellos, la oportunidad de hacer unos cuantos billetes a costa de nuestro buen nombre... je
asi tambien tenemos los miles de script kiddies q pasan el dia con sus programas de fuerza bruta y sus diccionarios probando combinaciones de user/pass y algun ocasional hacker o aprendiz q puede ocasionar algo mas de trabajo. mas de uno se sorprenderia al ver los logs de un server publico, al final de la entrada voy a pastear algunos para q vean el nivel de los ataques...
para detener este tipo de ataques automatizados existe fail2ban, q es un software q en base a los logs del sistema puede bannear IPs en base a intentos fallidos de logueo. a pesar de tenerlo instalado en la mayoria de los servers tuve q ponerlo en TODOS y ajustar la configuracion para q sea todavia mas agresiva. de paso aprovecho para hacer esta entrada para q vean q no es nada dificil de instalar y configurar y ciertamente hace darse x vencido a la mayoria de los intrusos.
instalacion
a pesar de q son muy parecidas voy a explicar la instalacion tanto para centos/redhat como para debian/ubuntu. para el 1ero tenemos q descargarlo desde:
http://sourceforge.net/projects/fail2ban/
lo extraemos con:
tar xvf fail2ban-x.x.x.tar.bz2
despues...
cd fail2ban-x.x.x
python setup.py install
a continuacion lo agregamos al arranque del sistema copiando el siguiente archivo:
cp /files/redhat-initd /etc/init.d/fail2ban
y despues...
chkconfig --add fail2ban
chkconfig fail2ban on
service fail2ban start
en debian/ubuntu lo podemos bajar de los repositorios con:
apt-get install fail2ban (sudo en ubuntu)
y nos ahorramos todo el proceso anterior.
configuracion
lo siguiente es configurar las "jails" para los servicios q queremos proteger. para eso vamos a /etc/fail2ban y editamos el archivo jail.conf haciendo una copia de seguridad antes por las dudas...
la configuracion puede variar un poco de una version a otra pero las opciones son mas o menos las mismas siempre. en debian x ejemplo, las acciones, tiempos de banneo, etc vienen definidas al principio de manera gral o se pueden personalizar despues en cada jail.
lo primero es setear las redes e IPs seguras, o sea las q queremos q el sistema no blockee nunca, como el rango de nuestra propia lan o direcciones de usuarios del sistema. esto se hace modificando el campo "ignoreip", por ejemplo:
ignoreip = 127.0.0.1 192.168.0.0/24 200.53.23.1 10.0.0.0/25
mas abajo tenemos los tiempos y situaciones del blockeo, q podemos dejar como estan o editarlas como queramos. son las siguientes:
bantime: es la cantidad de segundos q una IP es banneada (default 600).
findtime: un host es banneado si se loguea erroneamente tantas veces como la cantidad en "maxretry" dentro del "findtime" (default 600seg).
maxretry: es el numero de intentos fallidos antes de ser blockeado.
pasamos ahora a configurar las jails (carceles). una de las mas usadas es la de ssh asi q empecemos x esa, vamos hasta "[ssh]" y x default (en debian x lo menos) ya la tenemos activada. sale mas o menos asi:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
y asi para centos:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@fail2ban]
logpath = /var/log/secure
maxretry = 6
lo q mas nos interesa es q el enabled este en "true" (activada) y el logpath q es la ruta del log de seguridad del sistema, esta cambia de un sistema a otro como se puede ver. en debian vemos q falta el campo "action", eso es xq viene definido antes en la seccion "actions" con el campo "banaction".
en el action de centos vemos dos acciones, iptables y sendmail whois. la 1era crea una regla de iptables blockeando la IP y la 2da envia un correo con un whois de la misma al destinatario configurado (root en este caso).
vamos a crear alguna jail mas x si no quedo muy claro, postfix en centos:
[postfix-tcpwrapper]
enabled = true
filter = postfix
action = hostsdeny[file=/etc/hosts.deny] (ruta al archivo hosts.deny)
sendmail[name=Postfix, dest=root]
logpath = /var/log/maillog
bantime = 6000
en debian:
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
y asi tenemos todo tipo de jails para ftp, http y todos los servicios y la mayoria de los ataques posibles. seria interminable y no tendria mucho sentido explicarlas una a una, simplemente experimentando un poco se pueden activar bastante facil.
roundcube
roundcube es un cliente de webmail relativamente nuevo (todavia esta en beta) con muchisimas opciones y una interfaz q no tiene nada q envidiarle a ninguna otra. en mi humilde opinion es muy superior al eterno squirrelmail q parece casi prehistorico al darle una mirada a uno y el otro.
los logueos de correo pueden ser blockeados con la jail "postfix" o el MTA q usemos como vimos antes, pero tambien se puede dar el caso (como me paso a mi) de que el webmail corra en un server mientras q el MTA esta en otro. en este caso nos vemos obligados a agregar la IP del 1ero en la lista de ignoradas del fail2ban del 2do para no bannear a todos los usuarios ya q la direccion de origen del logueo es siempre la misma para todos.
para solucionar esto podemos usar un plugin escrito x matt rude, q se puede descargar desde aca:
http://mattrude.com/projects/roundcube-fail2ban-plugin/
hay q copiar el contenido dentro del directorio de plugins de roundcube (roundcube/plugins) y despues editar el contenido del archivo main.inc.php q esta dentro del directorio "config", agregando en la seccion de plugins la siguiente linea:
$rcmail_config['plugins'] = array('fail2ban');
con esto se crea un nuevo archivo llamado userlogins en la carpeta logs conteniendo solo los intentos fallidos q usamos para el fail2ban creando una nueva jail:
[roundcube]
enabled = true
port = http,https
filter = roundcube
logpath = /pathderouncube/logs/userlogins
el eterno punto debil
obviamente esto no nos deja 100% a salvo pero ayuda bastante, de todas formas nunca es bueno confiarnos demasiado y mantener siempre los sistemas actualizados, los permisos bien configurados y los usuarios con las passwords mas complejas posibles... aunque siempre seran usuarios y siempre cabe la posibilidad de q hagan click donde no deben entregando sus datos ante cualquier loteria de turquia o una herencia del principe de liechtenstein...
... ese es el verdadero punto debil.
apendix
como habia prometido copio unas horas del log de fail2ban en un servidor de correo publico (no muy grande) para q vean la cantidad de conexiones blockeadas. la mayoria son de postfix pero hay alguna de ssh.
2012-05-24 04:02:41,098 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.49.25.205
2012-05-24 04:14:01,114 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.224.163.183
2012-05-24 04:52:59,128 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 186.105.151.68
2012-05-24 05:01:16,142 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 90.170.212.117
2012-05-24 05:01:32,156 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.172.162.35
2012-05-24 05:31:24,170 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 188.138.115.237
2012-05-24 05:54:26,188 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.1.142.88
2012-05-24 05:56:43,202 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.139.154.117
2012-05-24 06:04:14,217 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.149.157
2012-05-24 06:42:19,230 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.16.233.253
2012-05-24 06:47:21,242 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 189.45.204.138
2012-05-24 06:54:42,259 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 41.79.176.10
2012-05-24 07:13:24,273 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.133.18
2012-05-24 07:14:32,287 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 168.226.249.18
2012-05-24 07:18:01,301 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 168.226.165.193
2012-05-24 07:19:59,315 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.130.174
2012-05-24 07:28:02,330 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 182.71.75.106
2012-05-24 07:58:49,604 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.31.98.41
2012-05-24 08:02:34,618 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.150.101
2012-05-24 08:03:04,633 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.139.223.41
2012-05-24 08:16:23,647 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 122.163.39.30
2012-05-24 08:28:23,675 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.139.221.178
2012-05-24 08:37:23,690 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 200.45.10.100
2012-05-24 08:50:45,706 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.220.206.251
2012-05-24 09:13:29,721 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.166.153.58
2012-05-24 09:14:36,738 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 113.161.75.97
2012-05-24 09:29:53,760 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 168.226.165.155
2012-05-24 10:03:37,798 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.140.243
2012-05-24 10:06:49,816 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 58.186.2.73
2012-05-24 10:11:35,835 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 123.26.160.109
2012-05-24 10:12:47,849 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 186.134.140.73
2012-05-24 10:14:29,866 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 123.180.71.142
2012-05-24 10:14:51,880 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.127.147
2012-05-24 10:37:40,897 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 200.45.10.239
2012-05-24 10:44:08,913 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 190.172.97.222
2012-05-24 10:54:20,928 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.180.85
2012-05-24 11:02:05,942 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 168.226.165.130
2012-05-24 11:11:21,956 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 200.74.100.150
2012-05-24 11:27:45,974 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 84.15.191.254
2012-05-24 11:30:49,993 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 122.163.197.52
2012-05-24 11:37:58,014 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 181.14.186.253
2012-05-24 11:51:08,040 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 115.84.93.94
2012-05-24 12:18:00,057 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 123.180.84.251
2012-05-24 12:31:09,010 fail2ban.actions: WARNING [ssh-iptables] Ban 66.85.142.166
2012-05-24 12:33:16,075 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 82.114.94.6
2012-05-24 12:36:31,090 fail2ban.actions: WARNING [postfix-tcpwrapper] Ban 101.99.12.1