Opretholdelse af netværkssikkerhed er nøglen til systemadministratorer, og det er en vigtig færdighed at lære at konfigurere firewall via kommandolinjen. Artiklen vil fremhæve, hvordan du styrer firewallen med firewall-cmd i Linux-kommandolinjen.
En firewall er i det væsentlige software, som du kan konfigurere til at kontrollere indgående og udgående netværkstrafik. Firewalls kan forhindre andre brugere i at bruge netværkstjenester på et system, du kører. De fleste Linux-systemer leveres med en standard firewall. Tidligere versioner af Linux-systemer har brugt iptables som dæmonen for pakkefiltrering. Nyere versioner af Fedora, RHEL / CentOS, openSUSE sendes med Firewalld som standard firewall-dæmon. Du kan også installere Firewalld i distancer fra Debian og Ubuntu.
Jeg anbefaler, at du bruger Firewalld i stedet for iptables. Tag ikke bare mit ord for det. Lær mere fra vores omfattende guide til de tilgængelige open source-firewalls til dit Linux-system.
Firewalld er en dynamisk dæmon til styring af firewalls med understøttelse af netværk eller firewallzoner. Firewall-zoner definerer netværkssikkerhedstillidsniveauer for netværksgrænseflader, tjenester eller forbindelser. Netværkssikkerhedssystemadministratorer har fundet Firewalld til at fungere godt med IPv4, IPv6, IP-sæt og Ethernet-broer. For at administrere Firewalld kan du bruge firewall-cmd terminalkommando eller firewall-config GUI-konfigurationsværktøj.
Denne vejledning bruger firewall-cmd kommando til at administrere netværkssikkerhed, og vores testmiljø er Fedora Workstation 33.
Lad os lære et par netværksbasics, inden vi bliver alle tekniske.
Grundlæggende om netværk
En computer tilsluttet et netværk tildeles en IP-adresse, der bruges til routing af data. Computere har også porte i området 0-65535, der fungerer som forbindelsespunkter på IP-adressen. Applikationer reserverer muligvis specifikke porte. Webservere reserverer typisk port 80 til sikker HTTP-kommunikation. I det væsentlige er portintervaller 0 - 1024 forbeholdt velkendte formål og systemet.
De to vigtigste internetoverførselsprotokoller (TCP & UDP) bruger disse porte under netværkskommunikation. En værtscomputer opretter en forbindelse mellem en kilde-IP-adresse og port (port 80 for ikke-sikker HTTP) og destinationsadressen og porten.
For at administrere netværkssikkerhed kan firewallsoftware tillade eller blokere dataoverførsel eller kommunikation baseret på regler som porte eller IP-adresser.
Installation af Firewalld
Fedora, RHEL / CentOS 7/8, openSUSE
Firewalld er som standard installeret i Fedora, RHEL / CentOS 7/8 og openSUSE. Hvis ikke, kan du installere det ved hjælp af følgende kommando:
# yum installer firewalld -y
ELLER
#dnf installer firewalld -y
Debian / Ubuntu
Ubuntu-systemer leveres som standard med den ukomplicerede firewall. For at bruge firewalld skal du aktivere universets lager og deaktivere den ukomplicerede firewall.
sudo add-apt-repository univers
sudo apt installere firewalld
Deaktiver ukompliceret firewall:
sudo systemctl deaktiver ufw
Aktivér firewalld ved opstartstid:
sudo systemctl aktiv -now firewalld
Bekræft, at Firewalld kører:
sudo firewall-cmd -tilstand
kører
Firewall-zoner
Firewalld gør konfigurationen af din firewall enkel ved at oprette standardzoner. Zoner er et sæt regler, der passer til de daglige behov hos de fleste Linux-administratorer. En firewallzone kan definere pålidelige eller nægtede niveauer for tjenester og porte.
- Pålidelig zone: Alle netværksforbindelser accepteres og bruges kun i pålidelige miljøer som et familiehjem eller et testlaboratorium.
- Offentlig zone: Du kan kun definere regler for at tillade specifikke porte at åbne forbindelser, mens andre forbindelser slettes. Det kan bruges i offentlige områder, når du ikke stoler på andre værter i netværket.
- Hjemme, interne, arbejdsområder: De fleste indgående forbindelser accepteres i disse tre zoner. Indgående forbindelser ekskluderer trafik på havne, der ikke forventer nogen forbindelse eller aktivitet. Du kan anvende det i hjemmeforbindelser, hvor der er en generel tillid hos de andre brugere på netværket. Det tillader kun de valgte indgående forbindelser.
- Bloker zone: Dette er en ekstremt paranoid firewallindstilling, hvor kun forbindelser, der initieres fra netværket eller serveren, er mulige. Alle indgående forbindelser til netværket afvises, og der udsendes en ICMP-vært-forbudt meddelelse.
- DMZ-zone: Den demilitariserede zone kan bruges til at give adgang til nogle tjenester for offentligheden. Kun valgte forbindelser accepteres. Det er en vigtig mulighed for visse typer servere i en organisations netværk.
- Ekstern zone: Når denne er aktiveret, fungerer denne zone som en router og kan bruges i eksterne netværk med maskering aktiveret. IP-adressen på dit private netværk er kortlagt og skjult bag en offentlig IP-adresse. Kun de valgte indgående forbindelser accepteres, inklusive SSH.
- Drop zone: Eventuelle indkommende pakker droppes uden svar. Denne zone tillader kun udgående netværksforbindelser.
Eksempel på standardzoner defineret af Fedora-arbejdsstation 33
cat / usr / lib / firewalld / zones / FedoraWorkstation.xmlFedora arbejdsstation Uopfordrede indgående netværkspakker afvises fra port 1 til 1024 undtagen udvalgte netværkstjenester. [firewall] Indgående pakker, der er relateret til udgående netværksforbindelser, accepteres. Udgående netværksforbindelser er tilladt.
Få din nuværende zone:
Du kan bruge - - få-aktive-zoner flag for at kontrollere de aktuelt aktive zoner i dit system.
sudo firewall-cmd - get-active-zoner
[sudo] adgangskode til tuts:
FedoraWorkstation
grænseflader: wlp3s0
libvirt
grænseflader: virbr0
Standardzonen på Fedora Workstation 33 i FedoraWorkstation-zonen
Hent standardzone & alle definerede zoner:
sudo firewall-cmd --get-standard-zone
[sudo] adgangskode til tuts:
FedoraWorkstation
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-zoner
FedoraServer Fedora Workstation blok dmz drop eksternt hjem internt libvirt nm-delt offentligt betroet arbejde
Liste over tjenester:
Du kan få de tjenester, firewallen giver andre systemer adgang til ved hjælp af - -liste-tjenester flag.
[tuts @ fosslinux ~] $ sudo firewall-cmd - list-services
dhcpv6-klient mdns samba-klient ssh
På Fedora Linux 33 giver firewallen adgang til fire tjenester (dhcpv6-client mdns samba-client ssh) med velkendte portnumre.
Liste over firewallportindstillinger:
Du kan bruge - -liste-porte flag for at se andre portindstillinger i enhver zone.
tuts @ fosslinux ~] $ sudo firewall-cmd --list-porte --zone = FedoraWorkstation
[sudo] adgangskode til tuts:
1025-65535 / udp 1025-65535 / tcp
Vi har specificeret den zone, der skal kontrolleres, ved hjælp af indstillingen - -zone = FedoraWorkstaion.
Håndtering af zoner, porte og tjenester
Firewall-konfigurationer kan konfigureres som enten runtime eller permanent. Alle firewall-cmd-handlinger varer kun, indtil computeren eller firewallen genstarter. Du skal oprette permanente indstillinger med -permanent-flag.
Opret en zone
For at oprette en zone skal du bruge - -ny zone flag.
Eksempel:
Opret en ny permanent zone kaldet fosscorp:
[tuts @ fosslinux ~] $ sudo firewall-cmd - ny-zone fosscorp --permanent
[sudo] adgangskode til tuts:
succes
Genindlæs firewallreglerne for at aktivere den nye zone:
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
Tilføj ssh-tjeneste til fosscorp-zonen, så du kan få adgang til den eksternt:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone fosscorp --add-service ssh --permanent
[sudo] adgangskode til tuts:
succes
Bekræft, at din nye zone 'fosscorp' er aktiv:
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-zoner
FedoraServer FedoraWorkstation blok dmz drop ekstern fosscorp internt internt libvirt nm-delt offentligt betroet arbejde
Din nye zone fosscorp er nu aktiv, og den afviser alle indgående forbindelser undtagen SSH-trafik.
Brug - -skift-interface flag for at gøre zonen fosscorp til den aktive og standardzone for et netværksinterface (wlp3s0), du vil beskytte:
[tuts @ fosslinux ~] $ sudo firewall-cmd --change-interface wlp3s0 \
> --zone fosscorp - permanent
Interfacet er under [firewall] kontrol af NetworkManager, der indstiller zone til 'fosscorp'.
succes
Hvis du vil indstille fosscorp som standard- og primærzone, skal du køre følgende kommando:
[tuts @ fosslinux ~] $ sudo firewall-cmd --set-default fosscorp
succes
Se de zoner, der aktuelt er tildelt til hver grænseflade ved hjælp af - -få-aktive-zoner flag:
[tuts @ fosslinux ~] $ sudo firewall-cmd - get-active-zones
fosscorp
grænseflader: wlp3s0
Tilføj og fjern tjenester:
En hurtig måde at tillade trafik gennem din firewall er at tilføje en foruddefineret tjeneste.
Liste over tilgængelige foruddefinerede tjenester:
tuts @ fosslinux ~] $ sudo firewall-cmd --get-services
[sudo] adgangskode til tuts:
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc
bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit kondorsamler ctdb dhcp dhcpv6 dhcpv6-klient
[…]
Fjern blokering af en foruddefineret tjeneste
Du kan tillade HTTPS-trafik (eller enhver anden foruddefineret tjeneste) gennem din firewall ved hjælp af - -tilføjelsestjeneste flag.
[tuts @ fosslinux ~] $ sudo firewall-cmd --add-service https --permanent
succes
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
Du kan også fjerne tjenesten med - -fjern service flag:
[tuts @ fosslinux ~] $ sudo firewall-cmd - fjern-service https --permanent
succes
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
Tilføj og fjern porte
Du kan også tilføje et portnummer og en prototype direkte med -add-port-flag. Tilføjelse af et portnummer direkte kan være nyttigt, når en foruddefineret tjeneste ikke findes.
Eksempel:
Du kan tilføje det ikke-standardiserede havn 1717 for SSH til din brugerdefinerede zone ved hjælp af følgende kommando:
[tuts @ fosslinux ~] $ sudo firewall-cmd --add-port 1717 / tcp --permanent
[sudo] adgangskode til tuts:
succes
[tuts @ fosslinux ~] $ sudo firewall-cmd -reload
Fjern porten ved hjælp af indstillingen -remove-port flag:
[tuts @ fosslinux ~] $ sudo firewall-cmd - fjern-port 1717 / tcp --permanent
succes
[tuts @ fosslinux ~] $ sudo firewall-cmd -reload
Du kan også angive en zone, der skal tilføjes eller fjerne en port ved at tilføje -zone-flag i kommandoen:
Tilføj port 1718 til TCP-forbindelse til FedoraWorstation-zonen:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone = FedoraWorkstation --permanent --add-port = 1718 / tcp
succes
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
succes
Bekræft, om ændringerne er trådt i kraft:
[tuts @ fosslinux ~] $ sudo firewall-cmd - list-all
FedoraWorkstation (aktiv)
mål: standard
icmp-blok-inversion: nej
grænseflader: wlp3s0
kilder:
tjenester: dhcpv6-klient mdns samba-klient ssh
porte: 1025-65535 / udp 1025-65535 / tcp 1718 / tcp
protokoller:
maskerade: nej
fremadgående porte:
kilde-porte:
icmp-blokke:
rige regler:
Bemærk: Under porte har vi tilføjet havnenummer 1718 for at tillade TCP-trafik.
Du kan fjerne port 1718 / tcp ved at køre følgende kommando:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone = FedoraWorkstation --permanent --remove-port = 1718 / tcp
succes
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
succes
Bemærk: Hvis du vil gøre dine ændringer permanente, skal du tilføje - -permanent flag til dine kommandoer.
Resumé
Firewalld er et fantastisk værktøj til at styre din netværkssikkerhed. Den bedste måde at øge dine systemadministratoriske færdigheder på er at få praktisk erfaring. Jeg kan varmt anbefale at installere Fedora i din yndlings virtuelle maskine (VM) eller i kasser for at eksperimentere med alle tilgængelige firewall-cmd-funktioner. Du kan lære flere firewall-cmd-funktioner fra den officielle Firewalld-startside.