Seguridad - Firewall con IPTABLES
![]()
Nivel 2 (96 posts)
0 
| #0 | ![]() |
mgianni | 10 dic 07 |
Bueno haciendo referencia al post de seguridad voy a dejarles un mini tutorial sobre iptables para que cualquiera puede implementar un firewall standard y cuidarse de los intrusos y ataques. Poco a poco ire posteando mas implementaciones sobre seguridad y sobre servidores linux (una pasion!! ;D).
Saludos a todos.
Lo primero que deben hacer es instalar iptables, generalmente en la mayoria de las distros viene instalado asique solo debemos chequear que tenemos la ultima version y listo. En mi caso que uso ubuntu server 7.10 (deribado de debian):
apt-get install iptables (instala iptables)
Luego apt-get update (actualiza paquetes)
Luego apt-get upgrade(instala paquetes nuevos)
Con eso ya listo que no entro mucho en detalle ya que de seguro lo tienen instalado xD
Ahora voy a poner un pequeño firewall que siempre uso de modelo para los mios propios:
#!/bin/bash
#-s Especifica una dirección de origen
#-d Especifica una dirección de destino
#-p Especifica un prototocolo
#-i Especifica un interface de entrada
#-o Especifica un interface de salida
#-j Especifica la acción a ejecutar sobre el paquete
#--sport Puerto de origen
#--dport Puerto de destino
#Borrar todas las reglas
iptables -F
#Politica general.Cerramos todo.Dejamos entrar y salir lo solicitado
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
###OTRAS PROTECCIONES####
# Quitamos los pings.
/bin/echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# No respondemos a los broadcast.
/bin/echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Para evitar el spoofing nos aseguramos de que la dirección
# origen del paquete viene del sitio correcto.
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
/bin/echo \"1\" > ${interface}
done
# Los ICMPs redirigidos que pueden alterar la tabla de rutas.
for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
/bin/echo \"0\" > ${interface}
done
# No guardamos registros de los marcianos.
/bin/echo \"1\" > /proc/sys/net/ipv4/conf/all/log_martians
# Asegurar, aunque no tenga soporte el nucleo, q no hay forward.
/bin/echo \"0\" > /proc/sys/net/ipv4/ip_forward
###Reglas de los puertos####
# Permitimos que se conecten a nuestro servidor web.
#iptables -A INPUT -m state --state NEW -p TCP --dport 80 -j ACCEPT
#Abrimos ssh a la red.
#iptables -A INPUT -s 172.26.0.3 -p TCP --dport 22 -j ACCEPT
#iptables -A INPUT -s 172.26.0.4 -p TCP --dport 22 -j ACCEPT
#iptables -A INPUT -s 172.26.0.5 -p TCP --dport 22 -j ACCEPT
#iptables -A INPUT -p TCP --dport 22 -j ACCEPT
# Permitimos la comunicación con el servidor dns
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
iptables -A INPUT -p TCP --dport 53 -j ACCEPT
#Permitimos uso de ftp.
#iptables -A INPUT -p TCP --dport 21 -j ACCEPT
#Permitimos acceso pop3.
#iptables -A INPUT -p TCP --dport 110 -j ACCEPT
# Permitimos uso de smtp
#iptables -A INPUT -p TCP --dport 25 -j ACCEPT
#Permitimos acceso imap.
#iptables -A INPUT -p TCP --dport 143 -j ACCEPT
#iptables -A INPUT -p UDP --dport 143 -j ACCEPT
#Permitimos todo el trafico de la LAN
iptables -A INPUT -s 172.26.0.2 -j ACCEPT
iptables -A INPUT -s 172.26.0.4 -j ACCEPT
iptables -A INPUT -s 172.26.0.5 -j ACCEPT
#Dejamos a localhost, para mysql, etc..
iptables -A INPUT -i lo -j ACCEPT
-------------------------------------------------------------------------------------
Bueno los mate con esa eh xD!
Lo que deben hacer es cambias las ips 172.26.* por su ip de red local y descomentar lo que quieran permitir ;).
Bueno una ves q copian el contenido y lo pegan es un archivo firewall por ejemplo deben darle permiso de ejecucion como root hacen chmod a+x y listo.. ahora deben cargarlo en el inicio de su sistema para ello deben edit el archivo /etc/init.d/rc.local encontrar muchas lineas alli, vallan al final de todo sin tocar nada!! y escriban el path de su firewall, por ejemplo /etc/firewall/firewall, en mi caso tengo en etc una carpeta firewall y dentro el firewall propiamente dicho, es comun a veces tener mas de uno para pruebas y demas.
Una vez que hicieron esto deben ejecutar su firewall para eso hacen /etc/firewall/firewall si no les devuelve ningun error es porque esta todo ok!
Ahora para ver si esta todo bien ya que por pantalla no nos devolvera nada debemos hacer:
iptables -L (listara nuestras reglas) y para asegurarnos iptables--save.
Bueno eso es todo!! ;D si bien esto es algo simple seguro a mas de uno le servira. Hay cosas que se pueden mejorar como por ejemplo evitar el ataque bruto de ssh y denegar al quinto intento de acceso, etc... pero para eso hay mejores heramientas que mas adelante veremos.
Saludos para todos!!!
Saludos a todos.
Lo primero que deben hacer es instalar iptables, generalmente en la mayoria de las distros viene instalado asique solo debemos chequear que tenemos la ultima version y listo. En mi caso que uso ubuntu server 7.10 (deribado de debian):
apt-get install iptables (instala iptables)
Luego apt-get update (actualiza paquetes)
Luego apt-get upgrade(instala paquetes nuevos)
Con eso ya listo que no entro mucho en detalle ya que de seguro lo tienen instalado xD
Ahora voy a poner un pequeño firewall que siempre uso de modelo para los mios propios:
#!/bin/bash
#-s Especifica una dirección de origen
#-d Especifica una dirección de destino
#-p Especifica un prototocolo
#-i Especifica un interface de entrada
#-o Especifica un interface de salida
#-j Especifica la acción a ejecutar sobre el paquete
#--sport Puerto de origen
#--dport Puerto de destino
#Borrar todas las reglas
iptables -F
#Politica general.Cerramos todo.Dejamos entrar y salir lo solicitado
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
###OTRAS PROTECCIONES####
# Quitamos los pings.
/bin/echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# No respondemos a los broadcast.
/bin/echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Para evitar el spoofing nos aseguramos de que la dirección
# origen del paquete viene del sitio correcto.
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
/bin/echo \"1\" > ${interface}
done
# Los ICMPs redirigidos que pueden alterar la tabla de rutas.
for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
/bin/echo \"0\" > ${interface}
done
# No guardamos registros de los marcianos.
/bin/echo \"1\" > /proc/sys/net/ipv4/conf/all/log_martians
# Asegurar, aunque no tenga soporte el nucleo, q no hay forward.
/bin/echo \"0\" > /proc/sys/net/ipv4/ip_forward
###Reglas de los puertos####
# Permitimos que se conecten a nuestro servidor web.
#iptables -A INPUT -m state --state NEW -p TCP --dport 80 -j ACCEPT
#Abrimos ssh a la red.
#iptables -A INPUT -s 172.26.0.3 -p TCP --dport 22 -j ACCEPT
#iptables -A INPUT -s 172.26.0.4 -p TCP --dport 22 -j ACCEPT
#iptables -A INPUT -s 172.26.0.5 -p TCP --dport 22 -j ACCEPT
#iptables -A INPUT -p TCP --dport 22 -j ACCEPT
# Permitimos la comunicación con el servidor dns
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
iptables -A INPUT -p TCP --dport 53 -j ACCEPT
#Permitimos uso de ftp.
#iptables -A INPUT -p TCP --dport 21 -j ACCEPT
#Permitimos acceso pop3.
#iptables -A INPUT -p TCP --dport 110 -j ACCEPT
# Permitimos uso de smtp
#iptables -A INPUT -p TCP --dport 25 -j ACCEPT
#Permitimos acceso imap.
#iptables -A INPUT -p TCP --dport 143 -j ACCEPT
#iptables -A INPUT -p UDP --dport 143 -j ACCEPT
#Permitimos todo el trafico de la LAN
iptables -A INPUT -s 172.26.0.2 -j ACCEPT
iptables -A INPUT -s 172.26.0.4 -j ACCEPT
iptables -A INPUT -s 172.26.0.5 -j ACCEPT
#Dejamos a localhost, para mysql, etc..
iptables -A INPUT -i lo -j ACCEPT
-------------------------------------------------------------------------------------
Bueno los mate con esa eh xD!
Lo que deben hacer es cambias las ips 172.26.* por su ip de red local y descomentar lo que quieran permitir ;).
Bueno una ves q copian el contenido y lo pegan es un archivo firewall por ejemplo deben darle permiso de ejecucion como root hacen chmod a+x y listo.. ahora deben cargarlo en el inicio de su sistema para ello deben edit el archivo /etc/init.d/rc.local encontrar muchas lineas alli, vallan al final de todo sin tocar nada!! y escriban el path de su firewall, por ejemplo /etc/firewall/firewall, en mi caso tengo en etc una carpeta firewall y dentro el firewall propiamente dicho, es comun a veces tener mas de uno para pruebas y demas.
Una vez que hicieron esto deben ejecutar su firewall para eso hacen /etc/firewall/firewall si no les devuelve ningun error es porque esta todo ok!
Ahora para ver si esta todo bien ya que por pantalla no nos devolvera nada debemos hacer:
iptables -L (listara nuestras reglas) y para asegurarnos iptables--save.
Bueno eso es todo!! ;D si bien esto es algo simple seguro a mas de uno le servira. Hay cosas que se pueden mejorar como por ejemplo evitar el ataque bruto de ssh y denegar al quinto intento de acceso, etc... pero para eso hay mejores heramientas que mas adelante veremos.
Saludos para todos!!!
