Centos 7 brandvägg cmd öppen port

Installerad i operativ system Brandvägg används för att förhindra att obehörig trafik passerar mellan dator nätverk. Särskilda regler för brandväggen skapas manuellt eller automatiskt, som ansvarar för åtkomstkontroll. Ett OS utvecklat på Linux-kärnan, CentOS 7 har en inbyggd brandvägg, och den hanteras med hjälp av en brandvägg. FirewallD är aktiverat som standard, och vi skulle vilja prata om att ställa in det idag.

Som nämnts ovan är standardbrandväggen i CentOS 7 FirewallD-verktyget. Det är därför det kommer att diskuteras att sätta upp en brandvägg med detta verktyg som exempel. Du kan ställa in filtreringsregler med samma iptables, men detta görs på ett lite annorlunda sätt. Vi rekommenderar att du bekantar dig med konfigurationen av det nämnda verktyget genom att klicka på följande länk, så börjar vi analysera FirewallD.

Grundläggande brandvägg

Det finns flera zoner - uppsättningar av regler för att hantera trafik baserat på förtroende i nätverk. Alla får sina egna policyer, vars helhet utgör brandväggskonfigurationen. Varje zon tilldelas ett eller flera nätverksgränssnitt, vilket också låter dig justera filtreringen. De tillämpade reglerna beror direkt på vilket gränssnitt som används. Till exempel när du är ansluten till offentligt Wi-Fi brandvägg kommer att öka kontrollnivån, och in hemnätverk kommer att öppna ytterligare åtkomst för kedjedeltagare. Brandväggen i fråga innehåller följande zoner:

  • betrodd — maximal nivå av förtroende för alla nätverksenheter;
  • hem - grupp lokalt nätverk. Det finns förtroende för miljön, men inkommande anslutningar är bara tillgängliga för vissa maskiner;
  • arbets - arbetsområde. Det finns förtroende för de flesta enheter, och ytterligare tjänster aktiveras;
  • dmz är en zon för isolerade datorer. Sådana enheter kopplas bort från resten av nätverket och tillåter endast viss inkommande trafik;
  • intern — zon av interna nätverk. Förtroende tillämpas på alla maskiner, ytterligare tjänster öppnas;
  • extern — sektion omvänd till föregående. I externa nätverk är NAT-maskering aktiv, stänger det interna nätverket, men blockerar inte möjligheten att få åtkomst;
  • offentlig - en zon av offentliga nätverk med misstro mot alla enheter och individuell mottagning av inkommande trafik;
  • blockera - alla inkommande förfrågningar återställs med ett fel skickat icmp-host-förbjudet eller icmp6-adm-förbjuden;
  • drop - lägsta förtroendenivå. Inkommande anslutningar avbryts utan avisering.

Poliserna i sig kan vara tillfälliga eller permanenta. När parametrar visas eller redigeras ändras brandväggsåtgärden omedelbart utan att behöva starta om. Om tillfälliga regler tillämpades kommer de att återställas efter att FirewallD har startat om. Det är därför den permanenta regeln heter så – den kommer att bevaras för permanent basis när du använder argumentet -permanent.

Aktiverar FirewallD

Först måste du starta FirewallD eller se till att den är i aktivt tillstånd. Endast en fungerande demon (ett program som körs i bakgrund) kommer att tillämpa brandväggsreglerna. Aktivering görs med bara några klick:

  1. Lansera klassiskt "Terminal" någon bekväm metod, till exempel genom menyn "Ansökningar".
  2. Ange kommandot sudo systemctl start firewalld.service och tryck på tangenten Stiga på.
  3. Verktyget hanteras på uppdrag av superanvändaren, så du måste bekräfta din äkthet genom att ange ett lösenord.
  4. För att säkerställa att tjänsten fungerar, ange firewall-cmd --state .
  5. I det öppnade grafikfönster autentisera på nytt.
  6. En ny rad kommer att visas. Menande "löpning" indikerar att brandväggen fungerar.

Om du någon gång behöver inaktivera brandväggen tillfälligt eller permanent rekommenderar vi att du använder instruktionerna i vår andra artikel på följande länk.

Visa standardregler och tillgängliga zoner

Även en brandvägg som fungerar har normalt sina egna specifika regler och tillgängliga zoner. Innan du börjar redigera policyer rekommenderar vi att du bekantar dig med den aktuella konfigurationen. Detta görs med enkla kommandon:

  1. Kommandot firewall-cmd --get-default-zone hjälper dig att bestämma standardzonen.
  2. När du har aktiverat den kommer du att se en ny rad där den önskade parametern kommer att visas. Till exempel, i skärmdumpen nedan, anses zonen vara aktiv "offentlig".
  3. Flera zoner kan dock vara aktiva samtidigt, och de är kopplade till ett separat gränssnitt. Ta reda på denna information via firewall-cmd --get-active-zones .
  4. Kommandot firewall-cmd --list-all visar reglerna som är konfigurerade för standardzonen. Ta en titt på skärmdumpen nedan. Du ser att den aktiva zonen "offentlig" regel tilldelad "standard"- standardfunktion, gränssnitt "enp0s3" och två tjänster tillkom.
  5. Om du vill ta reda på alla tillgängliga brandväggszoner anger du firewall-cmd --get-zones .
  6. Parametrarna för en specifik zon bestäms via firewall-cmd --zone=name --list-all , där namn— zonnamn.

