Mostrando entradas con la etiqueta IpTables. Mostrar todas las entradas
Mostrando entradas con la etiqueta IpTables. Mostrar todas las entradas

martes, 28 de abril de 2009

Firewall con Iptables

Pongamonos en situación antes de todo.
Tenemos el siguiente esquema:
Queremos que los equipos con direcciones 172.16.1.X tenga acceso desde internet por los servicios FTP, SSH, IMAP, POP3, HTTP y permita los ICMP.
Por el contrario los equipos con direcciones 172.16.0.X tendran solo acceso a HTTP y cualquier peticion ICMP debera se rechazada.
Para administrar el Firewall vamos ha dejar que solo se puede acceder mediante SSH si la direccion de acceso es de 172.16.0.0/16.

Suponemos que las IPs estan asignadas como viene en el esquema.

Para empezar vamos a configurar el Firewall.
NOTA: El firewall no es mas que un equipo Linux con dos tarjetas de red e IPTABLES y un servidor SSH.
Para poder permitir al Firewall que "enrute" el trafico desde la red 192.168.1.0/24 hacia 172.16.0.0/16 tendremos que poner el fichero "/proc/sys/net/ipv4/ip_forward" a 1. Esto se puede hacer escribiendo:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Ahora vamos a cerrar el acceso al Firewall y dejar solo el SSH:
# iptables -P INPUT DROP
# iptables -A INPUT -s 172.16.0.0/24 -p TCP --dport 22 -j ACCEPT
# iptables -P OUTPUT DROP
# iptables -A OUTPUT -d 172.16.0.0/24 -p TCP --sport 22 -j ACCEPT

Como podeis observar la direccion usa una mascara de 24bits para evitar el acceso desde los equipos de 172.16.1.X

Ahora vamos a configurar que datos debe de pasar de una red a otra.
# iptables -P FORWARD DROP
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 20 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 21 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 22 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 80 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 110 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 143 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 220 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 993 -j ACCEPT

# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 20 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 21 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 22 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 80 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 110 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 143 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 220 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 993 -j ACCEPT

# iptables -A INPUT -s 172.16.0.0/24 -p TCP --dport 80 -j ACCEPT
# iptables -A INPUT -d 172.16.0.0/24 -p TCP --sport 80 -j ACCEPT
# iptables -A INPUT -d 172.16.0.0/24 -p ICMP -j REJECT