Seleccionar página

I


pTables se usa para configurar, mantener e inspeccionar las tablas de reglas de filtrado de IPs en el kernel de Linux, pero por defecto, su sistema de logs no es todo lo completo esperamos.

Por defecto, la mayoría de los logs del sistema se guardan en el fichero /var/log/messages pero en este caso vamos a configurar un nuevo fichero para que almacene únicamente los logs que generaremos con algunas reglas en IpTables, creando así su propio archivo de bitácora.

Lo primero que debemos hacer es configurar el archivo /etc/syslog.conf, que se trata de un archivo de configuración en el que se indica el modo en que los mensajes del sistema son bitacorizados a través de la utilidad syslogd que se instala y configura por defecto en todos los sistemas GNU/Linux. Debemos añadir al final del fichero la siguiente sentencia:
kern.warning /var/log/iptables.log

Con esto indicamos que se almacenen los mensajes provienen del kernel con prioridad 4 o superior (‘warning’ es el nivel de prioridad 4) en el archivo /var/log/iptables.log y se ignora el resto de prioridad inferior (debug, info y notice que son del 3 hacía abajo) generalmente irrelevantes.

Guardamos el fichero y reiniciamos el servicio:


/etc/init.d/sysklogd restart para Debian / Ubuntu
/etc/init.d/syslog restart para Red Hat/Cent OS/Fedora Core

Debemos añadir que los mensajes del sistema también seguirán guardándose en /var/log/messages y en otros ficheros que se encuentren definidos en /etc/syslog.conf.

Por último solo nos queda añadir las reglas al firewall Iptables que monitorizarán los mensajes de error. Estas reglas se han de añadir justo antes de cortar un tráfico determinado. Un ejemplo del fichero de configuración de IpTables con las reglas de log añadidas (basado en el artículo de creación de firewall con IpTables) es el siguiente:


## Vaciamos las reglas
iptables -F
iptables -X
iptables -t nat -F

## Establecemos politicas predeterminada
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# Aceptamos todo de localhost
/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 192.168.2.1 -j ACCEPT

# A otra ip interna le permitimos todo
iptables -A INPUT -s 192.168.2.99 -j ACCEPT
iptables -A INPUT -s 192.168.2.100 -j ACCEPT

# A una subred interna le permitimos todo
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# O a un rango de una subred
iptables -I INPUT -m iprange --src-range 192.168.1.2-192.168.1.100 -j ACCEPT

# Permitimos una conexion a ssh y telnet (22 y 23) desde un equipo
iptables -A INPUT -s 192.168.2.10 -p tcp --dport 22:23 -j ACCEPT

# A otro le permitimos acceso FTP
iptables -A INPUT -s 212.176.121.111 -p tcp --dport 20:21 -j ACCEPT

# El puerto 80 y 8080 (www) abierto, para un servidor web.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Y el resto, lo cerramos
# Inidcamos que se almacenen los accesos a los puertos que vamos a cerrar
iptables -A INPUT -p tcp -m tcp --dport 22:23 -j LOG --log-prefix 'INTENTO DE ACCESO A SSH ' --log-level 4
iptables -A INPUT -p tcp -m tcp --dport 20:21 -j LOG --log-prefix 'INTENTO DE ACCESO A FTP ' --log-level 4
iptables -A INPUT -p tcp -m tcp --dport 6001 -j LOG --log-prefix 'INTENTO DE ACCESO A 6001 ' --log-level 4

iptables -A INPUT -p tcp --dport 20:21 -j DROP
iptables -A INPUT -p tcp --dport 22:23 -j DROP
iptables -A INPUT -p tcp --dport 6001 -j DROP

# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables -A INPUT -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 1:1024 -j DROP

# impedimos iniciar conexion los puertos altos
# (puede que ftp no funcione)
iptables -A INPUT -p tcp --syn --dport 1025:65535 -j DROP

# Cerramos otros puertos que estan abiertos
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p tcp --dport 10000 -j DROP

Reiniciamos el servicio IpTables y a partir de ahora podremos consultar los mensajes del log de IpTables en el fichero /var/log/iptables.log.

También te puede interesar:

Crear firewall con Iptables en Linux
Problema al iniciar IpTables: “no chain/target/match by that name”