Efter att ha bestämt de nödvändiga parametrarna kan du fortsätta med att ändra och lägga till dem. Låt oss ta en närmare titt på några av de mest populära konfigurationerna.

Ställa in gränssnittszoner

Som du vet från informationen ovan har varje gränssnitt sin egen standardzon. Den förblir där tills inställningarna ändras av användaren eller programmässigt. Det är möjligt att manuellt överföra ett gränssnitt till en zon under en session, och detta görs genom att aktivera kommandot sudo firewall-cmd --zone=home --change-interface=eth0 . Resultat "Framgång" indikerar att överföringen lyckades. Låt oss påminna dig om att sådana inställningar återställs omedelbart efter att brandväggen har startat om.

När du ändrar parametrar som denna bör du ta hänsyn till att tjänsterna kan återställas. Vissa av dem stöder inte drift i vissa zoner, till exempel, även om SSH är tillgängligt i "Hem", men i anpassade eller speciella kommer tjänsten att vägra fungera. Du kan verifiera att gränssnittet har länkats till den nya grenen genom att ange firewall-cmd --get-active-zones .

Om du vill återställa dina tidigare gjorda inställningar, starta helt enkelt om brandväggen: sudo systemctl restart firewalld.service .

Ibland är det inte alltid bekvämt att byta gränssnittszon för bara en session. I det här fallet måste du redigera konfigurationsfilen så att alla inställningar skrivs in permanent. För att göra detta rekommenderar vi att du använder en textredigerare nano, som installeras från det officiella förvaret med sudo yum install nano . Sedan återstår bara att göra följande:

  1. Öppna konfigurationsfilen genom en editor genom att skriva sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , där eth0— Namnet på det erforderliga gränssnittet.
  2. Bekräfta äktheten konto att utföra ytterligare åtgärder.
  3. Hitta parametern "ZON" och ändra dess värde till det önskade, till exempel offentligt eller hem .
  4. Håll ner tangenterna Ctrl+O för att spara ändringar.
  5. Ändra inte filnamnet, klicka bara på Stiga på.
  6. Utgång textredigerare genom Ctrl+X.

Nu kommer gränssnittszonen att vara som du angav den tills nästa gång du redigerar konfigurationsfilen. För att de uppdaterade inställningarna ska träda i kraft, kör sudo systemctl restart network.service och sudo systemctl restart firewalld.service .

Ställa in standardzonen

Ovan har vi redan visat ett kommando som gjorde det möjligt för oss att ta reda på standardzonen. Den kan också ändras genom att ställa in en parameter som du väljer. För att göra detta, skriv bara sudo firewall-cmd --set-default-zone=name i konsolen, där namn— Namnet på den önskade zonen.

Framgången för kommandot kommer att indikeras av inskriptionen "Framgång" på en separat rad. Efter detta kommer alla nuvarande gränssnitt att vara bundna till den angivna zonen, om inte annat anges i konfigurationsfilerna.

Skapa regler för program och verktyg

I början av artikeln pratade vi om åtgärden för varje zon. Genom att definiera tjänster, verktyg och program i sådana grenar kan du tillämpa individuella parametrar för var och en av dem för att passa varje användares behov. För att komma igång rekommenderar vi att du bekantar dig med hela listan över tillgängliga på det här ögonblicket tjänster: brandvägg-cmd --get-tjänster .

Resultatet kommer att visas direkt i konsolen. Varje server är åtskild av ett mellanslag och du kan enkelt hitta det verktyg du är intresserad av i listan. Om den nödvändiga tjänsten inte är tillgänglig bör den installeras ytterligare. Läs om installationsregler i den officiella mjukvarudokumentationen.

Ovanstående kommando visar endast tjänstens namn. Detaljerad information för var och en av dem erhålls genom en individuell fil som ligger längs sökvägen /usr/lib/firewalld/services. Sådana dokument är i XML-format, sökvägen till till exempel SSH ser ut så här: /usr/lib/firewalld/services/ssh.xml, och dokumentet har följande innehåll:

SSH
Secure Shell (SSH) är ett protokoll för att logga in och utföra kommandon på fjärrdatorer. Det ger säker krypterad kommunikation. Om du planerar att få åtkomst till din maskin på distans via SSH över ett brandväggsgränssnitt, aktivera det här alternativet. Du behöver paketet openssh-server installerat för att det här alternativet ska vara användbart.

Servicesupport i en specifik zon aktiveras manuellt. I "Terminal" du bör utfärda kommandot sudo firewall-cmd --zone=public --add-service=http , där --zon=offentlig- zon för aktivering, och --add-service=http— tjänstens namn. Observera att en sådan ändring endast kommer att gälla för en session.

Permanent tillägg görs via sudo firewall-cmd --zone=public --permanent --add-service=http , och resultatet "Framgång" indikerar framgångsrikt slutförande av operationen.

Se full lista Du kan skapa permanenta regler för en specifik zon genom att visa listan på en separat konsolrad: sudo firewall-cmd --zone=public --permanent --list-services .

Lös problemet med bristande tillgång till tjänsten

Som standard listar brandväggsreglerna de mest populära och säkra tjänsterna som tillåtna, men vissa standard eller tredje parts applikationer han blockerar. I det här fallet måste användaren ändra inställningarna manuellt för att lösa åtkomstproblemet. Detta kan göras på två olika sätt.

Port forwarding

