Å opprettholde nettverkssikkerhet er nøkkelen for systemadministratorer og å konfigurere brannmuren via kommandolinjen er en viktig ferdighet å lære. Artikkelen vil fremheve hvordan du administrerer brannmuren med brannmur-cmd i Linux-kommandolinjen.
En brannmur er egentlig programvare som du kan konfigurere for å kontrollere innkommende og utgående nettverkstrafikk. Brannmurer kan forhindre andre brukere i å bruke nettverkstjenester på et system du kjører. De fleste Linux-systemer leveres med en standard brannmur. Tidligere versjoner av Linux-systemer har brukt iptables som demon for pakkefiltrering. Nyere versjoner av Fedora, RHEL / CentOS, openSUSE leveres med Firewalld som standard brannmurdememon. Du kan også installere Firewalld i distribusjoner fra Debian og Ubuntu.
Jeg anbefaler at du bruker Firewalld i stedet for iptables. Ikke bare ta ordet mitt for det. Lær mer fra vår omfattende guide om tilgjengelige åpen kildekode-brannmurer for Linux-systemet ditt.
Firewalld er en dynamisk demon for å administrere brannmurer med støtte for nettverks- eller brannmursoner. Brannmurssoner definerer tillitsnivåer for nettverksgrensesnitt, tjenester eller tilkoblinger. Nettverkssikkerhetssystemadministratorer har funnet Firewalld å fungere bra med IPv4, IPv6, IP-sett og Ethernet-broer. For å administrere Firewalld kan du bruke firewall-cmd terminal-kommandoen eller GUI-konfigurasjonsverktøyet for brannmurkonfigurasjon.
Denne guiden vil bruke brannmur-cmd kommando for å administrere nettverkssikkerhet, og vårt testmiljø vil være Fedora Workstation 33.
Før vi blir tekniske, la oss lære noen grunnleggende nettverk.
Grunnleggende om nettverk
En datamaskin som er koblet til et nettverk, tildeles en IP-adresse som brukes til ruting av data. Datamaskiner har også porter i området 0-65535, som fungerer som tilkoblingspunkter på IP-adressen. Applikasjoner kan reservere spesifikke porter. Webservere reserverer vanligvis port 80 for sikker HTTP-kommunikasjon. I hovedsak er portområdene 0 - 1024 reservert for kjente formål og systemet.
De to viktigste Internett-dataoverføringsprotokollene (TCP & UDP) bruker disse portene under nettverkskommunikasjon. En vertsdatamaskin oppretter en forbindelse mellom en kilde-IP-adresse og port (port 80 for ikke-sikker HTTP) og destinasjonsadressen og porten.
For å administrere nettverkssikkerhet kan brannmurprogramvare tillate eller blokkere dataoverføring eller kommunikasjon basert på regler som porter eller IP-adresser.
Installere Firewalld
Fedora, RHEL / CentOS 7/8, openSUSE
Firewalld er installert som standard i Fedora, RHEL / CentOS 7/8 og openSUSE. Hvis ikke, kan du installere den ved hjelp av følgende kommando:
# yum install firewallld -y
ELLER
#dnf installer firewalld -y
Debian / Ubuntu
Ubuntu-systemer leveres med den ukompliserte brannmuren som standard. Hvis du vil bruke firewalld, må du aktivere universellageret og deaktivere den ukompliserte brannmuren.
sudo add-apt-repository universet
sudo apt installere firewalld
Deaktiver ukomplisert brannmur:
sudo systemctl deaktiver ufw
Aktiver firewalld ved oppstartstid:
sudo systemctl aktiver -now firewalld
Bekreft at Firewalld kjører:
sudo brannmur-cmd -stat
løping
Brannmur soner
Firewalld gjør konfigurasjonen av brannmuren enkel ved å etablere standardsoner. Soner er et sett med regler som passer de daglige behovene til de fleste Linux-administratorer. En brannmur sone kan definere klarerte eller nektet nivåer for tjenester og porter.
- Klarert sone: Alle nettverkstilkoblinger godtas og brukes bare i pålitelige miljøer som et familiehjem eller et testlaboratorium.
- Offentlig sone: Du kan bare definere regler for å tillate at spesifikke porter åpner forbindelser mens andre tilkoblinger slettes. Den kan brukes i offentlige områder når du ikke stoler på andre verter i nettverket.
- Hjemme, interne, arbeidssoner: De fleste innkommende forbindelser aksepteres i disse tre sonene. Innkommende forbindelser ekskluderer trafikk på porter som ikke forventer noen tilkobling eller aktivitet. Du kan bruke den i hjemmeforbindelser der det er en generell tillit fra de andre brukerne på nettverket. Det tillater bare de valgte innkommende tilkoblingene.
- Blokk sone: Dette er en ekstremt paranoid brannmurinnstilling der bare tilkoblinger initiert fra nettverket eller serveren er mulige. Alle innkommende tilkoblinger til nettverket avvises, og det sendes en ICMP-vert-forbudt melding.
- DMZ-sone: Den demilitariserte sonen kan brukes til å gi tilgang til noen tjenester for publikum. Bare utvalgte tilkoblinger godtas. Det er et viktig alternativ for visse typer servere i organisasjonens nettverk.
- Ekstern sone: Når aktivert, vil denne sonen fungere som en ruter og kan brukes i eksterne nettverk med maskering aktivert. IP-adressen til ditt private nettverk er tilordnet og skjult bak en offentlig IP-adresse. Bare de valgte innkommende tilkoblingene godtas, inkludert SSH.
- Droppsone: Eventuelle innkommende pakker blir droppet uten svar. Denne sonen tillater bare utgående nettverkstilkoblinger.
Eksempel på standardsoner definert av Fedora arbeidsstasjon 33
cat / usr / lib / firewalld / zones / FedoraWorkstation.xmlFedora arbeidsstasjon Uoppfordrede innkommende nettverkspakker blir avvist fra port 1 til 1024, bortsett fra utvalgte nettverkstjenester. [brannmur] Innkommende pakker som er relatert til utgående nettverkstilkoblinger godtas. Utgående nettverkstilkoblinger er tillatt.
Få din nåværende sone:
Du kan bruke - - bli aktive soner flagg for å sjekke de aktive sonene i systemet ditt.
sudo firewall-cmd - get-active-zones
[sudo] passord for tuts:
FedoraWorkstation
grensesnitt: wlp3s0
libvirt
grensesnitt: virbr0
Standardsonen på Fedora Workstation 33 i FedoraWorkstation-sonen
Få standardsone og alle definerte soner:
sudo firewall-cmd --get-default-zone
[sudo] passord for tuts:
FedoraWorkstation
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-zones
FedoraServer Fedora arbeidsstasjon blokkerer dmz slipp eksternt hjem internt libvirt nm-delt offentlig klarert arbeid
Liste tjenester:
Du kan få tjenestene brannmuren gir andre systemer tilgang til ved hjelp av - -liste-tjenester flagg.
[tuts @ fosslinux ~] $ sudo firewall-cmd - list-services
dhcpv6-klient mdns samba-klient ssh
På Fedora Linux 33 gir brannmuren tilgang til fire tjenester (dhcpv6-client mdns samba-client ssh) med kjente portnumre.
Liste over brannmurportinnstillinger:
Du kan bruke - -liste-porter flagg for å se andre portinnstillinger i en hvilken som helst sone.
tuts @ fosslinux ~] $ sudo firewall-cmd --list-porter --zone = FedoraWorkstation
[sudo] passord for tuts:
1025-65535 / udp 1025-65535 / tcp
Vi har spesifisert sonen som skal kontrolleres ved hjelp av alternativet - -zone = FedoraWorkstaion.
Administrere soner, porter og tjenester
Brannmurkonfigurasjoner kan konfigureres som enten kjøretid eller permanent. Alle brannmur-cmd-handlinger vedvarer bare til datamaskinen eller brannmuren starter på nytt. Du må opprette permanente innstillinger med -permanent-flagget.
Lag en sone
For å opprette en sone, må du bruke - -ny-sone flagg.
Eksempel:
Opprett en ny permanent sone kalt fosscorp:
[tuts @ fosslinux ~] $ sudo firewall-cmd - new-zone fosscorp --permanent
[sudo] passord for tuts:
suksess
Last brannmurreglene på nytt for å aktivere den nye sonen:
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
Legg til ssh-tjeneste i fosscorp-sonen, slik at du får tilgang til den eksternt:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone fosscorp --add-service ssh --permanent
[sudo] passord for tuts:
suksess
Bekreft at den nye sonen din 'fosscorp' er aktiv:
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-zones
FedoraServer FedoraWorkstation blokkerer dmz drop ekstern fosscorp hjem internt libvirt nm-delt offentlig pålitelig arbeid
Din nye sone fosscorp er nå aktiv, og den avviser alle innkommende forbindelser unntatt SSH-trafikk.
Bruke - -endringsgrensesnitt flagg for å gjøre sonen fosscorp til den aktive sonen og standardsonen for et nettverksgrensesnitt (wlp3s0) du vil beskytte:
[tuts @ fosslinux ~] $ sudo firewall-cmd --change-interface wlp3s0 \
> --zone fosscorp - permanent
Grensesnittet er under [brannmur] kontroll av NetworkManager, og setter sonen til "fosscorp".
suksess
Hvis du vil angi fosscorp som standard og primær sone, kjører du følgende kommando:
[tuts @ fosslinux ~] $ sudo firewall-cmd --set-default fosscorp
suksess
Se sonene som for øyeblikket er tilordnet hvert grensesnitt ved hjelp av - -bli aktive soner flagg:
[tuts @ fosslinux ~] $ sudo firewall-cmd - get-active-zones
fosscorp
grensesnitt: wlp3s0
Legg til og fjern tjenester:
En rask måte å tillate trafikk gjennom brannmuren din er å legge til en forhåndsdefinert tjeneste.
Liste over tilgjengelige forhåndsdefinerte tjenester:
tuts @ fosslinux ~] $ sudo firewall-cmd --get-services
[sudo] passord for 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 condor-collector ctdb dhcp dhcpv6 dhcpv6-klient
[…]
Fjern blokkering av en forhåndsdefinert tjeneste
Du kan tillate HTTPS-trafikk (eller andre forhåndsdefinerte tjenester) gjennom brannmuren ved hjelp av - -tilleggstjeneste flagg.
[tuts @ fosslinux ~] $ sudo firewall-cmd --add-service https --permanent
suksess
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
Du kan også fjerne tjenesten med - -fjerne tjenesten flagg:
[tuts @ fosslinux ~] $ sudo firewall-cmd - Fjern-service https --permanent
suksess
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
Legg til og fjern porter
Du kan også legge til et portnummer og prototype direkte med flagg -add-port. Å legge til et portnummer direkte kan være nyttig når en forhåndsdefinert tjeneste ikke eksisterer.
Eksempel:
Du kan legge til ikke-standard port 1717 for SSH til din tilpassede sone ved hjelp av følgende kommando:
[tuts @ fosslinux ~] $ sudo firewall-cmd --add-port 1717 / tcp --permanent
[sudo] passord for tuts:
suksess
[tuts @ fosslinux ~] $ sudo firewall-cmd -reload
Fjern porten ved å bruke alternativet -remove-port flag:
[tuts @ fosslinux ~] $ sudo firewall-cmd --remove-port 1717 / tcp --permanent
suksess
[tuts @ fosslinux ~] $ sudo firewall-cmd -reload
Du kan også spesifisere en sone for å legge til eller fjerne en port ved å legge til -zoneflagget i kommandoen:
Legg til port 1718 for TCP-forbindelse til FedoraWorstation-sonen:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone = FedoraWorkstation --permanent --add-port = 1718 / tcp
suksess
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
suksess
Bekreft om endringene har trådt i kraft:
[tuts @ fosslinux ~] $ sudo firewall-cmd - list-all
FedoraWorkstation (aktiv)
mål: standard
icmp-blokk-inversjon: nei
grensesnitt: wlp3s0
kilder:
tjenester: dhcpv6-client mdns samba-client ssh
porter: 1025-65535 / udp 1025-65535 / tcp 1718 / tcp
protokoller:
maskerade: nei
frem-porter:
kilde-porter:
icmp-blokker:
rike regler:
Merk: Under porter har vi lagt til portnummer 1718 for å tillate TCP-trafikk.
Du kan fjerne port 1718 / tcp ved å kjøre følgende kommando:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone = FedoraWorkstation --permanent --remove-port = 1718 / tcp
suksess
[tuts @ fosslinux ~] $ sudo firewall-cmd --reload
suksess
Merk: Hvis du vil gjøre endringene dine permanente, må du legge til - -fast flagg til kommandoene dine.
oppsummering
Firewalld er et flott verktøy for å administrere nettverkssikkerheten din. Den beste måten å øke systemadministratorferdighetene dine på er å få praktisk erfaring. Jeg anbefaler på det sterkeste å installere Fedora i din virtuelle virtuelle maskin (VM) eller i bokser for å eksperimentere med alle tilgjengelige brannmur-cmd-funksjoner. Du kan lære mer brannmur-cmd-funksjoner fra den offisielle Firewalld-hjemmesiden.