Как заблокировать атаку по словарю с помощью iptables

Если у вас ведутся логи неудачных попыток SSH-соединений и есть внешний ip-адрес то вы можете заметить сколько всяких нехороших ip-адресов пытаются к вам присоединится подбирая пароль. Это небольшое руководство поможем вам защитится от подобных интернет-вандалов.

Самым простым решением будет изменить стандартный порт SSH с 22 на какой-то другой. Все роботы, сканирующую сеть в поисках шела, как правило, обращаются к 22-ому порту, и изменив его вы избежите 99% атак. Для этого в файле конфигурации sshd (обычно /etc/ssh/sshd_config) нужно прописать Port номер_порта. К тому же, это может быть полезно, если вы захотите попасть на свой компьютер через какого-то странного провайдера или “злого” админа на работе блокирующего “левые” порты. Например, ssh можно повесить на 80-ый порт..

Как заблокировать перебор пароля
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH;
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP
-i eth0 - это сетевой интерфейс, который обычно используется.

Возможно, вам нужно будет изменить его на свой.
–dport22 на номер порта где крутится ваш SSH демон;
–seconds 60 - это период, в течении которого будут считаться подключения;
–hitcount 8 - это количество попыток;

Таким образом этими правилами мы установили ограничение: не более 8 подключений по SSH в минуту. Это сделает неэффективными атаки по словарю, и в тоже время не будет мешать обычным пользователям. Разве не замечательно ? :)

Восстановление после перезагрузки
Что бы правила восстанавливались после перезагрузки нужно выполнять их после запуска сети. Простым и элегантным решением будет делать это автоматически.
Для этого создайте /etc/network/if-up.d/bfa-protection:
#!/bin/bash
[ "${METHOD}" != loopback ] exit 0
/sbin/iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
/sbin/iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 8 –rttl –name SSH -j
DROPРазумеется, не забудьте изменить параметры, если это необходимо.

Сохранив этот файл сделайте его исполняемым:
chmod u x /etc/network/if-up.d/bfa_protectionТеперь каждый раз когда интерфейс будет активирован - правила будут установлены.Удаление правил при отключении интерфейса
/etc/network/if-down.d/bfa_protection :#!/bin/bash
[ "${METHOD}" != loopback ] exit 0
/sbin/iptables -D INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
/sbin/iptables -D INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 8 –rttl –name SSH -j DROPи делаем исполняемым...chmod u x /etc/network/if-down.d/bfa_protection

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net