Som du vet använder alla nätverkstjänster en specifik port. Det är lätt att upptäcka av brandväggen och blockering kan utföras med hjälp av den. För att undvika sådana åtgärder från brandväggen måste du öppna den port som krävs med kommandot sudo firewall-cmd --zone=public --add-port=0000/tcp , där --zon=offentlig- hamnområde, --add-port=0000/tcp— Portnummer och protokoll. Alternativet firewall-cmd --list-ports visar en lista över öppna portar.

Om du behöver öppna portar som ingår i intervallet, använd raden sudo firewall-cmd --zone=public --add-port=0000-9999/udp , där --add-port=0000-9999/udp— utbud av hamnar och deras protokoll.

Ovanstående kommandon låter dig bara testa användningen av sådana parametrar. Om det lyckades, bör du lägga till samma portar till de permanenta inställningarna, och detta görs genom att ange sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp eller sudo firewall-cmd -- zone=public --permanent --add-port=0000-9999/udp . Listan över öppna permanenta portar ses så här: sudo firewall-cmd --zone=public --permanent --list-ports .

Service Definition

Som du kan se orsakar inte att lägga till portar några svårigheter, men proceduren blir mer komplicerad när ett stort antal applikationer används. Det blir svårt att spåra alla portar som används, så ett bättre alternativ skulle vara att definiera tjänsten:


Allt du behöver göra är att välja den mest lämpliga metoden för att lösa problem med tillgång till tjänsten och följa instruktionerna. Som du kan se utförs alla åtgärder ganska enkelt, och inga svårigheter bör uppstå.

Skapa anpassade zoner

Du vet redan att FirewallD från början skapade ett stort antal olika zoner med vissa regler. Det finns dock situationer när systemadministratör du måste skapa en anpassad zon, som t.ex "publicweb" för en installerad webbserver eller "privat DNS"— för DNS-servern. Med hjälp av dessa två exempel kommer vi att titta på att lägga till grenar:


I den här artikeln lärde du dig hur du skapar anpassade zoner och lägger till tjänster till dem. Vi har redan pratat om att ställa in dem som standard och tilldela gränssnitt ovan; allt du behöver göra är att ange de korrekta namnen. Kom ihåg att starta om brandväggen efter att du har gjort permanenta ändringar.

Som du kan se är FirewallD-brandväggen ett ganska omfattande verktyg som låter dig skapa den mest flexibla brandväggskonfigurationen. Allt som återstår är att se till att verktyget startar med systemet och att de angivna reglerna omedelbart börjar sitt arbete. Gör detta med kommandot sudo systemctl enable firewalld.

Det första steget för att skydda servern från externa hot är en brandvägg som filtrerar inkommande och utgående trafik. I den här artikeln vill jag diskutera inställning av iptables, ett specialfall av en brandvägg på CentOS, och även prata om att installera och inaktivera den. Min guide kommer inte att vara uttömmande, jag kommer bara att överväga de aspekter som jag anser vara de viktigaste och som jag själv använder i mitt arbete.

Den här artikeln är en del av en enda serie artiklar om servern.

Introduktion

Iptables är för närvarande de facto-standarden bland moderna Linux-distributioner. Jag kan inte ens komma ihåg direkt vad mer som används som brandvägg. Så alla Linux-administratörer måste ta itu med att sätta upp den här brandväggen i sitt arbete.

Det finns olika anslutningar till denna brandvägg som används för mer "bekväm" konfiguration. Ubuntu har ufw, i centos - brandvägg, jag känner inte de andra. Personligen ser jag ingen bekvämlighet med att använda dessa verktyg. Jag är van vid att sätta upp en Linux-brandvägg på gammaldags sätt, som jag lärde mig i början av mitt arbete. Jag tror att detta är det enklaste och mest bekväma sättet, som jag kommer att dela med dig. Dess väsen kokar ner till det faktum att ett skript skapas med brandväggsregler. Detta skript kan enkelt redigeras för att passa dina behov och överföras från server till server.

Inaktiverar brandvägg

Jag har redan berört frågan om att inaktivera brandvägg i ämnet om . Först och främst, låt oss inaktivera brandväggen, som finns i centos 7 som standard direkt efter installationen:

# systemctl stoppa brandvägg

Låt oss nu ta bort det från start så att det inte slås på igen efter en omstart:

# systemctl inaktivera brandvägg

Efter detta blir brandväggsinställningarna på servern helt öppna. Du kan se iptables-regler med kommandot:

Installerar iptables

Faktum är att vi redan har en brandvägg på vår server och den fungerar, det finns helt enkelt inga regler, allt är öppet. Vi kommer att behöva installera ytterligare hanteringsverktyg, utan vilka det är omöjligt att konfigurera iptables. Det kommer till exempel inte att vara möjligt att starta om brandväggen:

# systemctl starta om iptables.service Det gick inte att utfärda metodanrop: Unit iptables.service kunde inte laddas: Ingen sådan fil eller katalog.

Eller så kommer du inte att kunna lägga till den till autorun:

# systemctl enable iptables.service Det gick inte att utfärda metodanrop: Ingen sådan fil eller katalog

För att undvika sådana fel, installera det nödvändiga paketet med verktyg:

# yum -y installera iptables-services

Nu kan du lägga till iptables för att starta och köra:

# systemctl aktivera iptables.service # systemctl starta iptables.service

Konfigurera en brandvägg

Jag använder ett skript för att hantera brandväggsregler. Låt oss skapa det:

# mcedit /etc/iptables.sh

