LAN ------------- eth0 (192.168.0.1) |___| eth1 (192.168.1.2) --------- (192.168.1.1)ADSL
EN esa PC corre el servicio SQUID3 por el Puerto 8080 para los clientes de la LAN.
Los clientes de la LAN pueden acceder a un servidor JABBER fuera de la red en la dirección IP 2XX.XXX.XXX.XXX que escucha en el puerto 5222.
Actualmente estas son las reglas del iptables:
Código BASH:
Ver original
*filter :FORWARD DROP [0:0] :INPUT DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -j LOG --log-prefix "iptables" #-A OUTPUT -j LOG --log-prefix "iptables" -A FORWARD -j LOG --log-prefix "iptables" # Accept traffic from internal interfaces -A INPUT ! -i eth0 -j ACCEPT # Accept traffic with the ACK flag set -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT # Allow incoming data that is part of a connection we established -A INPUT -m state --state ESTABLISHED -j ACCEPT # Allow data that is related to existing connections -A INPUT -m state --state RELATED -j ACCEPT # Accept responses to DNS queries -A INPUT -p udp -m udp -i eth0 --dport 1024:65535 --sport 53 -j ACCEPT # REJECT ACCESS TO 192.168.1.0/24 FROM eth0 -A INPUT -s 192.168.0.0/24 -d 192.168.1.0/24 -i eth0 -j DROP # REJECT responses to our ping -A INPUT -p icmp -m icmp ! -i eth0 --icmp-type echo-reply -j DROP # Accept notifications of unreachable hosts -A INPUT -p icmp -m icmp ! -i eth0 --icmp-type destination-unreachable -j DROP # Accept notifications to reduce sending speed -A INPUT -p icmp -m icmp ! -i eth0 --icmp-type source-quench -j DROP # Accept notifications of lost packets -A INPUT -p icmp -m icmp ! -i eth0 --icmp-type time-exceeded -j DROP # Accept notifications of protocol problems -A INPUT -p icmp -m icmp ! -i eth0 --icmp-type parameter-problem -j DROP # Allow connections to our IDENT server ##-A INPUT -p tcp -m tcp -i eth0 --dport auth -j ACCEPT # DROP Respond to pings -A INPUT -p icmp -m icmp ! -i eth0 --icmp-type echo-request -j DROP # Allow connections to our SQUID server -A INPUT -p tcp -m tcp -i eth0 --dport 8080 -j ACCEPT #JABBER -A INPUT -p tcp -m tcp -i eth0 --dport 5222 -j ACCEPT -A INPUT -j DROP COMMIT *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT
Las reglas del firewall se cargan durante el post-up de eth0.
La redirección al JABBER la hago con XINETD:
Código BASH:
Ver original
service jabber { port = 5222 socket_type = stream protocol = tcp bind = eth0 redirect = 2XX.XXX.XXX.XXX 5222 type = UNLISTED wait = no disable = no access_time = 07:00-17:00 per_source = 1 log_type = SYSLOG daemon info log_on_failure = HOST log_on_success = HOST DURATION EXIT }
Cualquier otro servicio deberá estar denegado solo se permitirá navegación web, el proxy deberá encargarse de todas las peticiones, es decir no hace falta que pasen peticiones DNS, ni de otro tipo a la red externa.
Quisiera saber si la redirección del servicio JABBER se puede hacer con el mismo IPTABLES y mejorar las reglas del firewall. No se cuán bien configurado esté.
Leyendo un poco, he visto que si la política inicial se establece en DROP, no es necesario bloquear nada más, simplemente declarar explícitamente qué se desea ACEPTAR, y el paquete que no cumpla con ninguna de las reglas declaradas en la cadena *filter automáticamente, se le aplica el DROP. Por tanto tenía algunas reglas que no hacían falta (de todos modos al final de la cadena mantengo la regla -A INPUT -j DROP)
En cualquier caso, aun tengo la duda en cuanto al acceso al jabber externo a la red local, de si es posible permitierlo mediante reglas de iptables y no utilizar Xinetd.