Para la ayuda de como utilizar estos comandos está #man iptables o #man ebtables, desde la consola de Linux. (Para salir de está solo presionamos Ctrl + Z)
Para definir estos parámetros es muy bueno tener un script a la mano, es decir, en un archivo de texto, en el cual se van a copiar las ordenes a ejecutar y si algo no sale como lo queremos solo será re-acomodar los parámetros y volver a ejecutar. Así:
(El siguiente ejemplo se trata sobre un Firewall en el cual van conectados un DMZ por la ETH2, una Red Local por la ETH1 y un servicio de Internet por la ETH0)
>> Firewall
allow-hotplug eth0 ( interfaz del Internet )
auto eth0
iface eth0 inet dhcp
(la IP que me da es 192.168.1.16)
allow-hotplug eth1 ( interfaz de la Red Local )
auto eth1
iface eth1 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
gateway 192.168.1.16
allow-hotplug eth2 ( interfaz del DMZ )
auto eth2
iface eth2 inet static
address 192.168.3.1
network 192.168.3.0
netmask 255.255.255.0
gateway 192.168.1.16
>> Red Local (este host también es un servidor DNS y DHCP Local)
auto eth0
iface eth0 inet static
address 192.168.2.2
network 192.168.2.0
netmask 255.255.255.0
gateway 192.168.2.1
>>Servidor DMZ (DNS, HTTP, FTP, CORREO, etc.)
auto eth0
iface eth0 inet static
address 192.168.3.2
network 192.168.3.0
netmask 255.255.255.0
gateway 192.168.3.1
################# Archivo SCRIPT de iptables en Firewall ##################
#!/bin/sh
echo > "Aplicando reglas de Firewall........"
#configuración de fordward
echo "1" > /proc/sys/net/ipv4/ip_forward
#Inicio de reglas
iptables -F (elimina lo establecido)
iptables -X (elimina las cadena creadas)
iptables -Z (reinicia el conteo de paquetes)
#Configuracion por defecto
iptables -P INPUT DROP (todo lo que entra es rechaza)
iptables -P OUTPUT DROP (todo lo que sale es rechaza)
iptables -P FORWARD DROP (todo lo que se reenvia se rechaza)
#Traduccion de IPs
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE
#Firewall de reenvios
iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
#Reglas necesarias del NAT
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp --dport 443 -j DNAT --to 192.168.3.2:443
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp --dport 53 -j DNAT --to 192.168.3.2:53
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p udp --dport 53 -j DNAT --to 192.168.3.2:53
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp --dport 21 -j DNAT --to 192.168.3.2:21
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp --dport 20 -j DNAT --to 192.168.3.2:20
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp -m multiport --dport 5000:5005 -j DNAT --to 192.168.3.2
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.16 -p tcp -m multiport --dport 25,143 -j DNAT --to 192.168.3.2
####Conexion de Internet al DMZ
#HTTP
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp --sport 80 -j ACCEPT
#HTTPS
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp --sport 443 -j ACCEPT
#DNS
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p udp --sport 53 -j ACCEPT
#FTP
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp --sport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp --sport 20 -j ACCEPT
#OTROS
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp -m multiport --dport 5000:5005 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp -m multiport --sport 5000:5005 -j ACCEPT
#SMTP,POP3
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d 192.168.3.2 -p tcp -m multiport --dport 25,143 -j ACCEPT
iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s 192.168.3.2 -p tcp -m multiport --sport 25,143 -j ACCEPT
###Conexion de Red local al Internet
#HTTP
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth0 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth0 -s 0.0.0.0/0 -p tcp --sport 80 -j ACCEPT
#HTTPS
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth0 -d 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth0 -s 0.0.0.0/0 -p tcp --dport 8080 -j ACCEPT
###DNS exterior para host 192.168.2.2
iptables -A FORWARD -i eth1 -s 192.168.2.2 -o eth0 -d 0.0.0.0/0 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.2 -i eth0 -s 0.0.0.0/0 -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.2.2 -o eth0 -d 0.0.0.0/0 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.2 -i eth0 -s 0.0.0.0/0 -p udp --sport 53 -j ACCEPT
###Conexion de Red local al DMZ
#HTTP
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 - tcp --dport 80 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p tcp --sport 80 -j ACCEPT
#HTTPS
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p tcp --sport 443 -j ACCEPT
#DNS
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p udp --sport 53 -j ACCEPT
#FTP
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p tcp --sport 21 -j ACCEPT
#OTROS
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 -p tcp -m multiport --dport 5000:5005 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p tcp -m multiport --sport 5000:5005 -j ACCEPT
#SMTP,POP3
iptables -A FORWARD -i eth1 -s 192.168.2.0/24 -o eth2 -d 192.168.3.2 -p tcp -m multiport --dport 25,143 -j ACCEPT
iptables -A FORWARD -o eth1 -d 192.168.2.0/24 -i eth2 -s 192.168.3.2 -p tcp -m multiport --sport 25,143 -j ACCEPT
##Peticiones y respuesta DHCP
iptables -A INPUT -i eth1 -s 192.168.2.0/24 -d 255.255.255.255 -p udp --dport 67 --sport 68 -j ACCEPT
iptables -A OUTPUT -o eth1 -s 192.168.2.2 -d 255.255.255.255 -p udp --dport 67 --sport 68 -j ACCEPT
##Permitir SSH desde Red local
iptables -A INPUT -i eth1 -s 192.168.2.0/24 -d 192.168.2.2 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.2.0/24 -s 192.168.2.2 -p tcp --sport 22 -j ACCEPT
##Permitir consultas al servidor DNS de Red local
iptables -A INPUT -i eth1 -s 192.168.2.1 -d 192.168.2.2 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.2.1 -s 192.168.2.2 -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.2.1 -d 192.168.2.2 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.2.1 -s 192.168.2.2 -p udp --sport 53 -j ACCEPT
##Permitir PING al DMZ desde Red local
iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -o eth1 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -i eth2 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -o eth2 -p icmp --icmp-type echo-reply -j ACCEPT
exit 0
###############################################################################
Estos son solo algunos ejemplos de como se puede utilizar el iptables, ya que hay muchas más opciones para configurar.
iptables -L >>> Muestra lo configurado simple
iptables -nL >>> Muestra lo configurado pero un poco mas especifico
iptables -nvL >>> Muestra lo configurado pero detallado y con recuento de paquetes
iptables -t Nombre_Tabla Politica >>> Crea nuevas entradas personalizadas}
ebtables -L >>> Muestra lo configurado simple
ebtables -L --cL >>> Muestra lo configurado pero detallado y con recuento de paquetes
Una de las formas para prohibir el escaneo de puertos con IPTABLES, cuando las políticas son ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW --log-prefix "No SYN"
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Otra de las formas en la cual podemos utilizar el IPTABLES para prohibir el escaneo de puertos es esta:
iptables -A INPUT -m unclean -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
Con EBTABLES y una interfaz puente o bridge podemos desde un servidor DHCP denegar las peticiones de ciertos HOST ( Tipo SCRIPT )
##!/bin/bash
##Planteamiento
ebtables -F
ebtables -X
##Politicas por defecto
ebtables -P INPUT ACCEPT
ebtables -P OUTPUT ACCEPT
ebtables -P FORWARD ACCEPT
##Denegación de servicio DHCP por MAC
ebtables -A INPUT -i br# --log-level info --log-ip --log-prefix FwDHCP
ebtables -A INPUT -i br# -s MAC-CLIENTE -p ip4 --ip-proto udp --ip-dport 68 --ip-sport 67 -j DROP
ebtables -A OUTPUT -o br# -d MAC-CLIENTE -p ip4 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP
exit 0
No hay comentarios:
Publicar un comentario