У меня в системе Linux есть файл, который называется ".fetchmailrc", и он используется для настройки адреса электронной почты, с которого fetchmail будет получать почту. Поэтому мне приходится вводить свой пароль и адрес электронной почты в виде обычного текста.
Вот как выглядит файл .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"
Я считаю, что должен быть лучший способ сделать это, поскольку если хакер получит доступ к моему серверу, он сможет легко прочитать файл и получить мои учетные данные.
Я слышал, что в системах Linux есть PAM (подключаемые модули аутентификации), но не знаю, связано ли это с тем, что я пытаюсь сделать.
решение1
Независимо от того, как вы храните свои пароли, при запуске программы, которая не запрашивает ваши пароли, программа должна расшифровать сохраненный пароль с помощью информации, доступной на сервере. «Хакер», получивший доступ к вашему серверу, может использовать всю информацию, хранящуюся на сервере. Поэтому он также может расшифровать пароль тем же способом, которым его расшифровывает программа.
Если схема, которую вы используете для шифрования и хранения пароля, немного сложнее, «хакеру» может потребоваться немного больше времени.
Так что нет способа сделать то, что вы хотите: как бы вы ни хранили свой пароль, вы не можете сделать его «безопасным для хакера». Хакеру просто нужно сделать то, что делает программа (или, может быть, даже просто запустить программу и пронюхать сетевой трафик).
Модули PAM не имеют к этому никакого отношения. Они не предназначены для хранения паролей, а предоставляют способы настройки методов аутентификации для существующих служб Linux. Для этого должна быть написана программа, желающая использовать PAM.
решение2
Используйте службу хранения ключей ядра
Если вы беспокоитесь о том, что кто-то снова получит доступ к вашей системе с правами root, то после этого вы практически ничего не сможете сделать. (Но это кошмар, следуйте рекомендациям и делайте хорошие резервные копии).
Однако, если все по-прежнему безопасно, то вы могли бы сделать гораздо лучше, чем оставлять пароль в простом текстовом файле (любой, кто найдет ваш работающий или выключенный системный диск, сможет его прочитать). Сделайте что-нибудь вроде:
- Зашифруйте свой дом, чтобы текстовый файл (в $HOME) был зашифрован, по крайней мере, когда вы не вошли в систему.
- Зашифруйте весь диск, как описано выше.
- Не храните пароль в файле, вводите его самостоятельно только при необходимости.
- Если вам необходимо хранить введенные пароли, введите их при входе в систему, а затем поместите их:
- в переменной (в оперативной памяти, хотя они могли бы оказаться в свопе)
- вслужба хранения ключей ядра(брелок в оперативной памяти, более безопасно). Смотретьhttps://www.kernel.org/doc/Documentation/security/keys.txtи
man keyctl
,man keyrings
возможнонекоторые практические примеры и заметки от Энтони Тиссена