Как заблокировать IP в ssh

Как заблокировать IP в ssh

Очень настойчивый человек пытается постоянно получить (несанкционированный) доступ к моей системе в течение последних нескольких дней... Существует миллиард записей, например /var/log/auth.log:

Jun 21 03:55:15 cloudy sshd[32487]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20  user=root
Jun 21 03:55:16 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:19 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Received disconnect from 116.31.116.20: 11:  [preauth]
Jun 21 03:55:21 cloudy sshd[32487]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20  user=root

Я хотел бы попросить совета, как заблокировать этого человека от потребления ресурсов компьютера, есть ли возможность "жестко заблокировать" IP даже от открытия ssh-соединения? Обратите внимание, я использую Debian 8 в качестве ОС.

решение1

решение2

Вы также можете использоватьiptables

Создайте файл с IP-адресами, которые вы хотите заблокировать.blocked.ips.txt

Теперь создайте и запустите скрипт, содержащий следующее:

blocked=$(egrep -v -E "^#|^$" ./blocked.ips.txt)
for ip in $blocked
do
    iptables -I INPUT -s $ip -p tcp --dport ssh -j DROP
done

Запуск iptables -Lдолжен выдать отброшенные пакеты.

решение3

Подход iptables — самый прямой путь. Эрик Хандрикс предложил его в виде скрипта.

Два «но»: - скрипт придется запускать после каждого перезапуска (если таблицы не резервируются внутренне с помощью iptables). - вызов скрипта в том виде, в котором он есть, дважды или более приведет к дублированию записей.

Попробуйте просто прижать плохого парня с помощью:

iptables -I ВВОД -s ПЛОХОЙ_IP -p tcp --dport ssh -j ОТКАЗ

В большинстве дистрибутивов iptables имеет собственный механизм rules-save-restore. Посмотрите, присутствует ли '/var/lib/iptables/rules-save'. Для вашего дистрибутива он может находиться где-то еще (gentoo здесь).

После добавления каждого ПЛОХОГО IP-адреса попробуйте:

iptables-сохранить > /var/lib/iptables/rules-сохранить

После перезапуска проверьте с помощью «iptables -L», что там...

решение4

На моем сервере (Ubuntu 16.04) я использую UFW (UncomplicatedFireWall), упрощенный слой поверх iptables, который, похоже, является стандартной проблемой на серверах Ubuntu (но должен быть доступен и для других дистрибутивов). Для этих случаев я использую:

ufw insert 1 deny from nnn.nnn.nnn.nnn

UFW также позволяет ограничить количество подключений.

ufw limit ssh/tcp

Обратите внимание, что это также относится к успешным соединениям, поэтому, если вы используете скрипты, использующие несколько команд ssh, вам необходимо отключить это ограничение для вашего IP-адреса, выполнив команду:

ufw insert 1 allow in from nnn.nnn.nnn.nnn

Связанный контент