web-dev-qa-db-fra.com

Comment puis-je faire démarrer UFW au démarrage?

ufw ne commence pas pour moi au démarrage. Mon fichier /etc/ufw/ufw.conf ressemble à ceci:

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

Il semble donc que tout devrait bien commencer. Cependant, juste après le démarrage, je reçois toujours ceci:

$ Sudo ufw status
Status: inactive

Utiliser le script "service" pour le démarrer ne semble pas fonctionner:

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

Si je force un rechargement, cela fonctionnera très bien:

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

Et après cela, le script "service" fonctionne parfaitement:

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

Comment puis-je faire démarrer UFW au démarrage?

Modifier:

J'utilise Ubuntu 18.04, donc systemd est utilisé. systemctl is-enabled rapporte comme suit:

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

J'ai aussi essayé ceci:

$ 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

Et après un redémarrage, il reste inactif. journalctl -p err ne rapporte rien d'intéressant. journalctl -u ufw rapporte:

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

Donc, il semble bien que c’est tenter de démarrer ufw ... il semble juste que ce n’est pas réellement faire ça!

1
Matt Caswell

Je suis venu avec une solution de toutes sortes. J'ai fait cette modification à /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

Ainsi, ufw démarrera après que le réseau est en place au lieu d’avant. Cela semble faire l'affaire - ufw est toujours activé après le démarrage. Je ne sais pas si c'est la meilleure façon de faire les choses. Je crains qu'il y ait un court intervalle de temps entre le démarrage du réseau et celui du pare-feu ... mais au moins, cela commence, ce qui est mieux qu'avant!

Peut-être que quelqu'un peut trouver une meilleure solution. Ou peut-être que c'est la bonne façon de faire les choses - dans quel cas est-ce un bogue dont le démarrage par défaut est avant le réseau?

Modifier:

Une solution encore meilleure est:

$ 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

Selon cette page

https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

le network-pre.target a cet objectif:

"Son objectif principal est d'utiliser avec les services de pare-feu qui souhaitent établir un pare-feu avant que toute interface réseau ne soit opérationnelle"

Ce qui me fait vraiment me demander pourquoi il n'a pas été réglé sur ceci par défaut. Le régler à cette valeur semble résoudre tous mes problèmes.

4
Matt Caswell