Nästa kommer vi att fylla den med nödvändiga regler. Jag kommer att analysera alla viktiga delar av manuset, och Jag kommer att ge det i sin helhet i formuläret textfil i slutet av artikeln. Reglerna är gjorda i form av bilder för att förbjuda kopiering och inklistring. Detta kan leda till fel i reglernas funktion, som jag själv stötte på när jag förberedde artikeln.

Vi kommer att överväga en situation där servern är en gateway till Internet för ett lokalt nätverk.

Först av allt, låt oss ställa in alla variabler som vi kommer att använda i skriptet. Detta är inte nödvändigt, men rekommenderas eftersom det är bekvämt att överföra inställningar från server till server. Det räcker med att helt enkelt omfördela variablerna.

Innan vi tillämpar de nya reglerna rensar vi alla kedjor:

Vi blockerar all trafik som inte matchar någon av reglerna:

Tillåt all lokal värd och lokal trafik:

Vi tillåter ping:

Om du inte behöver detta, lägg inte till tillåtande regler för icmp.

Vi öppnar internetåtkomst till själva servern:

Om du vill öppna alla inkommande serveranslutningar lägger du till följande regel:

Låt oss nu lägga till skydd mot de vanligaste nätverksattackerna. Låt oss först kassera alla paket som inte har någon status:

Blockera nollpaket:

Skydda dig själv från syn-flod-attacker:

Om du inte ställer in begränsningar för åtkomst från det lokala nätverket tillåter vi alla att komma åt Internet:

Därefter förbjuder vi åtkomst från Internet till det lokala nätverket:

För att vårt lokala nätverk ska kunna använda Internet, aktiverar vi nat:

För att inte förlora åtkomst till servern, efter att ha tillämpat reglerna, tillåter vi anslutningar via ssh:

Och i slutet skriver vi ner reglerna så att de gäller efter en omstart:

Vi har sammanställt en enkel konfiguration som blockerar alla inkommande anslutningar utom ssh och tillåter åtkomst från det lokala nätverket till Internet. Samtidigt skyddade vi oss från vissa nätverksattacker.

Spara skriptet, gör det körbart och kör:

# chmod 0740 /etc/iptables.sh # /etc/iptables.sh

Låt oss granska reglerna och kontrollera om alla regler är på plats:

# iptables -L -v -n

Observera att du bara behöver tillämpa reglerna om du har tillgång till serverkonsolen. Om det finns ett fel i inställningarna kan du förlora åtkomst. Se till att du i en nödsituation kan inaktivera brandväggen och justera inställningarna.

Öppna portar

Låt oss nu utöka vår konfiguration lite och öppna portar i iptables för vissa tjänster. Låt oss säga att vi har en webbserver igång och vi måste öppna åtkomst till den från Internet. Lägg till regler för webbtrafik:

Tillstånd har lagts till för inkommande anslutningar på portarna 80 och 443, som webbservern använder i sitt arbete.

Om du har installerat Mejl server, då måste du tillåta inkommande anslutningar till den på alla använda portar:

För korrekt drift DNS-servrar måste du öppna UDP-port 53

Port forwarding

Låt oss överväga en situation när det är nödvändigt att vidarebefordra portar från ett externt gränssnitt till någon dator i det lokala nätverket. Låt oss säga att du måste få rdp-åtkomst till dator 10.1.3.50 från Internet. Vi vidarebefordrar TCP-port 3389:

Om du inte vill exponera en känd port från utsidan kan du omdirigera från en icke-standardport till rdp-porten på måldatorn:

Om du vidarebefordrar en port utifrån till det lokala nätverket, se till att kommentera regeln som blockerar åtkomst från det externa nätverket till det interna. I mitt exempel är denna regel: $IPT -A FORWARD -i $WAN -o $LAN1 -j AVVISA

Eller skapa en tillåtande regel för extern åtkomst till den interna tjänsten före denna regel, till exempel så här:

$IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPTERA

Aktiverar loggar

Under installationen är det användbart att aktivera loggar för att övervaka blockerade paket och ta reda på varför det inte finns tillgång till de nödvändiga tjänsterna som vi redan verkar ha öppnat. Jag skickar alla blockerade paket till separata kedjor (block_in, block_out, block_fw) som motsvarar trafikriktningen och markerar varje riktning i loggarna. Detta gör det mer bekvämt att göra debriefing. Lägg till följande regler i slutet av skriptet innan du sparar inställningarna:

Du kan spåra alla blockerade paket i filen /var/log/messages.

När du är klar med installationen, kommentera dessa rader och inaktivera loggning. Det är definitivt värt att göra detta, eftersom stockarna växer väldigt snabbt. Jag personligen ser ingen praktisk mening med att lagra sådan information.

Hur man inaktiverar iptables

Om du plötsligt bestämmer dig för att du inte längre behöver brandväggen kan du inaktivera den på följande sätt:

# systemctl stoppa iptables.service

Detta kommando stoppar brandväggen. Och följande tar bort det från start:

# systemctl inaktivera iptables.service

Genom att inaktivera brandväggen tillät vi alla anslutningar.

Slutsats

Som utlovat lägger jag upp ett färdigt manus med de grundläggande regler som vi har övervägt

Jag skulle återigen vilja påpeka att när du konfigurerar iptables måste du vara extremt försiktig. Starta inte den här verksamheten om du inte har tillgång till serverkonsolen. Även när jag skrev den här artikeln förlorade jag åtkomst till servern på grund av ett löjligt fel i reglerna. Detta fel uppstod på grund av kopiering och förlusten av ett dubbelstreck - det ersattes av ett enda.

onlinekurs "Linux Administrator" på OTUS. Kursen är inte för nybörjare, för antagning behöver du grundläggande kunskaper om nätverk och Linux installation till den virtuella maskinen. Utbildningen varar i 5 månader, varefter framgångsrika kursutexaminerade kommer att kunna genomgå intervjuer med partners. Vad den här kursen kommer att ge dig:

  • Kunskaper om Linux-arkitektur.
  • Utveckling moderna metoder och verktyg för dataanalys och bearbetning.
  • Möjlighet att välja en konfiguration för de nödvändiga uppgifterna, hantera processer och säkerställa systemsäkerhet.
  • Kunskaper i de grundläggande arbetsverktygen för en systemadministratör.
  • Förståelse av detaljerna för att distribuera, konfigurera och underhålla nätverk byggda på Linux.
  • Förmågan att snabbt lösa uppkommande problem och säkerställa stabil och oavbruten drift av systemet.
Testa dig själv på inträdesprovet och se programmet för mer detaljer.

FirewallD är ett brandväggshanteringsverktyg som är tillgängligt som standard på CentOS 7-servrar. Det är i grunden ett omslag runt IPTables och levereras med ett grafiskt konfigurationsverktyg, firewall-config och ett firewall-config-verktyg. kommandorad brandvägg-cmd. Med IPtables-tjänsten kräver varje ändring att gamla regler tas bort och nya regler skapas i filen ` /etc/sysconfig/iptables`, och med brandvägg tillämpas endast skillnaderna.

FirewallD-zoner

FirewallD använder tjänster och zoner istället för regler och kedjor i Iptables. Som standard är följande zoner tillgängliga:

  • släppa– Släpp alla inkommande nätverkspaket utan svar, bara utgående nätverkskopplingar tillgängliga.
  • blockera– Avvisa alla inkommande nätverkspaket med meddelandet icmp-host-prohibited, endast utgående nätverksanslutningar är tillåtna.
  • offentlig– endast utvalda inkommande anslutningar accepteras, för användning i allmänna utrymmen
  • extern– För externa nätverk med maskerad accepteras endast utvalda inkommande anslutningar.
  • dmz– demilitariserad zon DMZ, allmänt tillgänglig från begränsad åtkomst till det interna nätverket accepteras endast utvalda inkommande anslutningar.
  • arbete
  • Hem– För datorer i hemzonen accepteras endast utvalda inkommande anslutningar.
  • inre– För datorer på ditt interna nätverk accepteras endast utvalda inkommande anslutningar.
  • betrodd– Alla nätverksanslutningar accepteras.

För att få en lista över alla tillgängliga zoner:

# firewall-cmd --get-zones work drop intern extern betrodd hem dmz public block

Så här visar du en lista över standardzoner:

# firewall-cmd --get-default-zone public

Så här ändrar du standardzonen:

Brandväggstjänster

FirewallD-tjänster är XML-konfigurationsfiler som innehåller serviceinmatningsinformation för brandvägg. För att få en lista över alla tillgängliga tjänster:

# brandvägg-cmd --get-tjänster amanda-klient amanda-k5-klient bacula bacula-klient ceph ceph-mon dhcp dhcpv6 dhcpv6-klient dns docker-register dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replikering ftp hög-tillgänglighet http https imap imaps ipp ipp-klient ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxyweb pmwebapi pophoxywebap pmwebapi 3privat pulseaudio puppetmaster radie rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-server xmpp-locient

XML-konfigurationsfiler lagras i kataloger /usr/lib/brandvägg/tjänster/ Och /etc/firewalld/services/.

Konfigurera en brandvägg med FirewallD

Som ett exempel, här är hur du kan konfigurera en brandvägg med FirewallD om du kör en webbserver, SSH på port 7022 och en e-postserver.

Först kommer vi att ställa in standardzonen för DMZ.

# brandvägg-cmd --set-default-zon=dmz # brandvägg-cmd --get-default-zon dmz

För att lägga till beständiga tjänstregler för HTTP och HTTPS i DMZ, kör följande kommando:

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

Öppna port 25 (SMTP) och port 465 (SMTPS):

Brandvägg-cmd --zone=dmz --add-service=smtp --permanent brandvägg-cmd --zone=dmz --add-service=smtps --permanent

Öppna, IMAP, IMAPS, POP3 och POP3S portar:

Brandvägg-cmd --zone=dmz --add-service=imap --permanent brandvägg-cmd --zone=dmz --add-service=imaps --permanent brandvägg-cmd --zone=dmz --add-service= pop3 --permanent brandvägg-cmd --zone=dmz --add-service=pop3s --permanent

Eftersom SSH-porten ändras till 7022 kommer vi att ta bort SSH-tjänsten (port 22) och öppna port 7022

Brandvägg-cmd --remove-service=ssh --permanent brandvägg-cmd --add-port=7022/tcp --permanent

För att implementera ändringarna måste vi starta om brandväggen:

Brandvägg-cmd -- ladda om

Slutligen kan du lista reglerna.

FirewallD är ett brandväggshanteringsverktyg som är tillgängligt som standard på CentOS 7-servrar. Det är i grunden ett omslag runt IPTables och kommer med ett grafiskt konfigurationsverktyg, firewall-config, och ett kommandoradsverktyg, firewall-cmd. Med IPtables-tjänsten kräver varje ändring att gamla regler tas bort och nya regler skapas i filen ` /etc/sysconfig/iptables`, och med brandvägg tillämpas endast skillnaderna.

