Servidor Naylamp, un firewall/proxy implementado por un novato en Linux (2).

Continuando con la descripción de los pasos a seguir para la implementación del servidor Proxy/Firewall, paso a describir el archivo de configuración para el firewall, utilizando iptables.

Se crea un nuevo archivo, en la ruta /etc
nano /etc/fw.proxy
Donde se indicaran los pasos para habilitar:
1. Se limpian las reglas que existan previamente:
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
2. Estableciendo politicas 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
3.Dejo acceso desde la maquina local:
iptables -A INPUT -i lo -j ACCEPT
4.Impedir que se haga ping a este servidor:
iptables -A INPUT -p icmp -s 192.168.8.0/24 -j DROP
iptables -A INPUT -p icmp -s 192.168.9.0/24 -j DROP
5.Permitir el acceso desde la red local:
iptables -A INPUT -p icmp -s 192.168.8.0/24 -j DROP
iptables -A INPUT -s 192.168.8.0/24 -I eth0 -j ACCEPT
6.Aceptar trafico por el puerto 80
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -p tcp --dport 80 -j ACCEPT
7.Aceptar trafico de direcciones seguras tipo https:// (puerto 443)
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -p tcp --dport 443 -j ACCEPT
8.Aceptar que se consulten los DNS
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -p udp --dport 53 -j ACCEPT
9.Aceptar trafico por puertos 25 y 110
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -p tcp --dport 110 -j ACCEPT
10.El gerente quiere acceder a su camara web por el messenger:
PUERTOS_PUBLICOS="1024:65535"
IP_GERENTE="192.168.8.14"

iptables -A INPUT -s $IP_
GERENTE -p tcp --dport PUERTOS_PUBLICOS -j ACCEPT
iptables -A OUTPUT -s $IP_GERENTE -p tcp --dport PUERTOS_PUBLICOS -j ACCEPT
iptables -A FORWARD -s $IP_GERENTE -p tcp --dport PUERTOS_PUBLICOS -j ACCEPT
iptables -A FORWARD -s $IP_GERENTE -p udp --dport PUERTOS_PUBLICOS -j ACCEPT
11.El resto de puertos se bloquean.
iptables -A FORWARD -s 192.168.8.0/24 -i eth0 -j DROP
12. Para el proxy transparente
iptables -t nat -A PREROUTING -i eth0 -s 192.168.8.0/24 -d ! 192.168.8.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

13.Enmascaramiento de red local:
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth1 -j MASQUERADE
14.Permitir que las otras maquinas salgan por el proxy
echo 1 > /proc/sys/net/ipv4/ip_forward
15. Cerramos los puertos conocidos
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
16. Y guardamos el archivo.
17. Lo ejecutamos con esta sentencia:
/etc/fw.proxy

2 comentarios:

el matías dijo...

Hola, muy lindo tu scrip, pero en lo personal prefiero los firwalls (existe esa palabra???) con politica drop o en su defecto LOG (preo guarda que te llena el disco).

Ikanus dijo...

Bueno la palabra es firewall :D, y si un firewall con politica DROP es mucho más seguro, y con LOG aún más.