Приветствую всех!
Хочу сделать так, чтобы при попытке входа рутом с простым паролем по ssh запускался фейковый логин. Вижу один вариант: в sshd_config заводим секцию Match, куда пишем User root и, возможно, адреса (если надо оставить вход из локалки, хотя я даже их не оставляю). В секции разрешаем PasswordAuthentication и PermitRootLogin, указываем в ForcedCommand наш логин.
Но остаётся одна проблема - ssh проверяет реальный пароль рута, а не фейковый, а вот ставить руту пароль я не хочу - во избежании локальных su и прочего. Решил сделать через PAM и pam_exec - добавил в pam-файл для ssh строку:
auth sufficient pam_exec.so debug expose_authtok type=auth /path_to/fake_passwd
fake_passwd вызывается и всегда возвращает 0, т.е. всё должно срабатывать, но в логе вижу такое:
sshd[10247]: pam_exec(sshd:auth): send password to child
sshd[10270]: pam_exec(sshd:auth): Calling /.../fake_passwd ...
sshd[10247]: Failed password for root from 43.229.52.175 port 47425 ssh2
То бишь несмотря на нулевой код возврата аутентификация не проходит. Кто подскажет почему?