Я использую OpenWrt на своем роутере и мне это нравится. У меня вопрос, как мне заблокировать все китайские адреса от подключения к брандмауэру через порт 22 в роутере? 99,9999% несанкционированных SSH-соединений приходят оттуда.
/K
Я использую OpenWrt на своем роутере и мне это нравится. У меня вопрос, как мне заблокировать все китайские адреса от подключения к брандмауэру через порт 22 в роутере? 99,9999% несанкционированных SSH-соединений приходят оттуда.
/K
Я не уверен, стоит ли блокировать IP-адреса целой страны, особенно страны с огромным количеством IP-адресов, например, Китая. Это замедлит работу вашего брандмауэра, и все же это не так эффективно. Если вы настаиваете, вот список IP-адресов, принадлежащих Китаю. Лучший способ защитить ваш ssh-сервер -
fail2ban
, который блокирует IP-адрес после нескольких неудачных попыток входа в систему.Вы можете найти этот учебник полезным.
Так же, как вы бы заблокировать кого-либо еще. Конечно, вам нужен список китайских IP-блоков. Вы можете получить их, например, здесь: http://www.nirsoft.net/countryip/cn.html
Затем вам нужно преобразовать его в формат iptables (если в списке уже нет этого формата).
Точная процедура зависит от используемого вами брандмауэра. Но в целом вы создадите новую цепочку ssh и отправите туда все доступы к порту 22. Если у вас есть файл, содержащий адреса в формате iptables (1.2.3.4/24), вы можете использовать команду оболочки
while read network; do
iptables -A ssh -s "$network" -j DROP
done < china-networks.txt
iptables -A ssh -j ACCEPT
Это можно оптимизировать, приняв, что вы убили несколько адресов за пределами Китая, и объединив небольшие сети в более крупные сети, тем самым уменьшив количество проверяемых правил. Это можно сделать из /etc/firewall.user в случае брандмауэра UCI.
Используйте ipset для больших списков IP-адресов для сравнения.
Создать набор:
ipset -N myset iphash
while read network; do
ipset -A myset ${network}
done < china-networks.txt
Отбрасывание трафика:
iptables -A INPUT -m set --set myset src -j DROP