Reglas de iptables no se aplican

Iniciado por ccrunch, 24 Mayo 2014, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

ccrunch

Necesito ayuda con una cosa. Estoy en Debian y estoy aplicando unas reglas iptables para hacer más seguro el sistema pero al hacer iptables -L está todo sin reglas y en ACCEPT.

El script es este:

Código (bash) [Seleccionar]
#!/bin/sh

IPTABLES=/sbin/iptables

if [ ! -x $IPTABLES ]; then
  exit 0
fi

if [ "$IFACE" = eth0 ]; then

  # 1) Definir la norma de cada cadena básica
  $IPTABLES -P INPUT DROP
  $IPTABLES -P FORWARD DROP
  $IPTABLES -P OUTPUT ACCEPT

  # 2) Aceptar paquetes en estado establecido y relacionado
  $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  # 4) Optativo: Registrar paquetes que van a ser desechados
  #$IPTABLES -A INPUT -j LOG --log-level debug --log-prefix "Drop INPUT: "

fi


Está cogido de la página de debian chile.
He dado los permisos necesarios, primero probé haciendo un ifdown y ifup, luego reiniciar la red, y luego reinicié el sistema y nada, me manda a comer *****. Alguien sabe por qué no funciona?

He probado a poner alguna regla a mano como iptables -P FORWARD DROP y tampoco se aplica, o algo estoy yo haciendo mal.

El script está en /etc/network/if-up.d/firewall

Salu2

cpu2

Este es un fragmento de uno de mis antiguos scripts.

#!/bin/sh
IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
INT_NET=192.168.1.1/24
INTIF=ath0

### Normas actuales y polittcas de las cadenas
echo "[+] Estableciendo politi­ca a las cadenas y cargando modulos..."
iptables -F
iptables -F -t nat
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP                                                   
### Cargar modulos de localizacionn de conexionn
modprobe ip_conntrack
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

##### Cadena INPUT [Entrada] #####
echo "[+] Estableciendo reglas cadena de entrada INPUT..."
### Estado de las reglas
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "DROP INV " --log-ip-options --log-tcp-options
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
### Reglas anti-spoofing
iptables -A INPUT -i $INTIF -s $INT_NET -j LOG --log-prefix "SPOOFED PKT "
iptables -A INPUT -i $INTIF -s $INT_NET -j DROP
### Reglas aceptadas
iptables -A INPUT -i $INTIF -p tcp -s $INT_NET --dport 23 --syn -m state --state NEW -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
### Registro de entrada por defecto de la regla
iptables -A INPUT -j NFLOG --nflog-prefix "DROP "


No deja de ser otro sricpt mas, simplemente dile que se ejecute en el strartup del sistema y ya esta, eso es lo que hacia yo en mi Gentoo. Pero si no quieres hacerlo de esa forma, si buscaras un poco encontrarias cosas como esta.

http://serverfault.com/questions/511099/debian-ignores-etc-network-if-pre-up-d-iptables

Un saludo.

ccrunch

Y una duda más, si creo una máquina virtual para probar que el FW funciona, como irá por adaptador puente eth0 el firewall filtrará también ese tráfico? Es decir, primero saldrá por la eth0 y volverá a entrar para hacer ping y otras cosas al sistema real, habrá algún problema?

cpu2

#3
Intentare responder tus pregunta, por que no veas.

No te hace falta crear una maquina virtual para probar un cortafuegos, pero si la quieres crear adelante.

Iptables filtrara las conexiones o protocolos a la interfaz que tu ordenaste, para algo esta la opcion -i, esa opcion significa que esa regla solo se aplica a eth0 en tu caso.

Luego hay reglas como esta.

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

Que esta es "global" vamos que se aplica a todas las interfaces, ya que no especificaste alguna.

Y despues de eso intentare responder esta pregunta.

Cita de: ccrunch en 25 Mayo 2014, 21:29 PMEs decir, primero saldrá por la eth0 y volverá a entrar para hacer ping y otras cosas al sistema real, habrá algún problema?

Si tu politica OUTPUT le permite a la interfaz realizar la conexion que le pediste no habra algun problema.

Código (asm) [Seleccionar]
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Si tienes eso establecido y una politica en OUTPUT DROP, y quieres hacer una peticion ftp o http, no funcionara ya que no estas dejando la salida a los paquetes NEW. Tendrias que hacer algo asi.

iptables -A OUTPUT -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT

Entonces se dejara salir la conexion, pero claro luego tiene que entrar de nuevo, y de eso se encarga la politica INPUT, si esta no permite las conexiones entrantes a esa direccion tendras prolemas, pero para eso pusiste esta regla.

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

Significa que todos los paquetes con las banderas ESTABLISHED,RELATED seran aceptados, si yo realizo una peticion ftp este saldra con el NEW si el servidor remoto la acepta este me enviara otra conexion con la bandera ESTABLISHED y entonces si que podras establecer la conexion.

Pero si alguien remotamente intenta hacer una peticion ftp, este no podra ya que tu politica INPUT no aceptas los paquetes con banderas NEW. Dado que tu politica OUTPUT esta en ACCEPT no tendrias que tener problemas.

Yo si fuera tu entenderia las reglas antes de aplicar nada, y mucho menos hacer un copiar y pegar de un foro o pagina de Debian.

Un saludo.

P.D: No se si eso responde tus preguntas, si no vuelve a formularlas mejor.

Jenag

Para comentarme algo : Evamr1991@openmailbox.org : Válido para Bots y Robots..

cpu2

Te recomiendo que ignores esos links que te paso ese usuario, sobre todo el ultimo, si no quieres quedarte mas confuso y perdido, es un sript a base de reglas encontradas por internet me apuesto algo, y es caotico como el solo.

Un saludo.


ccrunch

#6
Ahora he comprobado por casualidad si se estaban aplicando y sí se han aplicado, al reiniciar y sin hacer nada. No se por qué pero ahora ya va.

Y como recomendación, qué filtros me recomendáis dejar para una estación de trabajo?

Yo he mirado esto: http://man-es.debianchile.org/cortafuego.html para estación de trabajo y no entiendo la 2ª y 3ª opción.

Lo que quiero es filtrar por todas las interfaces (solo tengo eth0 y wlan0) todo el tráfico que pasa, eliminar absolutamente todos los paquetes que yo no haya solicitado, es decir, quiero que funcione el tráfico web con un servidor con el cual yo he pedido un establecimiento de conexión, pero que nadie pueda hacerme ping, etc.

Me suena que eso lo hace IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT pero no estoy seguro.

Ahora mismo iptables luce así:
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Salu2

cpu2

Cita de: ccrunch en 26 Mayo 2014, 16:47 PMY como recomendación, qué filtros me recomendáis dejar para una estación de trabajo?
Yo he mirado esto: http://man-es.debianchile.org/cortafuego.html para estación de trabajo y no entiendo la 2ª y 3ª opción.

Te recomiendo un cortafuegos con politica DROP, y a partir de hay ir abriendo los protocolos que quieras, piensa que un cortafuegos en DROP es menos propenso a los "fallos" o problemas de seguridad que uno en ACCEPT.

Venga va, que la segunda regla ya te la explique antes, y la tercera queda bastante claro, todas las conexiones entrantes "conexiones nuevas" son aceptadas en todas las interfaces menos en eth0. Ignora todas esas reglas, cada maquina y red es un mundo diferente a lo mejor esas reglas no se adaptan a ti, no te hace falta nada de eso.

Cita de: ccrunch en 26 Mayo 2014, 16:47 PMLo que quiero es filtrar por todas las interfaces (solo tengo eth0 y wlan0) todo el tráfico que pasa, eliminar absolutamente todos los paquetes que yo no haya solicitado, es decir, quiero que funcione el tráfico web con un servidor con el cual yo he pedido un establecimiento de conexión, pero que nadie pueda hacerme ping, etc.

Pues como te dije antes, politica DROP y deja operativo lo que te interese, si dejas la politica en DROP esta automaticamente bloqueara los icmp, a o ser que le dijas que los acepte.

Simplemente tienes que preocuparte de abrir, es lo mejor. Si lees el fragmento de srcipt que te deje en el primer comentario lo veras.

Un saludo.

P.D: Te recomiendo que dejes los tutos, si no quieres acabar con un FW como el user de arriba.

ccrunch

Los tutos son para guiarme, algún día tendré que entender el funcionamiento del IPTABLES aunque me lo explicaron por encima.

El script ahora está así:

#Definir la norma de cada cadena básica
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#Aceptar paquetes en estado establecido y relacionado
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Y la salida de iptables -L es:
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Qué te parece esta configuración?

Salu2

cpu2

Pues mal, que quieres que te diga, ninguna regla para logear paquetes descartados, OUTPUT en ACCEPT y FORWARD sin ninguna regla.

Porque no intentas establecer la conexion con el Server? Con la politica OUTPUT en DROP.

Un saludo.