Как составить сценарий автоматической смены корневого пароля? - PullRequest
0 голосов
/ 08 апреля 2010

В настоящее время наш процесс состоит из входа на каждый сервер * nix и изменения пароля для каждого из них вручную. У меня вопрос, как можно это автоматизировать? Я подумываю о нескольких разных способах сделать это и хотел бы получить от других информацию о том, что они рекомендуют, используют и т. Д.

Одним из способов, о котором я думал, является текстовый файл со списком серверов, которым требуется смена пароля, и сценарий, который запрашивает у пользователя новый пароль, временно сохраняет его в сценарии, а затем подключается удаленно к каждому серверу и запускает команды. Было бы неплохо иметь проверку на доступность сервера или тайм-аут на удаленном соединении. Затем выполните вывод на консоль, чтобы человек, выполняющий сценарий, мог видеть, какие серверы были успешными, а какие - нет.

Я пытался придумать другое полностью автоматизированное решение, но не смог придумать, как надежно сохранить новый пароль. Кроме того, для меня не так уж и сложно взаимодействовать с пользователем и запускать сценарий вручную, поскольку нам нужно было бы делать это только 6 раз в год.

Любые мысли, помощь, идеи были бы весьма уместны.

Ответы [ 2 ]

2 голосов
/ 13 июля 2010
openssl passwd -1 $rootpw

Где $ rootpw содержит строку, которая будет вашим корневым паролем.

Это выведет зашифрованную строку, которую вы можете просто вставить в файл или что-то еще. Я использую это в сценарии, который устанавливает экземпляры виртуального сервера, которые предоставляются из базы данных. Я вычисляю этот хеш перед отправкой по сети, чтобы скрипт, который настраивает сервер, мог просто использовать этот хеш вместо того, чтобы отправлять его в виде простого текста.

Чтобы ответить на ваш вопрос, каждый сервер вычислял бы хэш немного по-разному и приводил бы к другому хешу, но все эти хеш-коды равнялись бы одному и тому же паролю. Вы можете использовать любой из этих хэшей, и они будут функционально эквивалентны при использовании на любом сервере, даже если фактическое содержимое хэша будет другим.

Например, я хэшировал foobar и вот результаты:

rootpw=foobar
openssl passwd -1 $rootpw
$1$6pXamKGD$TKQqON1prArop7DpLOyAk1

openssl passwd -1 $rootpw
$1$4A4Mn16f$P7ap2AqNMRK8m72bG/Bve0

openssl passwd -1 $rootpw
$1$DyhsWEMX$i2wH6JpAqoHNFZ0YOBVHj/

openssl passwd -1 $rootpw
$1$m27FIj5e$LZPxVniAeUoZcuUoNHK8c/

openssl passwd -1 $rootpw
$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0

Каждый из этих хэшей отличается, даже если он вычислен на одном и том же компьютере, но любой из них может использоваться для приравнивания к паролю 'foobar' на любом компьютере.

Так что просто откройте / etc / shadow и вставьте его туда, где вы найдете строку:

root:$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0:14415:0:99999:7:::

В моем скрипте я взрываю его в элементе: 's и update [1], затем объединяю массив обратно в строку и заменяю строку в файле. Вы можете сделать это по-другому, если хотите, особенно если вы знаете старое значение (которое вы можете получить, взорвав его в массив).

Я знаю, что этому вопросу несколько месяцев, так что вы, наверное, догадались, но я выкладываю его на всякий случай, когда любой будущий гуглер придет и найдет его.

0 голосов
/ 08 апреля 2010

Вы должны вычислить любой хэш, который ваши серверы вычисляют на пароле, и отправить пароли в этой защищенной хешированной форме, готовые для ввода в /etc/shadow.

Однако я не знаю, как это сделать на практике.

...