Cómo bloquear páginas web temporalmente en Mac OS X

El otro día alguien me preguntó si había alguna forma de bloquear ciertas páginas web de manera temporal durante el día, para impedir el acceso de ciertos usuarios en una máquina Mac. Casi automáticamente pensé en los controles parentales incluídos en el sistema operativo, pero el problema era un poco más complejo de lo que parecía.

Una vez más, comencé a investigar. Resulta que la mayoría de soluciones que hay en el mercado son del tipo “o todo o nada”, es decir, permiten limitar o permitir el acceso a todas las páginas web en determinados horarios, pero no una solución intermedia: bloquear algunas páginas durante unas horas por ejemplo, que era lo que estaba buscando.

Una vez evaluadas soluciones como K9, los controles parentales de Mac OS X (que tampoco eran una opción porque a quien se le debían bloquear las páginas era un adulto, es decir, había que añadir el componente social al problema) y un producto de Intego, reconocidos fabricantes de productos de seguridad para Mac, me di cuenta que ninguna hacía lo que necesitaba exactamente, por lo que tuve que crear una solución “a medida” que fuera fácil de implementar, no invasiva y sobre todo, no fácilmente desactivable por el usuario.

Qué necesitaba? Fácil: Un mecanismo para bloquear 3 ó 4 páginas web durante algunas horas de lunes a viernes. La primera opción considerada fue utilizar los controles incluidos en algunos routers inalámbricos que permiten hacer precisamente eso: impedir el acceso a ciertas direcciones IP o web estableciendo de acuerdo a un calendario pre-establecido. La descarté porque el acceso en el lugar donde se iba a implementar la medida no contaba con un router de este tipo.

Un ejemplo de la interfaz para programar bloqueos en un router inalámbrico

En segundo lugar, pensé en emplear el viejo método de modificar el archivo hosts, añádiendo o quitando entradas de acuerdo a mis necesidades, pero me encontré con dos problemas: el primero, que no se puede hacer esto dinámicamente, es decir, añadir o quitar entradas “sobre la marcha” y segundo, necesitaba ejecutarlo a determinadas horas.

En Mac OS X existe la opción de programar tareas a través de iCal, pero con el inconveniente de que el programa tiene que estar corriendo para que la tarea ocurra. Descartado, porque el usuario podría apagarlo en cuanto se diera cuenta de lo que estaba ocurriendo.

Retomando el método hosts, pensé en lo siguiente: si tengo dos archivos, uno normal (sin modificaciones) y el otro con las entradas que quiero bloquear, podría conseguirlo. Así pues, hice dos copias del archivo y procedí a cambiarlo para ver que ocurría. El archivo original era este:

Y el modificado quedó así:

Además de las entradas habituales que contenía. Lo que hacen estas nuevas entradas es redirigir a la dirección local (127.0.0.1) ciertos sitios web y/o direcciones IP específicas.

Al reemplazar el archivo hosts (que en Mac OS X 10.6 se encuentra en /private/etc/hosts) por la nueva copia, bloqueaba efectivamente las páginas. Quedaba entonces el ejecutarlo periódicamente.

(Por cierto, para poder sobreescribir el archivo hosts, se necesitan permisos de administrador, o lo que es lo mismo, emplear el comando sudo, que solicita la contraseña de administrador para ejecutar los cambios, lo cual se constituyó en otro problema añadido).

Para evitarme esto, ya que no se puede automatizar (que deje de pedir la contraseña) sin poner en grave riesgo de seguridad al sistema en cuestión, decidí emplear la utilidad cron, vieja conocida en Unix, pero no la del usuario (hay una tabla cron, o crontab, por cada usuario del sistema), sino con la del root o administrador, que en Mac OS X se denomina system.

A partir de la versión 10.5, no existe un archivo crontab para el usuario system, cosa fácilmente solucionable empleando este comando:

sudo touch /etc/crontab

que crea un archivo vacío que podemos emplear.

Para no tener que lidiar con la sintaxis críptica de cron, empleé una simpática utilidad llamada Cronnix, que simplemente es una interfaz gráfica para programar trabajos en cron.

Hay que tener en cuenta que hay que seleccionar el usuario system dentro de la utilidad para modificar la tabla cron correcta, porque de lo contario nuestros trabajos no se ejecutarán como es debido, por problemas de permisos.

Finalmente, después de programar las horas y días en los que quería que se ejecutaran las tareas (haciendo click en “New” y seleccionando los parámetros necesarios, además de darle click a “Save” al terminar), elaboré dos pequeños scripts en bash para copiar el archivo hosts normal y el modificado, y que además vaciaran la caché del DNS después de la copia, de esta manera:

guardando el archivo como copiarhostsnormal.sh

El otro script simplemente copia el archivo contrario y tiene un nombre como copiarhostsmodificado.sh

Es importante tener en cuenta que en cuanto guardamos los parámetros en Cronnix, el sistema los actualiza de inmediato. Podemos incluso probar si el comando no tiene errores haciendo click en la opción “Run Now”, del menú “Task”.

Supongo que este método, con algunas modificaciones pequeñas, servirá también para Linux y Windows si hiciera falta. Si alguien lo prueba en alguno de estos sistemas operativos, me encantaría ver sus impresiones en los comentarios.

Enlace Directo: Cronnix

24 comentarios

  1. Gracias,, creo que tengo un problema parecido, al arranca hoy mi imac me ha pedido permiso remoto a varios archivos lo cual he denegado, además ha desaparecido el fondo de escritorio .
    Me tiene preocupado, dependo del ordenador.
    Así que muy buen post para comenzar la investigación. Gracias.

  2. Amos,

    Una situación extraña esa que comentas. Has probado a desconectar la máquina de la red o a arrancar con otro usuario?

    Si no tienes un usuario adicional configurado, puedes añadirlo en la sección “Cuentas de Usuario” o “Accounts” de las preferencias del sistema. Haz login con el nuevo usuario y observa que ocurre. Se reproduce el comportamiento? Si es así, puede que algún archivo del sistema se haya corrompido. Puedes usar Onyx (Titanium Software) y la utilidad de disco para comprobar si hay algún fallo a nivel lógico o físico. Si no se reproduce, es posible que haya algún problema con tu cuenta de usuario.

    Cuéntanos cómo evoluciona este caso.

    Saludos!

  3. Hola Alvaro. Muy útil tu post.
    te comento mi problema.
    Trabajo en casa con lo cual tengo un Aiport extreme conectado al moden y una red de Mac y con PC.
    Quisiera bloquear el acceso a algunas páginas web de manera fija, pero tanto para las mac como para las PC con lo que se me ocurre que debería ser algo en el Aiport Extreme.
    Este método que vos desctibis sirve sólo para MAc y además hay que hacerlo en cada máquina verdad? o es aplicable a todas incluso la PC. Me podrías aconsejar?

    Muchas Gracias.

  4. Hola Nano,

    Hasta donde sé, los “routers” de Apple no tienen esa funcionalidad. Sin embargo, si tienes un router de tu ISP podrías configurar el AE como bridge y bloquear a través del router que se conecta a Internet las páginas que te interesen, siempre y cuando el firmware que tenga instalado lo permita, tal como lo comento también en este post.

    El método de este artículo está diseñado para Macs, pero podría ser fácilmente extrapolable a PCs también, modificando el archivo Hosts de cada máquina a través de un script (archivo .bat) que se ejecute al arrancar la máquina o con el programador de tareas (Task Scheduler).

    Por último podrías probar con algunos plugins para Firefox (LeechBlock) o Chrome (StayFocusd) para bloquear ciertas páginas web, siempre y cuando uses alguno de estos navegadores. Y si, hay que configurarlos en cada máquina.

    Espero que te sirva. Saludos!

    1. Ne3o sei pq raio decidiram fzr isso, e9 mto mais copmxelo, e eu ja por varias vezes pus-me invisivel e so online para uma pessoa mas ele fica automaticament online para todos essa novidade nao foi la mto bmem consguida entre outras que td o que quero fazer abre a pagina do windows live em vex de fzr td a partir do proprio messenger cm era habitual..e mais acessivel

  5. Buen día!!! Un camarada me estaba preguntando que donde se encutra el archivo hosts en Mac.

    Aquí mencionas donde ahora lo que quiero saber es ¿si para modificar el archivo se abre desde terminal o se puede abrir como un archivo cualquiera y al final me pedira el password?

    De antemano gracias por el articulo y por tu tiempo. Saludos!!!

  6. Para modificar el archivo Hosts hay que abrirlo desde terminal empleando el editor vi, con la orden:

    sudo vi /private/etc/hosts

    Con eso lo podrás editar. Te pedirá la contraseña de administrador del sistema.

    Saludos!

  7. Aunque veo que este post es de hace mucho tiempo, quiero que sepan que fue de mucha ayuda para mi.
    ahora mi pregunta es la siguiente. como hago para que la re dirija a una pagina, ejemplo http://www.wikipedia.com.

  8. Saludos amigo, tengo un tiempo revisando opciones y encontré tu articulo que al parecer se adapta muchísimo a lo que necesito hacer, ya que nuestra empresa sufre mucho por el abuso de redes sociales en horarios de trabajo.

    La cuestión es que no se absolutamente nada de programación y los pasos del articulo bien podrían estar en chino hehehe…

    dentro de lo que sabes, existe algún otro método para lograr bloquear principalmente facebook en cierto horarios.

    Cualquier ayuda será súper apreciada

    Saludos cordiales desde Caracas.

  9. Hola David,

    Qué es exactamente lo que no entiendes? Si sigues las instrucciones paso a paso del artículo, podrás bloquear las páginas que quieras durante el tiempo que necesites. Sin embargo, si buscas una solución empresarial, sería mejor, desde mi punto de vista, configurar un servidor proxy o firewall para la red para impedir el acceso a ciertos sitios web por determinadas personas.

    Si no tienes mucha experiencia, un “appliance” (dispositivo de hardware pre-o semi-configurado) podría ser lo que estás buscando.

    Por último, si no dispones de tiempo o recursos económicos, podrías intentar revisar la documentación de tu router (dispositivo que te da acceso a Internet) para verificar si tiene la opción de bloquear ciertas páginas en determinadas horas. Con eso conseguirías lo que estás buscando.

    Espero haberte orientado en algo.

    Saludos!

  10. Gilberto,

    Para que al visitar una página te redirija a otra, simplemente reemplaza en el archivo hosts la dirección IP inicial por la de la web que quieres visitar. Es decir, en lugar de poner 127.0.0.1, pones la IP de Wikipedia: 91.198.174.232. (Pero cuidado, que wikipedia puede ser más adictiva que Facebook! ;-D)

    Espero que te sirva.

    Saludos!

  11. Hola Alvaro,
    felicitaciones por tu página…
    te quería hacer una consulta, siempre y cuando tengas ganas de perder algo de tiempo contestando.

    EL tema en cuestión es que quiero instalar el adobe mastes suite cs5….según veo en los foros para crackearlo te dicen que hay que modificar el archivo hosts….
    yo lo he realizado pero supongo no lo hice bien ya que veo al abrir alguna aplicacion que igual intenta comunicarse con el sitio de adobe ..puertos 80 y 443…eso gracias a que tengo instalado el little snich…
    buscando en internet dí con tu sitio y veo sabés del tema…
    Una cosa que mencionas es que para modificar el archivo hosts usemos el siguiente comando: sudo vi /private/etc/hosts yo no hice eso…puede ser ese el problema?

    Te comento los pasos que hice:
    terminal, sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
    se abre el editor de texto y copio y pego el listado bajado de internet…(hay varios y no sé cuál es el mas actualizado)
    luego en la terminal, sudo dscacheutil -flushcache
    pero igual sigue como digo intentando comunicarse…?
    Otro archivo que modifiqué fué el hostconfig-orig

    # This file is going away

    AFPSERVER=-NO-
    AUTHSERVER=-NO-
    TIMESYNC=-NO-
    QTSSERVER=-NO-

    y coloqué este hostconfig

    # This file is going away

    AFPSERVER=-NO-
    AUTHSERVER=-NO-
    AUTOMOUNT=-YES-
    NFSLOCKS=-AUTOMATIC-
    NISDOMAIN=-NO-
    TIMESYNC=-YES-
    QTSSERVER=-NO-
    WEBSERVER=-NO-
    SMBSERVER=-NO-
    SNMPSERVER=-NO-

    En fin cualquier ayuda o sugerencia es bien recibida…
    Saludos gracias de nuevo y voy a ver algunas cosas interesantes en tu sitio,
    Atte
    Juan

  12. Hola Juan,

    Creo que lo más fácil, en lugar de complicarte la vida modificando a mano el archivo hosts, es instalar un programa como Little Snitch, que te avisa de las conexiones salientes que efectúa cualquier programa y te permite elegir qué hacer con ellas (permitirlas o bloquearlas), y conseguir un script que hay circulando en Internet para hacer los cambios automáticamente. Si no eres usuario administrador, te pedirá la contraseña del mismo al ejecutarlo. Recuerda hacer una copia de seguridad de los archivos a modificar antes de hacer cualquier cambio por si algo no sale como debiera.

    Recuerda que si te es útil el programa que has “crackeado” y piensas obtener beneficios económicos con él, sería una buena idea comprarlo. Hay que apoyar a los desarrolladores y la gente que vive de esto!

    Espero que te sirva. Saludos!

  13. Alvaro,

    Muchas veces encontramos en la red información muy útil que después de varias horas de arrancarnos los cabellos, alguien se tomó la molestia de resolverlo y postearlo en la red resolviendo así el problema o duda.

    Por eso aprovecho para agradecerte éste post, el cual sin entrar en datos técnicos muy complicados que solo un programador podría entender y sin faltas garrafales de ortografía (muy típicas en internet), solucionas el problema. Muchas gracias.

    Yo pertenezco a la asociación mexicana de videógrafos y estamos trabajando en ayudar y capacitar a la gente y hoy en día cada vez hay más usuarios de MAC, por eso me voy a tomar la libertad de referenciar tu página por que estoy seguro que será una buena fuente de información y además estas cordialmente invitado al foro (lo omití por que no quiero utilizar tu blog para promocionar algo diferente) para que en algún rato que tengas libre (que dudo que tengas muchos) puedas interactuar con la gente que esta ávida de aprender.

    Ya tienes mi correo y la página del foro, muchas gracias nuevamente y estaré pendiente de más de tus post.

    Saludos,

    Javier Del Rio

  14. Hola Javier,

    Me alegra mucho saber que la página te sea útil, ya que ese es su objetivo principal. Y puedes promocionar esta web de la manera que consideres conveniente. Trataré de pasarme por el foro en breve.

    Saludos!

  15. Hola Alvaro,
    Hace poco me encontré con el mismo problema . Quería restringir el acceso al Facebook en el Mac de mi hija hasta una hora al día. Yo si que tengo el router con el Firewall y lo configure debidamente. Imagina, cual era mi sorpresa, cuando vi, que todos los PCs de mi casa (con el Windows) estaban restringidos, excepto Mac de mi hija! Ella tiene su pagina de facebook guardada en favoritos del Safari. Si buscas facebook por Safari – no tienes acceso, pero si vas a favoritos y picas la pagina – se habré sin ningún problema. Ahora estoy buscando , a ver si alguien sabe, por que su Mac hace caso omiso al router? Por que toda la programación del router no sirve para nada?
    Gracias

    1. Olga,

      La solución más efectiva para este tipo de soluciones es añadir entradas en el archivo hosts para restringir páginas, tanto por dominio como por dirección IP. Con esto, no habrá manera de acceder a ellas de ninguna de las dos formas. En este tutorial explico como hacerlo en la sección “Retomando el método…”

      Espero que te sirva.

      Saludos!

  16. hola albaro.!

    la verdad soy nueva en esto de las mac..!! y quisiera saber como puedo bloquear paginas de internet de forma permanente. en l Mac tengo el navegador safari y mozilla firefox.

    Si pudieras ayudarme te lo agradeceria..!!
    ATTE: Nany 🙂

    1. Nany,

      Como explico en un comentario anterior, la manera más efectiva de hacer esto es añadir las páginas que quieres bloquear al archivo hosts, tanto por nombre (www.pagina.com) como por dirección IP (212.24.2.34, por ejemplo). Com esto las podrás bloquear definitivamente y la posibilidad de que este archivo sea modificado es mínima, si no se tienen tanto la contraseña como conocimientos técnicos para hacerlo.

      Saludos!

Los comentarios están cerrados.