[ это продолжение моего поста на ServerFault :https://serverfault.com/questions/661136/root-accepts-any-password-how-to-change-to-a-real-password]
В старой системе учетная запись root принимала любой пароль, если только он не был пустым. Любой пароль принимался как правильный, так что войти мог кто угодно.
Раньше (более 10 лет назад) это не было проблемой, поскольку система работала за модемом с коммутируемой линией и собственной аутентификацией... но с недавних пор к системе можно получить доступ через публичный IP-адрес.
Удивительно, но до прошлой недели никто не озаботился портом SSH.
Кто-то (китайский IP-адрес) вошел в систему как root, изменил некоторые системные настройки и вышел из системы.
Я восстановил систему из резервной копии и изменил порт SSH так, чтобы к ней больше нельзя было получить доступ через модем ADSL, чтобы дать себе время решить эту проблему.
Проблема, по-видимому, в следующем /etc/pam.d/system-auth
:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok md5
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
Когда я меняюсь
auth sufficient /lib/security/pam_unix.so likeauth nullok
к
auth sufficient /lib/security/pam_unix.so likeauth
то учетная запись root больше не принимает никаких случайных паролей, но она также не принимает мой настроенный пароль
Я попробовал следующее:
- сначала измените пароль root с помощью
passwd
команды. результат: я смог войти с любым паролем - затем удалить
nullok
: я не мог войти ни с каким паролем в новую сессию SSH, даже с паролем, который я только что установил - затем я снова изменил пароль root. Результат: я по-прежнему не мог войти ни с каким паролем в новую сессию SSH.
- затем я вернул
nullok
system-auth: я снова мог войти с любым паролем
Все это время я выполнял редактирование и установку пароля в сеансе SSH, который держал открытым, и проверял результат, открывая новый сеанс SSH.
Я не решился закрыть свой основной сеанс SSH, опасаясь, что не смогу войти снова. Также я не перезагрузил систему, так как это работающая система для светофоров
Я был удивлен, что мне не пришлось вводить старый пароль, а можно было просто ввести новый пароль (2 раза).
После смены пароля я получил ответ Password changed
, но не смог войти через SSH с новым паролем.
Нужно ли мне устанавливать пароль root где-то еще? Или удаление nullok
полностью блокирует учетную запись root через SSH?
Я хочу, root
чтобы можно было войти в систему только с одним определенным паролем и запретить доступ для любого другого пароля.