Bloquear facebook con IPCop + iptables

Se que bloquear facebook no me hace el administrador de redes más popular, pero yo solo soy la mano ejecutora, no el que dicta la sentencia.

Bloquear facebook no es sencillo, algunos usan la estrategia de squid, otros usando iptables, creo que lo mejor es usar varias estrategias.

Bloqueo mediante el proxy (squidGuard).

El bloqueo de proxy se logra usando el addon URL Filter, en la configuración del addon marque varias categorías, incluyendo socialnet.

categoría socialnet en URL Filter

Con esto será más que suficiente para bloquear el dominio de facebook y disuadir a algunos usuarios.

Mensaje que muestra URL Filter cuando una dirección ha sido bloqueada.

Si la vida fuera sencilla, con esto sería más que suficiente, pero los facebuadictos encuentran la forma de brincarse este bloqueo. Y es que tampoco es muy díficil, con entrar usando el protocolo https es más que suficiente debido a que el proxy no funciona en conexiones seguras. Por eso es necesario poner en acción algunos bloqueos con iptables.

¿Qué dirección IP Bloquear?

Lo primero es averiguar que dirección IP esta usando facebook, para eso use el comando nslookup

nslookup facebook.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: facebook.com
Address: 173.252.110.27

Ahi nos dice que la dirección es la 173.252.110.27, pero como esa no es la única que usa facebook, tendré que bloquear todo un rango de ips.

Modificar el archivo rc.firewall.local

IpCop es un poco sensible en cuanto a las configuraciones personalizadas, si no se hace en el archivo correcto, cualquier modificación que se haga desde la página de administración las eliminará.

Para agregar reglas personalizadas se edita el archivo /etc/rc.d/rc.firewall.local y agregar las líneas de bloqueo con iptables.

La regla es muy sencilla, sólo hay que saber la dirección ip del cliente que se quiere bloquear, ejemplo:

iptables -I FORWARD -s direccion.ip.del.sentenciado -p tcp -d 173.252.110.0/18 -j DROP

Si se fijan usamos la dirección IP que nos da el comando nslookup hasta la tercera cantidad, al final se agrega un cero y la máscara de red /18 para bloquear todo un rango de direcciones ip.

Llegó el momento de agregar esta regla justo después de donde dice ## add your ‘start’ rules here.

#!/bin/sh
# Used for private firewall rules

# See how we were called.
case "$1" in
  start)
        ## add your 'start' rules here
        
    # Los desterrados sociales.
    
    iptables -I FORWARD -s ip.del.sentenciado.1 -p tcp -d 173.252.110.0/18 -j DROP
    iptables -I FORWARD -s ip.del.sentenciado.2 -p tcp -d 173.252.110.0/18 -j DROP    
    iptables -I FORWARD -s ip.del.sentenciado.3 -p tcp -d 173.252.110.0/18 -j DROP        


        ;;
  stop)
        ## add your 'stop' rules here

        ;;
  reload)
        $0 stop
        $0 start
        ## add your 'reload' rules here
        ;;
  *)
        echo "Usage: $0 {start|stop|reload}"
        ;;
esac

Archivo: rc.firewall.local

De esa manera se aplicarán las reglas cada vez que se reinicie IPCop.

El resultado será el siguiente:

El resultado de bloquear facebook con iptables

Este consejo se puede aplicar a una gran variedad de sitios y firewalls basados en iptables, espero que les sea de utilidad.

BOFH Foreveeer !!!!

