Moscow, Russia

IPSet

Установка ipset

sudo apt install ipset

Создание нового списка

Создание нового списка iplist

ipset -N iplist hash:net
ipset create iplist hash:net

Добавление адресов в список

Добавление адреса в список iplist

ipset -A iplist 8.8.8.8
ipset add iplist 8.8.8.8

Чтобы не отображались лишние сообщения при добавлении одинаковых адресов, что такой адрес уже есть, к команде добавляется элемент -exist

ipset -A iplist 8.8.8.8 -exist
ipset add iplist 8.8.8.8 -exist

Удаление всех адресов из списка

Удаление всех адресов из списка iplist. Очистка списка.

ipset -F iplist
ipset flush iplist

Удаление списка

Удаление списка iplist и его содержимого

ipset -X iplist
ipset destroy iplist

Удаление адреса из списка

Удаление адреса из списка iplist

ipset -D iplist 8.8.8.8
ipset del iplist 8.8.8.8

Переименование списка адресов

Переименовать список iplist в newlist. newlist не должен существовать!

ipset -E iplist newlist
ipset rename iplist newlist

Поменять местами содержимое списков адресов

Поменять местами содержимое списка iplist и newlist. Фактически переименование обоих списков. Оба списка должны существовать. Можно менять местами списки с совместимым типом данных.

ipset -W iplist newlist
ipset swap iplist newlist

Просмотр списков адресов

Просмотр всех списков

ipset -L
ipset list

Просмотр технической информации о списках без вывода адресов

ipset -L -terse
ipset list -terse

Просмотр адресов списка iplist

ipset -L iplist
ipset list iplist

Проверка наличия адреса в списке

Проверка наличия адреса 8.8.8.8 в списке iplist

ipset -T iplist 8.8.8.8
ipset test iplist 8.8.8.8

В зависимости от содержимого списка iplist будет выведено:

если адрес входит в список iplist

8.8.8.8 is in set iplist

если не входит

8.8.8.8 is NOT in set iplist

Добавление ipset в iptables

Разрешаем доступ к серверу с адресов, указанных в списке iplist по SSH (порт tcp 22)

iptables -A INPUT -p tcp -m set --match-set iplist src --dport 22 -j ACCEPT

Разрешаем доступ к серверу с любых адресов, кроме указанных в списке blocklist по HTTP (порт tcp 80)

iptables -A INPUT -p tcp -m set ! --match-set blocklist src --dport 80 -j ACCEPT

где:

  • -m set — использовать модуль ipset
  • —match-set — перечисление имен используемых списков адресов
  • src или dst — проверять адреса списков с адресам источника или назначения

Блокировка по территориальной принадлежности

Чтобы заблокировать доступ с адресов по территориальной принадлежности необходимо создать скрипт, подгружающий списки адресов из GeoIP базы.

ipset -N geoblock nethash
for IP in $(wget -O geoblock https://www.ipdeny.com/ipblocks/data/countries/{cn,kr,tw,sg,hk}.zone)
do
ipset -A geoblock $IP
done
iptables -A INPUT -m set --match-set geoblock src -j DROP

Original man page (ubuntu)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *