Я нашел этот удобный сценарий в Интернете и хотел бы изменить его, чтобы заблокировать только доступ по 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/