Ubuntu: Как добавить правило iptables, которое UFW не может создать

15

UFW работает очень хорошо для меня, за исключением случаев, когда это не ...

Я хочу иметь возможность добавить другое правило вручную, которое будет применяться при загрузке?

  • где я должен поставить это правило?
  • как сделать так, чтобы он запускался при загрузке?
  • как мне заставить его играть с UFW?
Артур Ульфельдт
источник
1
UFW - это одна из тех вещей, которые «ты видишь, это все, что ты получаешь», которые облегчают жизнь новичкам. Если вам нужно сделать больше, чем может, рассмотрите возможность полного перехода на iptables. То, что «действительно хорошо работает для меня» является хорошим доказательством того, что вы можете попробовать что-то более сложное (iptables) (но также и более гибкое).
halp

Ответы:

14

Согласно этой вики-странице Ubuntu (прокрутите вниз до «Расширенные функциональные возможности»), вы можете достичь желаемого, поместив свои собственные iptablesправила в следующие файлы:

  • /etc/ufw/before.rules
  • /etc/ufw/after.rules

beforeФайл оценивается до того , как ufwприменяются правила; afterфайл вычисляется после. (Есть также соответствующие файлы before6и after6файлы правил, для ваших ip6tablesправил.)

Предполагается, что эти файлы правил имеют iptables-restoreнесовместимый синтаксис, вероятно потому, что ufwпросто загружают их, используя iptables-restore. Наконец, обратите внимание , что вам нужно остановить и перезапустить ufwпосле внесения каких - либо изменений в файлы правил.

Стивен Понедельник
источник
3
Обратите внимание, что вы можете (возможно, непреднамеренно) изменить приоритет правил iptables, если вы забыли стандартизировать использование -I или -A при использовании этих файлов. -I (вставка) добавляет правила в верхнюю часть цепочки, оцениваемые первыми, а -A (добавление) добавляет их в нижнюю часть цепочки. Это может привести к неожиданным результатам, если вы, например, используете -I в файле .after. Просто мысль.
Сэм Халике
0

UFW удалит любое добавленное вручную правило, в /etc/ufw/user.rulesкотором НЕ предшествует комментарий:

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -p tcp --dport 80 -j ACCEPT

Когда UFW sanity проверяет правила при запуске, он ожидает сопровождающего комментария. Если он НЕ присутствует, даже если синтаксис правила правильный, UFW все равно удалит его.

И не просто используйте произвольный комментарий: это ДОЛЖЕН быть комментарий, который UFW вставит при создании пользовательского правила через cli, то есть:

sudo ufw allow http/tcp

Поэтому, если вы хотите предварительно заполнить серию правил в наборе правил в простом файле, вам все равно нужно создать правила через интерфейс CLI UFW, чтобы узнать синтаксис комментариев, которые он ожидает, чтобы правило прошло проверку и сохранялось. ,

Попробуйте описанное выше и БЕЗ комментария и перезагрузите приведенное выше правило HTTP для образца; Вы заметите только с комментарием, что добавленное вручную правило выдержит перезапуск ( включение UFW) UFW.

Это действительно нелогичное поведение и совсем не задокументировано.

F1Linux
источник