• openSUSE dit adieu à SuSEfirewall2

    La vénérable interface d'openSUSE à iptables laisse sa place à firewalld, un semblable plus moderne. Mais si les installateurs de Tumbleweed et de Leap 15 activent maintenant (ou activeront bientôt) firewalld par défaut, la transition ne se fait pas automatiquement sur les installations existantes.

    SuSEfirewall2 vs. firewalld : quelles différences ?

    Pas tant de choses que ça dans le principe : ce sont tous les deux des moyens de configurer facilement les fonctions de pare-feu fournies par le noyau Linux. Tous deux créent des règles iptables, à partir d'une configuration modifiable via une interface graphique.



    firewalld a cependant l'avantage d'offrir une interface D-Bus, permettant l'interaction avec d'autres applications – par exemple NetworkManager – ainsi qu'une vraie interface en ligne de commande.

    En outre, il est utilisé – du moins disponible – sur d'autres distributions GNU/Linux, notamment Fedora, alors que SuSEfirewall2 n'était utilisé, à ma connaissance, qu'au sein de la famille SUSE.

    Migrer vers firewalld

    Si vous êtes sur Leap 42.3, je vous conseille d'attendre que Leap 15 arrive, rien ne presse. Vous verrez à ce moment là. Après vous faites ce que vous voulez.

    Si vous êtes sur Tumbleweed, vous pouvez y penser dès maintenant. Surtout que le module pare-feu de YaST a été supprimé et ne fait plus que pointer vers l'outil de configuration graphique de firewalld, ce qui rend plus difficile la configuration de SuSEfirewall2.

    Sans rien importer

    Si vous n'aviez aucune règle particulière dans SFW2, vous pouvez faire la transition directement :

    Code:
    # Arrêter SFW2, purge les règles iptables actives
    systemctl stop SuSEfirewall2
    
    # Démarrer firewalld
    systemctl start firewalld
    
    # Pour que firewalld soit lancé lors du démarrage du système 
    systemctl enable firewalld 
    
    # Pour que SFW2 ne soit plus lancé lors du démarrage du système
    systemctl disable SuSEfirewall2
    Normalement, vos interfaces réseau devraient être placées par défaut dans la zone public, ce qui n'est pas mal :

    Code HTML:
    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <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.</description>
      <service name="ssh"/>
      <service name="dhcpv6-client"/>
    </zone>
    … mis à part que l'accès par SSH est autorisé dans cette zone, ce qui à mon avis n'est pas pas un bon choix par défaut.

    Cela dit, ça prend trois clics à changer via l'interface graphique : il suffit de décocher ssh dans la liste et de sauvegarder la configuration via Options → Exécution sur Permanent. Donc ça va.


    Pro-tip : les fichiers de configuration par défaut sont dans /usr/lib/firewalld tandis que votre propre configuration se retrouvera dans /etc/firewalld.

    En important les règles SuSEfirewall2 avec susefirewall2-to-firewalld

    Si vous aviez des règles personnalisées dans SFW2, vous pouvez les importer dans firewalld via le script susefirewall2-to-firewalld.

    Exécuter le script sans option va vous proposer une configuration :

    Code:
    ~# susefirewall2-to-firewalld 
    INFO: Reading the /etc/sysconfig/SuSEfirewall2 file
    INFO: Ensuring all firewall services are in a well-known state.
    INFO: This will start/stop/restart firewall services and it's likely
    INFO: to cause network disruption.
    INFO: If you do not wish for this to happen, please stop the script now!
    5...4...3...2...1...Lets do it!
    INFO: Stopping firewalld
    INFO: Restarting SuSEfirewall2_init
    INFO: Restarting SuSEfirewall2
    INFO: Allowing bridged traffic (physdev extension)
    INFO: ICMP: Adding icmp type="4[source-quench]" to zone="ext"
    INFO: ICMP: Adding icmp type="4[source-quench]" to zone="int"
    INFO: ICMP: Adding icmp type="8[echo-request]" to zone="ext"
    INFO: ICMP: Adding icmp type="8[echo-request]" to zone="int"
    INFO: DIRECT: Adding direct rule="ipv6 -t filter -A INPUT -p udp -m udp --dport 546 -j ACCEPT"
    INFO: Allowing bridged traffic (physdev extension)
    INFO: ICMP: Adding icmp type="133[router-solicitation]" to zone="ext"
    INFO: ICMP: Adding icmp type="133[router-solicitation]" to zone="int"
    INFO: ICMP: Adding icmp type="134[router-advertisement]" to zone="ext"
    INFO: ICMP: Adding icmp type="134[router-advertisement]" to zone="int"
    INFO: ICMP: Adding icmp type="135[neighbour-solicitation]" to zone="ext"
    INFO: ICMP: Adding icmp type="135[neighbour-solicitation]" to zone="int"
    INFO: ICMP: Adding icmp type="136[neighbour-advertisement]" to zone="ext"
    INFO: ICMP: Adding icmp type="136[neighbour-advertisement]" to zone="int"
    INFO: ICMP: Adding icmp type="137[redirect]" to zone="ext"
    INFO: ICMP: Adding icmp type="137[redirect]" to zone="int"
    INFO: ICMP: Adding icmp type="130[multicast-listener-query]" to zone="ext"
    INFO: ICMP: Adding icmp type="130[multicast-listener-query]" to zone="int"
    INFO: Interface "p1p1" will be added to the "ext" zone
    INFO: Interface "virbr0" will be added to the "ext" zone
    INFO: Interface "virbr0-nic" will be added to the "ext" zone
    INFO: Interface "wlp9s0" will be added to the "ext" zone
    INFO: Stopping SuSEfirewall2
    INFO: Stopping SuSEfirewall2_init
    INFO: Starting firewalld
    INFO: Resetting Zone: "block"
    INFO: Resetting Zone: "dmz"
    INFO:  -> Removing service: "ssh"
    INFO: Resetting Zone: "drop"
    INFO: Resetting Zone: "external"
    INFO:  -> Removing masquerade
    INFO:  -> Removing service: "ssh"
    INFO: Resetting Zone: "home"
    INFO:  -> Removing service: "ssh"
    INFO:  -> Removing service: "mdns"
    INFO:  -> Removing service: "samba-client"
    INFO:  -> Removing service: "dhcpv6-client"
    INFO: Resetting Zone: "internal"
    INFO:  -> Removing service: "ssh"
    INFO:  -> Removing service: "mdns"
    INFO:  -> Removing service: "samba-client"
    INFO:  -> Removing service: "dhcpv6-client"
    INFO: Resetting Zone: "public"
    INFO:  -> Removing service: "ssh"
    INFO:  -> Removing service: "dhcpv6-client"
    INFO:  -> Removing interface: "wlp9s0"
    INFO: Resetting Zone: "trusted"
    INFO: Resetting Zone: "work"
    INFO:  -> Removing service: "ssh"
    INFO:  -> Removing service: "dhcpv6-client"
    INFO: 
    INFO: FirewallD has been reset!
    INFO: 
    INFO: Setting default zone to "external"
    INFO: Adding interface="p1p1" to zone="external"
    INFO: Adding interface="virbr0" to zone="external"
    INFO: Adding interface="virbr0-nic" to zone="external"
    INFO: Adding interface="wlp9s0" to zone="external"
    INFO: Blocking icmp="address-unreachable" for zone="internal"
    INFO: Blocking icmp="bad-header" for zone="internal"
    INFO: Blocking icmp="beyond-scope" for zone="internal"
    INFO: Blocking icmp="communication-prohibited" for zone="internal"
    INFO: Blocking icmp="destination-unreachable" for zone="internal"
    INFO: Blocking icmp="echo-reply" for zone="internal"
    INFO: Blocking icmp="failed-policy" for zone="internal"
    INFO: Blocking icmp="fragmentation-needed" for zone="internal"
    INFO: Blocking icmp="host-precedence-violation" for zone="internal"
    INFO: Blocking icmp="host-prohibited" for zone="internal"
    INFO: Blocking icmp="host-redirect" for zone="internal"
    INFO: Blocking icmp="host-unknown" for zone="internal"
    INFO: Blocking icmp="host-unreachable" for zone="internal"
    INFO: Blocking icmp="ip-header-bad" for zone="internal"
    INFO: Blocking icmp="network-prohibited" for zone="internal"
    INFO: Blocking icmp="network-redirect" for zone="internal"
    INFO: Blocking icmp="network-unknown" for zone="internal"
    INFO: Blocking icmp="network-unreachable" for zone="internal"
    INFO: Blocking icmp="no-route" for zone="internal"
    INFO: Blocking icmp="packet-too-big" for zone="internal"
    INFO: Blocking icmp="parameter-problem" for zone="internal"
    INFO: Blocking icmp="port-unreachable" for zone="internal"
    INFO: Blocking icmp="precedence-cutoff" for zone="internal"
    INFO: Blocking icmp="protocol-unreachable" for zone="internal"
    INFO: Blocking icmp="reject-route" for zone="internal"
    INFO: Blocking icmp="required-option-missing" for zone="internal"
    INFO: Blocking icmp="source-route-failed" for zone="internal"
    INFO: Blocking icmp="time-exceeded" for zone="internal"
    INFO: Blocking icmp="timestamp-reply" for zone="internal"
    INFO: Blocking icmp="timestamp-request" for zone="internal"
    INFO: Blocking icmp="tos-host-redirect" for zone="internal"
    INFO: Blocking icmp="tos-host-unreachable" for zone="internal"
    INFO: Blocking icmp="tos-network-redirect" for zone="internal"
    INFO: Blocking icmp="tos-network-unreachable" for zone="internal"
    INFO: Blocking icmp="ttl-zero-during-reassembly" for zone="internal"
    INFO: Blocking icmp="ttl-zero-during-transit" for zone="internal"
    INFO: Blocking icmp="unknown-header-type" for zone="internal"
    INFO: Blocking icmp="unknown-option" for zone="internal"
    INFO: Blocking icmp="address-unreachable" for zone="dmz"
    INFO: Blocking icmp="bad-header" for zone="dmz"
    INFO: Blocking icmp="beyond-scope" for zone="dmz"
    INFO: Blocking icmp="communication-prohibited" for zone="dmz"
    INFO: Blocking icmp="destination-unreachable" for zone="dmz"
    INFO: Blocking icmp="echo-reply" for zone="dmz"
    INFO: Blocking icmp="echo-request" for zone="dmz"
    INFO: Blocking icmp="failed-policy" for zone="dmz"
    INFO: Blocking icmp="fragmentation-needed" for zone="dmz"
    INFO: Blocking icmp="host-precedence-violation" for zone="dmz"
    INFO: Blocking icmp="host-prohibited" for zone="dmz"
    INFO: Blocking icmp="host-redirect" for zone="dmz"
    INFO: Blocking icmp="host-unknown" for zone="dmz"
    INFO: Blocking icmp="host-unreachable" for zone="dmz"
    INFO: Blocking icmp="ip-header-bad" for zone="dmz"
    INFO: Blocking icmp="neighbour-advertisement" for zone="dmz"
    INFO: Blocking icmp="neighbour-solicitation" for zone="dmz"
    INFO: Blocking icmp="network-prohibited" for zone="dmz"
    INFO: Blocking icmp="network-redirect" for zone="dmz"
    INFO: Blocking icmp="network-unknown" for zone="dmz"
    INFO: Blocking icmp="network-unreachable" for zone="dmz"
    INFO: Blocking icmp="no-route" for zone="dmz"
    INFO: Blocking icmp="packet-too-big" for zone="dmz"
    INFO: Blocking icmp="parameter-problem" for zone="dmz"
    INFO: Blocking icmp="port-unreachable" for zone="dmz"
    INFO: Blocking icmp="precedence-cutoff" for zone="dmz"
    INFO: Blocking icmp="protocol-unreachable" for zone="dmz"
    INFO: Blocking icmp="redirect" for zone="dmz"
    INFO: Blocking icmp="reject-route" for zone="dmz"
    INFO: Blocking icmp="required-option-missing" for zone="dmz"
    INFO: Blocking icmp="router-advertisement" for zone="dmz"
    INFO: Blocking icmp="router-solicitation" for zone="dmz"
    INFO: Blocking icmp="source-quench" for zone="dmz"
    INFO: Blocking icmp="source-route-failed" for zone="dmz"
    INFO: Blocking icmp="time-exceeded" for zone="dmz"
    INFO: Blocking icmp="timestamp-reply" for zone="dmz"
    INFO: Blocking icmp="timestamp-request" for zone="dmz"
    INFO: Blocking icmp="tos-host-redirect" for zone="dmz"
    INFO: Blocking icmp="tos-host-unreachable" for zone="dmz"
    INFO: Blocking icmp="tos-network-redirect" for zone="dmz"
    INFO: Blocking icmp="tos-network-unreachable" for zone="dmz"
    INFO: Blocking icmp="ttl-zero-during-reassembly" for zone="dmz"
    INFO: Blocking icmp="ttl-zero-during-transit" for zone="dmz"
    INFO: Blocking icmp="unknown-header-type" for zone="dmz"
    INFO: Blocking icmp="unknown-option" for zone="dmz"
    INFO: Blocking icmp="address-unreachable" for zone="external"
    INFO: Blocking icmp="bad-header" for zone="external"
    INFO: Blocking icmp="beyond-scope" for zone="external"
    INFO: Blocking icmp="communication-prohibited" for zone="external"
    INFO: Blocking icmp="destination-unreachable" for zone="external"
    INFO: Blocking icmp="echo-reply" for zone="external"
    INFO: Blocking icmp="failed-policy" for zone="external"
    INFO: Blocking icmp="fragmentation-needed" for zone="external"
    INFO: Blocking icmp="host-precedence-violation" for zone="external"
    INFO: Blocking icmp="host-prohibited" for zone="external"
    INFO: Blocking icmp="host-redirect" for zone="external"
    INFO: Blocking icmp="host-unknown" for zone="external"
    INFO: Blocking icmp="host-unreachable" for zone="external"
    INFO: Blocking icmp="ip-header-bad" for zone="external"
    INFO: Blocking icmp="network-prohibited" for zone="external"
    INFO: Blocking icmp="network-redirect" for zone="external"
    INFO: Blocking icmp="network-unknown" for zone="external"
    INFO: Blocking icmp="network-unreachable" for zone="external"
    INFO: Blocking icmp="no-route" for zone="external"
    INFO: Blocking icmp="packet-too-big" for zone="external"
    INFO: Blocking icmp="parameter-problem" for zone="external"
    INFO: Blocking icmp="port-unreachable" for zone="external"
    INFO: Blocking icmp="precedence-cutoff" for zone="external"
    INFO: Blocking icmp="protocol-unreachable" for zone="external"
    INFO: Blocking icmp="reject-route" for zone="external"
    INFO: Blocking icmp="required-option-missing" for zone="external"
    INFO: Blocking icmp="source-route-failed" for zone="external"
    INFO: Blocking icmp="time-exceeded" for zone="external"
    INFO: Blocking icmp="timestamp-reply" for zone="external"
    INFO: Blocking icmp="timestamp-request" for zone="external"
    INFO: Blocking icmp="tos-host-redirect" for zone="external"
    INFO: Blocking icmp="tos-host-unreachable" for zone="external"
    INFO: Blocking icmp="tos-network-redirect" for zone="external"
    INFO: Blocking icmp="tos-network-unreachable" for zone="external"
    INFO: Blocking icmp="ttl-zero-during-reassembly" for zone="external"
    INFO: Blocking icmp="ttl-zero-during-transit" for zone="external"
    INFO: Blocking icmp="unknown-header-type" for zone="external"
    INFO: Blocking icmp="unknown-option" for zone="external"
    INFO: Enabling direct rule=ipv4 -t filter -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
    INFO: Enabling direct rule=ipv6 -t filter -A INPUT -p udp -m udp --dport 546 -j ACCEPT
    INFO: Enabling direct rule=ipv6 -t filter -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
    INFO: Enable logging for denied packets
    INFO: ##################################################################################
    INFO: 
    INFO: The dry-run has been completed. Please check the above output to ensure
    INFO: that everything looks good.
    INFO: 
    INFO: ##################################################################################
    INFO: Stopping firewalld
    INFO: Restarting SuSEfirewall2_init
    INFO: Restarting SuSEfirewall2
    ~#
    On aperçoit notamment que le script :

    • remet à zéro la configuration des zones dans firewalld (block, drop, external, home, internal, public, trusted)
    • associe les interfaces réseaux aux zones définies dans SFW2 (dans mon cas je mettais toutes mes interfaces dans external)
    • peuple les zones avec ses propres règles
    • crée des règles personnalisées (direct rules)

    Si cette configuration vous paraît bonne, vous pouvez l'appliquer en rappelant le script avec l'option -c (commit).

    Code:
    ~# susefirewall2-to-firewalld -c
    INFO: Reading the /etc/sysconfig/SuSEfirewall2 file
    INFO: Ensuring all firewall services are in a well-known state.
    INFO: This will start/stop/restart firewall services and it's likely
    INFO: to cause network disruption.
    INFO: If you do not wish for this to happen, please stop the script now!
    5...4...3...2...1...Lets do it!
    INFO: Stopping firewalld
    […]
    INFO: ##################################################################################
    INFO: 
    INFO: Your SuSEfirewall2 rules have been migrated to FirewallD. A celebration is in *****!
    INFO: 
    INFO: Please note that the firewalld rules haven't been made permanent yet.
    INFO: Use 'firewall-cmd --list-all-zones' to verify you are happy with the proposed
    INFO: configuration and then use 'firewall-cmd --runtime-to-permanent' to make it permanent.
    INFO: However, you are advised to look at the following resources and/or
    INFO: commands before making permanent changes to your firewall:
    INFO: 
    INFO: - http://www.firewalld.org/documentation/
    INFO: - firewall-cmd --help
    INFO: - firewall-cmd --list-all-zones
    INFO: - firewall-cmd --direct --get-all-passthrough
    INFO: - And the firewalld manpages of course!
    INFO: 
    INFO: ##################################################################################
    ~#
    Cela aura pour effet d'arêter SuSEfirewall2 et de démarrer firewalld avec les nouvelles règles :

    Pour rendre persistants les changements d'un redémarrage à l'autre, faites un :

    Code:
    ~# firewall-cmd --runtime-to-permanent
    success
    ~#
    Et voilà ! ■


    Liens utiles :
    Commentaires 4 Commentaires
    1. Avatar de Vigen
      Vigen -
      Merci pour ce billet Antoine.

      Si je comprend bien, la migration sur la version 15, feras que l'on passeras automatiquement sous firewalld?
    1. Avatar de Antoine
      Antoine -
      Citation Envoyé par Vigen Voir le message
      Si je comprend bien, la migration sur la version 15, feras que l'on passeras automatiquement sous firewalld?
      Non à ma connaissance il n'y a aucun passage automatique à firewalld de prévu pour le moment sur migration Leap 42.3 → 15.

      Des indications seront peut-être ajoutées aux notes de version de Leap 15 au moment de sa sortie.

      Dans tous les cas rien ne presse sur Leap : le module pare-feu de YaST est encore opérationnel sur la 42.3 donc il n'y a pas grand intérêt à passer à firewalld maintenant.
    1. Avatar de ahlner
      ahlner -
      Antoine,
      Merci pour ce tutoriel détaillé.
      Pour "susefirewall2-to-firewalld", il a fallu l'installer.
      Après un moulinage de quelques minutes inquiétantes, j'ai vu que le script réactivait SFWD comme dans ton message. Alors direction Yast Système Gestionnaire de services pour vérifier que FWD est bien réglé, et mis hors service les deux "SFD" pour l'éternité, ou presque.
      Cela a été l'occasion de visiter le pare-feu, pour la première fois.
    1. Avatar de Vigen
      Vigen -
      Merci pour cette précision de migration Antoine
  • Dons / Adhésion


    Dons
    Si vous aimez notre site web et que vous voulez participer financièrement, vous pouvez nous faire un don grâce à PayPal.


    Choisissez votre somme, et cliquez sur le bouton "donate" ci-dessous.



    Adhésion
    Si vous désirez être membre de notre association, vous pouvez aussi adhérer grâce à PayPal.


    Cliquez sur le bouton "PayPal" ci-dessous.

  • SUSECon 2017

     
    SUSEcon 2017
     
     
  • Derniers commentaires d'articles

    Vigen

    Compte rendu du salon Paris OpenSource Summit

    Petit déterrage de news :)

    Reste t'il des goodies à vendre? Voir le dernier message

    Vigen le Hier 08h52
    Vigen

    openSUSE Leap 15 Build 109.3 : le temps des bêtas arrive

    Bonjour,

    Petite question :

    "Un problème connu est que la mise à niveau depuis Leap 42.3... Voir le dernier message

    Vigen le 16/02/2018 14h24
    Vigen

    openSUSE dit adieu à SuSEfirewall2

    Merci pour cette précision de migration Antoine ;) Voir le dernier message

    Vigen le 13/02/2018 19h10
    ahlner

    openSUSE dit adieu à SuSEfirewall2

    Antoine,
    Merci pour ce tutoriel détaillé.
    Pour "susefirewall2-to-firewalld", il a fallu... Voir le dernier message

    ahlner le 12/02/2018 23h08