Я уже заблокировал вход в систему как root с помощью ssh, поэтому я знаю, что любая попытка сделать это злонамеренна. Я знаю, что у них ничего не получится (sshd этого не допустит), но, тем не менее, я хотел бы немедленно заблокировать данный IP-адрес. Как мне это сделать?
Я использую Gentoo Linux, и у меня уже работает fail2ban. Я не хочу банить всех за одну неудачную попытку регистрации, поэтому просто установить для попытки fail2ban значение 1 не вариант. Root - единственная учетная запись, на которую я бы хотел применить этот немедленный запрет.
Я устанавливаю два разных правила Fail2Ban:
Если они попробуют ввести неверное имя пользователя, их заблокируют с первой попытки навсегда. У меня не так много людей, и никого из них никогда не забанили таким образом; но это может быть проблемой поддержки, если у вас много людей, входящих в систему. В моих системах root не является допустимым входом по ssh.
Я использую систему FreeBSD, поэтому вам, возможно, придется немного изменить это правило. Создайте файл ssh-invaliduser.local в каталоге filter.d:
failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$
Установите параметры этого правила, как обычно, в jail.local
файл.
Второе правило блокирует попытки 10 раз ошибочного пароля в течение 10 минут. При средней скорости 1 пароль в минуту взламывать никто не собирается.
Если вы используете стандартный вывод журнала sshd и в вашей системе работает оболочка tcp tcpdпопробуйте следующее:
Сначала добавьте эту строку в /etc/hosts.deny:
sshd: /tmp/root_ban.list
Затем запланируйте cron для запуска следующей команды:
awk '/invalid user root from/{print $13}' /var/log/ssh_auth.log | sort -u > /tmp/root_ban.list
Если вывод команды awk не работает, скорректируйте часть условия: неверный пользовательский root из чтобы соответствовать вашим журналам sshd. Вам также может потребоваться изменить номер поля, захваченный awk. В моих журналах ip находится на 13-й позиции (13 долларов США).
И, чтобы не блокировать вас, вы можете добавить доверенные IP-адреса в файл /etc/hosts.allow:
sshd: 123.123.123.123 222.222.222.222