На моем VPS, работающем под управлением Debian 7, у меня включен ssh на порту 22 по умолчанию с включенной только аутентификацией с закрытым ключом, все остальные порты фильтруются с помощью iptables. Я часто получаю попытки входа в систему из Китая под поддельными именами пользователей, такими как "plesk" или "r00t", которые отображаются в моем /var/log/auth.log
Единственная проблема заключается в попытках аутентификации, которые не представляют закрытый ключ и пытаются войти в систему под действительным именем пользователя, единственная строка, которая появляется в журналах, гласит
sshd [4364]: соединение закрыто 123.45.67.89 [preauth]
Когда уровень ведения журнала sshd установлен на VERBOSE, печатается дополнительная строка, в которой указывается, что пользователь подключился, и порт, из которого он подключился.
Есть ли способ сделать журнал sshd, что он отключил пользователя, потому что у него не было закрытого ключа?
Вы можете использовать «чит» - в вашем /etc/pam.d/ssh(d) в разделе auth вы можете добавить оператор журнала (pam_log) перед операторами pam_unix или @include common-auth. Если этот оператор попадает, значит, была предпринята попытка аутентификации по паролю.
Ответ на ваш вопрос - нет. По крайней мере, не без героических мер (например, запуска уровня DEBUG и его обработки скриптами), которые намного сложнее, чем некоторые разумные альтернативы. То же самое [preauth]
сообщение об ошибке отсутствует или неверный ключ.
С другой стороны, если они действительно подключатся, в вашем журнале будет явно указано
Jul 7 15:59:38 ws6 sshd[9578]: Accepted password for robohacker...
или
Jul 7 15:59:38 ws6 sshd[9578]: Accepted publickey for robohacker...
Что вы можете сделать с пользой, так это еще больше укрепить вашу конфигурацию. Вам уже потребовался ключ, вы также можете использовать AllowUsers
и AllowGroups
команды для предотвращения подключения кем-либо специально не авторизованным.
Лично я всегда устанавливаю DenyHosts, хотя, похоже, он не имеет последних обновлений. Я слышал, что Fail2Ban тоже хорош
В подробном режиме ваш sshd действительно уже регистрирует инструкцию отключения.
Если вам нужна дополнительная информация, вы также можете использовать окончательный режим ведения журнала DEBUG, но будьте очень осторожны с этим, потому что журналы будут быстро расти без хорошей политики logrotate ;-)
Любая регистрация, которую может выполнять sshd, будет задокументирована в man sshd_config
. Попробуйте выполнить поиск по запросу "log", но я не вижу там ничего особенного - в основном только LogLevel и SyslogFacility, хотя, возможно, MaxAuthTries поможет.