Ajouter un nouveau service et l’ouvrir sous firewalld – Fedora 18

À partir de Fedora 18, le firewall est désormais géré par le démon firewalld.

Cet article vous présentera comment ajouter un service personnalisé avec les nouveau outils disponibles sous Fedora et par défaut sous Fedora 18 à la main (c’est-à-dire sans l’outil en ligne de commande firewall-cmd ni l’outil graphique firewall-config).
Je prendrai l’exemple de l’ouverture d’un port pour le client BitTorrent Transmission, nous prendrons le port 51413 couramment utilisé par Transmission.

Il faut savoir que sous firewalld la configuration par défaut se trouve sous /etc/lib/firewalld. Si vous modifiez les fichiers sous cette arborescence, les modifications seront écrasées lors de la prochaine mise à jour du paquet firewalld.
Les fichiers de configuration par défaut sont les suivants, et pour le plus grand bonheur des barbus de tous poils, c’est « tout XML »:

[root@silver ~]# ls -R /usr/lib/firewalld/
/usr/lib/firewalld/:
icmptypes services zones

/usr/lib/firewalld/icmptypes:
destination-unreachable.xml echo-reply.xml echo-request.xml parameter-problem.xml redirect.xml router-advertisement.xml router-solicitation.xml source-quench.xml time-exceeded.xml

/usr/lib/firewalld/services:
amanda-client.xml cluster-suite.xml ftp.xml imaps.xml ipsec.xml mdns.xml openvpn.xml samba-client.xml ssh.xml tftp.xml
bacula-client.xml dhcpv6-client.xml https.xml ipp-client.xml libvirt-tls.xml nfs.xml pop3s.xml samba.xml telnet.xml vnc-server.xml
bacula.xml dns.xml http.xml ipp.xml libvirt.xml ntp.xml radius.xml smtp.xml tftp-client.xml

/usr/lib/firewalld/zones:
block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml

Nous nous attarderons ici sur les services et sur la zone « Public » qui est la zone utilisée par défaut.

Pour pouvoir modifier la configuration de façon permanente, il va falloir intervenir sous /etc/firewalld dont les fichiers sont — mis à part firewalld.conf — vides.

[root@silver ~]# ls -lR /etc/firewalld
/etc/firewalld:
total 16
-rw-r----- 1 root root 476 14 janv. 16:46 firewalld.conf
drwxr-x--- 2 root root 4096 14 janv. 16:46 icmptypes
drwxr-x--- 2 root root 4096 14 janv. 16:46 services
drwxr-x--- 2 root root 4096 14 janv. 16:46 zones

/etc/firewalld/icmptypes:
total 0

/etc/firewalld/services:
total 0

/etc/firewalld/zones:
total 0

Allons y gaiement et ajoutons un nouveau service que nous appellerons transmission et qui sera associé au port 51413/tcp.

[root@silver ~]# cat <<EOF > /etc/firewalld/services/transmission.xml
> <!--?xml version="1.0" encoding="utf-8"?-->
> <service name="transmission">
>   <short>Transmission</short>
>   <description>Ouverture du port pour le client BitTorrent Transmission</description>
>   <port protocol="tcp" port="51413"/>
> </service>
> EOF

Il faut maintenant ajouter ce nouveau service à la zone « Public » qui correspond au fichier public.xml, pour cela copiez le fichier public.xml de la configuration par défaut vers /etc/firewalld/zones/.

cp /usr/lib/firewalld/zones/public.xml /etc/firewalld/zones/

Vous pouvez maintenant ajouter votre nouveau service à la zone « Public » en ajoutant la ligne suivante dans les service de votre fichier /etc/firewalld/zones/public.xml à l’aide de votre éditeur de texte favori:

ce qui vous donne:

[root@silver ~]# cat /etc/firewalld/zones/public.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<zone name="public">
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</desctiption>
  <service name="ssh"/>
  <service name="ipp-client"/>
  <service name="mdns"/>
  <service name="samba-client"/>
  <service name="dhcpv6-client"/>
  <service name="transmission"/>
</zone>

Après une relance de votre démon firewalld:
systemctl restart firewalld.service

Vous aurez la joie de voir votre port 51413 ouvert dans Transmission tout en ayant votre pare-feu activé.

Vus : 840
Publié par Pierre Dorbais : 6