Como instalar y configurar BFD (Brute Force Detector)

BFD (Brute Force Detection), es un script en shell que parsea los logs de los diferentes servicios (ssh, ftp, apache, exim…) y chequea en busca de fallos repetitivos de autenticación, exceso de conexiones desde determinadas IPs, etc.

Combinado con APF (click aquí para acceder a una guía de instalación y configuración) forman un sistema de protección realmente bueno para nuestro sistema, ya que BFD le indicará a APF que IPs debe bloquear para que su acceso al servidor sea denegado (lo explicamos ahora):

Instalación de BFD:

La instalación es extremadamente sencilla:

cd /root/descargas
wget http://www.rfxnetworks.com/downloads/bfd-current.tar.gz
tar -xvzf bfd-current.tar.gz
cd bfd-0.7
./install.sh

Una vez hecho esto, nos indicará las rutas a ejecutables y ficheros de configuración:

.: BFD installed
Install path: /usr/local/bfd
Config path: /usr/local/bfd/conf.bfd
Executable path: /usr/local/sbin/bfd

Configuración de BFD:

Editamos el fichero de configuración con nuestro editor favorito:

vi /usr/local/bfd/conf.bfd

Activamos las alertas de ataque (cambiamos de 0 a 1), y configuramos que nos envíe un email por cada una:

ALERT_USR=»1″
EMAIL_USR=»tucuenta@tudominio.com»

Para evitar que el sitema bloquee nuestra IP local, la añadimos al fichero que guarda las IPs a ignorar en el rastreo, añadiremos p.ej. 192.168.1.1 en:

vi /usr/local/bfd/ignore.hosts

Ejecutamos el programa:

/usr/local/sbin/bfd -s

BFD chequeará los logs cada X tiempo, el que le indiquemos en su cron, por defecto cada 10 minutos:

[root@localhost ~]# cat /etc/cron.d/bfd
MAILTO=
SHELL=/bin/sh
#*/5 * * * * root /usr/local/sbin/bfd -q

Una vez comprendido esto, podéis personalizar las reglas que vienen por defecto para cada servicio, se encuentra en la siguiente ubicación:

/usr/local/bfd/rules

Con lo que más podéis jugar es con el valor “TRIG”, que indica el nº de conexiones o intentos permitidos para cada servicio, configuradlo en función de las necesidades de cada servicio:

TRIG=»45″

Con un poco más de paciencia, y estudiando cada regla puede personalizarse completamente, no obstante la seguridad de nuestro servidor, teniendo BFD + APF ha mejorado notablemente.

Fuente: rm-rf.es

Instalar APF (Advanced Policy Firewall) en sistema Unix

En esta entrada vamos a proteger nuestro sistema Unix con APF (Advanced Policy Firewall).

APF es un sistema de Firewall basado en IPtables, con la peculiaridad de que su manejo e instalación es extremadamente sencilla. Próximamente explicaremos también como instalar BFD, un detector de ataques de fuerza bruta, que unido a APF forman un excelente nivel de seguridad en el servidor, pues trabajan de forma conjunta.

Comenzamos con la instalación de APF:

cd /root/descargas (o la carpeta en la que guardes tus sources)
wget http://rfxnetworks.com/downloads/apf-current.tar.gz
tar -zxf apf-current.tar.gz
cd apf-0.*
./install.sh

Una vez instalado nos indicará las distintas rutas de ficheros de configuración y ejecutables:

Installation Details:
Install path: /etc/apf/
Config path: /etc/apf/conf.apf
Executable path: /usr/local/sbin/apf
AntiDos install path: /etc/apf/ad/
AntiDos config path: /etc/apf/ad/conf.antidos
DShield Client Parser: /etc/apf/extras/dshield/

Comenzamos a configurar APF, abirmos el fichero de configuración con nuestro editor favorito, estas son las opciones principales a configurar, recordad leer los comentarios en el fichero de configuración y en los README:

vi /etc/apf/conf.apf

Desactivamos/activamos el cron que desactiva el firewall cada 5 minutos, es útil activarlo mientras estemos de pruebas, pero aseguraos de dejarlo en 0 cuando el server entre en producción:

# Set firewall cronjob (devel mode)
# 1 = enabled / 0 = disabled
DEVEL_MODE=»1″

Interfaces de red que APF va a rastrear su tráfico, ponemos la interfaz que salga a Internet, en este caso es la eth1:

