Ayuda a bloquear y habilitar puerto 443 a rango de ips

Tema: 

Hola a todos en el foro, tengo una duda, espero puedan apoyarme para dar con la solucion:

Tengo un servidor con ubuntu server 11.04, proxy squid transparente, reglas firewall...

El problema que tengo es el siguiente:

Manejo 2 rangos de ip, la primera la asigna squid y es del tipo 172.16.9.0 - 172.16.9.255 y son las direcciones que estan restringidas mediante las acl del squid...

El otro rango de ip es del tipo 172.16.0.2 - 172.16.0.255 y son las direcciones para "jefes" o sin restricciones y son asignadas mediante el dhcpd.conf de acuerdo con mac address y de manera manual se declara la ip estatica para que al entrar, el sistema los detecte como "jefes" y en squid tengo una acl donde vienen las ip declaradas de "jefes y los deja navegar libremente.

Ahora bien, como todo en esta vida, el problema que tengo es que en la red restringida existe el ultrasurf y se pasa por el arco del triunfo al squid y todo lo demas...

La solucion que pienso estaria super bien es bloquear el puerto 443 pero solo para el rango de ip de la 172.16.9.0 a la 172.16.9.255 cómo puedo declarar esto dentro de mi script de iptables?

Pero tambien existen las paginas de bancos, hotmail, gmail, y algunas que por trabajo son necesarias y necesitan tener conexion https, entonces lo que quiero hacer es "abrir" el puerto 443 a este rango de ip's 172.16.9.0 - 172.16.9.255 pero solo para el rango de red de hotmail, gmail, bancos, paginas del trabajo, etc... Cual es la forma en la que deberia de hacer esto? es decir, puedo conseguir el rango de red de cada sitio, pero como declaro en mi script de iptables que abra el puerto 443 para el rango de red al rango de red de la pagina que quiero?

Y otra pregunta mas, por ahi lei que las reglas de iptables se leen de acuerdo a la posicion, entonces deberia permitir la conexion a los rangos de red de las paginas https que quiero tener hotmail, bancos, etc y despues de esta regla la que cierra el 443 a todo lo demas? es correcto esto?

Saludos, espero haberme explicado correctamente, y gracias a todos aquellos que me puedan dar una luz sobre este dilema...

Gracias

Comentarios

Me Colaboras ?

Caballero, buenas tardes, me puedes colaborar/explicar para crear las reglas y esas cosas ?? por fa, en la empresa me estan ingresando por la web a https://www.facebook.com sin el Ultrasurf y navega normal por cualquier puerto con https , tengo el Ipcop y por http:// si queda restringido. Gracias por tu colaboracion. Hasta ahora estoy empezando con este tema de seguridad.

Puedes quitar el proxy

Imagen de deathUser

Puedes quitar el proxy transparente y obligar a todos a usar el proxy en el browser, así te aseguras que pasan todas las conexiones por el squid y bloqueas ahí.

No recuerdo si había un parche para l7 o similares para poder bloquear por iptables usando patrones ya que las IPs de facebook son muchas y cambian...

Suerte ...

bye
;)

La solucion la dio EPE

Imagen de falcom

La solucion la dio EPE recientemente con una linea de iptables bloqueas el acceso a https://xxxx

iptables -I FORWARD -p tcp --dport 443 -m string --string 'facebook' --algo bm -j DROP

se requiere el modulo string, cargado en tu kernel

ahí lo complicado es

Imagen de deathUser

ahí lo complicado es conseguir o compilar el módulo para el kernel del IPCop :), pero si, esa es la solución a la que me refería con iptables, veo que no tenía que ver con l7 :) ...

Hace mucho tiempo que no le he visto al IPCop, así que no se en que kernel van ni que nuevas funcionalidades o add-ons hayan sacado para los bloqueos ...

bye
;)

tambien hay como con L7

Imagen de falcom

tambien hay como con L7 (mucho mas segura), ultimamente lei q habian sacado una add-ons para ipcop que bloqueaba el trafico https como face... pero la verdad nunca he usado ipPLOP

Les paso el script para iptables que manejo

8) Aqui esta el script de iptables que uso y es el que he estado posteando en este tema:

//Script generado por POZOLERO

# IP del servidor squid
SQUID_SERVER="172.16.0.1"
# Interface conectada a internet
INTERNET="eth0"
# Interface conectada a la LAN
LAN_IN="eth1"
# puerto Squid
SQUID_PORT="3128"

# Limpiar reglas iptables anteriores
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# LOGIN YAHOO.COM
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 209.191.64.0-209.191.127.255 -j ACCEPT

# YAHOO.COM
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 98.136.0.0-98.139.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 69.147.64.0-69.147.127.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 68.142.192.0-68.142.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 66.94.224.0-66.94.255.255 -j ACCEPT

# MOZILLA ORG
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 63.245.208.0-63.245.223.255 -j ACCEPT

# MOZILLA NET
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 72.21.80.0-72.21.95.255 -j ACCEPT

# GOOGLE GMAIL
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 74.125.0.0-74.125.255.255 -j ACCEPT