FirewallD-zoner

FirewallD använder tjänster och zoner istället för regler och kedjor i Iptables. Som standard är följande zoner tillgängliga:

  • släppa– Släpp alla inkommande nätverkspaket utan svar, endast utgående nätverksanslutningar är tillgängliga.
  • blockera– Avvisa alla inkommande nätverkspaket med meddelandet icmp-host-prohibited, endast utgående nätverksanslutningar är tillåtna.
  • offentlig– endast utvalda inkommande anslutningar accepteras, för användning i allmänna utrymmen
  • extern– För externa nätverk med maskerad accepteras endast utvalda inkommande anslutningar.
  • dmz– demilitariserad zon DMZ, allmänt tillgänglig med begränsad tillgång till det interna nätverket, endast utvalda inkommande anslutningar accepteras.
  • arbete
  • Hem– För datorer i hemzonen accepteras endast utvalda inkommande anslutningar.
  • inre– För datorer på ditt interna nätverk accepteras endast utvalda inkommande anslutningar.
  • betrodd– Alla nätverksanslutningar accepteras.

För att få en lista över alla tillgängliga zoner:

# firewall-cmd --get-zones work drop intern extern betrodd hem dmz public block

Så här visar du en lista över standardzoner:

# firewall-cmd --get-default-zone public

Så här ändrar du standardzonen:

Brandväggstjänster

FirewallD-tjänster är XML-konfigurationsfiler som innehåller serviceinmatningsinformation för brandvägg. För att få en lista över alla tillgängliga tjänster:

# brandvägg-cmd --get-tjänster amanda-klient amanda-k5-klient bacula bacula-klient ceph ceph-mon dhcp dhcpv6 dhcpv6-klient dns docker-register dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replikering ftp hög-tillgänglighet http https imap imaps ipp ipp-klient ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxyweb pmwebapi pophoxywebap pmwebapi 3privat pulseaudio puppetmaster radie rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-server xmpp-locient

XML-konfigurationsfiler lagras i kataloger /usr/lib/brandvägg/tjänster/ Och /etc/firewalld/services/.

Konfigurera en brandvägg med FirewallD

Som ett exempel, här är hur du kan konfigurera en brandvägg med FirewallD om du kör en webbserver, SSH på port 7022 och en e-postserver.

Först kommer vi att ställa in standardzonen för DMZ.

# brandvägg-cmd --set-default-zon=dmz # brandvägg-cmd --get-default-zon dmz

För att lägga till beständiga tjänstregler för HTTP och HTTPS i DMZ, kör följande kommando:

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

Öppna port 25 (SMTP) och port 465 (SMTPS):

Brandvägg-cmd --zone=dmz --add-service=smtp --permanent brandvägg-cmd --zone=dmz --add-service=smtps --permanent

Öppna, IMAP, IMAPS, POP3 och POP3S portar:

Brandvägg-cmd --zone=dmz --add-service=imap --permanent brandvägg-cmd --zone=dmz --add-service=imaps --permanent brandvägg-cmd --zone=dmz --add-service= pop3 --permanent brandvägg-cmd --zone=dmz --add-service=pop3s --permanent

Eftersom SSH-porten ändras till 7022 kommer vi att ta bort SSH-tjänsten (port 22) och öppna port 7022

Brandvägg-cmd --remove-service=ssh --permanent brandvägg-cmd --add-port=7022/tcp --permanent

För att implementera ändringarna måste vi starta om brandväggen:

Brandvägg-cmd -- ladda om

Slutligen kan du lista reglerna.

Från och med CentoOS 7 har ett nytt verktyg dykt upp för att konfigurera trafikfiltreringsregler brandvägg. Det rekommenderas att använda det för att hantera iptables-regler. I CentOS 8, istället för standardpaketet iptables-filtrering, används nu ramverket för nftables, och när du konfigurerar brandväggsregler genom brandvägg, konfigurerar du faktiskt nftables. I den här artikeln kommer vi att titta på installation, grundläggande koncept och konfigurering av brandvägg på en server som kör CentOS 8 (CentOS 7 är samma sak).


BrandväggD– en brandvägg för att skydda servern från oönskad trafik med stöd för dynamisk regelhantering (utan omstart) och implementering av permanenta brandväggsregler. Fungerar som ett gränssnitt för och nftables. FirewallD kan användas på nästan alla Linux-distributioner.

Grundläggande brandväggskoncept, zoner och regler

Innan du påbörjar installation och konfiguration brandvägg, kommer vi att introducera begreppet zoner, som används för att bestämma nivån av förtroende för olika kopplingar. För olika zoner brandvägg du kan tillämpa olika filtreringsregler, specificera aktiva alternativ brandvägg i form av fördefinierade tjänster, protokoll och portar, port forwarding och rich-rules.

Brandvägg filtrerar inkommande trafik efter zon beroende på reglerna som tillämpas på zonen. Om IP- Adressen till avsändaren för begäran matchar reglerna för en viss zon, då skickas paketet genom denna zon. Om adressen inte matchar någon av de zoner som konfigurerats på servern kommer paketet att behandlas av standardzonen. Vid installation brandvägg standardzonen anropas offentlig.

Firewalld har zoner som är förkonfigurerade med behörigheter för olika tjänster. Du kan använda dessa inställningar eller skapa dina egna zoner. Lista över standardzoner som skapas vid installation av brandvägg (lagrade i katalogen /usr/lib/firewalld/zones/):

