Ранее мы узнали, как мы можем ограничить или разрешить доступ конкретной стране используя GeoIP в этой статье, мы рассмотрим, как мы можем блокировать большие диапазоны IP-адресов, используя ipset-модули с iptables.
IPset – это набор IP-адресов на основе командной строки внутри ядра Linux.
IP-адреса, сети, (TCP / UDP) номера портов, MAC-адреса, имена интерфейсов или их комбинации таким образом, который обеспечивает молниеносную скорость при сопоставлении записи с набором.
Это ассоциативное приложение для брандмауэра iptables Linux, которое позволяет быстро и легко блокировать набор IP-адресов.
Здесь мы рассмотрим, как использовать модули ipset с IP-адресами на нашей машине на базе Linux.
Обновление нашей системы
Прежде всего, нам нужно будет обновить наши пакеты для нашей Linux-машины, чтобы обновить наши пакеты программного обеспечения. Ч
тобы обновить нашу систему, нам нужно убедиться, что мы работаем как пользователь sudo или root.
Чтобы переключиться на доступ к sudo или root, мы выполним следующую команду.
# sudo -s
Когда мы root, мы будем двигаться вперед для обновления нашей системы.
Система на базе Debian
# apt update apt upgrade
Система Redhat
# yum update
Установка IPset
Большинство дистрибутивов Linux, таких как Ubuntu, Debian, поставляются с ipset, предварительно установленным.
В Centos IPset не был предварительно установлен, поэтому нам нужно будет его установить.
Мы можем установить его, выполнив следующую команду в зависимости от используемого вами дистрибутива
Система на базе Debian
# apt install ipset
Система Redhat
# yum install ipset
Создание наборов IP-адресов
Теперь, когда у нас установлен ipset, мы теперь перейдем к созданию наборов IP.
Теперь нам нужно создать ipset, который содержит сетевые подсети, которые мы хотим заблокировать или ограничить.
Итак, сначала нам нужно получить список сетевых подсетей, которые мы хотим добавить в ip-пакеты.
На сайте Country IP Blocks, и мы можем получить списки подсетей со страницы выбора страны.
Здесь мы выбрали несколько подсетей Китая для целей тестирования.
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-пакеты готовы, мы теперь применим эти ip-блоки для блокировки с помощью ipset-модуля с iptables.
# iptables -A INPUT -m set --match-set countryblock src -j DROP
Вышеупомянутая команда блокирует трафик, исходящий из диапазонов ip, определенных подсетей в вышеописанном сгенерированном наборе, называемом countryblock.
Таким образом, все перечисленные там IP-адреса будут заблокированы.
Постоянное применение правил
Если мы готовы проверить наши конфигурации и правила, мы, возможно, захотим сделать изменения постоянными.
Для этого нам нужно будет сделать следующие утверждения относительно нашего контроллера брандмауэра.
В системе на базе Debian
# ipset save> /etc/ipset.up.rules # iptables-save> /etc/iptables/rules.v4
Следующие строки добавляются в следующие строки в /etc/rc.local.
ipset restore < /etc/ipset.up.rules iptables-restore < /etc/iptables/rules.v4
В системе RHEL
# ipset save> /etc/ipset.up.rules # iptables-save> / etc / sysconfig / iptables
Как только мы сохраним правила как ipset, так и iptables, мы теперь получим то же, что и для Debian.
Мы просто добавим следующие команды в файл /etc/rc.local.
ipset restore < /etc/ipset.up.rules iptables-restore < /etc/sysconfig/iptables
Таким образом, мы можем блокировать определенные наборы ip-адрессов, используя ipset модули с iptables. Мы можем создавать наборы разных стран, чтобы мы могли применять их в соответствии с потребностями.
Эти методы очень эффективны, когда нам нужен подобный функционал.
Для этого есть много брандмауэров и модулей iptables, но это довольно легко, быстро и удобно использовать.