Linux - Reglas de iptables (firewall Linux)

 
Vista:
sin imagen de perfil

Reglas de iptables (firewall Linux)

Publicado por NV (4 intervenciones) el 27/06/2016 10:02:15
Necesito saber en que estado se encontrará el puerto 80 al finalizar la ejecución de este script. Está abierto y permite conexiones entrantes? esta cerrado y no permite conexiones entrantes? o como esta? y cual es el motivo?

Si no sabemos nada respecto a cual es la "politica por defecto" del firewall, después de ejecutar el "--flush" tenemos que entender que es ACEPTAR TODO?

1
2
3
4
#!/bin/bash
iptables --flush
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP


Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 311
Oro
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Reglas de iptables (firewall Linux)

Publicado por xve (837 intervenciones) el 27/06/2016 17:19:26
Al finalizar este script, entiendo que nadie podrá acceder al puerto 80 por la tarjeta de red eth0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Reglas de iptables (firewall Linux)

Publicado por NV (4 intervenciones) el 29/06/2016 20:29:18
Eso es lo que yo creia, pero es incorrecto.

La respuesta correcta es que el puerto 80 al finalizar el script se encuentra abierto.

Lo que me interesaria es que alguien explicara el motivo de que la segunda regla (la del DROP) no tenga ningun efecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 311
Oro
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Reglas de iptables (firewall Linux)

Publicado por xve (837 intervenciones) el 29/06/2016 23:52:36
entiendo que las dos reglas se contradicen... uno da acceso y el otro lo niega, pero no desactivas la regla que da acceso...

damos acceso:
1
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
desabilitamos el acceso:
1
iptables -D INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
cerramos el puerto:
1
iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP

Creo que esto seria lo correcto!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de barna_rasta
Val: 81
Bronce
Ha aumentado 1 puesto en Linux (en relación al último mes)
Gráfica de Linux

Reglas de iptables (firewall Linux)

Publicado por barna_rasta (182 intervenciones) el 30/06/2016 09:54:51
Buenos dias,
yo creo que jamas se llegara a ejecutar la orden de la segunda linea ya que IPTABLES trabaja de forma secuencial,
cuando se confirma la correcta condicion de una linea y se ejecuta, ya no sigue con las siguientes instrucciones.

Segun manual de 'pello' que segui para entender IPTABLES hace ya bastante tiempo.
http://studylib.es/doc/470014/iptables-en-21-segundos
http://principiatechnologica.com/2013/02/19/excelente-manual-de-iptables-configura-el-cortafuegos-de-linux-a-tu-gusto/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Reglas de iptables (firewall Linux)

Publicado por NV (4 intervenciones) el 04/07/2016 10:14:39
La política por defecto justo después de "iptables --flush" es ACEPTAR todo.

En el script original, la segunda regla es ignorada por iptables porque la primera regla sigue "activa", al hacer -A se agrega esa regla al final de la INPUT chain y hay que tener en cuenta que, efectivamente, iptables funciona por 1st match, es decir, la primera regla que coincide es la que funcionará y el resto no, por lo tanto la respuesta correcta (esto está sacado de un examen) es que el puerto 80 sigue abierto al finalizar el script.

Para que el puerto 80 fuese cerrado, el script tendria que ser este, como ya se ha comentado:

1
2
3
4
5
#!/bin/bash
iptables --flush
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -D INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP


Una forma de hacer una prueba con esto es la siguiente, supongamos que en lugar del puerto 80 usamos el puerto 58000 en el servidor con ip pública 1.2.3.4
$ iptables --flush
$ iptables -A INPUT -i eth0 -p tcp --dport 58000 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 58000 -j DROP
$ nc -l -p 58000 (servidor a la escucha en el 58000)
Desde otro dispositivo, con otra IP hacemos:
$ nc 1.2.3.4 58000
Comprobaremos que sí está abierto ese puerto.

Luego haremos:
$ iptables --flush
$ iptables -A INPUT -i eth0 -p tcp --dport 58000 -j ACCEPT
$ iptables -D INPUT -i eth0 -p tcp --dport 58000 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 58000 -j DROP
$ nc -l -p 58000 (servidor a la escucha en el 58000)
Desde otro dispositivo, con otra IP hacemos:
$ nc 1.2.3.4 58000
Comprobaremos que NO está abierto ese puerto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 311
Oro
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Reglas de iptables (firewall Linux)

Publicado por xve (837 intervenciones) el 04/07/2016 11:17:04
Excelente NV!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar