Duda reglas firewall pfsense
-
Hola a todos en el foro. Tengo un script para iptables que me proporcionaron. Ya sé que pfsense no utiliza iptables. Pero el script se me hizo interesante.
El script estaba implementado en un servidor linux con squid en modo transparente. Y servía para bloquear a ciertos rangos de red las conexiones a sitios seguros SSL-443 del tipo youtube, pero sin bloquear el dominio google.com.
Mi pregunta es sobre si se puede hacer algo parecido en pfsense?
Les dejo el código del script.
#! /bin/sh # SCRIPT PARA BLOQUEAR POR MEDIO DE FIREWALL LAS CONEXIONES SEGURAS AL PUERTO 443 echo "Iniciando Firewall. " echo "Aplicando reglas de Firewall .........." iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t nat -Z #iptables -P INPUT ACCEPT #iptables -P OUTPUT ACCEPT #iptables -P FORWARD DROP INTERNET="eth0" LAN="eth1" IPLAN="172.16.0.0/12" RED="172.20.5" MOVIL="172.20.10" echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -i lo -j ACCEPT # Localhost iptables -A OUTPUT -o lo -j ACCEPT # Localhost #--------------------------------------------------------------------- iptables -A FORWARD -p tcp --dport 443 -j ACCEPT # HTTPS iptables -A INPUT -i $INTERNET -p tcp --dport 20 -j ACCEPT # FTP iptables -A INPUT -i $INTERNET -p tcp --dport 21 -j ACCEPT # FTP #iptables -A INPUT -i $INTERNET -p tcp --dport 22 -j ACCEPT # SSH #iptables -A INPUT -i $INTERNET -p tcp --dport 25 -j ACCEPT # SMTP #iptables -A INPUT -i $INTERNET -p tcp --dport 53 -j ACCEPT # DNS #iptables -A INPUT -i $INTERNET -p tcp --dport 80 -j ACCEPT # WEB #iptables -A INPUT -i $INTERNET -p tcp --dport 110 -j ACCEPT # POP #iptables -A INPUT -i $INTERNET -p tcp --dport 143 -j ACCEPT # IMAP #iptables -A INPUT -i $INTERNET -p tcp --dport 1433 -j ACCEPT # SQL Server #iptables -A INPUT -i $INTERNET -p tcp --dport 3306 -j ACCEPT # MySQL iptables -A INPUT -p tcp --dport 20 -j ACCEPT # FTP iptables -A INPUT -p tcp --dport 21 -j ACCEPT # FTP iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT # FTP iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT # FTP iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT # SSH iptables -A INPUT -p tcp --dport 25 -j ACCEPT # SMTP iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT # SMTP iptables -A INPUT -p tcp --dport 80 -j ACCEPT # WEB iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT # WEB iptables -A INPUT -p tcp --dport 110 -j ACCEPT # CORREO POP iptables -A OUTPUT -p tcp --sport 110 -j ACCEPT # CORREO POP iptables -A INPUT -p tcp --dport 143 -j ACCEPT # CORREO IMAP iptables -A OUTPUT -p tcp --sport 143 -j ACCEPT # CORREO IMAP #iptables -A INPUT -p tcp --dport 1433 -j ACCEPT # SQL Server #iptables -A OUTPUT -p tcp --sport 1433 -j ACCEPT # SQL Server #iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # MySQL #iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT # MySQL iptables -A INPUT -p tcp --dport 7777 -j ACCEPT # CNPSS iptables -A OUTPUT -p tcp --sport 7777 -j ACCEPT # CNPSS #----------------------------------------------------------------------- iptables -t nat -A PREROUTING -s $IPLAN -p tcp --dport 80 -j DNAT --to 172.20.5.1:3128 iptables -t nat -A POSTROUTING -s $IPLAN -o $INTERNET -j MASQUERADE # NIVELES DE ACCESO PARA LOS JEFES # LA RESTRICCION DE PAGINAS SE HACE A TRAVES DE SQUID, EL FIREWALL SOLO CONTROLA # LAS PAGINAS DE ACCESO POR MEDIO DE HTTPS # --------------------------------------- NIVELES FIREWALL # 1er NIVEL - SIN RESTRICCIONES # 2do NIVEL - ACCESO A FACEBOOK + TWITTER + YOUTUBE + DROPBOX, DESCARGAS PEER-TO-PEER DENEGADAS # 3er NIVEL - SOLO ACCESO A FACEBOOK; TWITTER, YOUTUBE, DROPBOX Y DESCARGAS PEER-TO-PEER DENEGADAS iptables -A FORWARD -d 151.101.0.0/16 -j ACCEPT iptables -A OUTPUT -p tcp -d 151.101.0.0/16 -j ACCEPT # Schoology iptables -A FORWARD -p tcp -d schoology.com --dport 443 -j ACCEPT #iptables -A OUTPUT -p tcp -d www.schoology.com -j ACCEPT #iptables -A OUTPUT -p tcp -d schoology.com -j ACCEPT # IPS SIN RESTRICCION DE PUERTOS O ACCESO ( NIVEL DE ACCESO 1) #----------------------------------------------------------------------------- iptables -A FORWARD -s $RED.41 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.42 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.48 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.49 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.55 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.57 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.68 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.69 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.70 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.76 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.129 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.141 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.168 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.170 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.249 -o $INTERNET -j ACCEPT # JEFE iptables -A FORWARD -s $RED.218 -o $INTERNET -j ACCEPT # JEFE #---------------------------------------------------------------------------- # SERVIDORES DE APPLE #---------------------------- #iptables -A FORWARD -d 74.125.0.0/16 -j ACCEPT # Google iptables -A FORWARD -s 17.142.160.59 -j ACCEPT iptables -A FORWARD -s 17.172.224.47 -j ACCEPT iptables -A FORWARD -s 17.178.96.59 -j ACCEPT iptables -A FORWARD -s $MOVIL.10 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.15 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.19 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.20 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.21 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.36 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.77 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.78 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.39 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.40 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.44 -o $INTERNET -j ACCEPT # Celular JEFE iptables -A FORWARD -s $MOVIL.85 -o $INTERNET -j ACCEPT # Tablet JEFE # RESTRICCION DE DESCARGAS TORRENT #---------------------------------------------------------------------------- iptables -A FORWARD -m string --algo bm --string "BitTorrent" -j DROP iptables -A FORWARD -m string --algo bm --string "BitTorrent protocol" -j DROP iptables -A FORWARD -m string --algo bm --string "peer_id" -j DROP iptables -A FORWARD -m string --algo bm --string ".torrent" -j DROP iptables -A FORWARD -m string --algo bm --string "announce.php?passkey=" -j DROP iptables -A FORWARD -m string --algo bm --string "torrent" -j DROP iptables -A FORWARD -m string --algo bm --string "announce" -j DROP iptables -A FORWARD -m string --algo bm --string "info_hash" -j DROP iptables -A FORWARD -m string --algo bm --string "get_peers" -j DROP iptables -A FORWARD -m string --algo bm --string "announce_peer" -j DROP iptables -A FORWARD -m string --algo bm --string "find_node" -j DROP # CANCELAR DESCARGAS TORRENT Y P2P # A TRAVES DE MODULO apt-get install xtables-addons-common # iptables -m ipp2p --help #------------------------------------------------------- #iptables -A FORWARD -p tcp -m ipp2p --edk -j DROP #iptables -A FORWARD -p udp -m ipp2p --edk -j DROP #iptables -A FORWARD -p tcp -m ipp2p --dc -j DROP #iptables -A FORWARD -p tcp -m ipp2p --kazaa -j DROP #iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP #iptables -A FORWARD -p tcp -m ipp2p --gnu -j DROP #iptables -A FORWARD -p udp -m ipp2p --gnu -j DROP #iptables -A FORWARD -p tcp -m ipp2p --bit -j DROP #iptables -A FORWARD -p udp -m ipp2p --bit -j DROP #iptables -A FORWARD -p tcp -m ipp2p --apple -j DROP #iptables -A FORWARD -p tcp -m ipp2p --winmx -j DROP #iptables -A FORWARD -p tcp -m ipp2p --soul -j DROP #iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP # IPS CON PUERTO 443 HABILITADO (NIVEL DE ACCESO 2) #----------------------------------------------------------------------------- iptables -A FORWARD -s $RED.56 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.59 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.67 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.69 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.73 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.74 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.77 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.79 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.80 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.102 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.104 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.150 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.176 -p tcp --dport 443 -j ACCEPT # USUARIO iptables -A FORWARD -s $RED.201 -p tcp --dport 443 -j ACCEPT # USUARIO #---------------------- # BLOQUEO DE YOUTUBE y TWITTER # PARA BLOQUEO DE YOUTUBE PRIMERO ACEPTO LAS PETICIONES HACIA GOOGLE DEBIDO # A QUE AMBOS DEPENDEN DE LOS MISMOS SERVIDORES(IPS), PERO LA LLAMADA AL # DOMINIO ES INDEPENDIENTE, DERIVADO DE ESTO PERMITO EL ACCESO AL DOMINIO # DE GOOGLE PERO NO AL DOMINIO DE YOUTUBE #----------------------------------------------------------------------------- iptables -A FORWARD -m string --string "google.com" --algo bm -j ACCEPT iptables -A FORWARD -m string --string "youtube.com" --algo bm -j DROP #iptables -A FORWARD -m string --string "dropbox.com" --algo bm -j DROP iptables -A FORWARD -d 199.59.148.0/22 -j DROP # Twitter # NIVEL DE ACCESO 3 YOUTUBE-NO, DESCARGAS-NO, FACEBOOK-SI #----------------------------------------------------------------------------- iptables -A FORWARD -s $RED.49 -p tcp --dport 443 -j ACCEPT # USUARIO # BLOQUEO DE LOS SERVIDORES DE FACEBOOK #----------------------------------------------------------------------------- iptables -A FORWARD -d 65.201.208.24/29 -j DROP iptables -A FORWARD -d 65.204.104.128/28 -j DROP iptables -A FORWARD -d 66.92.180.48/29 -j DROP iptables -A FORWARD -d 67.200.105.48/28 -j DROP iptables -A FORWARD -d 69.63.176.0/30 -j DROP iptables -A FORWARD -d 69.171.224.0/20 -j DROP iptables -A FORWARD -d 74.119.76.0/19 -j DROP iptables -A FORWARD -d 204.25.20.0/22 -j DROP iptables -A FORWARD -d 66.220.144.0/20 -j DROP iptables -A FORWARD -d 173.252.64.0/18 -j DROP # SCHOOLOGY.COM #---------------------------------------------------------- #iptables -A FORWARD -d 151.101.0.0/16 -j ACCEPT #iptables -A FORWARD -m string --string "schoology.com" --algo bm -j ACCEPT #iptables -I INPUT -p tcp --dport 443 -m string --string "schoology.com" --algo bm -j ACCEPT # PERMITIR EL ACCESO A SITIOS PERMITIDOS QUE HACEN USO DEL PUERTO 443 (HTTPS) #------------------------------------------------------------------------------- #iptables -A FORWARD -s 52.2.100.81 -p tcp --dport 443 -j ACCEPT #sce.salud #iptables -A FORWARD -s 52.204.251.50 -p tcp --dport 443 -j ACCEPT #sce.salud #iptables -A FORWARD -s 107.23.6.245 -p tcp --dport 443 -j ACCEPT #sce.salud #iptables -A FORWARD -s 52.21.168.68 -p tcp --dport 443 -j ACCEPT #sce.salud #iptables -A FORWARD -p tcp -m iprange --dst-range 74.125.0.0-74.125.255.255 --dport 443 -j ACCEPT # Google iptables -A FORWARD -d 74.125.0.0/16 -j ACCEPT # Google #iptables -A FORWARD -p tcp -d accounts.google.com --dport 443 -j ACCEPT # Gmail #iptables -A FORWARD -p tcp -m iprange --dst-range 172.194.46.0-173.194.46.255 --dport 443 -j ACCEPT # Gmail #iptables -A FORWARD -p tcp -d mail.google.com --dport 443 -j ACCEPT # Gmail #iptables -A FORWARD -s 187.210.186.221 -p tcp --dport 443 -j ACCEPT #sce.salud #iptables -A FORWARD -s 187.191.75.171 -p tcp --dport 443 -j ACCEPT #sce.salud #iptables -A FORWARD -p tcp -d www.sce.salud.gob.mx --dport 443 -j ACCEPT # #iptables -A FORWARD -s 65.66.206.154 -p tcp --dport 443 -j ACCEPT # Hotmail #iptables -A FORWARD -p tcp -d live.com --dport 443 -j ACCEPT # Hotmail #iptables -A FORWARD -p tcp -d login.live.com --dport 443 -j ACCEPT # Hotmail #iptables -A FORWARD -p tcp -d secure.shared.live.com --dport 443 -j ACCEPT # Hotmail #iptables -A FORWARD -p tcp -d outlook.com --dport 443 -j ACCEPT # Hotmail #iptables -A FORWARD -d 157.54.0.0/15 -j ACCEPT # Outlook.com #iptables -A FORWARD -d 157.56.0.0/14 -j ACCEPT # Outlook.com #iptables -A FORWARD -d 157.60.0.0/16 -j ACCEPT # Outlook.com #iptables -A FORWARD -d 132.245.0.0/16 -j ACCEPT # Outlook.com #iptables -A FORWARD -d 131.253.62.0/23 -j DROP # login.live.com #iptables -A FORWARD -d 131.253.128.0/17 -j DROP # login.live.com #iptables -A FORWARD -d 131.253.61.0/24 -j DROP # login.live.com #iptables -A FORWARD -d 131.253.64.0/18 -j DROP # login.live.com #iptables -A FORWARD -d 65.52.0.0/14 -j DROP # mail.live.com iptables -A FORWARD -d 189.202.196.50 -j ACCEPT iptables -A FORWARD -d 189.203.200.235 -j ACCEPT # BLOQUEO DE TODOS LOS PUERTOS #------------------------------------------------------------------------------- #iptables -A INPUT -j DROP #iptables -A OUTPUT -j DROP #iptables -A FORWARD -j LOG #iptables -A FORWARD -p tcp --dport 443 -j DROP # HTTPS
La línea que me llama la atención es esta:
# BLOQUEO DE YOUTUBE y TWITTER # PARA BLOQUEO DE YOUTUBE PRIMERO ACEPTO LAS PETICIONES HACIA GOOGLE DEBIDO # A QUE AMBOS DEPENDEN DE LOS MISMOS SERVIDORES(IPS), PERO LA LLAMADA AL # DOMINIO ES INDEPENDIENTE, DERIVADO DE ESTO PERMITO EL ACCESO AL DOMINIO # DE GOOGLE PERO NO AL DOMINIO DE YOUTUBE #----------------------------------------------------------------------------- iptables -A FORWARD -m string --string "google.com" --algo bm -j ACCEPT iptables -A FORWARD -m string --string "youtube.com" --algo bm -j DROP #iptables -A FORWARD -m string --string "dropbox.com" --algo bm -j DROP iptables -A FORWARD -d 199.59.148.0/22 -j DROP # Twitter
Qué dicen?
Saludos -
Alguien tiene una idea? ???
-
Yo no :(
-
https://forum.pfsense.org/index.php?topic=129344.msg712805#msg712805
-
Hola
La clave en estas reglas:
iptables -A FORWARD -m string –string "google.com" --algo bm -j ACCEPT
iptables -A FORWARD -m string --string "youtube.com" --algo bm -j DROPEs que por defecto como todo firewall, primero el acepta a google y luego bloquea a youtube.
Ahora bien, el -m de iptables, es para la carga de modulo o para match de regla, en tu caso debe hacer match en la cabecera tcp/ip con el string que le estas pasando. (algo que solo se puede ver a nivel de sniffer, ej: tcpdum)
Ahora, iptables a Linux como pf a FreeBSD, son idénticos en cuanto a que son firewall a nivel de kernel (corrijame si me equivoco).
Lo mas probable es que se pueda hacer en PF (Packet Filter) , ahora que se pueda hacer en Pfsense como frontend Web? habrá que verificar.
Ahora, como decimos en mi país hacer filtrado web a punta de Iptables puro, es un "FUME".
Aquí es donde yo aplico el dicho: Zapatero a su Zapato, es decir:
Dejemos lo que es Firewall para filtrado de IP, Puertos.... etc.
Queremos bloquear paginas de navegación? Usemos Proxy.
Saludos.
-
Hola
La clave en estas reglas…
Muchas gracias por responder, buscaré información al respecto.
Lo mismo pienso sobre firewall y proxy. De hecho tenía configurado squid declarado (no transparente) + squidguard y todo excelente. El problema es que tengo celulares en la oficina y aplicaciones de celular como twitter, facebook que para el departamento de comunicación social deben estar libres tanto en pc como en celulares, me causaron problemas. Me pidieron cambiar la configuración a modo transparente como tenían el servidor que les comentaba era debian + squid + iptables.
Ahora no puedo filtrar las páginas seguras para hacer mis grupos y que no abusen del ancho de banda que tenemos disponible. Ahora el problema es que todas las páginas si no la mayoría realizan conexiones seguras SSL y eso es un problema.
-
Hola
La clave en estas reglas…
Muchas gracias por responder, buscaré información al respecto.
Lo mismo pienso sobre firewall y proxy. De hecho tenía configurado squid declarado (no transparente) + squidguard y todo excelente. El problema es que tengo celulares en la oficina y aplicaciones de celular como twitter, facebook que para el departamento de comunicación social deben estar libres tanto en pc como en celulares, me causaron problemas. Me pidieron cambiar la configuración a modo transparente como tenían el servidor que les comentaba era debian + squid + iptables.
Ahora no puedo filtrar las páginas seguras para hacer mis grupos y que no abusen del ancho de banda que tenemos disponible. Ahora el problema es que todas las páginas si no la mayoría realizan conexiones seguras SSL y eso es un problema.
Con squid puede utilizarlo en modo transparente lo que es http y https, y con las acl puede indicar que equipos pueden tener acceso a twiter y que equipos no
-
Hola
La clave en estas reglas:
iptables -A FORWARD -m string –string "google.com" --algo bm -j ACCEPT
iptables -A FORWARD -m string --string "youtube.com" --algo bm -j DROPEs que por defecto como todo firewall, primero el acepta a google y luego bloquea a youtube.
Ahora bien, el -m de iptables, es para la carga de modulo o para match de regla, en tu caso debe hacer match en la cabecera tcp/ip con el string que le estas pasando. (algo que solo se puede ver a nivel de sniffer, ej: tcpdum)
Ahora, iptables a Linux como pf a FreeBSD, son idénticos en cuanto a que son firewall a nivel de kernel (corrijame si me equivoco).
Lo mas probable es que se pueda hacer en PF (Packet Filter) , ahora que se pueda hacer en Pfsense como frontend Web? habrá que verificar.
Ahora, como decimos en mi país hacer filtrado web a punta de Iptables puro, es un "FUME".
Aquí es donde yo aplico el dicho: Zapatero a su Zapato, es decir:
Dejemos lo que es Firewall para filtrado de IP, Puertos.... etc.
Queremos bloquear paginas de navegación comprar Spedra generico, Spedra precio en farmacias en pagina web? Usemos Proxy.
Saludos.
¿Hay alguna relación en qué sistema operativo?