Если у вас ведутся логи неудачных попыток 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