Ранее мы узнали, как мы можем ограничить или разрешить конкретную страну с помощью GeoIP, но в этой статье мы рассмотрим, как мы можем заблокировать большие IP – диапазоны с помощью модуля ipset с IPTables. IPset, это утилита на основе командной строки, которая используется для администрирования базы под названием IP и находиться внутри ядра Linux. Набор IP может хранить IP-адрес, номера портов сети (TCP / UDP), MAC – адрес, имена интерфейсов или их комбинации в пути, что обеспечивает скорость молнии при совмещении записи против набора. Это ассоциативное приложение Iptables для брандмауэра в Linux, который позволяет нам с правилами установок быстро и легко заблокировать набор IP-адреса. Здесь мы увидим, как мы можем использовать ipset модуль с IPTables и как блокировать большие диапазоны IP – адресов на нашей машине в базе Linux.
Прежде всего, мы должны модернизировать пакеты на нашей машине Linux, так чтобы у нас были программные пакеты в актуальном состоянии. Для того, чтобы обновить нашу систему, мы должны убедиться, что мы зашли под sudo или как суперпользователь. Для того, чтобы зайти под sudo, мы выполним следующую команду:
$ sudo -s
После того, как мы зашли, перейдем к обновлению и модернизации нашей системы.
Система на основе Debian
# apt update && apt upgrade
Система на основе Redhat
# yum update
Большинство дистрибутивов Linux, такие как Ubuntu, Debian поставляются с предустановленным ipset. Но некоторые дистрибутивы, как Centos не предустановлены, и мы должны установить на них. Мы можем установить ipset, выполнив следующую команду в зависимости от дистрибутива, который вы используете.
Система на основе Debian
# apt install ipset
система на основе Redhat
# yum install ipset
Теперь, когда мы установили ipset на нашей машине, мы будем двигаться вперед для создания IP-наборов. Здесь мы должны создать ipset, который содержит сетевые подсети, которые мы готовы заблокировать или ограничить. Итак, сначала мы должны получить список подсетей, которые мы готовы добавить в наборы IP. Для того, чтобы получить последние подсети мы будем использовать один из самых популярных сайтов https://www.countryipblocks.net. где мы можем получить списки подсетей на странице https://www.countryipblocks.net/country_selection.php. Здесь мы выбрали несколько сетевых подсетей Китая для тестирования цели.
1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 1.1.0.0/24 1.1.2.0/23 1.10.8.0/23 1.202.0.0/15 5.10.68.240/29 5.10.70.40/30 5.10.72.16/29
Вот пример из подсетей, которые мы будем блокирующими в этой статье, но в реальном мире, мы будем иметь огромное количество подсетей. Таким образом, мы будем использовать любой скрипт/язык программирования и создадим список команд следующим образом.
# ipset create countryblock nethash # ipset add countryblock 1.0.1.0/24 # ipset add countryblock 1.0.2.0/23 # ipset add countryblock 1.0.8.0/21 # ipset add countryblock 1.1.0.0/24 # ipset add countryblock 1.1.2.0/23 # ipset add countryblock 1.10.8.0/23 # ipset add countryblock 1.202.0.0/15 # ipset add countryblock 5.10.68.240/29 # ipset add countryblock 5.10.70.40/30 # ipset add countryblock 5.10.72.16/29
Теперь, когда наши IP-наборы будут готовы, мы применим эти наборы IP, чтобы заблокированные с помощью модуля ipset в IPTables.
# iptables -A INPUT -m set --match-set countryblock src -j DROP
Приведенная выше команда блокирует трафики, происходящие из диапазонов, определенных IP-подсетей в приведенном выше сгенерированном наборе под названием countryblock. Таким образом, все IP-адреса, перечисленные в нем будут заблокированы.
Таким образом, мы можем заблокировать определенные блоки с помощью модуля ipset в IPTables. Мы можем создать IP-наборы разных стран, так что мы можем применять их по мере необходимости. Это своего рода метод весьма эффективен, когда нам нужно блокировать определенный трафик, исходящий из конкретной страны или региона, но и позволяет IP диапазоны, как нам нужно. Есть множество модулей брандмауэра и Iptables для них, но этот довольно прост, быстр и его удобно использовать. И так, если у вас есть какие-либо вопросы, предложения, обратная связь, пожалуйста, напишите их в поле для комментариев ниже.