WebSqusr: Control de Acceso con Squid

De ASIRodeira

Índice

Descripción do Proxecto

WebSqusr é un interface Web para o control do acceso a internet mediante o proxy Squid que ofrece as seguintes modalidades de control:

  • ACCESO DIARIO
    • Acceso mediante contrasinal indicando a hora de comenzo do acceso e a duración do mesmo.
    • Acceso a un aula determiñada indicando a hora de comenzo do acceso e a duración do mesmo.
  • ACCESO SEMANAL
    • Utilizando un cadro horario da aula e seleccionando as horas desexadas.
    • Indicando manualmente as horas da semana que se quere permitir o acceso para unha aula.

O acceso por contrasinal realízase mediante unha utilidade de autenticación que compara os usuarios e contrasinais facilitados cos contidos nun arquivo de texto plano. Para manipular este arquivo tamén se dispon dos scripts/programas axeitados.

O acceso planificado utiliza o comando at e a facilidade de reconfiguración en quente do squid (squid -k reconfigure) para modificar o ficheiro de configuración squid.conf e incluir os acls que permiten o acceso.

Os accesos semanais tamén modifican o arquivo squid.conf para incluir acls de acceso, pero ó ser accesos permanentes non precisan do at para activalos e desactivalos.

A maior dificultade técnica na implementación estivo no control do acceso simultáneo á modificación/recarga de squid.conf, o que precisou un control mediante bloqueos (locks). Por esta mesma razón non se aconsella a modificación deste arquivo salvo que a WebSqusr non esté funcionando ou se faga mediante as utilidades suministradas con esta aplicación.

Os requisitos hardware son mínimos, precisando únicamente un equipo capaz de executar GNU/Linux ou BSD* con Apache e PHP4.

En canto ó software, é necesario que o usuario/grupo correspondente ó servidor web (www-data en Debian) teña permiso para executar comandos planificados (at), para o que pode ser necesario modificar o ficheiro /etc/at.deny e/ou /etc/at.allow e que o PHP poda executar comandos externos situados fora do árbol web correspondente.

Para o desenvolvemento utilizouse un PC con GNU/Linux Debian Sarge, Apache 1.3, PHP4 e un editor de texto (maiormente vim e gedit).

Modo de Traballo

A instalación modificará o arquivo /etc/squid/squid.conf para incluir o autenticador de password (sqseg.c), e as acl definindo as aulas co seu nome e IP. Tamén inclúe liñas comentadas que habilitan o acceso para esas aulas.

Para poder traballar co interface é necesario que o usuario contrasinal estén dados de alta no arquivo de texto /etc/squid/security/.sqadmins, no formato usuario:password:[Nome completo]:[*]. Os usuarios que teñan o * ó final serán administradores do sistema e poderán cambiar a definición das aulas e outras características da aplicación (en futuras versións, hoxe en día non se usa). Tanto o * do final como o Nome completo son opcionais, pero os dous puntos son obrigatorios.

Cando se da de alta un acceso por password, se inclúe unha nova contrasinal no arquivo de usuarios/contrasinais etc/squid/security/.squsers (as parellas usuario/password presentes neste arquivo sempre terán acceso a internet, de modo que si se quere que alguén teña acceso permanente bastará con incluílo neste arquivo) e unha entrada indicando a planificación para o comando at en /etc/squid/security/.sqpass. O contrasinal se xenera automáticamente a partir do diccionario en /etc/squid/security/.diccionario.

O acceso por aula consiste en rexistrar a planificación para at en /etc/squid/security/.sqpass e quitar o comentario na acl que autoriza o acceso para o aula en /etc/squid/squid.conf. Cando a planificación remate se restaurará o comentario.

A planificación horaria non fai uso de at, se non que simplemente inclúe en /etc/squid/squid.conf o acceso desexado facendo uso das facilidades proporcionadas polo propio squid e rexistrando o mesmo en /etc/squid/security/.scheduler. Para mellor comodidade é posible crear horarios en /etc/squid/conf/horarios.conf coa seguinte sintaxe:

 
[Nome do Horario]
cor-hh:mm-hh:mm
cor-hh:mm-hh:mm
...
[Nome do Horario]
cor-hh:mm-hh:mm
cor-hh:mm-hh:mm
...

A cor, indica a cor da que se verá a liña na pantalla no momento de representar o horario, e pode omitirse si se quere saíndo nese caso co fondo negro. E posible definir tantos horarios como se queira.

Instalación

Esta aplicación foi testada únicamente en Debian Sarge e Debian etch. Leva funcionando sen maiores problemas dous anos baixo un servidor Debian Sarge e uns 120 clientes. Prégase que se avise dos fallos, e que se soliciten novas características

Requisitos e Dependencias

  • Calquer hardware capaz de executar Apache+PHP+Squid
  • GNU/Linux ou *BSD
  • at
  • lockfile-progs
  • Proxy Squid con configuración en /etc/squid
  • Servidor Web con PHP

Configuración

A configuración da aplicación realízase mediante os ficheiros conf/squsr.conf e conf/locations.conf. A partir da versión 2.0 se poden definir horarios para a planificación en conf/horarios.conf

En conf/squsr.conf poñeremos a información necesaria para xerar a entrada para o host virtual do Apache, o camiño para a instalación, o usuario inicial do sistema e a súa password e o que queremos que apareza na barra de título do navegador.

En conf/locations.conf esta a lista de Hosts/Redes que queremos poder controlar.

En conf/horarios.conf (a partir da versión 2.0) se poden definir os horarios para a planificación, como xa indicamos, do seguinte xeito:

 
[Nome do Horario]
cor-hh:mm-hh:mm
cor-hh:mm-hh:mm
...
[Nome do Horario]
cor-hh:mm-hh:mm
cor-hh:mm-hh:mm
...

A cor, indica a cor da que se verá a liña na pantalla no momento de representar o horario, e pode omitirse si se quere saíndo nese caso co fondo negro. E posible definir tantos horarios como se queira.

O ficheiro files/diccionario contén unha lista de palabras que se sortearán para xerar as passwords. O primeiro campo é o número de palabras no diccionario.

O Host Virtual para Apache non se inclúe automáticamente na instalación, é necesario engadilo manualmente.

Versión 1.0.1 Beta e posteriores

A instalación modificará o ficheiro /etc/squid/squid.conf, polo que se recomenda facer unha copia de seguridade antes de proceder á instalación.

Versión 1.0 Beta

A instalación modificará os ficheiros /etc/squid/squid.conf e /etc/init.d/squid, polo que se recomenda facer unha copia de seguridade antes de proceder á instalación. A modificación de /etc/init.d/squid consiste en engadir unha chamada a scripts/reset.sh para eliminar os accesos abertos en caso de un reinicio non axeitado da máquina.

Podes tamén editar o ficheiro header.html para persoalizar a cabeceira da páxina.

Configuración Xeral

Para configurar o sistema, basta con modificar de modo axeitado os ficheiros de configuración antes da instalación. Unha vez instalada a aplicación será posible engadir novos usuarios do sistema (editando /etc/squid/security/.sqadmins) ou poñer unha password para acceder a internet sen usar a interface (editando /etc/squid/security/.squsers).

Proporciónanse ademáis as seguintes utilidades en /etc/squid/security/scripts:

  • newuser : Permite engadir usuarios e contrasinais permanentes con acceso a internet.
  • rmuser  : Permite eliminar os usuarios/contrasinais engadidos con newuser.
  • squidlog: Permite examinar os logs do squid vendo a hora e data de acceso.
  • planifica : Permite planificar/eliminar planificación de horas de acceso para un aula determiñada (a partir da versión 2.0)

Por suposto pódense engadir e borrar usuarios permanentes editando o ficheiro .squsers cun editor de textos, sin utilizar newuser ou rmuser, pero pode producir problemas si alguén está a utilizar WebSqusr ó mesmo tempo. Do mesmo xeito recoméndase ter moito coidado cando se modifique a man /etc/squid/squid.conf recomendándose parar con anterioridade o servidor web e executar /etc/squid/security/scripts/reset.sh para pechar as sesións activas.

Idiomas

Para traducir o programa basta con facelo co ficheiro Language.php. Nesta versión non están soportados varios idiomas simultáneamente.

Cambio Dinámico da Configuración

É posible cambiar a configuración dos Hosts/Redes a controlar unha vez instalado o programa. Para facelo e necesario modificar o ficheiro /etc/squid/security/conf/locations.conf e posteriormente executar o script sh scripts/reconfigure.sh, dende a carpeta /etc/squid/security. Esto provocará un peche de todas as sesións abertas. Tamén e posible pechar dun golpe todas as sesións abertas co script sh scripts/reset.sh.

Instalación

Para empezar se descomprimirá a aplicación con tar -xvzf WebSqusr-x.x-x.tar.gz, o que creará un directorio WebSqusr no que nos situaremos.

Previamente a instalación é necesario compilar os programas que se atopan no directorio scripts/ mediante a orden make. Unha vez feito esto, e configurados os ficheiros situados no directorio conf/ procederase á instalación mediante sh scripts/install.sh dende o directorio WebSqusr.

Nesta versión do programa, a instalación debe facerse obrigatoriamente en /etc/squid/security.

Posteriormente é necesario configurar un servidor virtual (ou real) no servidor Web. Para elo pode ser necesario engadir ó DNS (ou a /etc/hosts) o nome do servidor virtual. Tamén é necesario que o usuario www-data (o servidor web, en Debian) teña permiso para executar comandos planificados (at), para o que pode ser necesario modificar o ficheiro /etc/at.deny ou /etc/at.allow.

A instalación mediante o paquete Debian, permite a configuración e reconfiguración da aplicación salvo a modificación da configuración do servidor web e os permisos de at.

Desinstalación

Para desinstalar a aplicación basta facer sh scripts/uninstall.sh dende /etc/squid/security.

Si a aplicación se instalou dende o paquete Debian, bastará con dpkg --purge websqusr dende calqueira lugar.

Administración do Sistema

Logs do Sistema

O sistema fai un rexistro das modificacións nos accesos e os erros de autenticación en /etc/squid/log.

Roles

Nun futuro se implementará o rol de Administrador poñendo un * no campo final do usuario no arquivo /etc/squid/security/.sqadmins. Este usuario poderá cambiar dinámicamente a configuración de aulas e IPs para engadir ou eliminar aulas, agregar e eliminar usuarios, etc.

Scripts e Utilidades

  • newuser : Permite engadir usuarios e contrasinais permanentes con acceso a internet.
  • rmuser  : Permite eliminar os usuarios/contrasinais engadidos con newuser.
  • squidlog: Permite examinar os logs do squid vendo a hora e data de acceso.
  • planifica : Permite planificar/eliminar planificación de horas de acceso para un aula determiñada (a partir da versión 2.0)

Administración

A administración do sistema ten que facerse de momento dende a liña de comandos traballando cos distintos arquivos de texto involucrados e os scripts de utilidade mencionados anteriormente. Na versión 2.0 é posible que cada usuario cambie a súa password dende o entorno do programa.

Lista de Cambios

Versión 2.1 Estable - Proximo lanzamento (Espero)

  • NOVIDADE: Dispoñibles paquetes Debian e rpm para Fedora 7/CentOS 5
  • NOVIDADE: Internacionalización. Idiomas dispoñibles galego, español e inglés.
  • NOVIDADE: GUI de configuración da aplicación baseado en GTK+

Versión 2.0.1 Beta - 16/05/2007

  • NOVIDADE: Engadido botón de 'Administrar' que permite que os usuarios podan cambia-la súa password
  • NOVIDADE: Dispoñible paquete Debian

Versión 2.0 Beta - 13/05/2007

  • Correxido Erro: Solución (penso que) definitiva ó erro de recarga de squid.conf
  • NOVIDADE: Engadida planificación de acceso por horario e manual
  • Solucionados alguns erros menores no código

Versión 1.2 Estable - 02/03/2007

  • Correxido Erro: Recarga do Squid mentras se está a modificar squid.conf
  • Correxido Erro: Procesamento da petición unha vez finalizado o tempo de sesión

Versión 1.1 Estable - 15/06/2006: (1 ano funcionando sin grandes problemas)

  • Correxido Erro: Recarga prematura de Squid antes de rematar a modificación de squid.conf

Versión 1.0.5 Beta - 12/01/2006

  • Correxido Erro: Creación de acceso con hora de remate anterior á de comenzo
  • Correxido Erro: Permanencia do acceso si a hora de remate coincide coa hora actual.

Versión 1.0.4 Beta - 01/12/2005

  • Correxido Erro: Agotamento do tempo ó iniciar sesión.

Versión 1.0.3 Beta - 22/11/2005

  • Correxido Erro: Visualización do autor dunha autorización errónea
  • Correxido Erro: Visualización incorrecta de autorizacións de outros administradores

Versión 1.0.2 Beta - 21/11/2005

  • Correxido Erro: Non funciona ben con máis de 9 Aulas.

Versión 1.0.1 Beta - 10/11/2005

  • Eliminada modificación de /etc/init.d/squid. Non é necesario xa que os traballos at se recargan ó arrancar

Versión 1.0 Beta - 04/11/2005

  • Versión Inicial

Actualización dende Versións Anteriores

Os ficheiros de configuración e dos accesos son compatibles entre versións, de xeito que basta con cambiar os ficheiros de programa polos novos (os que están en /etc/squid/security/WebSqusr e os de /etc/squid/security/scripts). Unha excepción é a versión 2.0.1, que inclúe un cambio no formato dos usuarios do sistema (.sqadmins). Agora o formato é Usuario:Password:Nome:*. O * do final indica que o usuario ten rol de administrador, aínda que polo momento o rol non se usa para nada. Si se quere facer o ficheiro existente compatible coa versión 2.0.1 bastará con engadir :: ó final de cada liña (Nome e rol valeiros).

Por Facer

  • Panel de Control: permitira redefinir/modificar aulas, horarios, usuarios/passwords...
  • /etc/init.d/websqusr start/stop (diff/patch)
  • Incluir nos usuarios o Rol de Administrador, con acceso o panel de control.
  • Filtro de Contidos por Usuario/Planificación
  • Mellorar a documentación do programa
  • Integrar instalación co Makefile (make install)
  • Paquete .deb e Instalador Web
  • Posiblemente interacción con iptables para mellorar o control da rede interna
  • Mellorar a documentación desta wiki
  • Dispoñer de traducción ó inglés e español do manual e do programa
  • Control de contidos mediante squidguard

Erros Coñecidos

  • Erro cando finaliza a sesión por finalizar o tempo. Se procesa a petición de todos os xeitos. (Solucionado en 1.2 Estable)
  • Continuan problemas ocasionais na recarga de squid.conf. Para poder arrancar o proxy neste caso é necesrio eliminar o arquivo /var/spool/squid/swap.state, xa que queda con permisos erróneos. (Solucionado en 2.1 Estable).
  • Problemas ocasionais na recarga de squid.conf que fan que se recargue antes de completar a modificación provocando a caída do proxy (Solucionado en 1.1 Estable).
  • Posibilidade de que quede o acceso si a hora actual e xusto a de remate do acceso (Solucionado en 1.0.5 Beta).
  • Posibilidade de grabar un acceso con hora de remate anterior á hora de comenzo (Solucionado en 1.0.5 Beta).

Descarga

forxa de mancomun.org

Lista de Correo

Podes suscribirte a lista de correo de websqusr para solucionar dúbidas, reportar erros ou solicitar novas características.

Pantallas de Mostra

Pantalla de Acceso
Pantalla de Acceso
Pantalla Principal
Pantalla Principal
Planificación Manual (v 2.0)
Planificación Manual (v 2.0)
Planificación Horaria (v 2.0)
Planificación Horaria (v 2.0)
Ferramentas persoais