Как создать ловушку с помощью Firewalld
Я хотел бы настроить следующую логику, используя firewalld
- Когда хост пытается получить доступ к серверу из Интернета через порт 22:
- ПАДЕНИЕ и
- добавить их IP-адрес в ipset под названием «trap» (с тайм-аутом 24 часа)
- Когда хост, 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