firewall-cmd în Linux / Bash

Permisiuni și securitate firewalld (Fedora, RHEL / AlmaLinux / Rocky 7+)

Administrează firewall-ul firewalld (Fedora, RHEL, AlmaLinux): zone, servicii și porturi deschise, temporar sau permanent.

Sintaxă comandă
firewall-cmd [--zone=ZONĂ] [--permanent] ACȚIUNE

Ce face firewall-cmd

firewalld este firewall-ul implicit pe Fedora și pe familia Red Hat (RHEL, AlmaLinux, Rocky Linux); firewall-cmd este clientul lui în linie de comandă. Regulile se grupează pe zone (de exemplu public, internal), iar fiecare interfață de rețea aparține unei zone.

Orice modificare fără --permanent se aplică imediat, dar se pierde la repornire. Cu --permanent se scrie în configurație, dar nu se aplică până la --reload. De aceea, de obicei rulezi comanda cu --permanent și apoi --reload.

Opțiuni și argumente

Opțiune / Parametru Descriere
--state Arată dacă firewalld rulează.
--get-active-zones Zonele active și interfețele din ele.
--list-all Tot ce este permis în zona implicită (sau în cea dată cu --zone).
--add-service=NUME Deschide un serviciu cunoscut (http, https, ssh).
--add-port=PORT/tcp Deschide un port anume (de exemplu 8080/tcp).
--remove-service / --remove-port Închide din nou serviciul sau portul.
--permanent Scrie regula în configurația permanentă.
--reload Reîncarcă configurația permanentă fără a întrerupe conexiunile existente.

Exemple

Exemplul 1: Starea firewall-ului și regulile zonei

Pe un server nou sunt permise doar SSH și câteva servicii de bază.

sudo firewall-cmd --state
sudo firewall-cmd --list-all

Ieșire în terminal

running
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Exemplul 2: Deschiderea permanentă a HTTP și HTTPS

Fiecare comandă reușită răspunde cu success. Ultima comandă confirmă serviciile din configurația activă.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

Ieșire în terminal

success
success
success
cockpit dhcpv6-client http https ssh

Exemplul 3: Port temporar pentru un test

Fără --permanent, portul 8080 rămâne deschis doar până la repornire sau la următorul --reload.

sudo firewall-cmd --add-port=8080/tcp
sudo firewall-cmd --list-ports

Ieșire în terminal

success
8080/tcp

Greșeli frecvente

  • Adăugarea unei reguli doar cu --permanent și surprinderea că nu funcționează: lipsește --reload.
  • Folosirea simultană a firewalld și a altor unelte (ufw, reguli iptables scrise manual) pe același server, cu reguli care se contrazic.
  • Lucrul la regulile SSH printr-o conexiune SSH fără o a doua sesiune deschisă: o greșeală te poate bloca afară.

Comenzi înrudite

  • ss: Utilitar modern și ultra-rapid pentru investigarea socket-urilor și a conexiunilor de rețea.
  • systemctl: Controlează sistemul de inițializare systemd și administrează serviciile (demoni de fundal).