Como instalo Iptables desde Cero
Como instalo Iptables desde Cero
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.
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.
Re: Como instalo Iptables desde Cero
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:
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:
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
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
- Edmund Burke
Re: Como instalo Iptables desde Cero
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#
'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#
Re: Como instalo Iptables desde Cero
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):
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:
Lo siguiente es declarar las políticas por defecto.Código: Seleccionar todo
iptables -F iptables -X
Si no estás invitado: ¡BAJANDO, no queremos que entres por ninguna puerta!
Además, a menos que puntualmente se diga lo contrario, todo el mundo puede salir:Código: Seleccionar todo
iptables -P INPUT DROP
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 -P OUTPUT 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 lo -j ACCEPT
Los invitados pueden pasar por la puerta principal al servidor web:Código: Seleccionar todo
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Dejaremos que pasen también al servidor de correo:Código: Seleccionar todo
iptables -A INPUT -i eth0 -p tcp --dport www -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 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
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 --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
Con esto, tenemos un cortafuegos NO permisivo. Ni si quiera ping se le puede hacer al servidor que corre ese sencillo cortafuegos...Código: Seleccionar todo
iptables -A INPUT -i eth0 -p tcp -s 10.0.0.15 --dport 22 -j ACCEPT
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke
- Edmund Burke
Re: Como instalo Iptables desde Cero
ok, esta muy bueno lo que ha puesto, Lo voy a estudiar con mucho tacto. Luego muestro como me quedo.
Gracias
Saludos.
Gracias
Saludos.
Re: Como instalo Iptables desde Cero
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.
Re: Como instalo Iptables desde Cero
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#
Re: Como instalo Iptables desde Cero
¡Uf! En ese caso tendrás que ir con pañal a los espectáculos humorísticos, ¿no?103 escribió:Hace un tiempo vi esta homología y, la verdad literalmente me cagué de la risa.
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
- Edmund Burke
Re: Como instalo Iptables desde Cero
En mi experiencia, en vez de usar estas dos reglas:rdieguez escribió:Pues mira como me ha quedado.
Código: Seleccionar todo
-A INPUT -j DROP
-A OUTPUT -j ACCEPT
Código: Seleccionar todo
-P INPUT DROP
-P OUTPUT ACCEPT
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
- Edmund Burke
Re: Como instalo Iptables desde Cero
si, ya cambie esa regla.
saludos
saludos