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.
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.
------------
Cogito Ergo Sum
En particular, la cadena de
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.
Este es un diagrama de cómo
Este es un diagrama de cómo funciona iptables y puede ser de utilidad para tener los conceptos claros.
Las fuentes de paquetes son 2: la red y los procesos locales. Ambos pasan por cadenas distintas como dije arriba.
Si usas regla por defecto
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...
______________________
!!!AdminRed_Debian!!!
Esto se a puesto un poco mas
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
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...
______________________
!!!AdminRed_Debian!!!
lo que me esta determinando
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
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
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
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.
------------
Cogito Ergo Sum
Páginas