Como faço para começar o ufw na inicialização?

1

ufw não está começando para mim na inicialização. Meu arquivo /etc/ufw/ufw.conf se parece com isto:

# /etc/ufw/ufw.conf
#

# Set to yes to start on boot. If setting this remotely, be sure to add a rule
# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
ENABLED=yes

# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'.
# See 'man ufw' for details.
LOGLEVEL=low

Então parece que deveria começar ok. No entanto, logo após o boot eu sempre entendo isso:

$ sudo ufw status
Status: inactive

Usar o script "service" para iniciá-lo parece não funcionar:

$ sudo service ufw start
$ sudo ufw status
Status: inactive

Se eu forçar uma recarga, tudo funcionará bem:

$ sudo ufw reload
Firewall reloaded
$ sudo ufw status
Status: active

Depois disso, o script "service" funciona bem:

$ sudo ufw status
Status: active
$ sudo service ufw stop
$ sudo ufw status
Status: inactive
$ sudo service ufw start
$ sudo ufw status
Status: active

Como obtenho o ufw para iniciar na inicialização?

Editar:

Estou usando o Ubuntu 18.04 para que o systemd esteja sendo usado. systemctl is-enabled informa da seguinte forma:

$ sudo ufw status verbose
Status: inactive
$ sudo systemctl is-enabled ufw.service
enabled

Eu também tentei isso:

$ sudo systemctl enable ufw
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ufw
$ sudo ufw status verbose
Status: inactive

E depois de uma reinicialização, ele permanece inativo. journalctl -p err não relata nada interessante. journalctl -u ufw relatórios:

$ journalctl -u ufw
...<snip>...
-- Reboot --
May 26 12:53:36 matt-laptop systemd[1]: Started Uncomplicated firewall.

Então, certamente parece que está tentando iniciar o ufw ... parece que na verdade ele não faz ele

    
por Matt Caswell 26.05.2018 / 11:48

1 resposta

2

Eu encontrei uma solução. Eu fiz esta edição para /lib/systemd/system/ufw.service :

$ diff -u ufw.service.orig ufw.service
--- ufw.service.orig    2018-05-26 13:45:48.696356561 +0100
+++ ufw.service 2018-05-26 13:46:04.443673265 +0100
@@ -2,7 +2,7 @@
 Description=Uncomplicated firewall
 Documentation=man:ufw(8)
 DefaultDependencies=no
-Before=network.target
+After=network.target

 [Service]
 Type=oneshot

Portanto, isso faz com que ufw inicie depois que a rede estiver ativa, e não antes dela. Isso parece fazer o truque - o ufw está sempre ativado depois de eu inicializar. Eu não sei se esta é a melhor maneira de fazer as coisas. Eu me preocupo que há uma pequena janela de tempo entre a rede iniciando e o firewall sendo iniciado ... mas pelo menos ele começa, o que é melhor do que antes!

Talvez alguém consiga uma solução melhor. Ou talvez esta seja a maneira correta de fazer as coisas - caso em que é um bug que o padrão é iniciado antes da rede?

Editar:

Uma solução ainda melhor é:

$ diff -u ufw.service.orig ufw.service
--- ufw.service.orig    2018-05-26 13:45:48.696356561 +0100
+++ ufw.service 2018-05-26 14:17:22.030681670 +0100
@@ -2,7 +2,7 @@
 Description=Uncomplicated firewall
 Documentation=man:ufw(8)
 DefaultDependencies=no
-Before=network.target
+After=network-pre.target

 [Service]
 Type=oneshot

De acordo com esta página

link

o network-pre.target tem esse objetivo:

"Seu objetivo principal é o uso com serviços de firewall que desejam estabelecer um firewall antes que qualquer interface de rede seja ativada"

O que realmente me faz pensar por que não foi definido por padrão. Configurá-lo para esse valor parece resolver todos os meus problemas.

    
por Matt Caswell 26.05.2018 / 14:54