При покупке нового VPS сервера поставил перед собой задачи большей защищённости SSH.
Конечно можно перенести SSH на другой порт, в следствии чего количество попыток взлома очень сильно падает, но это не мой вариант.

Что будем делать: установим базу GeoIP, привяжем её к iptables, разрешим доступ к SSH только из нужной нам страны (UA), даже для Украины повесим fail2ban, для желающих попробовать свои возможности во взломах SSH с Украины.

Зачем эти сложности, ведь можно только моему IP разрешить доступ? Всё дело в том что замечена следующая ситуация, как только уезжаешь из дома к кому-то в гости, сразу же происходит что-то не адекватное с сервером, нужно зайти по SSH и всё исправить. Но если мы разрешим доступ только для домашнего IP, то с гостей уже не зайдём. Было решено разрешить доступ только украинским IP адресам, чтоб не волноваться.

Приступим же…

1
yum install xtables-addons perl-Text-CSV_XS

Этим мы установили модуль для iptables. Теперь проверим подгрузился ли он…

1
iptables -m geoip --help

Внизу текста должны увидеть:

1
2
3
4
5
6
7
geoip match options:
[!] --src-cc, --source-country country[,country...]
 Match packet coming from (one of) the specified country(ies)
[!] --dst-cc, --destination-country country[,country...]
 Match packet going to (one of) the specified country(ies)

NOTE: The country is inputed by its ISO3166 code.

Этого нам и надо было добиться. Создадим папку mkdir -p /usr/share/xt_geoip/

перейдём в папку со скриптами, скачаем и подготовим базу GeoIP

1
2
3
cd /usr/share/doc/xtables-addons-1.41/geoip/ 
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv

скопируем подготовленные файлы в нужное место cp -r {BE,LE} /usr/share/xt_geoip/

Добавим правило в iptables vim /etc/sysconfig/iptables

1
2
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m geoip --src-cc UA -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j DROP

# service iptables restart

Если всё сделано правильно, то в SSH вас должно пускать только с Украины. Вторая часть сводится к установке fail2ban

1
2
3
yum install fail2ban
chkconfig fail2ban on
service fail2ban restart

Все настройки fail2ban можно найти по пути /etc/fail2ban/jail.conf Удачи вам