Richard Bruno
navigation
Home
admin









Firewalld
October 18th, 2016

Although it also works on the netfilter code in the Linux kernel, firewalld is totally incompatible with the old way to configure Linux firewalls.


Docs

http://www.certdepot.net/rhel7-get-started-firewalld/
http://ktaraghi.blogspot.fr/2013/10/what-is-firewalld-and-how-it-works.html
http://searchdatacenter.techtarget.com/tip/A-few-ways-to-configure-Linux-firewalld

Le fwl est il démarré ?

systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since jeu. 2014-09-11 21:23:53 CEST; 1h 3min ago
Main PID: 554 (firewalld)
CGroup: /system.slice/firewalld.service
└─554 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

sept. 11 21:23:48 centos7.0-1 systemd[1]: Starting firewalld - dynamic firewall daemon...
sept. 11 21:23:53 centos7.0-1 systemd[1]: Started firewalld - dynamic firewall daemon.



ou

[root@centos7 system]# firewall-cmd --state
running
[root@centos7 system]#




Les zones

Plusieurs zones peuvent être actives (i.e. associées à une même interface).

"After installation, a RHEL 7 server is normally in the public zone, but you may want to add it to another zone to easily configure firewall access. "

Zones available:

[root@centos7 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work



To know in which zone you're in:

[root@centos7 ~]# firewall-cmd --get-active-zone
public
[root@centos7 ~]#



To know the default zone:

[root@centos7 ~]# firewall-cmd --get-default-zone
public
[root@centos7 ~]#



For detailed information about the configuration of a specific zone, you can use :

[root@centos7 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

[root@centos7 ~]#



Changing the default zone isn't difficult, use

firewall-cmd --set-default-zone=home



Les services

Firewalld uses its own set of services that are configured using XML files in the directories /usr/lib/firewalld/services

[root@centos7 ~]# ls /usr/lib/firewalld/services
amanda-client.xml dns.xml ipp-client.xml ldap.xml mysql.xml pmwebapis.xml rpc-bind.xml tftp-client.xml
bacula-client.xml ftp.xml ipp.xml libvirt-tls.xml nfs.xml pmwebapi.xml samba-client.xml tftp.xml
bacula.xml high-availability.xml ipsec.xml libvirt.xml ntp.xml pop3s.xml samba.xml transmission-client.xml
dhcpv6-client.xml https.xml kerberos.xml mdns.xml openvpn.xml postgresql.xml smtp.xml vnc-server.xml
dhcpv6.xml http.xml kpasswd.xml mountd.xml pmcd.xml proxy-dhcp.xml ssh.xml wbem-https.xml
dhcp.xml imaps.xml ldaps.xml ms-wbt.xml pmproxy.xml radius.xml telnet.xml
[root@centos7 ~]#



To configure services, create an XML file in /etc/firewalld/services

Service example:

[root@centos7 ~]# cat /usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
[root@centos7 ~]#



To shows a list of services allowed in the default zone, use

[root@centos7 ~]# firewall-cmd --list-services
dhcpv6-client ssh
[root@centos7 ~]#



On observe ci-dessus qu'il est possible de se connecter en ssh sur cette machine.

To add a service into the default zone, use

firewall-cmd --add-service yourservice



To add a service into a specific zone, use

firewall-cmd --add-service yourservice --zone=zonename



Exemple :

firewall-cmd --add-service ssh --zone=public



Le service ssh du serveur sera accessible pour les machines appartenant à la zone "public".
On peut également utiliser la zone work sur la même interface.
On précise cependant quel est le sous-réseau associé à cette interface :

firewall-cmd --permanent --zone=work --add-source=192.168.2.0/24
firewall-cmd --add-service smb --zone=work



Le service smb du serveur ne sera accessible que pour les machines appartenant à la zone "work" (sous réseau 192.168.2.0/24).


Sans l'option "--permanent" les modifications ne dureront que jusqu'au prochain reboot. Pour les pérenniser, il faut ajouter l'option "--permanent" à la commande.

To remove a service from a specific zone, use

firewall-cmd --remove-service yourservice --zone=zonename



To list the allowed services from a specific zone, use

firewall-cmd --list-services --zone=zonename



To list the allowed ports from a specific zone, use

firewall-cmd --list-ports --zone=zonename



To remove a service from a specific zone, use

firewall-cmd --remove-service yourservice --zone=zonename



To reload your firewalld, use

firewall-cmd --reload



Les services ajoutés avec l'option --permanent ne sont pas immédiatement visibles avec la commande "firewall-cmd --list-services". Il faut recharger le firewall pour les voir apparaitre.


Le conntrack c'est quoi ?

"Il existe un dernier statut intéressant pour le suivit de connexion, il s'agit du statut "RELATED" : Il existe certains protocoles, comme le FTP ou l'IRC par exemple, qui ne répondent pas toujours sur le port qui a initialisé la connexion. Au lieu de cela, ils initialisent eux-mêmes une connexion sur un autre port de la machine demandant l'information. Vous pouvez trouver une excellente explication sur le fonctionnement de ce mode particulier du protocole FTP sur ce site (la partie sur le "mode passif"). Pour certains de ces protocoles particuliers, Netfilter est capable de comprendre que cette nouvelle connexion rentrante est en fait en relation avec une autre connexion précédemment établie par la machine elle-même. Pour ce type de connexion, elle leur attribue le statut de "RELATED" (pour "relative" en anglais).
[...]
Si vous envisagez d'utiliser vos clients FTP en mode passif, ou que vous compter utiliser l'IRC, vous avez la possibilité de charger les modules "ip_conntrack" qui supportent ces protocoles."

Exemple :

[root@centos7 ~]# cat /usr/lib/firewalld/services/ftp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
<port protocol="tcp" port="21"/>
<module name="nf_conntrack_ftp"/>
</service>
[root@centos7 ~]#



Source : http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-07.html

Rich rules

Il est possible en ligne de commande de définir des règles plus complexes (comme on le faisait avec iptables) :

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.4.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept"



Source : http://fedoraproject.org/wiki/Features/FirewalldRichLanguage#Handle_rich_rules_with_the_command_line_client

Source management

A zone can be bound to a network interface (see above) and/or to a network addressing (called here a source).
Any network packet entering in the network stack is associated with a zone.
The association is done according to the following pattern:
– is the packet coming from a source already bound to a zone? (if yes, it is associated with this zone),
– if not, is the packet coming from a network interface already bound to a zone? (if yes, it is associated with this zone),
– if not, the packet is associated with the default zone.

This way, multiple zones can be defined even on a server with only one network interface!

# firewall-cmd --get-active-zones
public
interfaces: eth0
trusted
sources: 192.168.2.0/24



Ce mécanisme permet de construire un architecture comme ci-dessus.
L'interface eth0 ne proposera que peu de services (par ex du ssh). Plus de services seront proposés qd on appartient au réseau 192.168.2.0/24 : depuis la zone trusted on aura par exemple accès au samba du serveur.

Source : http://www.certdepot.net/rhel7-get-started-firewalld/




Dernières modifs
CentOS (November 1st, 2020)
SystemD (October 18th, 2016)
RHEL 6.4 (October 18th, 2016)
RHEL 6.3 bugs et cie (October 18th, 2016)
Fedora (October 18th, 2016)
Firewalld (October 18th, 2016)
Gestion des paquets (October 18th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno