iptables добавляет ip, порт и IP

Да, если сервер скомпрометирован, трафик подвергается риску. То, что вы просите, — это иметь безопасный канал между хостами вместо маршрутизаторов, что означает, что вам нужно настроить tunne; на них (один как сервер, другой как клиент )и ставим проброс портов, если тот, что сервер, находится за каким-то NAT.

1
14.01.2020, 05:14
1 ответ

Вы не можете поместить элементы разных типов в один и тот же набор с помощью команды ipset. Но вы можете использовать разные наборы, по одному для каждого типа (полный список доступен сipset help):

hash:ip
hash:ip,port

Например:

ipset create blocklistip hash:ip
ipset create blocklistipport hash:ip,port

ipset add blocklistip 192.0.2.3
ipset add blocklistipport 192.0.2.2,80
ipset add blocklistipport 192.0.2.3,udp:53

Обратите внимание, как указано выше, что по умолчанию для порта используется протокол TCP, если явно не указано иное(udp:для UDP, sctp:для SCTP,... ).

Теперь ваш скрипт должен проверить, какой тип элемента он получил, чтобы узнать, в какой ipset он его добавит. Простым примером здесь может быть проверка ,, чтобы знать, куда его поместить, при чтении списка из файлаblocklist.txt:

while read -r element; do
    if echo $element|grep -q,; then
        ipset add blocklistipport $element
    else
        ipset add blocklistip $element
    fi
done < blocklist.txt

И вы можете заблокировать все в списке, например, с помощью:

iptables -A INPUT -m set --match-set blocklistip src -j DROP
iptables -A INPUT -m set --match-set blocklistipport src,dst -j DROP

Выше src,dstозначает использование IP-адреса источника вместе с адресом порта назначения в пакете при поиске соответствия в наборе hash:ip,port.

Кроме того, ipset имеет специальный набор list:set, состоящий из списка других наборов. Это не изменит способа заполнения наборов по отдельности с помощью команды ipset.но вы можете сделать это:

ipset create blocklist list:set
ipset add blocklist blocklistip
ipset add blocklist blocklistipport

и замените два предыдущих правила iptables только одним ниже:

iptables -A INPUT -m set --match-set blocklist src,dst -j DROP

которое идет к вашей цели :это единственное правило iptables будет правильно работать с элементами set с портом или без него, как задокументировано в ipset .

1
27.01.2020, 23:40

Теги

Похожие вопросы