Невозможно добавить правила в /etc/ufw/before.rules и before6.rules

Я использую NTP-сервер с высоким трафиком, и следующие правила абсолютно необходимы для предотвращения немедленного переполнения моей таблицы conntrack (независимо от насколько он велик):

iptables -t raw -A PREROUTING -p udp --dport 123 -j NOTRACK
iptables -t raw -A OUTPUT -p udp --sport 123 -j NOTRACK
ip6tables -t raw -A PREROUTING -p udp --dport 123 -j NOTRACK
ip6tables -t raw -A OUTPUT -p udp --sport 123 -j NOTRACK

Я ищу лучший способ, чтобы эти правила применялись автоматически при загрузке.Их нужно применять немедленно, когда UFW поднимается, иначе таблица conntrack будет заполнена за секунды. (Пожалуйста, не предлагайте увеличивать размер таблицы conntrack; я вообще не хочу тратить ресурсы на отслеживание этих подключений, и для этого таблица должна быть абсурдно большой, вероятно, больше, чем сервер может обработать. )

Сначала я попытался добавить их в /etc/ufw/before.rules и before6.rules, например, в конце файлов:

# tail before.rules before6.rules
==> before.rules <==
(stuff that was already there)

-t raw -A PREROUTING -p udp --dport 123 -j NOTRACK
-t raw -A OUTPUT -p udp --sport 123 -j NOTRACK

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

==> before6.rules <==
(stuff that was already there)

-t raw -A PREROUTING -p udp --dport 123 -j NOTRACK
-t raw -A OUTPUT -p udp --sport 123 -j NOTRACK

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Однако после перезагрузки у системы не было сетевого подключения, и я обнаружил следующую ошибку :

ERROR: problem running ufw-init                                                                              
iptables-restore v1.8.4 (legacy): The -t option (seen in line 75) cannot be used in iptables-restore.        
                                                                                                             
Error occurred at line: 75                                                                                   
Try `iptables-restore -h' or 'iptables-restore --help' for more information.                                 
ip6tables-restore v1.8.4 (legacy): The -t option (seen in line 142) cannot be used in ip6tables-restore.     
                                                                                                             
Error occurred at line: 142                                                                                  
Try `ip6tables-restore -h' or 'ip6tables-restore --help' for more information.                               
                                                                                                             
Problem running '/etc/ufw/before.rules'                                                                      
Problem running '/etc/ufw/before6.rules'                                                                     

Затем я попытался удалить "-t raw":

# tail before.rules before6.rules
==> before.rules <==
(stuff that was already there)

-A PREROUTING -p udp --dport 123 -j NOTRACK
-A OUTPUT -p udp --sport 123 -j NOTRACK

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

==> before6.rules <==
(stuff that was already there)

-A PREROUTING -p udp --dport 123 -j NOTRACK
-A OUTPUT -p udp --sport 123 -j NOTRACK

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Это снова отключило сетевое соединение и выдало ошибку:

ERROR: problem running ufw-init
iptables-restore: line 75 failed
ip6tables-restore: line 142 failed

Problem running '/etc/ufw/before.rules'
Problem running '/etc/ufw/before6.rules'

Как лучше всего справиться с этим?

Ubuntu 20.04.2 LTS

РЕДАКТИРОВАТЬ: немного поигравшись с "iptables-save", я попытался добавить что-то вроде этого в файл:

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 123 -j NOTRACK
-A OUTPUT -p udp -m udp --sport 123 -j NOTRACK

Однако я всегда получаю одни и те же ошибки:

# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ERROR: problem running ufw-init
Bad argument `*raw'
Error occurred at line: 75
Try `iptables-restore -h' or 'iptables-restore --help' for more information.

Problem running '/etc/ufw/before.rules'

и подключение к сети моего сервера прерывается, пока я не отключу UFW или удалите добавленные строки из файлов и перезагрузите UFW.

0
задан 4 May 2021 в 03:22

1 ответ

Моя первая ошибка заключалась в попытке добавить "сырые" правила в существующий блок, который определяется как блок "фильтр". Мне нужно было добавить совершенно новый «необработанный» блок с его собственным COMMIT, например:

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 123 -j NOTRACK
-A OUTPUT -p udp -m udp --sport 123 -j NOTRACK
COMMIT

Я попытался добавить его в конец файла (после существующего «COMMIT»), но по какой-то причине он все еще содержал ошибку, но это сработало, когда я добавил в начало файла. Не знаю почему.

Итак, общая структура before.rules и before6.rules теперь выглядит следующим образом:

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
(my rules here)
COMMIT

*filter
:ufw6-before-input - [0:0]
:ufw6-before-output - [0:0]
:ufw6-before-forward - [0:0]
(existing rules here)
COMMIT
1
ответ дан 7 May 2021 в 17:40

Другие вопросы по тегам:

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