Назад | Перейти на главную страницу

Заблокируйте доступ по SSH из определенных стран

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

http://ipinfodb.com/ip_country_block_iptables.php

Что я должен изменить, чтобы только drop port 22?

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

Спасибо Maciej

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

$ apt-cache show xtables-addons-common
Package: xtables-addons-common
Description-en: Extensions targets and matches for iptables [tools, libs]
 Xtables-addons provides extra modules for iptables not present in the
 kernel, and is the successor of patch-o-matic.
 Extensions includes new targets like TEE, TARPIT, CHAOS, or modules like
 geoip and account.

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

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

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

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

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

 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/