Как создать ловушку с помощью Firewalld

Я хотел бы настроить следующую логику, используя firewalld

  1. Когда хост пытается получить доступ к серверу из Интернета через порт 22:
    1. ПАДЕНИЕ и
    2. добавить их IP-адрес в ipset под названием «trap» (с тайм-аутом 24 часа)
  2. Когда хост, IP-адрес которого находится в списке «ловушек», пытается подключиться к любому порту: DROP.

Я прочитал много страниц документации, но не понимаю, как реализовать версию 1.2 выше.

1 ответ

Firewalld поддерживает ipsets, и при настройке этого ipset вы указываете 24-часовой тайм-аут (86400 секунд):

      firewall-cmd --permanent --new-ipset=trap --type=hash:ip --option=timeout=86400
firewall-cmd --reload

В родном net-filter/iptables логика и порядок необходимых правил будут такими:

      # Block all traffic from IP-addresses in the trap ipset 
# (with REJECT to facilitate debugging) 

iptables -I INPUT 1 -m set  --match-set trap src -j REJECT 

# Add all IP-addresses to that connect to TCP port 22 to the trap ipset
# (the --timeout value is only necessary when different from the default for the ipset) 

iptables -I INPUT 2 -p tcp  -m tcp --dport 22  -m set  --add-set trap src --timeout 86400 -j SET 

# Reject access access to TCP port 22 for everybody

iptables -I INPUT 3 -p tcp -m tcp --dport 22 -j REJECT

Перевести это в собственные правила/структуры firewalld/firewall-cmd на данный момент мне немного не по силам, но добавить правила 1 и 2 в качестве прямых правил должно быть достаточно легко.

Вы сможете получать отображаемые записи в списке ловушек с помощью:

       firewall-cmd --permanent --ipset=trap  --get-entries
Другие вопросы по тегам