Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
Febrero 10, 2012, 01:13:17

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
Bienvenidos al foro de systemadmin.es!

Registrate al feed para recibir la actividad del foro:
http://foro.systemadmin.es/.xml/?type=rss
424 Mensajes en 119 Temas por 293 Usuarios
Último usuario: alfsamson
* Inicio Ayuda Buscar Ingresar Registrarse
+  foro.systemadmin.es
|-+  Scripts
| |-+  shellscripts
| | |-+  Script iptables
« anterior próximo »
Páginas: [1] Imprimir
Autor Tema: Script iptables  (Leído 2824 veces)
gonav
Jr. Member
**

Karma: +0/-0
Desconectado Desconectado

Mensajes: 67


Ver Perfil
« : Noviembre 24, 2009, 09:53:45 »

Podríamos construir entre todos un buen script para iptables, funcional y seguro, y de paso debatir las distintas soluciones, que de eso se trata. Que cada uno aporte lo que considere oportuno. Partimos de una configuración básica de un simple servidor de ficheros.

/etc/iptables.conf

#!/bin/sh

# FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

# politica por defecto a DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# permitir conexiones entrantes y salientes locales a la propia maquina (localhost)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# control de servicios: definir conexiones permitidas

# Servicio SSH administracion
# red segura secnet
secnet=192.168.3.0
iptables -A INPUT -s $secnet -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -d $secnet -p tcp --sport 22 -j ACCEPT

# Servicios SAMBA
# red local smbnet
smbnet=192.168.2.0

# servicio de nombres NetBIOS (tcp y udp)
iptables -A INPUT -s $smbnet -p tcp --dport 137 -j ACCEPT
iptables -A OUTPUT -d $smbnet -p tcp --sport 137 -j ACCEPT

iptables -A INPUT -s $smbnet -p udp --dport 137 -j ACCEPT
iptables -A OUTPUT -d $smbnet -p udp --sport 137 -j ACCEPT

# servicio de datagramas NetBIOS
iptables -A INPUT -s $smbnet -p udp --dport 138 -j ACCEPT
iptables -A OUTPUT -d $smbnet -p udp --sport 138 -j ACCEPT

# servicio de sesiones NetBios
iptables -A INPUT -s $smbnet -p tcp --dport 139 -j ACCEPT
iptables -A OUTPUT -d $smbnet -p tcp --sport 139 -j ACCEPT

# si NetBios esta deshabilitado
iptables -A INPUT -s $smbnet -p tcp --dport 445 -j ACCEPT
iptables -A OUTPUT -d $smbnet -p tcp --sport 445 -j ACCEPT

iptables -A INPUT -s $smbnet -p udp --dport 445 -j ACCEPT
iptables -A OUTPUT -d $smbnet -p udp --sport 445 -j ACCEPT
En línea
jordi
Administrator
Full Member
*****

Karma: +0/-0
Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
« Respuesta #1 : Noviembre 25, 2009, 09:09:44 »

Buenas,
Yo lo organizaría por chains para poder "meter-las y sacarlas fàcilmente". Por ejemplo, para tràfico SAMBA:

iptables -N SAMBA

iptables -A SAMBA -s $smbnet -p tcp --dport 137 -j ACCEPT

iptables -A SAMBA -s $smbnet -p udp --dport 137 -j ACCEPT

# servicio de datagramas NetBIOS
iptables -A SAMBA -s $smbnet -p udp --dport 138 -j ACCEPT

# servicio de sesiones NetBios
iptables -A SAMBA -s $smbnet -p tcp --dport 139 -j ACCEPT

# si NetBios esta deshabilitado
iptables -A SAMBA -s $smbnet -p tcp --dport 445 -j ACCEPT

iptables -A SAMBA -s $smbnet -p udp --dport 445 -j ACCEPT

Podemos añadir al INPUT con:

iptables -A INPUT -j SAMBA

Yo no soy partidario de filtrar el trafico saliente, creo que mas bien el otro extremo debe saber lo permitido y lo que no. Por otro lado para el tráfico saliente de la red ya se encargara el firewall
En línea
gonav
Jr. Member
**

