2 votes

Persistance des règles de pare-feu SSH exécutant OpenVPN

J'ai un serveur (Ubuntu 20.04) sur lequel je peux me connecter par SSH. normalement . J'ai mis en place OpenVPN sur ce serveur et cela fonctionne très bien...

Sauf que lorsque je démarre OpenVPN, je perds la possibilité de me connecter au serveur par SSH.

J'ai trouvé cette réponse concernant la définition de règles de pare-feu qui résout ce problème dans une certaine mesure :

https://serverfault.com/a/918441/602437

Je place ces règles dans un script puis je fais : sudo ./set-ssh-rules.sh && sudo service openvpn start et cela fonctionne comme prévu.

Le problème est qu'il s'agit d'une étape manuelle puisque les règles semblent disparaître après le redémarrage et que je dois recommencer toute la danse.

Comment faire pour que ces règles persistent ? Ou dans le cas plus réaliste où le service OpenVPN est "activé", avoir les règles définies au démarrage mais avant le système init (systemd ?) démarre le service OpenVPN.

Je suis sûr que la réponse à cette question se trouve un peu partout sur Internet, mais je n'ai pas réussi à la rassembler - désolé.

Merci d'avance.

2voto

Amyunimus Points 163

La solution la plus simple que j'ai trouvée est de créer un service comme suit :

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Setup Firewall on each reboot
Before=network.target

[Service]
Type=oneshot
WorkingDirectory=~
RemainAfterExit=yes
ExecStart=/usr/sbin/set-ssh-rules.sh
User=root
Group=root

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

Votre script doit être placé à un endroit auquel vous pouvez faire référence avec un chemin complet, comme indiqué ci-dessus.

Pour installer le fichier, vous pouvez le copier ici :

/lib/systemd/system/my-firewall.service

Lorsque vous ajoutez manuellement un nouveau fichier, vous devez pousser le système à se réveiller avec ce qui suit :

systemctl daemon-reload

Les commandes de systemd vous indiqueront également d'exécuter cette commande si vous modifiez votre ou vos fichiers .service afin qu'il puisse se mettre à jour si nécessaire avant d'essayer d'exécuter d'autres commandes. Ceci est fait automatiquement lorsque vous installez/désinstallez un paquetage, mais pas lorsque vous le faites manuellement.

Ensuite, vous pouvez l'activer et il se déclenchera à chaque redémarrage.

systemctl enable my-firewall

Pour savoir si cela a fonctionné, vérifiez l'état :

systemctl status my-firewall

Vous pouvez également démarrer/arrêter manuellement pour vérifier que le script s'exécute comme prévu :

systemctl start my-firewall
systemctl stop my-firewall

Comme je n'ai pas de script pour arrêter mon pare-feu, il ne se passe rien dans le fichier stop mais s'il est déjà en cours d'exécution, le start ne fera rien... vous devez donc stop afin d'effectuer une start . (vous pouvez également utiliser restart )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X