Os módulos do PAM proporcionam a necessária restrição de acesso aos vários catálogos de compromissos agendados.
Editamos o arquivo de configuração do apache (/etc/apache2/sites-enabled/000-default) para que suporte autenticação via módulos do PAM no diretório a ser protegido.
Criamos um grupo no qual incluiremos os usuários com permissão de acesso à agenda:
# groupadd agenda
# vi /etc/group
agenda:x:1012:teste2,teste3,araujo_silva
Acrescentamos a conta do usuário do servidor web no grupo shadow, dando acesso à leitura das senhas dos usuários cadastrados:
# adduser www-data shadow
Modificamos a configuração do diretório dos scripts cgi e realizamos os testes correspondentes com o módulo PAM:
# /etc/apache2/sites-enabled/default
<Directory /var/www/apache2-default/cgi-bin>
Options ExecCGI
AllowOverride None
Orderallow,deny
allow from all
RedirectMatch ^/$ /apache2-default/
AuthPAM_Enabled On
AuthType Basic
AuthUserFile shadow
AuthName "RESTRITO"
require group agenda
</Directory>
# /etc/init.d/apache2 restart
O teste do controle de acesso deve ser feito em função do parâmetro "require", no diretório estabelecido para as aplicações que utilizam CGI. Esse parâmetro pode adquirir três valores:
- "require user teste2", que dá acesso somente ao usuário teste2;
- "require valid user", que dá acesso aos usuários válidos para o sistema onde se encontra o servidor web e de acordo com a configuração do arquivo correspondente (/etc/pam.d/apache2);
- "require group agenda", que dá acesso aos usuários cadastrados no grupo agenda, exclusivamente.
Os retornos de erro podem ser acompanhados pelos logs específicos (/var/log/apache2/error.log). Devemos lê-los a cada tentativa de acesso:
# tail /var/log/apache2/error.log
user teste5: authentication failure for "/cgi-bin/wcal/wcal.pl": Password Mismatch
user teste6 no found: /cgi-bin/wcal/wcal.pl
GROUP: teste not in require group(s).
# tail /var/log/apache2/access.log
::1 - teste3 [21/Oct/2008:13:15:59 -0300] "GET /cgi-bin/wcal/wcal.pl HTTP/1.1" 200
2255 "http://localhost/" "Mozilla/5.0 (compatible; Konqueror/3.5;
Linux) KHTML/3.5.5
(like Gecko) (Debian)"
Os testes de restrição de acesso poderão ser realizados com o pamtester a fim de avaliar a conformidade com os parâmetros escolhidos:
# pamtester apache2 teste3 authenticate
Password: xxxxxx
pamtester: successfull authenticated
# pamtester apache2 teste authenticate
Password: xxxxxx
pamtester: User not known to the underlying authentication module
Lembramos que a proteção do ambiente onde se trabalha com os scripts cgi não interfere na transferência de senhas através da rede. É importante que se instale o suporte a ssl ou a tls.
Abraços e boa sorte!