# AKAMAI SERVER
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 173.222.0.0-173.223.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 23.0.0.0-23.15.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --dst-range 172.16.9.0-172.16.9.254 --dst-range 96.6.0.0-96.7.255.255 -j ACCEPT

# RANGO AKAMAI SERVER
# iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 173.222.0.0/15 -j ACCEPT

# HOTMAIL
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 64.4.0.0-64.4.63.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 65.52.0.0-65.55.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 69.192.0.0-69.192.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 4.0.0.0-4.255.255.255 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 207.46.0.0-207.46.255.255 -j ACCEPT

# BANCOMER
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 148.201.0.0-148.201.255.255 -j ACCEPT

# RANGOS BANCOMER
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.240.0.0/13 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.202.0.0/15 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.250.0.0/16 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.204.0.0/14 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.224.0.0/12 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.248.0.0/15 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.201.0.0/16 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 148.208.0.0/12 -j ACCEPT

# BANORTE
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 192.100.155.0-192.100.254.255 -j ACCEPT

# RANGOS BANORTE
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.155.0/24 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.192.0/19 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.252.0/23 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.160.0/19 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.254.0/24 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.224.0/20 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.248.0/22 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.156.0/22 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 172.16.9.0-172.16.9.254 -d 192.100.240.0/21 -j ACCEPT

# HSBC.COM.MX
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 200.0.0.0-200.255.255.255 -j ACCEPT

# HSBC.COM
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 161.113.0.0-161.113.255.255 -j ACCEPT

# BANAMEX
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 192.193.0.0-192.193.255.255 -j ACCEPT

# SCOTIABANK.COM.MX
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 168.165.0.0-168.165.255.255 -j ACCEPT

# SANTANDER SERFIN
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 --dst-range 170.169.0.0-170.169.255.255 -j ACCEPT

# BLOQUEAR 443 PARA RANGO DE MORTALES
iptables -A FORWARD -p tcp --dport 443 -m iprange --src-range 172.16.9.0-172.16.9.254 -j REJECT

# BLOQUEAR 8080 PARA RANGO DE MORTALES
iptables -A FORWARD -p tcp --dport 8080 -m iprange --src-range 172.16.9.0-172.16.9.254 -j REJECT

# BLOQUEAR 80 PARA RANGO DE MORTALES
iptables -A FORWARD -p tcp --dport 80 -m iprange --src-range 172.16.9.0-172.16.9.254 -j REJECT

# Configurar las politicas default
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

# Acceso ilimitado a loop
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT

iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 8080 -j DNAT --to $SQUID_SERVER:$SQUID_PORT

iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT

iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

Si van a usar el script, les pido me den los créditos correspondientes.

* Como comentario, yo sé que muchos dirán que si se podía bloquear el acceso https en proxy transparente... Pero nunca dijeron cómo hacerlo, al menos yo no he encontrado una respuesta completa. Sólo medio respuestas y puede ser un poco frustrante.

Saludos y estamos en contacto

gracias x tu aporte, bueno

Imagen de falcom

gracias x tu aporte, bueno veo algunos errores en tu script, pero mas alla de eso, es complicado ir cerrando x rangos de ips, los accesos (se ha hablado mucho del tema), y es basicamente x q los rangos siempre cambian, inclusive depende del pais donde te encuentres...asi q siempre hemos dicho q la forma mas segura es implementando control a traves de L7, ademas epe publico un como bloquear accesos no autorizados al pto 443 de facebook x ejemplo, busca aca mismo...

Deja los errores...

Aqui la aportación es el script, para que los que como yo no somos ingenieros en sistemas o no tengan idea de cómo hacer uno, puedan tener un script que bloquea puerto 443 para evitar el ultrasurf, freegate, proxpn y páginas https no deseadas como facebook, twitter, etc. Y comenzar a moverle para hacer el script más completo.

A mi el script me sirvio mucho, y cuando un rango de red cambie por lo general sera el de facebook, pero con cambiar solo los rangos de red, con eso se soluciona. Ademas en mi pais no cambiaron muy seguido, si no es que siguen siendo los mismos.

Aqui el aporte de la comunidad del foro experta en el tema, es decir en donde radican los errores, el porque de los errores, cómo corregirlos, mejorar el script y postearlo para la comunidad.

El script es para usarse con squid en modo transparente y evitar que cualquier persona se lo brinque con el ultrasurf, freegate, proxpn, etc...

Repito, yo busque en foros sobre el tema de bloquear face,youtube, etc y nunca encontre una respuesta solida, solo un indicio y que ahi le movieramos como pudieramos, hasta trolls encontre echandonos tierra, que si eramos lammers que queriamos todo hecho...Por eso decidi postear el script, para ver por donde hay que hacerle...

Saludos y espero retroalimentacion sobre los errores del script y porque.

P.D. Actualmente estoy usando pfsense para bloquear en mi oficina, pero me ha dado tantos dolores de cabeza que me quiero regresar a linux modo texto.

El problema que tengo, es que no lo quiero volver a hacer transparente, para que se gestione el puerto 443 por medio de squid y cerrar de manera eficaz todo lo que se necesite.

Páginas