Eu tenho um arquivo em meu sistema Linux chamado ".fetchmailrc" e é usado para configurar o endereço de e-mail do qual o fetchmail receberá os e-mails. Portanto, tenho que digitar minha senha e endereço de e-mail em texto simples.
Esta é a aparência do arquivo .fetchmailrc:
set daemon 1
set logfile /home/user/.fetchmail.log
set no bouncemail
poll pop.gmail.com proto POP3 auth password no dns user "MY_EMAIL" password "MY_PASSWORD" is user keep ssl
mda "/usr/bin/procmail -d %T"
Acredito que deve haver uma maneira melhor de fazer isso, pois se um hacker obtiver acesso ao meu servidor, ele poderá facilmente ler o arquivo e obter minhas credenciais.
Ouvi dizer que em sistemas Linux existe PAM (Pluggable Authentication Modules) mas não sei se isso está relacionado ao que estou tentando fazer.
Responder1
Não importa como você armazena suas senhas, ao executar um programa que não solicita suas senhas, o programa precisa descriptografar a senha armazenada com as informações disponíveis no servidor. Um “hacker” que obtém acesso ao seu servidor pode usar todas as informações armazenadas no servidor. Assim, ele também pode descriptografar a senha da mesma forma que o programa a descriptografa.
Se o esquema que você usa para criptografar e armazenar sua senha for um pouco mais complicado, o “hacker” pode demorar um pouco mais.
Portanto, não há como fazer o que você deseja: não importa como você armazene sua senha, você não pode torná-la "segura para hackers". O hacker só precisa fazer tudo o que o programa faz (ou talvez apenas executar o programa e detectar o tráfego da rede).
Os módulos PAM não têm nada a ver com isso. Eles não servem para armazenar senhas, mas fornecem maneiras de configurar métodos de autenticação para serviços Linux existentes. Um programa que deseje usar o PAM deve ser escrito para ele.
Responder2
Use o serviço de retenção de chave do kernel
Se você está preocupado com a possibilidade de alguém obter acesso root repetido ao seu sistema, não há praticamente nada que você possa fazer depois disso. (Mas isso é um pesadelo, siga as práticas recomendadas e mantenha bons backups).
No entanto, se tudo ainda estiver seguro, você poderá fazer muito melhor do que deixar uma senha em um arquivo de texto simples (qualquer pessoa que encontrar a unidade do sistema em execução ou desligada poderá lê-la). Faça coisas como:
- Criptografe sua casa, para que o arquivo de texto (em $HOME) seja criptografado pelo menos quando você não estiver logado.
- Criptografe toda a sua unidade, semelhante ao acima.
- Não guarde a senha em um arquivo, digite-a apenas quando necessário
- Caso tenha que armazenar senhas digitadas, digite-as no login e coloque-as:
- em uma variável (na memória RAM, embora eles possam pousar em troca)
- noserviço de retenção de chaves do kernel(chaveiro na memória RAM, com mais segurança). Verhttps://www.kernel.org/doc/Documentation/security/keys.txte
man keyctl
talvezman keyrings
alguns exemplos práticos e notas de Anthony Thyssen