Блокировать доступ по SSH из определенных стран

Я нашел этот удобный скрипт в сети и хотел бы изменить его так, чтобы он блокировал только SSH-доступ, но я ничего не знаю о iptables и боюсь, что я убью свою систему, поскольку у меня нет физического доступа к нему.

http://ipinfodb.com/ip_country_block_iptables.php

Что я должен изменить, чтобы только сбросить порт 22, пожалуйста?

Я знаю, что хакеры могут использовать прокси и т. Д., И это не будет моей единственной безопасностью. Эта причина только для того, чтобы уменьшить количество электронных писем fail2ban, которые я получаю об автоматических атаках из Китая:)

Спасибо Мацей

2 ответа

Вам нужен эквивалент этого в вашем дистрибутиве:

$ apt-cache show xtables-addons-common
Пакет: xtables-addons-common
Description-ru: расширения целей и совпадения для iptables [tools, libs]
 Xtables-addons предоставляет дополнительные модули для iptables, которых нет в
 ядро, и является наследником patch-o-matic.
 Расширения включают новые цели, такие как TEE, TARPIT, CHAOS или такие модули, как
 геоип и аккаунт.

Вы заинтересованы в geoip модуль. Затем добавьте некоторые правила к вашему iptables,

Проверьте 4-й пункт в HOWTO.

Простой пример прохождения правил:

# iptables -A INPUT -m geoip --src-cc A1,A2 -j DROP

Приведенная выше команда добавляет правило в INPUT цепь, которая использует geoip модуль для сопоставления соединений, происходящих из конкретной страны, идентифицируется по коду ISO 3661. В этом случае А1 и А2 представляют:

 A1 => "Anonymous Proxy" ,
 A2 => "Satellite Provider" ,

Эта команда использует отрицание (!) чтобы инвертировать совпадение, в результате чего весь трафик, исходящий не из указанной страны (в данном случае CA), будет отброшен:

# iptables -A INPUT -m geoip ! --src-cc CA -j DROP

В последнем примере показано, как создать собственную цепочку для анализа трафика на ваш sshd сервер:

# iptables -N SSH_GEOIP
# iptables -A SSH_GEOIP -m geoip --src-cc CA
# iptables -A SSH_GEOIP -m geoip --src-cc DE
# iptables -A SSH_GEOIP -m geoip --src-cc US
# iptables -A SSH_GEOIP -m geoip --src-cc JP
# iptables -A SSH_GEOIP -m geoip --src-cc FR
# iptables -A SSH_GEOIP -m geoip ! --src-cc CA,DE,US,JP,FR
# iptables -A INPUT -p tcp --dport 22 -j SSH_GEOIP 

В качестве альтернативы вы можете отфильтровать любой ssh-трафик, используя hosts.deny файл, а затем разрешить трафик из выбранных стран, в частности, запросив сценарий оболочки в hosts.allow файл. Смотрите этот учебник: https://www.axllent.org/docs/view/ssh-geoip/

Другие вопросы по тегам