släppa miniminivå av förtroende. Alla inkommande anslutningar blockeras utan svar, endast utgående anslutningar är tillåtna;
blockera zonen liknar den föregående, men när inkommande förfrågningar avvisas skickas meddelandet icmp-host-prohibited för Ipv4 eller icmp6-adm-prohibited för Ipv6;
offentlig representerar offentliga, opålitliga nätverk. Du kan tillåta utvalda inkommande anslutningar på individuell basis;
extern externa nätverk när en brandvägg används som gateway. Det är konfigurerat för NAT-maskering så att ditt interna nätverk förblir privat men tillgängligt;
inre antonym för yttre zon. Värden har en tillräcklig nivå av förtroende, ett antal ytterligare tjänster finns tillgängliga;
dmz används för datorer som finns i en DMZ (isolerade datorer utan tillgång till resten av nätverket). Endast vissa inkommande anslutningar är tillåtna;
arbete zon för arbetsmaskiner (de flesta datorer i nätverket är betrodda);
Hem hemnätverkszon. De flesta datorer kan lita på, men endast vissa inkommande anslutningar stöds;
betrodd lita på alla maskiner i nätverket. Den mest öppna av alla tillgängliga alternativ, det kräver medveten användning.

I brandvägg två uppsättningar regler används - permanent och tillfällig. Tillfälliga regler fungerar tills servern startas om. Som standard när regler läggs till brandvägg, reglerna anses vara tillfälliga ( körning). För att lägga till en regel på permanent basis måste du använda flaggan - permanent. Sådana regler kommer att tillämpas efter att servern har startat om.

Installera och aktivera brandvägg på CentOS

I CentOS 7/8 är brandvägg installerad som standard med operativsystemet. Om du har tagit bort det och vill installera brandvägg kan du använda standard /dnf-hanteraren:

# yum installera brandvägg -y - för Centos 7
# dnf installera brandvägg -y - för Centos 8

Till demonen brandvägg startade automatiskt när servern startade, du måste lägga till den i:

# systemctl aktivera brandvägg

Och kör:

# systemctl starta brandvägg

Kontrollera servicestatus:

# systemctl status brandvägg

● firewalld.service - brandvägg - dynamisk brandväggsdemon Laddad: laddad (/usr/lib/systemd/system/firewalld.service; aktiverad; förinställd leverantör: aktiverad) Aktiv: aktiv (körs) sedan mån 2019-10-14 14:54 :40 +06; 22s sedan Dokument: man:firewalld(1) Huvud-PID: 13646 (brandvägg) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 14 okt 14:54:40 server.vpn.ru systemd: Startar brandvägg - dynamisk brandväggsdemon... 14 okt 14:54:40 server.vpn.ru systemd: Startade brandvägg - dynamisk brandväggsdemon.

Eller med kommandot:

# brandvägg-cmd --tillstånd

Kommandot firewall-cmd är en brandväggsgränssnitt till nftables/iptables.

# brandvägg-cmd --tillstånd

Arbeta med brandväggsregler

Standardregler:

Innan du ställer in brandväggsregler måste du kontrollera vilken zon som används som standard:

# firewall-cmd --get-default-zone

Eftersom vi precis har installerat brandvägg och inte har konfigurerat den ännu, har vi en standardzon offentlig.

Låt oss kontrollera den aktiva zonen. Det finns också en - offentlig:

# firewall-cmd --get-active-zones

Offentliga gränssnitt: eth0

Som du kan se styrs eth0 nätverksgränssnittet av zonen offentlig.

För att se kärnreglerna anger du:

# brandvägg-cmd --list-all

Offentligt (aktivt) mål: standard icmp-block-inversion: inga gränssnitt: eth0 källor: tjänster: dhcpv6-klient ssh-portar: protokoll: masquerade: inga framåt-portar: källportar: icmp-block: rika regler:

Från listan kan du se att de vanliga operationerna relaterade till DHCP-klienten och ssh har lagts till i denna zon.

Tillgängliga zoner

För att se en lista över alla zoner måste du köra kommandot:

# brandvägg-cmd --get-zoner

Jag fick följande lista:

Blockera dmz släpp externt hem internt offentligt betrodd arbete

För att kontrollera reglerna för en specifik zon måste du lägga till flaggan - zon.

# firewall-cmd --zone=home --list-all

Hemmål: standard icmp-block-inversion: inga gränssnitt: källor: tjänster: dhcpv6-client mdns samba-client ssh-portar: protokoll: masquerade: inga framåt-portar: källportar: icmp-block: rika regler:

Reglerna för alla zoner kan ses med kommandot:

# brandvägg-cmd --lista-alla-zoner

Listan blir ganska stor, eftersom det kan finnas många zoner.

Ändra standardzonen.

Standard är allt nätverksgränssnitt ligger i området offentlig, men de kan överföras till vilken som helst av zonerna med kommandot:

# firewall-cmd --zone=home -change-interface=eth0

Efter parametern --zon= ange önskad zon.

För att ändra standardzonen måste du använda kommandot:

# brandvägg-cmd --set-default-zone=hem

Lägger till tillämpningsregler

För att öppna en port för ett program kan du lägga till en tjänst till undantagen. Visa en lista över tillgängliga tjänster:

Utgången kommer att innehålla ett stort antal tjänster. detaljerad information om tjänsten finns i dess xml fil. Dessa filer finns i katalogen /usr/lib/brandvägg/tjänster.