# Untrusted Network interface(s); all traffic on defined interface will be
# subject to all firewall rules. This should be your internet exposed
# interfaces. Only one interface is accepted for each value.
# NOTE: The interfacing structure is being worked towards support of MASQ/NAT
IFACE_IN=»eth1″
IFACE_OUT=»eth1″

Por otro lado, podemos configurar que ciertas interfaces no sean rastreadas por el firewall, pueden ser interfaces de tráfico local:

# Trusted Network interface(s); all traffic on defined interface(s) will by-pass
# ALL firewall rules, format is white space or comma seperated list.
IFACE_TRUSTED=»eth0″

Y para terminar la configuración básica, la parte más importante, la sección de puertos, configurable dependiendo de los puertos abiertos necesarios para cada servidor:

Puertos de entrada TCP permitidos:

# Common ingress (inbound) TCP ports
IG_TCP_CPORTS=»21,25,80,110,443,465″

Puertos de entrada UDP permitidos:

# Common ingress (inbound) UDP ports
IG_UDP_CPORTS=»»

Puertos de entrada ICMP permitidos:

# Common ICMP (inbound) types
# ‘internals/icmp.types’ for type definition; ‘all’ is wildcard for any
IG_ICMP_TYPES=»3,5,11″

Después están las mismas opciones, pero para salida, configurar según los requerimientos de cada uno. Y recordad revisar todas las demás opciones para sacar el mayor partido a este excelente firewall.

Otros dos ficheros importantes a tener en cuenta son :

/etc/apf/deny_host.rules
/etc/apf/allow_host.rules

En estos ficheros podemos incluir ips, rangos y reglas a las que denegar acceso (deny_host.rules) o permitir(allow_host.rules) al servidor. Finalmente arrancamos APF:

/usr/local/sbin/apf -s

Fuente: rm-rf.es

Solución APF: unable-to-load-iptables-module-ip_tables-aborting

Os comento este error  unable-to-load-iptables-module-ip_tables-aborting que se produce al intentar iniciar el firewall APF por primera vez, en un sistema Linux cuando tiene en el kernel compilado como modulo el firewall de IPtables.

El mensaje de error completo que se produce es el siguiente:

apf(20663): {glob} flushing & zeroing chain policies
apf(20663): {glob} firewall offline
apf(20702): {glob} activating firewall
apf(20742): {glob} unable to load iptables module (ip_tables), aborting.
apf(20702): {glob} firewall initalized

Continuar leyendo «Solución APF: unable-to-load-iptables-module-ip_tables-aborting»

Instalando DDoS Deflate para evadir ataques DoS

Medialayer sufria ataques de denegación de servicio. Para atajar ese problema, uno de los chicos de Medialayer pensó en crear una solución Open Source para mitigar estos ataques. Ese día nació DDoS Deflate, un script en Bash bastante efectivo para mitigar ataques de denegación de servicio.

Instalando DDoS Deflate

DDoS Deflate requiere que APF 0.96 este instalado si queremos usar que las IP´s sean baneadas a traves de APF.
La instalación de APF va mas allá del objetivo de esta guia.

wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

Configurando DDoS Deflate

Abrimos el fichero ddos.conf localizado en /usr/local/ddos

Editamos las rutas para que encajen con la estructura de nuestro sistema:

PROGDIR=”/usr/local/ddos”
PROG=”/usr/local/ddos/ddos.sh”
IGNORE_IP_LIST=”/usr/local/ddos/ignore.ip.list”
CRON=”/etc/cron.d/ddos.cron”
APF=”/etc/apf/apf”
IPT=”/sbin/iptables”

Posteriormente, tendremos que adecuar las opciones restantes según la naturaleza de la situación en la que estemos inmersos:

FREQ=1
# Frecuencia en minutos en la que el script sera ejecutado

NO_OF_CONNECTIONS=150
# Número de conexiones para proceder a banear una supuesta IP atacante

APF_BAN=1
# 1 indica que DDoS Deflate usara APF para banear, 0 llama directamente a Iptables

* Es necesario APF 0.96 como minimo si queremos activar el baneo por APF

BAN_PERIOD=600

# Tiempo durante el cual el atacante estará baneado. En segundos

EMAIL_TO=”root”

# Dirección a la cual se enviara un correo cuando alguien sea baneado

KILL=1

# Con la opción en 0, los atacantes no seran baneados. 1 esta activo por defecto