IPTABLES en Linux, parte fundamental para protegernos.
Muchos de los nuevos usuarios Linux no toman en cuenta la seguridad en su Sistema, IPTABLES es un firewall que viene en toda distribución, su configuración es parte fundamental.
Si comparamos, Internet es como si fuera las ciudades, calles, donde pasan un sin fin de personas, tu pc es tu casa, como toda casa tiene puertas y ventanas. Tu sabes si le pones vidrios blindados o si tu puerta estará siempre abierta o cerrada.
En eso consiste en tener un Firewall, gestionar tus puertos de comunicación y evitar que te roben en tu casa.
En varias comunidades siempre me mencionan que use herramientas para la X pero pues yo prefiero mi script para configurar IPTABLES teniendo la ventaja que puedes configurar todo a tu gusto “a la medida”. Aunque no hay que negar que las interfaces te facilitan todo pues ya tiene reglas mas complejas y efectivas.
Los siguientes scripts vienen detallados de lo que hacen aunque creo que la mejor manera de estar protegidos es cerrar todo puerto por haber y despues abrir solo los necesarios.
#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internetecho -n Aplicando Reglas de Firewall…
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT#en caso de tener apache funcionando abrir port 80
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 80 -j ACCEPT
# bloquear posibles ICMP extraños
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp –dport 1:1024 -j DROP#cerrar webproxy
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 8080 -j DROP# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 10000 -j DROPecho ” OK . Verifique que lo que se aplica con: iptables -L -n”
# Fin del script
Es importante el archivo siempre tenga al inicio #!/bin/sh
Creo que esta bastante explicado es lo mas basico que uno debe llevar en un script para IPTABLES esto lo podemos guardar en un archivo de texto y despues darle permisos de ejecución
$ chmod u+x /ruta/archivo
y listo con solo ejecutar,
$ sudo /ruta/./archivo
en ese momento pedira el password para ejecucion en modo root (para cambiar reglas siempre usar root, notar el . antes de la / ya que eso realiza la ejecución) y las reglas estarán activa.
A todos nos ha pasado que cuando estamos experimentando con IPTABLES llega un momento de querer borrar toda reglas existente en el mismo, lo podemos hacer de forma segura de la siguiente forma usando este pequeño script.
#!/bin/sh
#limpio mis reglas
iptables –flush
iptables –table nat –flush
iptables –delete-chain
iptables –table nat –delete-chain
Igual lo guardamos en un archivo de texto con el nombre limpiareglas (tu puedes ponerle el nombre que quieras) y le damos permisos de ejecución (arriba ya lo mencione).
Listo, al ejecutar:
$ sudo ./limpiareglas
se limpiara todas las reglas contenidas en IPTABLES.
Para que se te haga comodo puedes ejecutar todo script desde tu X, creando un lanzador que contenga como comando
sudo /ruta/donde/se/encuentra/el/archivo/./archivoaejecutar
(en caso de un script con reglas iptables es necesario el “sudo”, si en otros scripts no lo requieres no lo añadas)
Despues marcar la casilla que dice “Ejecutar en Terminal” y no olvides ponerle nombre al lanzador, cada vez que ejecutes el lanzador te mandará a una consola y pedirá que introduzcas el password (recuerda es el password que usas al utilizar sudo).
Hay un sin fin de maneras de usar un script, no nadamas para IPTABLES, de hecho puedes programar cosas mas complejas segun tus necesidades.
Fuentes a consultar: IPTABLES manual práctico
10 comentarios »
Deja un comentario
-
Archivos
- Agosto de 2006 (3)
- Julio de 2006 (3)
-
Categorías
-
RSS
Subscripciones RSS
RSS de los Comentarios

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Mejoremos por esto Establecemos politica por defecto
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING DROP
iptables -t nat -P POSTROUTING DROP
FORWARD solo aplica en firewalls y proxies con mas de un equipo
falta tambien
iptables -I INPUT -m state –state NEW,INVALID -j DROP
iptables -I INPUT -m state –state INVALID -j DROP
que sirven para rechazar todo contenido no solicitado
ademas, para sustituir las reglas de firewall de inicio hay que colocar una linea en rc.local
para iniciar este escript en el arranque.
Saludos
Gracias por tu comentario.
En efecto, tu sugerencia esta bastante bien de hecho, ando haciendo algunas modificaciones a mi script. Gracias.
Ojala alguien más quiera mejorar esto.
como puedo configurar los iptables para compartir internet desde mi servidor que tiene ubuntu 6.06 a las demas maquinas, ya instale y configure el firestarter, pero me falta configurar los iptables cree uno en base a ejemplos que baje de internet lo ejecute y almomento de definir las ip para las maquinas y la puerta de enalce intente entrar y no se pudo que hago, o tienes algun ejemplo que me ayude a solucionar la comparticion de internet
Es facil de hecho puedes configurarlo con 3 lineas en iptables y olvidarte del firestarter
aqui muestro un ejemplo. cabe mencionar que requiere de dos tarjetas de red, una donde recibira el internet y otra donde repartira internet a su red lan.
Dentro de un script.
**** eth0 es mi red lan (192.168.0.X donde X es el numero que diferencia a cada pc) y eth1 donde me conecto a internet
## enmascaramos la conexion de internet a nuestra red
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
## direccionamos al puerto 80 el puerto del proxy que
## reparte el internet (squid)para hacerse transparente
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
# Con esto permitimos hacer forward de paquetes en el firewall, es decir
# que otras pcs puedan salir a traves del firewall.
echo “1″ > /proc/sys/net/ipv4/ip_forward
Ahora si quieres solo salida a internet sin un squid solo modificar quedando asi.
## acceso desde red local y enmascaramiento hacia internet
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
# que otras pcs puedan salir a traves del firewall.
echo “1″ > /proc/sys/net/ipv4/ip_forward
Esper me halla explicado si no ojala alguien tenga otra aportacion.
saludos
si de mi maquina con FC5 kiero distribuir a mis maquinas XP pero restringiendo todo excepto 5 paginas que son de uso diario, no se si me explico bien solo quiero que los usuarios puedan ver de internet esas 5 paginas
salu2 y gracias por la paciencia soy nuevo en linux
Te recomiendo usar squid y leerte este documento y todo lo que conlleva a squid
http://www.linuxparatodos.net/geeklog/staticpages/index.php?page=19-2-como-squid-restriccion-web
por otro lado se me ocurre bloquear todo en squid y solo permitir una lista de paginas como permitidos.
lee el documento todo esta en http://www.linuxparatodos.com
Saludos!
Hola
tengo un pregunta??
como puedo crear el script de la tarjeta de red virtual para que cuando levante mi sistema se cree al mismo tiempo cual seria el script???
Hola tengo una pregunta?
como realizar la configuración básica de un Firewall, utilizando la utilidad IPTABLES de linux, de forma que se autorice solamente el paso de una red a una dirección en la segunda red a un puerto especifico y bajo un protocolo de transporte específico?
Continnuacion de la 8.
Donde Internet será simulado por una estación a un lado del firewall y la estación a la cual se autorizará el paso desde interne testará en la LAN al otro lado de este. Así si internet está simulada por la dirección 192.168.1.5 y la estación en el lado de la LAN tiene la dirección 192.168.2.10 y se quiere permitir el acceso a un sitio web entonces el acceso a permitir irá de la 192.168.1.5 (ó 192.168.1.0 255.255.255.0 si lo prefiere) hacia 192.168.2.10 puerto 80 TCP
mi problea es que estoy restringiendo una red local por medio de las iptables, las cuales solo funcionan con le servidor proxy, si el usuario desabilita el proxy mis reglas ya no son tan efectivas, hay alguna forma de resolver esto