Como instalo Iptables desde Cero

TCP/IP, enrutamiento, firewalls, NAT, monitoreo.

Moderadores: frank, dxfiles

Responder
rdieguez
Mensajes: 8
Registrado: Lun, 27 Abr 2015, 17:43

Como instalo Iptables desde Cero

Mensaje por rdieguez » Mié, 27 Abr 2016, 12:20

Hola a todos, yo necesito instalar un Cortafuego para mi servidor. Y lo estoy haciendo con 'iptables'. Pero no se, mucho de ipatables.
He llegado hasta aquí.

1. Instalacion de iptables.

'aptitude install iptables-persistent'


Lo primero que haremos, es ingresar al directorio '/etc/iptables' y buscaremos el archivo 'rules.v4' que seria el scritp por defecto para la configuración de reglas primero que haremos es guardar una copia del original de dicho script con el editor nano (nano rules.v4.bck) así guardaremos el scritp ,luego modificaremos con los siguientes parametros eliminando toda regla creada por defecto ubicandonos debajo de *filter

- 'cd /etc/iptables/' - Entramos a la carpeta de iptables.
- 'ls -l' - Listamos el contenido para ver lo que hay dentro de este Folder.
- 'cp rules.v4{,.bck}' - Hacemos una copia del archivo 'rules.v4' con el nombre 'rules.v4.bck'


*** Resp. ***
root@debian-hosting:~# cd /etc/iptables/
root@debian-hosting:/etc/iptables# ls -l
total 8
-rw-r--r-- 1 root root 183 abr 26 14:30 rules.v4
-rw-r--r-- 1 root root 184 abr 26 14:30 rules.v6
root@debian-hosting:/etc/iptables# cp rules.v4{,.bck}
root@debian-hosting:/etc/iptables# ls -l
total 12
-rw-r--r-- 1 root root 183 abr 26 14:30 rules.v4
-rw-r--r-- 1 root root 183 abr 26 14:36 rules.v4.bck
-rw-r--r-- 1 root root 184 abr 26 14:30 rules.v6
root@debian-hosting:/etc/iptables#

- Hasta aquí todo bien.

- Como configuro el 'iptables' pera que me Deniege o Acepte algunos puertos.?
- Como le indico al iptables que inicie con el Sistema.

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Como instalo Iptables desde Cero

Mensaje por hugo » Mié, 27 Abr 2016, 12:35

El paquete iptables-persistent se encarga justamente de cargar al inicio del sisitema las reglas que tengas declaradas en los archivos rules.v4 y rules.v6

Con respecto a lo otro, no es difícil. Lo ideal es hacer tus reglas con política de denegación por defecto, pero para poner un ejemplo ilustrativo sencillo, suponiendo que solamente deseas permitir hacia tu servidor las consultas DNS y la navegación, puedes ejecutar lo siguiente como superusuario:

Código: Seleccionar todo

iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -j ACCEPT
iptables-save > /etc/iptables/rules.v4
El último comando lo que hace es reemplazar lo que tengas en tu archivo de reglas, asi que ten la precaución de hacer salvas antes de cualquier cambio (mejor aun usar un sistema de control de versiones, como git, ayudan mucho a la hora de experimentar).

Para más detalles sobre iptables, consulta el manual:

Código: Seleccionar todo

man iptables
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

rdieguez
Mensajes: 8
Registrado: Lun, 27 Abr 2015, 17:43

Re: Como instalo Iptables desde Cero

Mensaje por rdieguez » Jue, 28 Abr 2016, 10:00

Hola, si hice todo como me indico y la respuesta es esta.
'iptables -L' - Lista las reglas activas de iptables. en el archivo '/etc/iptables/rules.v4'

root@debian-hosting:/etc/iptables# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state NEW
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere multiport dports http,https state NEW
ACCEPT udp -- anywhere anywhere udp dpt:domain state NEW
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
root@debian-hosting:/etc/iptables#

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Como instalo Iptables desde Cero

Mensaje por hugo » Jue, 28 Abr 2016, 11:44

l comando iptables -L no devuelve las reglas almacenadas en el archivo rules.v4 sino sólo las reglas activas (no necesariamente son lo mismo).

Además, ese comando devuelve una información incompleta (por ejemplo faltan las interfaces). Mejor usa iptables-save (que por cierto, es el formato que admite el archivo rules.v4) o en todo caso al menos usa iptables -S que es lo que mas se le parece.

