Я только что вошел на сервер GitLab и заметил, что у него было 18,974 неудачных входа с момента последней проверки сервера - почти 5 дней. Я проверил Ip, и похоже, что почти все они были из Китая и пытались получить доступ с помощью SSH и Brute Force. Я начал блокировать некоторые IP-адреса, но потом понял, что это огромная трата времени, и лучшей идеей будет заблокировать всю страну.
Есть ли способ, которым я могу заблокировать ВСЕЙ Китай или любую другую страну с iptables?
Я нашел несколько статей в интернете, но почти все они - скрипты bash. Я новичок в Linux, поэтому я не совсем понимаю все эти сценарии. Я нахожу iptables действительно интересным и хочу узнать об этом больше.
Есть идеи ? Спасибо!
Ответы:
Используя iptables для автоматической идентификации, а затем и блокировки, плохие парни для ssh могут быть сделаны с помощью
recent
модуля. Следующий сегмент должен идти после вашей общейESTABLISHED,RELATED
строки:Теперь, недавняя (последний год или два) проблема с Китаем состоит в том, что они стали очень умными и очень часто, когда они блокируются с одного IP-адреса, они просто переключаются на другой в той же подсети и продолжают. Это может привести к нехватке последних записей таблицы по умолчанию (я думаю, что по умолчанию 200). Я наблюдаю за этим, а затем просматриваю фактический сегмент IP и навсегда блокирую весь сегмент. В моем случае меня не волнует сопутствующий ущерб, т.е. блокировка кого-то невинного
Где в приведенном выше:
Вы можете получить полный список IP-адресов для Китая или любой страны в формате iptables или в другом формате здесь . Однако список удивительно длинный и довольно динамичный. Я сам решил не блокировать весь список.
источник
Китай блок с помощью ipset
Вы не можете вручную добавить несколько тысяч IP-адресов в ваши iptables, и даже делать это автоматически - плохая идея, потому что это может вызвать большую нагрузку на процессор (или я так читал). Вместо этого мы можем использовать ipset, который предназначен для такого рода вещей. ipset обрабатывает большие списки IP-адресов; вы просто создаете список и затем указываете iptables использовать этот список в правиле.
Заметка; Я предполагаю, что все следующее сделано как root. Отрегулируйте соответственно, если ваша система основана на sudo.
Затем я написал небольшой Bash-скрипт для выполнения всей работы, который вы сможете понять из комментариев. Создать файл:
Вот что вы хотите вставить в него:
Сохраните файл. Сделайте его исполняемым:
Это еще ничего не сделало, но через минуту мы запустим скрипт. Во-первых, нам нужно добавить правило в iptables, которое ссылается на этот новый список ipset, который определяет приведенный выше скрипт:
Добавьте следующую строку:
Сохраните файл. Чтобы было ясно, мой полный iptables.firewall.rules теперь выглядит так:
Прямо сейчас, ничего не изменилось с сервером, потому что не было применено никаких новых правил; Для этого запустите скрипт block-china.sh:
Это должно показать некоторый вывод, поскольку он извлекает новый список IP-адресов на китайском языке, а затем, через несколько секунд, он завершит работу и вернет вас обратно в командную строку.
Чтобы проверить, сработало ли это, запустите:
Теперь вы должны увидеть новое правило, блокирующее Китай - результат должен выглядеть следующим образом:
Почти готово! Это работает, и будет продолжать работать над перезагрузкой. Но IP-адреса меняются, и этот список со временем устаревает. Если вы хотите получить и применить обновленный список IP-адресов, вы можете просто снова запустить скрипт block-china.sh.
Мы также можем настроить машину на автоматическое выполнение этого задания cron:
Добавьте такую строку:
Это будет запускать /etc/block-china.sh в 5 утра каждый день. Пользователь, выполняющий сценарий, должен быть пользователем root или иметь права root.
источник
источник
wget http://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
Возможно, вы захотите установить что-то вроде fail2ban, чтобы он блокировал ips, которые пытаются зайти на ваш сервер и перестали работать.
источник
Вы можете использовать geoip-модуль для iptables: https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/
источник
Вы используете IP2Location Firewall List для создания iptables для Китая.
Файл в следующем формате. Запустите его в оболочке, и вы должны заблокировать все китайские IP-адреса.
источник