Esta semana tive que restringir o acesso ao webmail de uma das empresas em que faço suporte. O Pessoal queria que apenas alguns colaboradores tivessem acesso ao webmail.

O webmail utiliza o protocolo IMAP para acessar as caixas postais e autenticar os usuários, o servidor utilizado é o Courier Imap que possui suporte a autenticação PAM.

O PAM (Pluggable Autentication Module) fornece um biblioteca para autenticar usuários em sistemas linux e outros sabores de *nix. Aplicações desenvolvidas com suporte ao PAM utilizam uma biblioteca de alto nível para realizar rotinas de autenticação é as bibliotecas PAM de baixo nível cuidam da interação com os diversos mecanismos de autenticação existentes (ldap, kerberos, etc…). Desta forma uma aplicação com suporte ao PAM poderá ser utilizada com diferentes mecanismos de autenticação e o programador só precisa se preocupar com as rotinas de alto nível do PAM.

Voltando para o propósito deste texto que é o controle de acesso aos serviços de um servidor, tinha uma lista de 6 usuários que poderiam acessar o webmail.

O PAM possui um módulo chamado listfile.so que permite liberar ou bloquear um serviço baseado em informações obtidas de um arquivo.

O Courier Imap deste servidor está confrigurado com suporte a PAM, então o que tive que fazer foi adicionar uma linha ao /etc/pam.d/imap. No meu caso eu substitui a linha referente a autenticação do usuário (auth) por esta:

auth required pam_listfile.so onerr=fail item=user sense=allow file=/etc/webmail_access

Opções do pam_listfile.so

onerr – Que ação tomar caso alguma coisa errada aconteça. No meu caso o acessa vai falhar (fail) ou pode aceitar (suceed)

item – O que estará listado no arquivo. No meu caso será o nome dos usuários (user) mas pode ser também; tty,rhost,ruser,group,shell

sense – Qual ação tomar. No meu caso permitir (allow), pode ser também negar (deny).

file – Arquivo contendo um item por linha. Deverá ser um arquivo texto comum e não poderá ter permissão de escrita para todos.

Com a linha acima todos os usuários que terão acesso ao Webmail terão os nomes adiconados no arquivo /etc/webmail_access. Para os demais usuários o acesso será negado.

Para obter maiores informações sobre o PAM, veja o link logo abaixo.

http://www.ibm.com/developerworks/br/library/l-pam/index.html

É isso ai, espero que ajude e qualquer dúvida, crítica ou observação deixe um comentário.

Um abraço a todos!