The pfSense Store

Author Topic: Duda reglas firewall pfsense  (Read 381 times)

0 Members and 1 Guest are viewing this topic.

Offline pozolero

  • Full Member
  • ***
  • Posts: 191
  • Karma: +5/-0
    • View Profile
Duda reglas firewall pfsense
« on: April 20, 2017, 11:19:08 am »
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.

Code: [Select]
#! /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:

Code: [Select]
# 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

Offline pozolero

  • Full Member
  • ***
  • Posts: 191
  • Karma: +5/-0
    • View Profile
Re: Duda reglas firewall pfsense
« Reply #1 on: April 21, 2017, 10:04:25 am »
Alguien tiene una idea?  ???

Offline ZAC

  • Hero Member
  • *****
  • Posts: 690
  • Karma: +13/-0
    • View Profile
Re: Duda reglas firewall pfsense
« Reply #2 on: April 21, 2017, 02:50:17 pm »
Yo no :(

Offline ptt

  • Hero Member
  • *****
  • Posts: 2234
  • Karma: +375/-45
    • View Profile

Offline j.sejo1

  • Full Member
  • ***
  • Posts: 190
  • Karma: +24/-2
    • View Profile
Re: Duda reglas firewall pfsense
« Reply #4 on: April 21, 2017, 07:52:58 pm »
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 DROP

Es 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.








Offline pozolero

  • Full Member
  • ***
  • Posts: 191
  • Karma: +5/-0
    • View Profile
Re: Duda reglas firewall pfsense
« Reply #5 on: May 03, 2017, 09:30:33 am »
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.

Offline 😄😄😄

  • Full Member
  • ***
  • Posts: 293
  • Karma: +24/-70
    • View Profile
Re: Duda reglas firewall pfsense
« Reply #6 on: May 03, 2017, 12:57:35 pm »
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