Karma: +0/-0
Desconectado Desconectado

Mensajes: 67


Ver Perfil
« Respuesta #2 : Noviembre 27, 2009, 10:23:59 »

Buena idea lo de las chains...

Otra idea es poner al inicio una regla que acepte todos los paquetes de una conexión establecida, aunque tengo mis dudas acerca de posibles riesgos de seguridad...

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

o bien

iptables -A INPUT -s $smbnet -p tcp --dport 137 -m state --state RELATED,ESTABLISHED -j ACCEPT
En línea
e-Minguez
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 25


*nix rules


Ver Perfil WWW
« Respuesta #3 : Noviembre 27, 2009, 10:48:14 »

Una cosa que suelo hacer con los scripts, es poner los binarios como variables con sus rutas absolutas, p.ej:
IPTABLES=/sbin/iptables
Y luego llamar a los binarios usando la variable:
$IPTABLES -A ...
Y las variables siempre en mayuscula Cheesy

Si, son manias Lengua
En línea
gonav
Jr. Member
**

Karma: +0/-0
Desconectado Desconectado

Mensajes: 67


Ver Perfil
« Respuesta #4 : Noviembre 27, 2009, 11:16:55 »

Si, son manias Lengua

No, son buenas prácticas de programación... Giñar
En línea
jordi
Administrator
Full Member
*****

Karma: +0/-0
Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
« Respuesta #5 : Noviembre 27, 2009, 11:36:23 »

Yo no suelo usar scripts para iptables. Las escribo a mano y si todo va bien hago el /etc/init.d/iptables save

Si me equivoco y me quedo sin gestión simplemente con un reboot se soluciona, si modificas el script y te deja fuera es más putada para servidores que no dispones de acceso físico
En línea
damarsan
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 4



Ver Perfil
« Respuesta #6 : Noviembre 27, 2009, 09:16:42 »

si modificas el script y te deja fuera es más putada para servidores que no dispones de acceso físico

Que gran verdad Sonreir.
En línea
gonav
Jr. Member
**

Karma: +0/-0
Desconectado Desconectado

Mensajes: 67


Ver Perfil
« Respuesta #7 : Noviembre 28, 2009, 08:20:45 »

Para registrar los intentos de conexión no autorizada, se coloca una regla LOG al final de todo (en configuración DROP):

$ iptables -A INPUT -j LOG --log-prefix "Conexion no autorizada: "

Yo he sustituido el LOG de iptables por ULOG (ulogd), que me parece más configurable sobre todo para volcar a un fichero independiente. ¿Cuál usáis vosotros?

$ iptables -A INPUT -j ULOG --ulog-prefix "Conexion no autorizada: "
En línea
octavio
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 6


Ver Perfil
« Respuesta #8 : Enero 28, 2010, 02:26:03 »

Yo no suelo usar scripts para iptables. Las escribo a mano y si todo va bien hago el /etc/init.d/iptables save

Si me equivoco y me quedo sin gestión simplemente con un reboot se soluciona, si modificas el script y te deja fuera es más putada para servidores que no dispones de acceso físico

Hace tiempo programé un watchdog que ejecutaba antes de cambiar las iptables si pasados n segundos no había hecho touch a un fichero de desactivación procedia a reponer las iptables anteriores o siempre se puede hacer un flush.

En ocasiones es más útil que hacer reboot ya que no siempre es posible o recomendable
En línea
nordri
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 25



Ver Perfil WWW
« Respuesta #9 : Febrero 08, 2010, 08:24:22 »

[...] El siguiente código creará una un bloque de sesenta segundos con un límite máximo de 5 conexiones. A partir de la sexta conexión aplicará una regla DROP para los paquetes, haciendo que el cliente continúe reintentándolo por tiempo indefinido. Al finalizar una de las conexiones anteriores, se permitirá la conexión nueva. [...] Es para prevenir ataques slowloris, pero sólo desde una IP. Fuente: Linux Magazine Febrero 2010.

Código:
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 6 -j DROP

Saludos.
En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC