WebSqusr: Control de Acceso con Squid: Diferenzas entre revisións
(Nova páxina: "== 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 DI...") |
|||
Liña 35: | Liña 35: | ||
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: |
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: |
||
<code lang='text'> |
|||
<c> |
|||
[Nome do Horario] |
[Nome do Horario] |
||
cor-hh:mm-hh:mm |
cor-hh:mm-hh:mm |
||
Liña 44: | Liña 44: | ||
cor-hh:mm-hh:mm |
cor-hh:mm-hh:mm |
||
... |
... |
||
</ |
</code> |
||
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. |
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. |
||
Revisión como estaba o 26 de xuño de 2014 ás 08:20
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: <c> [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 ... </c> 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
Lista de Correo
Podes suscribirte a lista de correo de websqusr para solucionar dúbidas, reportar erros ou solicitar novas características.