Dar acceso a un grupo de ips al puerto 443 con iptables

Imagen de mikeMTY

Forums: 

Que tal, he estado gogleando pero no doy con nada conciso, lo que quiero es poder dar acceso solo a un grupo de ips al puerto 443 algo así como

iptables -A OUTPUT -s "archivo con ips" -p tcp --dport 443 -j ACCEPT

Uso Suse 11 e iptables v1.4.0 , a como estoy ahorita o bloqueo a todos o viceversa, no doy con el comando para indicar a iptables que aplique la regla solo a las ips que esten dadas de alta en dicho archivo

Alguien que me pueda dar una sugerencia para realizar esto lo agradecería mucho

Intenta con un for.

Imagen de Monkito

Primeramente el OUTPUT no permite el argumento -s, tu regla quedaría así


iptables -A FORWARD -s $ip -p tcp --dport 443 -j ACCEPT

Segundo lo que necesitas es un for.

for ip in $( cat /ruta/del/archivo_de_ips )
do
iptables -A FORWARD -s $ip -p tcp --dport 443 -j ACCEPT
done

Saludos.

------------
counter.li.org

Cogito Ergo Sum

En particular, la cadena de

Imagen de acl

En particular, la cadena de OUTPUT únicamente se aplica a paquetes generados por un proceso local. Si el paquete llegó de otra máquina y tienes ip_forwarding en 1 el paquete va a pasar por FORWARD. Es por eso que to regla original está mal y debes usar la recomendación de monkito.

Si usas regla por defecto

Imagen de skypower

Si usas regla por defecto DROP y el servicio esta en el propio server puede ser asi:

...


iptables -A INPUT -i eth0 -s ip1 -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -o eth0 -d ip1 -p tcp --sport 443 -j ACCEPT

Si esta en un server remoto:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s ip1 -d ipremoto -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -d ip1 -s ipremoto -p tcp --sport 443 -j ACCEPT

Salud2s...

ecualug
______________________
!!!AdminRed_Debian!!!

Esto se a puesto un poco mas

Imagen de mikeMTY

Esto se a puesto un poco mas confuso, y tal vez me falto fundamentar un poco mas mi pregunta, ahi va nuevo, tengo un firewall con dos interfaces de red una a la LAN y otra a INTERNET, tengo operando SQUID 2.6 con autenticacion, note que simplemente al bloquear el puerto 443 denege el acceso al MSN, es la primera vez que trabajo con iptablas, y tengo habilitado el port forwarding, la configuracion que tengo es la siguiente
eth0=10.0.1.240=red externa
eth1=172.21.44.240=LAN

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 172.21.44.0/24 172.21.44.240 tcp spts:1024:65535 dpt:22
ACCEPT icmp -- 172.21.44.0/24 172.21.44.240
ACCEPT icmp -- 10.0.1.0/24 10.0.1.240
ACCEPT all -- 0.0.0.0/0 127.0.0.1
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 172.21.44.0/24 172.21.44.240 tcp spts:1024:65535 dpt:80
ACCEPT udp -- 172.21.44.0/24 172.21.44.240 udp spts:1024:65535 dpt:80
ACCEPT tcp -- 172.21.44.0/24 172.21.44.240 tcp spts:1024:65535 dpt:443
ACCEPT udp -- 172.21.44.0/24 172.21.44.240 udp spts:1024:65535 dpt:443
ACCEPT udp -- 172.21.44.0/24 172.21.44.240 udp spts:1024:65535 dpt:10000
ACCEPT tcp -- 172.21.44.0/24 172.21.44.240 tcp spts:1024:65535 dpt:10000

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 172.21.44.240 172.21.44.0/24 tcp spt:22 dpts:1024:65535
ACCEPT icmp -- 172.21.44.240 172.21.44.0/24
ACCEPT icmp -- 10.0.1.240 10.0.1.0/24
ACCEPT all -- 127.0.0.1 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 172.21.44.240 172.21.44.0/24 tcp spt:80 dpts:1024:65535
ACCEPT udp -- 172.21.44.240 172.21.44.0/24 udp spt:80 dpts:1024:65535
ACCEPT tcp -- 172.21.44.240 172.21.44.0/24 tcp spt:443 dpts:1024:65535
ACCEPT udp -- 172.21.44.240 172.21.44.0/24 udp spt:443 dpts:1024:65535
ACCEPT udp -- 172.21.44.240 172.21.44.0/24 udp spt:10000 dpts:1024:65535
ACCEPT tcp -- 172.21.44.240 172.21.44.0/24 tcp spt:10000 dpts:1024:65535

