Да, если сервер скомпрометирован, трафик подвергается риску. То, что вы просите, — это иметь безопасный канал между хостами вместо маршрутизаторов, что означает, что вам нужно настроить tunne; на них (один как сервер, другой как клиент )и ставим проброс портов, если тот, что сервер, находится за каким-то NAT.
Вы не можете поместить элементы разных типов в один и тот же набор с помощью команды 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 .