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

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

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

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

 

yum install xtables-addons perl-Text-CSV_XS

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

iptables -m geoip --help

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

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

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
-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

yum install fail2ban
chkconfig fail2ban on
service fail2ban restart

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

Удачи вам

Комментарии  

dimetrius
0 # dimetrius 20.02.2012 19:33
Примеры:
Разрешаем ssh для своей страны (DE) и страны, где будем проводить отпуск(FR)
Цитата:
iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc DE,FR -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Блокируем доступ к фтп-серверу всех с Папуа-Новой Гвинеи(PG)
Цитата:
iptables -A INPUT -p tcp --dport 21 -m geoip --src-cc PG -j DROP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
Устанавливаем отдельно метки для США и остальных, и посылаем каждый тип трафика к его цели
Цитата:
iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc US -d -j MARK --set-mark 1
iptables -A INPUT -p tcp --dport 80 -m geoip ! --src-cc US -d -j MARK --set-mark 2
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий

Защитный код
Обновить