Till exempel:

# cd /usr/lib/brandvägg/tjänster

Mail (SMTP) Detta alternativ tillåter inkommande SMTP-postleverans. Om du behöver tillåta fjärrvärdar att ansluta direkt till din maskin för att leverera e-post, aktivera det här alternativet. Du behöver inte aktivera detta om du hämtar din e-post från din internetleverantörs server med POP3 eller IMAP, eller om du använder ett verktyg som fetchmail. Observera att en felaktigt konfigurerad SMTP server kan tillåt fjärrmaskiner att använda din server för att skicka skräppost.

XML-filen innehåller en beskrivning av tjänsten, protokollet och portnumret som kommer att öppnas i brandväggen.

När du lägger till regler kan du använda parametern --add-service för att öppna åtkomst till en specifik tjänst:

# firewall-cmd --zone=public --add-service=http

# firewall-cmd --zone=public --add-service=https

När du har lagt till regler kan du kontrollera om tjänster har lagts till i den angivna zonen:

# firewall-cmd --zone=public --list-services

Dhcpv6-klient http https ssh

Om du vill göra dessa regler permanenta måste du lägga till parametern när du lägger till -permanent.

Så här tar du bort en tjänst från en zon:

# firewall-cmd --permanent --zone=public --remove-service=http

Dhcpv6-klient https ssh test

Om du vill lägga till din tjänst till undantag kan du skapa en fil xml själv och fyll i den. Du kan kopiera data från vilken tjänst som helst, ändra namn, beskrivning och portnummer.

Låt oss kopiera filen smtp.xml till katalogen för att arbeta med användartjänster:

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

Ändra tjänstebeskrivningen i filen.

Jag själv xml-fil Du måste också byta namn på den efter namnet på din tjänst. Efter det måste du starta om brandväggen och kontrollera om vår tjänst finns i listan:

Jag ringde tjänsten testa och det dök upp i listan:

Syslog-tls telnet test tftp

Nu kan du lägga till den skapade tjänsten till valfri zon:

# firewall-cmd --zone=public --add-service=test --permanent

# firewall-cmd --zone=public --permanent --list-services

Dhcpv6-klient http https ssh test

Om du inte har hittat tjänsten du behöver i listan kan du öppna den nödvändiga porten på brandväggen med kommandot:

# brandvägg-cmd --zone=public -add-port=77/tcp - öppen port 77 tcp
# brandvägg-cmd --zone=public -add-port=77/udp - öppen port 77 utp
# firewall-cmd --zone=public -add-port=77-88/udp - öppet portintervall 77-88 utp
# firewall-cmd --zone=public -list-ports - kontrollera listan över tillåtna portar

Blockera/tillåt ICMP-svar:

# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply

Ta bort tillagd port:

# firewall-cmd --zone=public -remove-port=77/udp - ta bort temporär regel 77 utp

# firewall-cmd --permanent --zone=public -remove-port=77/udp - ta bort permanent regel

Lägga till dina egna zoner

Du kan skapa din egen zon (jag kallar den vår):

# brandvägg-cmd --permanent --new-zone=vår

Efter att ha skapat en ny zon, såväl som efter att ha skapat en tjänst, krävs en omstart brandvägg:

# firewall-cmd --ladda om

# brandvägg-cmd --get-zoner

Blockera dmz släpp externt hem internt vårt offentliga betrodda arbete

Zon vår tillgängliga. Du kan lägga till tjänster till den eller öppna specifika portar.

Brandvägg: blockerar IP-adresser, skapar undantag

Du kan lägga till betrodda IP-adresser till brandväggsundantag eller blockera oönskade.

För att lägga till en specifik till undantag IP-adress(till exempel 8.8.8.8) på din server via brandvägg, använd kommandot:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.8.8" acceptera"

Kontrollera området och se till IP läggs till undantag i rika regler:

Offentligt (aktivt) mål: standard icmp-block-inversion: inga gränssnitt: eth0 källor: tjänster: dhcpv6-client http https ssh testportar: protokoll: masquerade: inga forward-ports: source-ports: icmp-blocks: rich rules: regel family="ipv4" source address="8.8.8.8" acceptera

Att blockera IP, behöver bytas ut accepteraavvisa:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.4.4" avvisa"

# firewall-cmd --zone=public --list-all

Offentligt (aktivt) mål: standard icmp-block-inversion: inga gränssnitt: eth0 källor: tjänster: dhcpv6-client http https ssh testportar: protokoll: masquerade: inga forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="8.8.8.8" accept rule family="ipv4" source address="8.8.4.4" avvisa

Du kan tillåta en specifik tjänst endast för förfrågningar från en specifik IP-adress:

#firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="10.10.1.0/24" service name="https" acceptera"

Om du akut behöver blockera alla förfrågningar till servern, använd panikkommandot:

# firewall-cmd --panic-on

Du kan inaktivera panikläget antingen med kommandot:

# firewall-cmd --panic-off

Eller genom att starta om servern.

Du kan blockera brandväggskonfigurationen så att lokala tjänster med roträttigheter kunde inte ändra brandväggsreglerna du skapade:

# firewall-cmd --lockdown-on

Inaktivera blockeringsläge:

# firewall-cmd --lockdown-off

Port forwarding i brandvägg

Du kan skapa en regel för vidarebefordran av port i brandvägg. Så här vidarebefordrar du port 443 till 9090:

# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

Så här tar du bort en regel för portvidarebefordran:

# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090




Topp