27 juin 2017

CentOS 7 : désactiver firewalld et réactiver iptables

toolsEn plus de systemd, RHEL 7 et CentOS 7 disposent d'une nouvelle interface de pare-feu : firewalld. Bien qu'il fasse plutôt bien le boulot, je me suis trouvé dans des cas où j'avais du mal à lui faire faire ce que je voulais. En fait dès l'instant où j'ai commencé à jouer avec des interfaces tun, des zones et de la retransmission de paquets, j'ai commencé à avoir des difficultés. En attendant de les résoudre, j'ai noté que je pouvais revenir au fonctionnement précédent, et piloter iptables directement.

Désactivation de firewalld

Commençons par arrêter firewalld, et s'assurer qu'il est bien coupé :

[root@test ~]# systemctl stop firewalld.service
[root@test ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Jun 27 10:27:00 test.anotherhomepage.org systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 27 10:27:00 test.anotherhomepage.org systemd[1]: Started firewalld - dynamic firewall daemon.
Jun 27 10:27:25 test.anotherhomepage.org systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jun 27 10:27:25 test.anotherhomepage.org systemd[1]: Stopped firewalld - dynamic firewall daemon.

Bien sûr, cela veut dire qu'à partir de maintenant, la machine n'est plus protégée par le pare-feu.

Ensuite, on désactive son démarrage automatique :

[root@test ~]# systemctl disable firewalld.service

Si vraiment on ne souhaite plus pouvoir démarrer firewalld par accident, on peut le masquer :

[root@test ~]# systemctl mask firewalld.service
Created symlink from /etc/systemd/system/firewalld.service to /dev/null.

Maintenant c'est pas tout, mais faut remettre un pare-feu.

Activation d'iptables

Pour activer iptables, c'est très simple, commençons par installer le paquet "iptables-services" :

[root@test ~]# yum -y install iptables-services
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.imt-systems.com
 * extras: mirror.netcologne.de
 * updates: mirror.ratiokontakt.de
Resolving Dependencies
--> Running transaction check
---> Package iptables-services.x86_64 0:1.4.21-17.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package                                                         Arch                                                 Version                                                       Repository                                          Size
=============================================================================================================================================================================================================================================
Installing:
 iptables-services                                               x86_64                                               1.4.21-17.el7                                                 base                                                50 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install  1 Package

Total download size: 50 k
Installed size: 24 k
Downloading packages:
iptables-services-1.4.21-17.el7.x86_64.rpm                                                                                                                                                                            |  50 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : iptables-services-1.4.21-17.el7.x86_64                                                                                                                                                                                    1/1
  Verifying  : iptables-services-1.4.21-17.el7.x86_64                                                                                                                                                                                    1/1

Installed:
  iptables-services.x86_64 0:1.4.21-17.el7

Complete!

Ensuite, on l'active dans systemd :

[root@test ~]# systemctl enable iptables
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

On peut alors le lancer :

[root@test ~]# systemctl start iptables

Comme pour RHEL 6 et CentOS 6, la configuration se trouve dans le fichier /etc/sysconfig/iptables, et dispose d'un jeu de règles n'ouvrant la voie qu'au ping et à SSH. La machine est, à partir de cet instant, de nouveau protégée par un pare-feu.

Vous avez aimé cet article ? Alors partagez-le sur les réseaux sociaux ! Si en plus vous avez des remarques, ou des propositions d'améliorations, n'hésitez pas : les commentaires sont là pour ça !

Crédit photo : velacreations - tools.

22 mai 2017

systemd : reconfigurer une unité de service

bricolage bumperDans le billet précédent, j'ai abordé haveged et je terminais sur le fait que certains paramètres pouvaient être accessibles. Cela ne semble pas forcément évident, car si on regarde la liste des fichiers du paquet RPM, on n'y trouve aucun fichier de configuration :

$ rpm -ql haveged
 /usr/lib/systemd/system/haveged.service
 /usr/lib64/libhavege.so.1
 /usr/lib64/libhavege.so.1.1.0
 /usr/sbin/haveged
 /usr/share/doc/haveged
 /usr/share/doc/haveged/AUTHORS
 /usr/share/doc/haveged/COPYING
 /usr/share/doc/haveged/ChangeLog
 /usr/share/doc/haveged/README
 /usr/share/doc/haveged/havege_sample.c
 /usr/share/man/man8/haveged.8.gz

De plus, si on regarde le processus lancé, on remarque que certaines options sont précisées sur la ligne de commande :

$ ps auxwww | grep haveged | grep -v grep
root     22470  0.0  0.7  12132  3824 ?        Rs   May16   0:00 /usr/sbin/haveged -w 1024 -v 1 --Foreground

Allons un peu plus loin, le paquet contient un fichier "haveged.service" :

$ cat /usr/lib/systemd/system/haveged.service
[Unit]
Description=Entropy Daemon based on the HAVEGE algorithm
Documentation=man:haveged(8) http://www.issihosts.com/haveged/

[Service]
Type=simple
ExecStart=/usr/sbin/haveged -w 1024 -v 1 --Foreground
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

Il ne faut pas succomber à la tentation de modifier directement ce fichier, car une possibilité plus propre existe : la documentation officielle RHEL 7 nous apprend ainsi comment créer un fichier de configuration pour le service.

Dans ce cas précis, je souhaite augmenter la valeur de l'argument -w à 2048. Pour l'anecdote, cette option permet d'augmenter l'utilisation de haveged en définissant une taille minimale du réservoir d'entropie. Nous allons donc d'abord créer un répertoire de configuration de service systemd, puis le fichier lui-même :

# mkdir /etc/systemd/system/haveged.service.d/
# vi /etc/systemd/system/haveged.service.d/custom_args.conf

Bon, peu importe le nom du fichier tant qu'il a pour extension ".conf", mais il est malgré tout préférable de lui donner un nom explicite (en clair, faites ce que je dis, pas ce que je fais).

Nous allons dans ce fichier redéfinir la directive ExecStart, puisque c'est celle qui définit l'option à modifier. Par contre, petite subtilité, cette directive doit être vidée pour être redéfinie. Le fichier a donc cette allure :

[Service]
ExecStart=
ExecStart=/usr/sbin/haveged -w 2048 -v 1 --Foreground

Il faut maintenant recharger les unités avant de redémarrer le service haveged :

# systemctl restart haveged.service
Warning: haveged.service changed on disk. Run 'systemctl daemon-reload' to reload units.
# systemctl daemon-reload
# systemctl restart haveged.service
# ps auxwww | grep haveged | grep -v grep
root     23074  2.4  0.7  12132  3836 ?        Ss   04:02   0:00 /usr/sbin/haveged -w 2048 -v 1 --Foreground

Le démon haveged est alors lancé avec une valeur de 2048 pour l'option -w.

Dernier petit détail, SELinux. J'ai testé cette manipulation sur un système configuré en "enforcing", l'édition du fichier s'est donc faite dans le bon contexte. Au cas où certains se demandent comment sont les labels, les voici :

# ll -Z -d /etc/systemd/system/haveged.service.d
drwxr-xr-x. root root unconfined_u:object_r:systemd_unit_file_t:s0 /etc/systemd/system/haveged.service.d
# ll -Z /etc/systemd/system/haveged.service.d/custom_args.conf
-rw-r--r--. root root unconfined_u:object_r:systemd_unit_file_t:s0 /etc/systemd/system/haveged.service.d/custom_args.conf

Vous avez aimé cet article ? Alors partagez-le sur les réseaux sociaux ! Si en plus vous avez des remarques, ou des propositions d'améliorations, n'hésitez pas : les commentaires sont là pour ça !

Crédit photo : Katie Hargrave - bricolage bumper.

Propulsé par Dotclear