Ubuntu: Como adicionar uma regra do iptables que a UFW não pode criar

15

A UFW está funcionando muito bem para mim, exceto nos casos em que não funciona ...

Quero poder adicionar outra regra manualmente que será aplicada na inicialização?

  • onde devo colocar essa regra?
  • como devo iniciar na inicialização?
  • como faço para jogar bem com a UFW?
Arthur Ulfeldt
fonte
1
O ufw é uma daquelas coisas que "o que você vê é tudo o que recebe" que facilitam para iniciantes. Se você precisar fazer mais do que pode, considere mudar para o iptables completamente. Que "trabalhar muito bem para mim" é uma boa prova de que você pode tentar algo (iptables) mais complicado (mas também mais flexível).
Halp

Respostas:

14

De acordo com esta página wiki do Ubuntu (role para baixo até "Funcionalidade avançada"), você pode conseguir o que deseja colocando suas próprias iptablesregras nos seguintes arquivos:

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

O beforearquivo é avaliado antes que quaisquer ufwregras sejam aplicadas; o afterarquivo é avaliado depois. (Também existem arquivos correspondentes before6e de after6regras, para suas ip6tablesregras.)

Espera-se que esses arquivos de regras tenham iptables-restoresintaxe incompatível, presumivelmente porque ufwsimplesmente os carrega usando iptables-restore. Por fim, observe que você precisa parar e reiniciar ufwdepois de fazer alterações nos arquivos de regras.

Steven segunda-feira
fonte
3
Observe que você pode (talvez não intencionalmente) alterar a precedência das regras do iptables se esquecer de padronizar o uso de -I ou -A ao usar esses arquivos. -I (inserção) adiciona regras ao TOPO da cadeia, avaliadas primeiro, enquanto o -A (anexado) as adiciona ao fundo da cadeia. Isso pode causar resultados inesperados se você usar -I no arquivo .after, por exemplo. Apenas um pensamento.
Sam Halicke 5/11
0

O UFW limpará qualquer regra adicionada manualmente na /etc/ufw/user.rulesqual NÃO seja precedido por um comentário:

### 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

Quando a sanidade da UFW verifica as regras na inicialização, espera um comentário em anexo. Se NÃO estiver presente, mesmo que a sintaxe da regra esteja correta, o UFW ainda a limpará.

E não use apenas comentários arbitrários: DEVE ser o comentário que a UFW inseriria ao criar uma regra de usuário via CLI, ou seja:

sudo ufw allow http/tcp

Portanto, se você deseja pré-propagar uma série de regras em um conjunto de regras em um arquivo simples, ainda precisará criar as regras através da interface CLI da UFW para aprender a sintaxe dos comentários que espera que a regra passe na validação e persista .

Experimente o exposto acima e SEM o comentário e recarregue a regra HTTP de amostra acima; você observará apenas com o comentário que a regra adicionada manualmente sobrevive a uma reinicialização ( ufw enable ) do UFW.

Este é realmente um comportamento contra-intuitivo e não está documentado.

F1Linux
fonte