122 comentarios en «Bloquear facebook con IPCop + iptables»

  1. Hola Cirrus, por asesorarte por este medio no te cobro. Si tengo que meter mano personalmente entonces sí.

    De una vez te digo que no hay método 100% seguro. Al menos yo no lo he encontrado. Siempre hay variantes que hacen que los usuarios entren a facebook. Incluso si les llegas a bloquear la conexión, usan sus celulares con planes de datos propios y eso no lo puedes evitar.

    Otro detalle es que he intentado bloquear youtube y termino bloqueando también a Google. No he encontrado la forma de aislar sólo a uno.

    Saludos 🙂

    Responder
  2. oye mi estimado linuxmanr4 disculpa cuanto me cobrarías por asesorarme para dar acceso a ciertos usuarios facebook o youtube, es decir que todos los usuarios tengan internet pero cierta ips no y de esta forma pueda controlar mas el ancho de banda

    Responder
  3. no, tengo instalado el ipcop 2.1.8 y si efectivamente ya esta instalado, lo que deseo saber como instalo el squidguard con el putty…. para aplicar una configuración, lo que menciones aquí en este post que hiciste: https://linuxmanr4.com/2009/07/25/urlfilter-en-ipcop-acceso-a-usuarios-por-direccion-ip/

    Responder
    • Si ya esta instalado no necesitas instalarlo nuevamente. La página que mencionas era para IPCop 1 y ya no es necesario. Mejor lee el manual y asigna permisos por dirección ip desde la misma página de configuración.

      Responder
  4. Hola que tal mi estimado linuxmanr4 una preg. fuera del tema este, mira tengo problemas para poder instalar el urlfilter….mas no se como instalar el squidquard 1.4 en el ipcop puedes apoyarme? por favor.

    Responder
  5. Oye pudistes bloquear todos eso?, mi duda es a todos aplicastes estas reglas o a ciertos usuarios le bloqueastes estos entretenimientos. como lo hicistes. puedes apoyarme?

    Responder
    • Ciro, En este caso el bloqueo es solo a ciertos usuarios. Aunque te diré que este método lo dejé de usar porque facebook tiene varias direcciones ip. Por eso mejor utilicé las reglas del firewall que ofrece IPCop 2.

      Responder
  6. Que buen aporte Linuxman realmente logre bloquear facebook y youtube cosa que no podias. Aunque ahora esta de moda spotify me puedes ayudar para bloquear!!

    Responder
  7. tengo una pregunta, que he buscado por todos lados, tengo a cargo cierta cantidad de PC, las cuales algunos tienen restringido ciertas paginas a otras no, como puedo bloquear un determinado rango de mac address paginas como facebook y mega ?

    Responder
  8. Hola, buenas tardes, como seria la sintaxis para que una ip si pueda accesar a facebook, tengo un equipo que es de uso de mercadotecnia y lleva el face de la empresa solo a esa ip quiero que tenga acceso al facebook

    Responder
  9. Hola, soy del Brazil, yo use:
    iptables -I FORWARD -p tcp –dport 443 -m string –string ‘facebook’ –algo bm -j DROP

    How open in lunch time???

    Responder
    • iptables -I FORWARD -p tcp –dport 443 -m string –string ‘facebook’ –algo bm -m time –timestart 13:00 –timestop 17:00 -j DROP

      Con esta ya lo puedes dejar abrir a la hora de almuerzo

      Responder
  10. aqui esta el enlace master ….del codigo del ipcop ,
    tambien me gustaria saber si me puedes ayudar a cerrar facebook y youtube
    gracias

    Responder
  11. Hola JBarrón,

    No es necesario reiniciar el servidor para aplicar los cambios.

    Podrías pegar el mensaje de error exacto ?

    Si gustas, puedes pegar el código en paste.linuxmanr4.com y luego pegar aquí el enlace para revisarlo.

    Saludos.

    Responder
  12. hola master yo tengo el ipcop 1.4.21 y pongo las siguientes lineas
    iptables -I FORWARD -s 172.30.11.0/24 -p tcp -d 173.252.110.0/18 -j DROP iptables -I FORWARD -s 172.30.11.0/24 -p tcp -d 173.252.120.0/24 -j DROP
    iptables -I FORWARD -s 172.30.11.0/24 -p tcp -d 31.13.70.0/24 -j DROP

    esto es para bloquear el facebook , pero al iniciar el server ipcop muestra esas lineas con error desde la consola dice que no reconoce el command

    me podrias ayudar

    Responder
  13. este aporte e sirvió para bloquear, solo tenia la duda con el signo -‘- pero igualmente con el signo -«- funciona impecable, no tube ningun problema, sólo quedo con la duda, porque colocaste «- – algo bm» ??? es lo unico que me gustaría saber que me dejó inquietante… saludos!

    Responder
    • Hola Pedretti es un algoritmo de patrones de búsqueda (algoritmo de Boyer-Moore) de ahí las letras BM, creo que también puede ser cambiado por KMP (algoritmo de Knuth-Morris-Pratt ) este ultimo la verdad no lo he probado te dejo un link http://users.dcc.uchile.cl/~bebustos/apuntes/cc3001/BusqTexto/

      Responder
    • Asi como lo comenta Sergio C, cuando buscar por patrones de texto tienes dos opciones, tal y como lo dice el manual de iptables:

      –algo bm|kmp
      Select the pattern matching strategy. (bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)

      En el ejemplo esta usando la estrategia Boyer-Moore.

      Responder
  14. Tengo una red con ipcop, pero no podía bloquear la pagina de facebook, pero gracias a este blog, he logrado conseguir la solución leyendo los comentarios de los que han consultados, por lo que observo el urlfilter no sirve de mucho con las paginas https. Gracias Saludos José Alberto desde Venezuela

    Responder
  15. Hola Linuxman:

    Es un excelente tuto.

    Una consulta, se pueden leer/filtrar conversaciones de facebook con IPCop?

    De antemano gracias.

    Salu2…

    Responder
  16. solo con iptables es posible bloquear facebook (https) o existe algun servidor linux que pueda realizar esa función de bloqueo.de manera rápida. Hago la pregunta ya que eso es facil para uno o 5 cmputadoras pero para un mediana empresa?

    Responder
    • Pues yo no le veo mayor problema, se pueden generar las reglas necesarias con una hoja de cálculo y luego pegarlas en el archivo de configuración.

      Responder
    • Puede ser algo muy similar a bloquear facebook, con el URL filter bloqueas la conexión http y con iptables bloqueas los servidores para evitar una conexión https.

      Responder
  17. Hola Hector, creo que la nueva versión de IPCop es más sencillo, yo nunca lo he hecho porque no tengo esa versión. Pero creo que ya soporta layer 7 (o L7) que hará un filtro por contenido. Busca algo por el estilo.

    Responder
    • Hola Buenas tardes.
      Tengo la versión 2.1.4 y no logro bloquear el facebook https: NO me ha funcionado lo que comenta el Doc. algún otro tip se los agradeceré a todos.
      Saludos..

      Responder
  18. El restart funciona de maravilla DOC!!! Pruebas superadas, auto bloqueos, cambios de ip’s, inalambrico, alambrico, todo SUPERADO!!! De verdad muchisimas gracias, nadie como tu 😉

    Responder
  19. El script rc.firewall se ejecuta durante el arranque, así que todas las modificaciones que hagas se cargarán en el próximo reinicio.

    Claro, a menos que se te olvide guardar el archivo 🙂

    Responder
  20. Ok, gracias doc, de todos modos somos 20 pc con ip fija, entonces no llevara mucho tiempo 😉
    Con respecto de lo de que se reinicie el server que tiene ipcop y se borre todo lo de iptables, es cierto?

    Responder
  21. Tendrías que aplicar reglas a todas las ip’s menos a las que quieres privilegiar.

    Hay otro enfoque, pero es más complicado. Verás aquí le das permisos a todos y luego bloqueas a los que no quieres que tengas acceso a facebook.

    Hay otro plugin para ipcop que se llama Blockout Traffic que hace lo opuesto, primero bloquea todo y luego tu vas asignando grupos de permisos. Es como una especie de firewall para el exterior, es muy útil para asegurar instalaciones, pero también se lleva su tiempo para configurar los grupos y esas cosas. Te lo comento solo como una opción.

    Responder
  22. Despues de semanas estudiando, ERES UN DIOS!!! Muchisimas gracias, imprimi manuales, lei foros, me queme las pestañas pues… Y en ningun lado me decia el «restart»…
    Si no es mucho pedir, bloquear toda la red excepto tales ip’s???
    Saludos

    Responder
  23. Doc. Excelente informacion, he aprendido bastante; pero, como hago lo que mencionas «ejecutar el script rc.firewall.local». He puesto todo lo que ha indicado, pero no se como iniciar los comandos. No puedo reiniciar ipcop 1.4.21 por que dejo sin conexion a toda la red XD Saludos

    Responder
    • Hola Fransois !!!

      Es muy sencillo, primero tienes que habilitar el acceso a ssh de tu servidor IPCop, esta opción esta en el menú Sistema.

      Luego, desde cualquier distribución de linux entras a tu servidor con el comando:

      ssh root@ip.de.tu.servidor -p 222

      Te pedirá la contraseña de root de tu servidor. Si estás usando windows entonces puedes usar el programa PuTTY sólo tienes que configurar la conexión (no se te olvide usar el puerto 222).

      Ya conectado a tu servidor solo tienes que teclear:

      /etc/rc.d/rc.firewall restart
      

      Para aplicar los cambios que has hecho al archivo, y eso es todo. 🙂

      Saludos !!!

      Responder
  24. gracias me sirvio de mucho los comentarios ya logre bloquear el facebook. ahora tengo una duda yo aplique esta regla

    iptables -I FORWARD -s 192.168.10.100 -p tcp -d 31.13.73.0/18 -j DROP

    y funciona a las mil maravillas la ip . 100 abre facebook ahora bien tengo un server dhcp que da rangos de 192.168.10.100 al 150 como puedo hacer para que esas 51 ip en la regla sin tener que hacer 51 reglas para cada ip.. puesto que necesito bloquear youtube, twitter y algunas que otras eso ya representaria hacer mas 200 reglas .. ayuda..

    Responder
    • perdon NO ABRE FACEBOOK.. y este rango de ip lo averigue usando un tracert de es-la.facebook.com, facebook.com y www.facebook.com me di cuenta que por estas ip se conectaban a la red asi que 31.13.73.0/18 fue mi solucion

      Responder
    • Se que es engorroso, pero para este tipo de casos hago una hoja de cálculo en Libreoffice, en donde una celda es la que voy cambiando la dirección IP del cliente, luego arrastro lo demás hasta generar el número de reglas que deseo.. el resto es copiar y pegar.

      Este es un tema que ha habíamos tocado en comentarios anteriores, pero una vez que tienes estructurada la regla, hacer una hoja de cálculo y copiar los resultados no te lleva más de 10 minutos.

      Responder
  25. Pues es que para aplicar las reglas tienes que ejecutar el script rc.firewall.local o reiniciar ipcop ¿Hiciste alguna de las dos cosas?

    Responder
  26. disculpa , pero las unicas reglas que he aplicado son las de tu blog. llendo a la carpeta etc r.d firewall.local copie las dos reglas tal como lo muestra tu paste. luego guarde , limpie mi navegador y sigo saliendo. .. que otras reglas te refieres amigos linux man

    Responder
  27. bueno linux man acabo de probarlo desactive el adv proxy copie las reglas que me diste y sigue saliendo el otro addon que tengo es el calamaris. , he borrado la cache de mi navegador y nada.
    Estoy pensando.

    Responder
  28. Linux man , Lo probare recie he estador recargado de trabajo docto , sobre las ip he averiguado compartiendo con el blog , lo probare la ultima instruccion que me diste doc y te dejo mis comentarios Saludos desde Peru

    Responder
  29. Funciona!!! jaja, gracias de verdad, todos aqui estan locos sin FB, yo tambien había probado la instruccion q publico Linixman pero no consideré que tengo iPCop v2.0.6, por lo tanto la sintaxis de iptables no funcionaba :S, de verdad te agradezco, saludos desde Mexico!!!!

    Responder
  30. ¿Las averiguaste? o sea que las buscaste en google? o te las dio el comando nslookup? además, no me has dicho si has probado los últimos cambios.

    Responder
  31. linuxman , averigue estas ip de facebook te las pasoo doctor.

    31.13.64.1/20
    66.220.144.0/20
    69.63.176.0/20
    69.171.239.12
    69.171.255.12
    204.15.20.0/20
    173.252.100.27
    173.252.110.27
    173.252.112.23
    173.252.112.24

    Saludos

    Responder
  32. cuando hago nslookup facebook.com me bota la siguiente ip 173.252.110.27 y cuando hago nslokup a www.facebook.com me sale la ip 31.13.73.97 …

    Responder
    • una pregunta, aplicaste una regla de iptables para facebook.com y para www.facebook.com ?

      Porque te puede mandar a servidores diferentes…

      Responder
  33. jaja solamente le he instalado su url filter su adv proxy , calamaris lo estoy haciendo funcionar como dns y dhcp este ipcop tiene una ip publica , luego ejecute lo que dice en tu blog spot y y desactive el adv proxy. pero igual sale.

    Responder
  34. De ipcop y podrás navegar, pero ya no tendrás los beneficios de tener un proxy, todas las peticiones de páginas las hará a internet en lugar del proxy local.

    Responder
  35. Tienes toda la razón, pero por alguna razón no lo puedo aplicar en la versión de iptables que tengo instalada actualmente en mi ipCop. Y por el momento no lo pienso actualizar a la versión 2 (si no esta roto, no lo arregles).

    Responder
  36. Hola Linuxman gran aportación lo del face.. En mi trabajo años atrás, el principal distractor en el trabajo era el messenger, el buscaminas, solitario etc. Hoy en día es básico controlar algunas redes sociales, ya que se han vuelto un distractor mayor; secretarias, jefes de oficinas, jefes de depto en lugar de trabajar sus 8hrs, trabajan 7 o menos tiempo por estar posteando o revisando su faceee… 😀 yo encontré esta forma de bloqueo esperando que sea de utilidad para ti y los amigos que seguidores tu página
    Saludos

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

    Con esta línea dejas libre todos los accesos https, y el uno que marca page not found es el Facebook
    Para twitter :

    iptables -I FORWARD -p tcp --dport 443 -m string --string 'twitter' --algo bm -j DROP
    
    Responder
  37. bueno no era una mezcla sino que el ipcop virtual que esta dentro de mi pc…solo es una virtualizacion que stoy realizando y probando el ipcop en una maquina virtual .. para probar bloqqueando el facebook..
    ..

    Responder
  38. Pues por algún lado se esta colando, igual y puedes desactivar todos los proxys (supongo que tienes un proxy transparente).

    Yo tengo la ventaja de que sólo tengo un ipcop y es el que resuelve todo el tráfico. Tu mezcla de equipos es muy rara,

    Responder
  39. ok linux man sabes he estado probando miles de formas y no m bloquean tu crees que lo salta porque el servidor principal no lo esta bloqueando ..???

    Responder
  40. Para que tengas un alcance te comento.. actualmente , mi re local es de clase C : 192.168.1.0, el ipcop tiene los addons como urlfilter, advproxy, calmaris y blackouf traffic 3.0 y su direccion del ipcop 192.168.1.1 ,dentro de esta red mi PC tiene asiganda por dhcp 192.168.1.169 .. en el cual estoy virtualizando con Wmware 2 mquinas virtuales el ipcop y un xp , dentro del ipcop tendo 2 redes .. green y red.. la red tiene la siguiente ip 192.168.1.174 y mi green tiene el segement de .172.16.1.0 .. en este segmento mi ipcop la siguiente direccion ip 172.16.1.254 con sub red 255.255.255.0 y mi xp virtual tiene la siguiente direccion ip 172.16.1.90 la cual he colocado la siguiente regla…..iptables -I FORWARD -s 172.16.1.90/24 tcp -d 173.252.110.0/18 -j DROP

    no estare cometiendo algun error te lo comento para descartar.. ..
    saludos desde ya…

    Responder
    • Pues se me agotaron las ideas 🙂

      Comprobé las opciones por mi mismo y como puedes ver en este screenshot, el bloqueo funciona tanto en una conexión normal (http)

      bloque de facebook http

      Ya que me muestra un error del proxy.

      Y cuando lo intento por una conexión segura (https) simplemente no puede cargar la página porque agota el tiempo de conexión.

      bloqueo de facebook en conexiones seguras https

      Creo que estas cerca, pero no se que esta fallando, ¿No estará cargando facebook por el caché del navegador? …

      Responder
  41. Acabo de aplicarme las reglas, y si no es por el proxy no sale…me marca error de conexión, Vamos que conmigo funcionan.

    Estamos usando la misma versión de ipcop? yo tengo la 1.4.21 ¿Cuál tienes tu?

    Responder
  42. no puedo adjuntar imagen pero tengo log filter habilitado en advance proxy ,tengo dominios bloqueado y urls bloqueados con sus checks activados.. doctor….que puede estar pasando .. doctor..

    Responder
  43. no pues si bloqueo el puerto https me estaria colocando.. la soga al cuello debido a que mis usuarios utilixzan las paginas de los bancos… lo que estamos haciendo contigo es bloquear la salida a face denegando la salida en destinos a sus ips cuando hago nslookup ne da esto 173.252.110.27
    Espero tus comentarios amigo. ¡¡

    Responder
  44. mmmmm si comprendes que en realidad estamos bloqueando el rango IP’s de facebook , no el puerto que ocupa https..

    que te dice el comando

    nslookup facebook.com ??

    Responder
  45. es lo que hice primero bloquear………….una sola ip en ves de todo el rango de la red. pero no me funciona alguna otra idea maeestro..¡¡¡

    Responder
  46. Que te parece si primero bloqueas una sola IP una sola para hacer la prueba de la regla y veamos si funciona… ok?

    Si lo hace, entonces ya veremos como hacer los ajustes a todo el rango de ips que quieres.

    Responder
  47. jajajaj que loco..soy…estuver apurado por eso lo coloque sin la p… esta claro en el comentario que puse falta una -p , pero en mi reglas del firewall si coloque jejej

    Responder
    • Mejor pega tus reglas en paste.linuxmanr4.com y comparte el enlace, este sistema de comentarios no sabe como tratar el código.

      Por cierto voy a editar tu comentario anterior 🙂

      Responder
  48. linux man.. yo lo trate de bloquear de esta manera:

    iptables -I FORWARD -s 172.16.1.0/24 tcp -d 173.252.110.0/18 -j DROP
    

    la ip 172.16.1.0./24 es mi red local.. pero igual salta.. que hice mal… podrías darme unos tips..

    Responder
  49. Buenos dias , intereresante , una consulta en la opcion del sentenciado en ves de colocar toda la ip del sentenciado se podria colocar la ip de todo el segmento ?? si es asi oviamente nadie saldra pero si del segmento haya alguien a quien queramos habilitar cual seria la regla..

    Responder
    • Nada pierdes con intentar, supongo que en lugar de un DROP puedes cambiarlo a un ACCEPT

      Primero bloqueas y luego autorizas… luego me cuentas como te fue. 🙂

      Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.