Блокировать доступ по 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/