Назад | Перейти на главную страницу

переключить правило порта на брандмауэре ubuntu iptables?

У меня есть сервер ubuntu, который разрешает трафик только на выбранную группу портов через iptables. Один из портов настроен на REJECT по умолчанию 53.

Мне нужно периодически открывать порт 53 для запуска экземпляра acme-dns подтвердить подлинность DNS-01 проблемы от LetsEncrypt, а затем закройте его, когда закончите.

Есть ли простой способ автоматизировать это? Я знаю как легко автоматизировать добавление правило через iptables -I вставить ACCEPT для udp трафик 53 вверху списка, но единственный способ, которым я знаю, как отключить конкретное правило, - это перечислить все активные правила с номерами строк и отключить конкретное правило по номеру строки. Это требует ручного вмешательства с моей стороны.

Мне нужно удалить это правило, а не отменять его, вставляя REJECT перед этим, потому что это будет выполняться заданием cron, и я не хочу загрязнять правила кучей переключателей ACCEPT / REJECT, которые отменяют друг друга.

Единственный подход, который я могу придумать, - это написать сценарий, который печатает правила по номеру строки, анализирует их, а затем отбрасывает правило сопоставления. Есть ли способ сделать это просто с помощью команды iptables, о которой я не знаю?

Правилами можно легче управлять, используя определяемую пользователем цепочку.

Создайте цепочку:

iptables -N acme-dns

Вызовите эту цепочку с помощью этой команды, запущенной в нужном месте в скрипте iptables, перед правилом REJECT для порта 53:

iptables -A INPUT -j acme-dns

Обычно эта цепочка пуста и эффекта нет. Когда нужен доступ к acme-dns, можно запустить эту команду (можно было бы точнее, но дело не в этом):

iptables -A acme-dns -p udp --dport 53 -j ACCEPT

Когда доступ больше не нужен, содержимое цепочки может быть сброшено. Даже если по какой-то причине предыдущая команда была добавлена ​​несколько раз, это все равно сбросит все записи:

iptables -F acme-dns

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