Posteado por:

Co-founder and Chief Executive Officer of Macination!
Edgardo
*
Administrador
Masculino

3343 Posts
2006 Comentarios
23116 Puntos

Cómo bloquear páginas web
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.


Fuente:
Para poder ver los links necesitas estar Registrado. O si ya eres usuario Ingresa!



Descarga:
Para poder ver los links necesitas estar Registrado. O si ya eres usuario Ingresa!



 

Información del Post
 566 Visitas2 Favoritos 10 Puntos
Creado el: 31 de Octubre, 2011. 08:51:04
Categoría: Tutoriales
Agregar a:
0 Comentarios
Este post no tiene comentarios.

Para poder comentar necesitas estar Registrado. O si ya eres usuario Ingresa!

ir arriba

© 2009 - 2012 Macination! | Protocolo | Contacto | Mapa del Sitio | Términos y condiciones | Smf | Spirate