Iptables es a nivel del kernel en cambio los demas firewalls es softwares inestable y vulnerable.
/etc/init.d/iptables: Para es para iniciar o detener el servicio.
1. Copia de la configuración de iptables.
# iptables-save > respaldo-iptables
2. Ejecutar las reglas.
iptables -A FORWARD -s 192.168.0.0/255.255.0.0 -i eth1 -j ACCEPT (solo a modo de ejemplo)
3. Le das permisos de ejecución:
# chmod +x /etc/rc.d/iptables
4.Para guardar:
# /etc/init.d/iptables save
5. Para reestablecer:
# iptables-restore respaldo-iptables
# /etc/init.d/iptables save
6. Para agregar un script de servicio del /etc/init.d en el boot, lo haces con un script:
$ sudo update-rc.d iptables defaults
7 .Para eliminarlo:
$ sudo update-rc.d -f iptables remove
Copy/Paste con explicacióbnbastante clara:
nota: asumiendo que tu red es: 192.168.0.0/24
ejecuta una consola y realiza lo siguiente:
# iptables -A FORWARD -p tcp -m tcp -s 192.168.0.0/255.255.255.0 --dport 1863 -j DROP
#iptables -A FORWARD -p udp -m udp -s 192.168.0.0/255.255.255.0 --dport 1863 -j DROP
# iptables -A FORWARD -p tcp -m tcp -d 192.168.0.0/255.255.255.0 --dport 1863 -j DROP
# iptables -A FORWARD -p udp -m udp -d 192.168.0.0/255.255.255.0 --dport 1863 -j DROP
para el NAT seria de la siguiente manera:
# iptables -t nat -A PREROUTING -i ethx -s 0/0 -p tcp --dport 80 -j REDIRECT --to-port 3128
nota: ethx se debe cambiar por la interface que da a la Internet.
squid: para obtener un mayor dinamismo en lo que quieres hacer.
- un ejemplo de configuracion:
puedes crear una lista de IPs con bloqueo al messenger, especificando que nodos no van a tener acceso. ejemplo:
http_access deny msn1 sinmsn
http_access deny msn2 sinmsn
http_access allow tu_red
siendo en "msn1" una lista de nodos a bloquear, al igual que "msn2"
- Ahora, si tienes un servidor SSH y deseas tener un mínimo de ataques posibles, esta "regla" te puede ser de ayuda:
nota: iptables castiga al usuario que infructuosamente falla 3 veces y lo
castiga por 45 segundos. (si gustas puedes subirle el tiempo de castigo)
# iptables -A INPUT -i ethx -p tcp -m state --state NEW --dport 22 -m
recent --update --seconds 45 -j DROP
# iptables -A INPUT -i ethx -p tcp -m state --state NEW --dport 22 -m
recent --set -j ACCEPT
nota: ethx, debes cambiarla por la interface que da a la Internet.
- Cambiar el puerto ssh de 22 a otro número sólo obtendrás un 5% menos de ataques ya que muy fácilmente algunos "individuos" utilizarán "nmap" para por fin conseguir el puerto mediante lo siguiente,
# nmap -sS -sV "ip_del_host"
Ejemplo:
#!/bin/sh
## SCRIPT de IPTABLES
## Ejemplo de script para firewall entre red-local e internet
## con servicios abiertos de puerto 25, 110, y 1723
## Jose Luis Lopez
echo -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
## REDIRECCIONES
# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una maquina interna
#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.100:80
echo –n “ Aplicando Leyes de enmascaramiento ”
#Leyes.
iptables -A INPUT -m mac --mac-source xxxxxxxxxxxxx -i eth0 -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -m mac --mac-source xxxxxxxxxxxxx -i eth0 -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -m mac --mac-source xxxxxxxxxxxxx -i eth0 -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -m mac --mac-source xxxxxxxxxxxxx -i eth0 -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -m mac --mac-source xxxxxxxxxxxxx -i eth0 -p tcp --dport 3389 -j ACCEPT
echo –n “ Aplicando Acceso a mac y eth0 a terminal server”
# Los accesos de una mac determinada a Terminal server se redirigen e esa
# maquina
iptables -t nat -A PREROUTING -m mac --mac-source xxxxxxxxxxxxx -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.1.110:3389
#duda? acepto a todos o lo hago por mac ?
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.1.110:3389
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.1.100/24 -i eth1 -j ACCEPT
## Abrimos el acceso a puertos de correo
# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
# Abrimos el pop3
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD
# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.1.100/24 -i eth1 -p tcp --dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.1.100/24 -i eth1 -p tcp --dport 443 -j ACCEPT
#Acceso MSN
#iptables
# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.1.100/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.1.100/24 -i eth1 -p udp --dport 53 -j ACCEPT
# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.1.100/24 -i eth1 -j DROP
# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
#esta bien? eth1 es la de la red local
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.1.100/24 -o eth1 -j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## 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 -i eth0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp --dport 1:1024 -j DROP
# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP
# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP
echo “ OK . Verifique que lo que se aplica con: iptables -L -n“
# Fin del script
_________________