Edición: Para que entiendas mejor el principio en que se basa iptables con denegación por defecto, te cito un correo de Lázaro a la lista hace un tiempo, bastante ilustrativo (he realizado algunas ediciones para que resulte más completo):
låzaro escribió: PRIMEROS PASOS CON IPTABLES

Iptables se caracteriza por ser famoso debido a su grado de complejidad; pero realmente, más que complejo, iptables es simplemente "diferente".

Un cortafuegos de iptables es un script. Iptables toma instrucciones una a una hasta crear un conjunto de reglas que serán un cortafuegos. Dicho cortafuegos se carga dentro del kernel y funciona dándole instrucciones de todo lo que se mueva por la tarjeta de red al stack TCP/IP e incluso a niveles más bajos.

Veamos un ejemplo teórico:

En la manigua, los animales hicieron una fiesta ;) y contrataron a un informático de portero. Este resolvió el problema con un cortafuegos.

Queremos dejar pasar a los conejos, a las jutías y a los chivos; pero no a los perros jíbaros ni a los ladrones de ganado.

Podríamos hacer un cortafuegos que impida el paso de los perros jíbaros y los ladrones, pero podría aparecer un sijú platanero, que si bien no es peligroso es bastante molesto. Entonces mejor hagamos un cortafuegos que impida el paso de TODO lo que NO se desee. La semántica sería así:

paso a las jutías
paso a los conejos
paso a los chivos
NO PASA NADIE SIN INVITACIÓN

Cuando vengan los jíbaros, se prueba DE ARRIBA HACIA ABAJO

jíbaro ¿es una jutía? => falso | Acción: no pasa
jíbaro ¿es un conejo? => falso | Acción: no pasa
jíbaro ¿es un chivo? => falso | Acción: no pasa
jíbaro ¿TIENE INVITACIÓN? => falso | Acción: no pasa

Finalmente el perro jíbaro pasó por todas las ACL y ninguna lo dejó pasar. Por tanto, ¡NO PASÓ!

Entonces viene un Conejo

conejo ¿es una jutía? => falso | Acción: no pasa
conejo ¿es un conejo? => verdadero | Acción: pasa

El conejo coincidió como verdadero en la segunda línea y el cortafuegos lo dejo pasar.

Una vez que una regla coincide, el resto de las reglas no se prueban. Nuestro cortafuegos se detendrá donde encuentre una coincidencia verdadera. O sea, donde te deje pasar, no te hará mas pruebas. Oficialmente el objeto probado estará FUERA de la evaluación del cortafuegos.

Pero quizás, algún conejo ya entró, pero quiera salir un momento para ir al baño o buscar a su coneja y volver a entrar. Entonces el cortafuegos debe tener una regla que diga:

"El que ya haya entrado puede salir y volver a entrar solo o con un acompañante". Entonces nuestro cortafuegos dice:

paso al que ya haya entrado, con su acompañante
paso a las jutías
paso a los conejos
paso a los chivos
NO PASA NADIE SIN INVITACIÓN

De esta forma los que ya hallan entrado, pueden entrar y salir fácilmente...

Bueno pero, ¿como sería eso en iptables? Sencillo:

La fiesta antes mencionada era en el bosque, y la puerta para entrar es una interfaz de red. La interfaz se llama "eth0" Primero, es una bonita costumbre poner algo que limpie. Es bueno baldear el salón antes de recibir a los invitados:

Código: Seleccionar todo

iptables -F
iptables -X
Lo siguiente es declarar las políticas por defecto.

Si no estás invitado: ¡BAJANDO, no queremos que entres por ninguna puerta!

Código: Seleccionar todo

iptables -P INPUT DROP
Además, a menos que puntualmente se diga lo contrario, todo el mundo puede salir:

Código: Seleccionar todo

iptables -P OUTPUT ACCEPT
Lo próximo es dar al personal de servicio acceso local a todas las áreas, o no habrá quien atienda a los invitados:

Código: Seleccionar todo

iptables -A INPUT -i lo -j ACCEPT
Aquellos invitados que hayan entrado una vez por la puerta principal, pueden seguir entrando, solos o con acompañantes:

Código: Seleccionar todo

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Los invitados pueden pasar por la puerta principal al servidor web:

Código: Seleccionar todo

iptables -A INPUT -i eth0 -p tcp --dport www -j ACCEPT
Dejaremos que pasen también al servidor de correo:

Código: Seleccionar todo

