May 11

Manual practico de iptables

Resetear reglas

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F

Establecer las políticas de firewall por defecto  

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -L -v -n

Ver el estado del firewall

iptables -L -n -v

 

  • -L : Muestra las reglas.
  • -v : Muestra información detallada.
  • -n : Muestra la dirección ip y puerto en formato numérico. No usa DNS para resolver nombres. Esto acelera la lista.

Mediante este ejemplo podremos ver las reglas con el numero de lineas.


iptables -n -L -v --line-numbers  

Mostrar las reglas entrantes

iptables -L INPUT -n -v

Mostrar las reglas salientes

iptables -L OUTPUT -n -v

si agregamos –line-numbers podrémos ver el numero de lineas

Eliminar reglas de Firewall

Se puede eliminar una regla por el numero de la linea, en este caso eliminamos las reglas INPUT y OUTPUT correspondiente a la linea 4.

iptables -D INPUT 4

iptables -D OUTPUT 4

También podemos una regla concreta

iptables -D INPUT -s 10.10.33.14 -j DROP

 

  • -D : Elimina una o más reglas de la cadena seleccionada.

Guardar los cambios

service  iptables save

Sólo a bloquear el tráfico entrante

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -L -v -n

Eliminar direcciones de red privada en la interfaz pública (Suponiendo eth1 como interfaz pública)

iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Permitir todo el tráfico de loopback, y eliminar todo el tráfico a 127/8 que no usa lo0

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

Aceptar todas las conexiones entrantes establecidas

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

Eliminar cualquier paquete inválido que no pueda ser identificado

iptables -A INPUT -m state –state INVALID -j DROP

Bloquear tráfico a un dominio

Para ello debemos sacar el rango de IP del dominio:

 

host -t a www.google.es
www.google.es has address 216.58.214.163

whois 216.58.214.163  | grep CIDR
CIDR:           216.58.192.0/19

Denegamos el acceso al rango que hemos obtenido:

iptables -A OUTPUT -p tcp -d 216.58.192.0/19 -j DROP

También es posible hacerlo por nombre de dominio

iptables -A OUTPUT -p tcp -d www.google.es -j DROP
iptables -A OUTPUT -p tcp -d google.es -j DROP

Permitir todo el tráfico entrante SSH

iptables -A INPUT  -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Permitir tráfico HTTP

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Permitir HTTPS saliente.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

 

Permitir tráfico HTTP

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Permitir HTTPS saliente.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Abrir un rango de puertos de entrada

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

Prevenir ataques DoS
-Limit 25/minute : Limita a sólo 25 conexiones por minuto.
-Limit-burst 100: Indica que el valor de limit/minute será forzado sólo después del número de conexiones en este nivel

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

 

Abrir un rango de direcciones IPs

iptables -A INPUT -p tcp –destination-port 80 -m iprange –src-range 192.168.1.100-192.168.1.200 -j ACCEPT

 

Listado de reglas ejemplo para puertos TCP/UDP comunes:

 

open port ssh tcp port 22 ##
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 22 -j ACCEPT

## open cups (printing service) udp/tcp port 631 for LAN users ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp –dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp –dport 631 -j ACCEPT

## allow time sync via NTP for lan users (open udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p udp –dport 123 -j ACCEPT

## open tcp port 25 (smtp) for all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 25 -j ACCEPT

# open dns server ports for all ##
iptables -A INPUT -m state –state NEW -p udp –dport 53 -j ACCEPT
iptables -A INPUT -m state –state NEW -p tcp –dport 53 -j ACCEPT

## open http/https (Apache) server port to all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -m state –state NEW -p tcp –dport 443 -j ACCEPT

## open tcp port 110 (pop3) for all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 110 -j ACCEPT

## open tcp port 143 (imap) for all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 143 -j ACCEPT

## open access to Samba file server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 445 -j ACCEPT

## open access to proxy server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 3128 -j ACCEPT

## open access to mysql server for lan users only ##
iptables -I INPUT -p tcp –dport 3306 -j ACCEPT

 

 

:wq!

Ene 24

Hardening – configurar la autenticación de dos pasos

Anteriormente vimos como realizar una configuración  básica para securizar nuestros servidores GNU/Linux (Hardening básico en GNU/Linux),  y Hardening – Securizando contraseñas con PAM en GNU/Linux este caso vamos a implementar el factor de autenticación en dos pasos

 

¿Que es 2FA?

2FA son las siglas de 2 factor authentication (que en español se conoce como verificación de dos pasos), que forma parte de algo más grande, llamado MFA o multi-factor authentication (verificación de múltiples pasos). MFA se refiere a una forma de autentificar la identidad de un usuario usando múltiples factores independientes (o pasos), mismos que son validados para verificar la identidad de una persona. Para que en el caso de 2FA son dos factores (dos pasos) los que se deben presentar.

Continue reading

Oct 18

Hardening – Securizando contraseñas con PAM en GNU/Linux

Hardening-GNUlinuxAnteriormente vimos como realizar una configuración  básica para securizar nuestros servidores GNU/Linux (Hardening básico en GNU/Linux), en este caso vamos a fortalecer las contraseñas de acceso de los usuarios mediante Módulos de Autentificación Conectables.

¿Que es PAM?

La estructura del módulo de autenticación conectable (PAM) permite a los administradores coordinar y configurar requisitos de autenticación de usuarios para cuentas, credenciales, sesiones y contraseñas sin modificar los servicios que requieren autenticación.

La estructura PAM permite a las organizaciones personalizar la experiencia de autenticación del usuario y la función de administración de contraseñas, sesiones y cuentas. Los servicios de entrada del sistema, como login y ssh, utilizan la estructura PAM para proteger todos los puntos de entrada del sistema recién instalado. PAM permite la sustitución o modificación de los módulos de autenticación en el campo para proteger el sistema contra cualquier debilidad recién detectada sin la necesidad de realizar cambios a ningún servicio del sistema que use la estructura PAM.

Continue reading

Feb 24

Insalación de OSSEC en modo HIDS

OSSEC es un sistema de detección de intruso Open Source. Esta poderosa plataforma HIDS tiene la capacidad de realizar análisis de logs, comprobar de la integridad de los archivos, detectar rootkits, enviar alertas en tiempo real y dar respuestas activas sobre cualquier intento de penetración vía fuerza bruta en nuestros servidores.

 

Continue reading

Feb 16

Explotando XSS con Metasploit

En el siguiente post, vamos a utilizar el framework XSSF con Metasploit, que nos permitirá atacar a una víctima con un simple XSS.

XSSF es un framework, creado por Ludovic Courgnaud, que nos permite “administrar” víctimas de XSS genéricos y realizar posteriores ataques, así como mantener el enlace para futuros ataques. Podemos encontrar una  descripción más detallada del framework aquí.

May 09

Hardening – Sistema de detección de intrusos Snort + MySQL + ACID

En el siguiente tutorial veremos paso a paso la instalación y configuración de Snort para que loguee sobre MySQL y así acceder mediante ACID ( Aplicación Web ) para el análisis de los Logs. Snort se autoactualizará y nos enviará informes diarios al buzón de correo

Descargar tutorial