hasta ese punto los usuarios se pueden conectar a internet, poniendo en su navegador el proxy 172.21.44.240, puedo conectarme al WEBMIN por https sin ningun problema desde la LAN al server, al igual que por SSH, cuando requiero conectarme al puerto 443 de internet me marca error por que no tengo habierto dicho puerto del firewall hacia internet, esto lo resuelvo poniendo la siguiente linea:


iptables -A OUTPUT -s 10.0.1.240 -p tcp --dport 443 -j ACCEPT

de ahi ya puedo conectarme a cualquier web https (notese que para nada toco el .conf de squid), mi idea es crear un conjunto de ips y agregarlas en la linea para tener solo un grupo de usuarios VIP con messenger, no se que estare haciendo mal intente poner las lineas que mensiona Monkito y Skypower pero ninguna me funciono, no pude conectarme a puertos 443....

Estara mal estruturado mi esquema de IPTABLES? si voy por buen camino, podrian profundizar un poco mas para hacer el "FOR"..

gracias

El squid de que manera lo

Imagen de skypower

El squid de que manera lo tienes configurado??? transparent
Si tienes el 443 permitido en el firewall y todavia no accedes a internet por el 443 es porque lo tienes cerrado en el squid...

Revisa esta parte del squid:


# ACCESS CONTROLS
# -----------------------------------------------------------------------------
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 5223 7443 9091 10000
acl Safe_ports port 21 70 80 81 210 280 443 488 5222 5269 5275 563 591 7443 7070 777 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

Salud2s...

ecualug
______________________
!!!AdminRed_Debian!!!

lo que me esta determinando

Imagen de mikeMTY

lo que me esta determinando el acceso al, 443 es la linea


iptables -A OUTPUT -s 10.0.1.240 -p tcp --dport 443 -j ACCEPT

con eso ya pueden acceder al puerto 443 sin tocar el archivo de configuracion del squi (squid funciona con autenticacion), me comentan que debe ser FORWARD en lugar de OUTPUT, pero lo pongo como mension arriba y funciona, pero toda la LAN tiene salida al pto 443, lo cual no quiero,lo que requerimos es solo un grupo de ips, sin tener que poner una linea por IP, sino un archivo con la lista de ips validas para accesar al 443...

mi pregunta es
Podrian extender un poco, o alguna referencia para el uso del "FOR"?
mis lineas de iptables estan bien? por que funciona con OUTPUT, en lugar de FORWARD??

En tu post original no

Imagen de acl

En tu post original no mencionas a squid, solamente dices que quieres dar acceso con iptables. Con squid cambia la cosa, porque el cliente primero contacta a squid (éste autentica, autoriza, busca en cache, etc) y luego squid abre una conexión aparte (que se origina en el host) y por eso los paquetes de squid pasan por la cadena de OUTPUT. Cuando usas squid, es squid quien aparenta hacer la navegación (desde el mismo hecho de que es un proceso local -squid- quien genera los paquetes) y por eso funciona poniendo las reglas en la cadena de OUTPUT.

Con solamente iptables, los paquetes llegan al host y éste no abre una nueva conexión solo los pasa al siguiente salto. Es decir, no se originan paquetes, solamente se pasan de interfaz.

Ya no necesitas un for para agregar reglas de iptables, basta con que tengas un archivo con las ips y crees un acl de squid con ellas y autorices al acl.

(SOLUCIONADO) dar acceso a un grupo de ips al puerto 443

Imagen de mikeMTY

hice lo siguiente en el squid.conf


acl INFORMATICA src "/etc/squid/INFORMATICA"
acl USUARIOS SRC "/etc/squid/USUARIOS"
acl HTTPS port 443

http_access deny HTTPS !INFORMATICA
http_access allow password INFORMATICA
http_access allow password USUARIOS

y en IPTABLES

iptables -A OUTPUT -s 10.0.1.240 -p tcp --dport 443 -j ACCEPT #acceso desde el firewall al puerto 443 de internet

funciono como se requeria, solo las IPS dadas de alta en el archivo INFORMATICA tienen acceso al puerto 443, con esto los USUARIOS ya no puden entrar al messenger (ni a hotmail), al parecer estaba buscando la solucion en otro lugar, no donde deberia... bueno, espero que este post le sirva a alguien mas, saludosss

gracias

iptables -A OUTPUT -s

Imagen de Monkito


iptables -A OUTPUT -s 10.0.1.240 -p tcp --dport 443 -j ACCEPT

En este caso la regla dejará salir cualquier paquete originado por un proceso local, PERO, que intente salir a la red con la ip 10.0.1.240, es decir que debes tener esa ip en la pc que intenta navegar hacia los servicios https, en resumen esa ip la debe tener el proxy, para que tu regla realmente haga algo.

si no es así, esa regla no hace nada, haz una prueba deshabilitándola y verás lo que te digo.

------------
counter.li.org

Cogito Ergo Sum

Páginas