IP-сеты- это хранимые коллекции IP-адресов, сетевых диапазонов, MAC-адресов, номеров портов и имен сетевых интерфейсов.
Инструмент iptables может использовать наборы IP-адресов для более эффективного подбора правил.
Например, допустим, вы хотите отбрасывать трафик, исходящий из одного из нескольких диапазонов IP-адресов, которые, как вы знаете, являются вредоносными.
Вместо того чтобы настраивать правила для каждого диапазона в iptables напрямую, вы можете создать набор IP-адресов и затем ссылаться на него в правиле iptables.
Это делает ваши сеты правил динамичными и, следовательно, более простыми в настройке; всякий раз, когда вам нужно добавить или поменять местами сетевые идентификаторы, обрабатываемые брандмауэром, вы просто меняете набор IP.
Команда ipset позволяет создавать и изменять IP-сеты.
Сначала вам нужно задать имя, способ хранения и тип данных для вашего набора, например:
# ipset create range_set hash:net
В данном случае range_set – это имя, hash – метод хранения, а net – тип данных.
Затем вы можете добавить диапазоны в набор:
# ipset add range_set 178.137.87.0/24 # ipset add range_set 46.148.22.0/24
Затем с помощью iptables вы можете настроить правило для отбрасывания трафика, источник которого соответствует диапазонам в этом наборе:
# iptables -I INPUT -m set --match-set range_set src -j DROP
см.также:
- 🖧 Подборка основных популярных правил iptables
- 🖧 Общие правила брандмауэра iptables для сетевых администраторов
- 🖧 Как навсегда сохранить правила брандмауэра iptables на Linux
Альтернативный вариант – дропать трафик, пункт назначения которого соответствует этому набору:
iptables -I OUTPUT -m set --match-set range_set dst -j DROP
СИНТАКС
Синтаксис команды ipset следующий:
# ipset [options] {command}
Блокировка списка сетей
1. Начните с создания нового “набора” сетевых адресов.
Система создаст новый “хэш” набор сетевых адресов “net” с именем “myset”.
# ipset create myset hash:net
или
# ipset -N myset nethash
2. Добавьте в набор любой IP-адрес, который вы хотите заблокировать.
# ipset add myset 14.144.0.0/12 # ipset add myset 27.8.0.0/13 # ipset add myset 58.16.0.0/15 # ipset add myset 1.1.1.0/24
3. Наконец, настройте iptables на блокирование любого адреса из этого набора.
Эта команда добавит правило в верхнюю часть цепочки “INPUT”, чтобы “-m” сопоставить набор с именем “myset” из ipset (-match-set), когда это пакет “src”, и “DROP”, или блокировать его.
# iptables -I INPUT -m set --match-set myset src -j DROP
Блокировка списка IP-адресов
1. Начните с создания нового “набора” ip-адресов.
Система создаст новый “хэш” набор “ip” адресов с именем “myset-ip”.
# ipset create myset-ip hash:ip
или
# ipset -N myset-ip iphash
2. Добавьте в набор любой IP-адрес, который вы хотите заблокировать.
# ipset add myset-ip 1.1.1.1 # ipset add myset-ip 2.2.2.2
3. Наконец, настройте iptables на блокировку любого адреса из этого набора.
# iptables -I INPUT -m set --match-set myset-ip src -j DROP
Как сделать ipset постоянным
Созданный вами ipset хранится в памяти и исчезает после перезагрузки.
Чтобы сделать ipset постоянным, необходимо выполнить следующие действия:
1. Сначала сохраните ipset в файле /etc/ipset.conf:
# ipset save > /etc/ipset.conf
2. Затем включите ipset.service, который работает аналогично iptables.service для восстановления правил iptables.
Другие команды
1. Чтобы просмотреть наборы:
# ipset list
или
# ipset -L
2. Чтобы удалить набор с именем “myset”:
# ipset destroy myset
или
# ipset -X myset
3. Чтобы удалить все наборы:
# ipset destroy