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
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/
|
|
Contact
|
|---|
Pour m'envoyer un mail, Pour me laisser un commentaire :richard.brunooo chez gmail.com |  |
|
|