Entries for seguridad

Actualizaciones de seguridad de Ubuntu Server en el correo

written by uve

20 August 2011

Acabo de terminar un script realizado en Python que comprueba actualizaciones de seguridad para Ubuntu Server y en caso de que tener instalado algún paquete, se enviará un mail a la dirección de correo indicada. Este script está pensado principalmente para administradores de sistemas, que como yo, no están dedicados a esta tarea y no disponen de mucho tiempo.

El equipo de Ubuntu utiliza un RSS para publicar las actualizaciones de seguridad, http://www.ubuntu.com/usn/rss.xml. Así que el script se conecta, parsea las entradas del RSS, selecciona los paquetes que son específicos para la versión de Ubuntu instalada, se comprueba si el paquete está instalado y se envía un mail con el listado de paquetes.

Full entry >>

Comprobar ataques DOS en routers NetGear WNDR3300

written by uve

3 August 2011

Hace unos días estuve revisando la configuración de un router NetGear WNDR3300 debido a un mal funcionamiento. La causa resultó ser una serie de ataques DOS que se estaban realizando al router. Estos ataques se estaban realizando desde la propia red local, así que decidí hacerme un script para detectarlos lo antes posibles.

LOG_FILENAME=router.log
USER=admin
PASS=password
IP=192.168.1.1
LOGURL=FW_log.htm

curl -s http://$USER:$PASS@$IP/$LOGURL | grep '^\[.*[0-9]$' > $LOG_FILENAME
attacks="`grep -i 'DOS' $LOG_FILENAME`"
if [ attacks != "" ] ; then
    echo "$attacks"
# Esta parte no es necesaria, a no ser que se quiera
# hacer un tratamiento especial para cada IP de forma
# independiente, cómo averiguar la dirección MAC
    ips=`grep -i 'DOS' $LOG_FILENAME | cut -f7 -d' ' | cut -f1 -d','`
    for ip in $ips
    do
        echo "Hacer algo con esta $ip"
    done
fi

Aquí podemos ver un ejemplo de la salida del script:

[DOS attack: STORM] attack packets in last 20 sec from ip [172.16.0.13], Sunday, Jul 24,2011 21:16:57
[DOS attack: STORM] attack packets in last 20 sec from ip [172.16.0.5], Sunday, Jul 24,2011 21:54:10
[DOS attack: STORM] attack packets in last 20 sec from ip [172.16.0.5], Sunday, Jul 24,2011 21:54:46
[DoS Attack: ACK Scan] from source: 50.99.45.xx, port 64976, Friday, July 29,2011 01:16:26
[DoS Attack: RST Scan] from source: 108.49.85.xx, port 56258, Friday, July 29,2011 01:16:21

Espero que sea de utilidad para alguien :)

Full entry >>

Configurando avisos automáticos por correo en Fail2Ban

written by uve

22 April 2011

Hace poco escribía sobre como instalar Fail2Ban para proteger nuestro sistema contra ataques por fuerza bruta. Un detalle interesante es que cada vez que se realice un bloqueo, se nos envíe un informe de forma automática con información de whois. Para ello debemos configurar lo siguiente:

#  nano /etc/fail2ban/jail.conf
...
destemail = admin@micorreo.com
action = %(action_mw)s
...

Después, reiniciamos el servicio y listo:

# service fail2ban restart

 

Full entry >>

Proteger tu servidor SSH contra ataques de fuerza bruta

written by uve

15 April 2011

Hoy he estado revisando los logs de mi servidor, y me he dado cuenta que llevan 5 días de ataques por fuerza bruta para intentar tener un acceso SSH. Seguro que a alguien le resulta útil este script:

import re
exp = re.compile(r'.*[\s]*sshd\[.*?\]:[\s]*Invalid user.*')
f = open('/var/log/auth.log')
for line in f.readlines():
    if exp.match(line):
        print line[:-1]

Este script nos mostrará todos los accesos fallidos que hay en el servidor. Ahora vamos a ver la forma más sencilla de impedir este tipo de ataques: fail2ban.

Full entry >>

Agujero de seguridad generando contenido dinámico para una ForeignKey

written by uve

24 December 2010

Hace un rato os contaba como generar contenido dinámico para una ForeignKey de un formulario, y mientras escribía he descubierto un agujero de seguridad.

Si modificamos el HTML del formulario, donde se selecciona el usuario, podemos cambiar el identificador del usuario manualmente y se añadiría de encargado a un usuario no permitido.

Full entry >>

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.