Если ваш сценарий может подключаться к любому из этих серверов, любой, у кого есть доступ к сценарию (или привилегированный доступ к компьютеру, на котором запущен сценарий), может подключиться к любому из этих серверов.
Если скрипт должен работать автономно, все ставки отключены. Ответ здесь - нет, в такой среде нет абсолютно безопасного способа хранения паролей . Нет абсолютно безопасного и практичного способа что-либо сделать.
Вместо того, чтобы избегать неизбежного, вы должны сосредоточиться на глубокой защите .
Во-первых, конечно, вы должны адекватно защитить пароли . Обычно это означает хранение их в файле отдельно от вашего скрипта и настройку ограничительных разрешений файловой системы . Это все, что вы можете сделать в этом плане с точки зрения безопасности.
Другие меры, безусловно, могут добавить неизвестность процессу. Шифрование паролей заставит злоумышленника искать ключ дешифрования. Использование некоторого типа защищенного хранилища операционной системы обычно защищает от доступа других пользователей к вашему ключу (поэтому оно не дает никаких преимуществ перед разрешениями файловой системы, кроме того, что является сложным для атаки - и использования). Эти меры задержат атаку, но наверняка не предотвратят ее против решительного злоумышленника.
Теперь давайте на время обработать пароли как общедоступные . Что вы можете сделать, чтобы уменьшить ущерб?
Старое и проверенное решение - ограничить возможности этих учетных данных. В системе UNIX хороший способ сделать это - настроить отдельного пользователя для вашего сценария и ограничить возможности этого пользователя как на обращающемся, так и на доступном сервере. Вы можете ограничить возможности пользователя на уровне SSH , на уровне оболочки или, возможно, с помощью механизма обязательного контроля доступа, такого как SELinux .
Что-то, что вы также можете рассмотреть, это переместить логику скрипта на серверы . Таким образом, вы получаете меньший интерфейс, которым легче управлять, и особенно ...
Монитор . Всегда следите за доступом к серверам. Желательно, чтобы протокол аутентификации и команды выполнялись только для добавления в журнал . Не забудьте, например, следить за изменениями файла скрипта auditd
.
Конечно, многие из этих механизмов бесполезны, если у вас нет контроля над серверами, как кажется из вашего вопроса. Если это так, я бы посоветовал вам связаться с людьми, управляющими серверами, и сообщить им о вашем сценарии и потенциальных проблемах безопасности.