Muitas distribuições do
Linux chegam com autenticação de usuários que não são adequadamente seguras. Esta seção discute como você pode tornar a autenticação de usuários mais segura em seu sistema.
Criando o arquivo de configuração /etc/pam.d/other
Como já sabemos, todos os arquivos do diretório
/etc/pam.d/ possuem configurações para um serviço em particular. Porém, existem serviços que não possuem arquivos de configuração no diretório
/etc/pam.d/. Por isso, criaremos um arquivo que terá todas as configurações para estes serviços. Por exemplo, se o serviço "xyz" fizer uma tentativa de autenticação, o PAM olharia para o arquivo
/etc/pam.d/xyz, porém, ele não acha um arquivo "xyz", o PAM determina que a configuração do serviço possa estar no arquivo
/etc/pam.d/other. Veremos dois tipos de configuração para o arquivo
/etc/pam.d/other, uma para segurança máxima (paranoid) e outra mais simples.
Configuração para segurança máxima (paranoid)
# vi /etc/pam.d/other
auth required pam_deny.so
auth required pam_warn.so
account required pam_deny.so
account required pam_warn.so
password required pam_deny.so
password required pam_warn.so
session required pam_deny.so
session required pam_warn.so
Com esta configuração, sempre que um serviço desconhecido fizer uma tentativa de acesso de todos os quatro tipos de configurações o PAM negará a autenticação através do módulo pam_deny.so e gerará um syslog warning através do módulo pam_warn.so. Esta configuração é muito segura, porém deve-se tomar cuidado para não deletar a configuração de algum serviço no diretório /etc/pam.d/. Imagine se seu arquivo de configuração /etc/pam.d/login fosse deletado, simplesmente você não conseguiria fazer o login.
Vamos a prática, no diretório /etc/pam.d/ renomeie o arquivo de configuração ssh e depois configure o seu arquivo other com a configuração de segurança máxima.
# mv ssh testessh
# vi other
(entre com as configurações acima)
De outra máquina tente acessar a sua máquina usando o serviço ssh, você tentará umas três vezes e não conseguirá acessar o sistema, pois, para o sistema o ssh é um serviço desconhecido. Sacou a jogada? Podemos aumentar a segurança do sistema bloqueando as tentativas de acesso de serviços desconhecidos. Vamos verificar o arquivo de logs:
# tail /var/log/auth.log
Sep 1 12:09:34 debian PAM-warn[4408]: service: ssh [on terminal: NODEVssh]
Sep 1 12:09:34 debian PAM-warn[4408]: user: (uid=0) -> crildo [remote: ?nobody@172.16.10.1]
Sep 1 12:09:34 debian sshd[4408]: Failed password for crildo from 172.16.10.1 port 1028 ssh2
Configuração para o arquivo de segurança simples
# vi /etc/pam.d/other
auth required pam_unix.so
auth required pam_warn.so
account required pam_unix.so
account required pam_warn.so
password required pam_unix.so md5
password required pam_warn.so
session required pam_unix.so
session required pam_warn.so
Esta configuração permite que serviços desconhecidos possam se autenticar através do módulo pam_unix.so, porém ela não permite mudanças de passwords de usuários. Ela também gera um syslog warning através do módulo pam_warn.so. Observe o arquivo de logs:
# tail /var/log/auth.log
Sep 1 13:47:36 debian sshd[5945]: Accepted password for crildo from 172.16.10.1 port 1058 ssh2
Sep 1 13:47:37 debian PAM_unix[5947]: (ssh) session opened for user crildo by (uid=1000)
Sep 1 13:47:37 debian PAM-warn[5947]: service: ssh [on terminal: /dev/pts/3]
Sep 1 13:47:37 debian PAM-warn[5947]: user: (uid=1000) -> crildo [remote: ?nobody@172.16.10.1]
Desabilitando logins de usuários com null passwords
Em muitas distribuições do Linux existem um número de dummy user accounts, ou seja, contas de usuários postiços, usadas para atribuir privilégios para certos tipos de serviços como ftp, webservers e email. Estas contas permitem que seu sistema fique mais seguro, pois, elas limitam os usuários a apenas os privilégios de acesso disponíveis para cada conta de dummy user's. Isso é bom, pois não temos a necessidade de rodar serviços com privilégios de usuário root.
Porém, permitindo o login dessas contas cria-se um risco de segurança, por que elas geralmente usam passwords em branco (null passwords). A opção de configuração que habilita passwords em branco é a nullok que é um module-argument. Temos que remover este argumento de todos os módulos do tipo auth dos serviços que permitem login. Podemos incluir nessa regra também os serviços de rlogin e ssh. Para desabilitar o login desses usuários teremos que editar a seguinte linha no arquivo /etc/pam.d/login:
auth required pam_unix.so nullok
mude para:
auth required pam_unix.so
Desabilitando serviços sem uso
Olhe para o diretório
/etc/pam.d/, provavelmente veremos arquivos de configuração de programas que nem estamos usando. Para desabilitar estes programas e eliminar o acesso indevido através deles, simplesmente renomeie o arquivo de configuração do serviço que não está sendo usado. Lembrem-se que quando renomeamos o arquivo de configuração ssh para testessh, desabilitamos a autenticação do serviço ssh restringindo o acesso de serviços desconhecidos através do arquivo
/etc/pam.d/other.
Ferramentas quebradoras de senhas
Enquanto algumas ferramentas quebradoras de senhas (
password-cracking tools) são usadas para atacar e comprometer um sistema, estas ferramentas também podem ser usadas por um Administrador de Sistemas como ferramentas pró-ativas para aumentar a segurança do seu sistema. A ferramenta mais comumente usada é o
Jonh the Ripper, que pode ser obtida em:
Rode esta ferramenta no seu arquivo de passwords e terá uma surpresa.
Adicionalmente, existe um módulo PAM que utiliza bibliotecas de crack para checar a força dos passwords dos usuários sempre que estes são mudados.
Shadow e MD5 passwords
O sistema de sombreamento "shadow" e a utilização do algoritmo de hash MD5 nos passwords tornam seu sistema muito mais seguro. Durante a instalação de seu sistema lembre-se de instalar o
MD5 e o
shadow passwords. Podemos obter mais informações sobre o MD5 e o shadow passwords no arquivo
Shadow Passwords HOWTO, que pode ser obtido em
http://www.tldp.org.