iptables -A INPUT -i eth0 -p tcp --dport smtp -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport pop3 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport imap -j ACCEPT
Y también a los mismos protocolos de correos, pero por SSL:

Código: Seleccionar todo

iptables -A INPUT -i eth0 -p tcp --dport smtps -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport pop3s -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport imaps -j ACCEPT
Nuestra maquina (la del administrador con ip 10.0.0.15), puede hacerle SSH al servidor, pero solo esa:

Código: Seleccionar todo

iptables -A INPUT -i eth0 -p tcp -s 10.0.0.15 --dport 22 -j ACCEPT
Con esto, tenemos un cortafuegos NO permisivo. Ni si quiera ping se le puede hacer al servidor que corre ese sencillo cortafuegos...
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

rdieguez
Mensajes: 8
Registrado: Lun, 27 Abr 2015, 17:43

Re: Como instalo Iptables desde Cero

Mensaje por rdieguez » Jue, 28 Abr 2016, 12:25

ok, esta muy bueno lo que ha puesto, Lo voy a estudiar con mucho tacto. Luego muestro como me quedo.
Gracias
Saludos.

103
Mensajes: 335
Registrado: Sab, 12 Feb 2011, 16:51

Re: Como instalo Iptables desde Cero

Mensaje por 103 » Jue, 28 Abr 2016, 13:35

Hace un tiempo vi esta homología y, la verdad literalmente me cagué de la risa. Sin embargo, con todo el humor y ejemplos hilarantes la homología no es más que totalmente cierta y muy simple para los novatos, incluso para los que tienen cierta experiencia. El ejemplo del acompañante (RELATED) juro que la entendí mejor cuando leí eso.

rdieguez
Mensajes: 8
Registrado: Lun, 27 Abr 2015, 17:43

Re: Como instalo Iptables desde Cero

Mensaje por rdieguez » Jue, 28 Abr 2016, 14:12

Pues mira como me ha quedado. Esto lo estoy probando en una pc virtual. luego lo voy a poner en el servidor.

Código: Seleccionar todo

root@debian-hosting:/etc/iptables# iptables-save < /etc/iptables/rules.v4 
# Generated by iptables-save v1.4.14 on Thu Apr 28 15:09:53 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -s 192.168.1.30/32 -i eth0 -p tcp -m tcp --dport 5922 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 123 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j DROP
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Thu Apr 28 15:09:53 2016

Código: Seleccionar todo

root@debian-hosting:/etc/iptables# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:110
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:143
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:465
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:995
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:993
ACCEPT     tcp  --  192.168.1.30         0.0.0.0/0            tcp dpt:5922
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:123
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
DROP       all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
root@debian-hosting:/etc/iptables#

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Como instalo Iptables desde Cero

Mensaje por hugo » Vie, 29 Abr 2016, 09:31

103 escribió:Hace un tiempo vi esta homología y, la verdad literalmente me cagué de la risa.
¡Uf! En ese caso tendrás que ir con pañal a los espectáculos humorísticos, ¿no? :D
Pero ciertamente Lázaro suele poner ejemplos muy pintorescos, jejeje.
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Como instalo Iptables desde Cero

Mensaje por hugo » Vie, 29 Abr 2016, 09:48

rdieguez escribió:Pues mira como me ha quedado.
En mi experiencia, en vez de usar estas dos reglas:

Código: Seleccionar todo

-A INPUT -j DROP
-A OUTPUT -j ACCEPT
Es mejor simplemente establecer las políticas por defecto:

Código: Seleccionar todo

-P INPUT DROP
-P OUTPUT ACCEPT
Esto dice al cortafuegos que hacer con todo lo que no coincida con ninguna regla. El efecto es parecido a lo que pusiste, pero es más seguro porque no depende del orden en que se añada (iptables -A) la regla. Las políticas por defecto se aplican, por así decirlo, globalmente, de modo que las reglas puntuales que se añadan se consideran una excepción de estas políticas.

Edición: Puede parecer que me contradiga porque al principio te recomendé una cosa y ahora estoy diciendo otra, pero solo estoy dosificando las cosas para tu mejor comprensión. Mis verdaderas recomendaciones para un archivo de reglas son bastante más complejas, pero no quiero volverte paranoico si solo estas comenzando.
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

rdieguez
Mensajes: 8
Registrado: Lun, 27 Abr 2015, 17:43

Re: Como instalo Iptables desde Cero

Mensaje por rdieguez » Lun, 20 Jun 2016, 10:52

si, ya cambie esa regla.
saludos

Responder