Настройка firewall в CentOS 7 (firewalld)
Innehållsförteckning:
- förutsättningar
- Grundläggande brandväggskoncept
- Brandväggszoner
- Brandväggstjänster
- Firewalld Runtime och Permanent Settings
- Installera och aktivera FirewallD
- Arbeta med brandväggszoner
- Ändra zonet för ett gränssnitt
- Ändra standardzon
- Öppna en hamn eller tjänst
- Skapa en ny FirewallD-tjänst
- Vidarebefordra Port med Firewalld
- Skapa en regeluppsättning med FirewallD
- Slutsats
En korrekt konfigurerad brandvägg är en av de viktigaste aspekterna av övergripande systemsäkerhet.
FirewallD är en komplett brandväggslösning som hanterar systemets iptablesregler och tillhandahåller ett D-Bus-gränssnitt för att använda dem. Från och med CentOS 7, ersätter FirewallD iptables som standardverktyg för brandväggshantering.
I den här tutorialen visar vi dig hur du ställer in en brandvägg med FirewallD i ditt CentOS 7-system och förklarar de grundläggande FirewallD-koncepten.
förutsättningar
Innan du börjar med den här tutorialen, se till att du är inloggad på din server med ett användarkonto med sudo-privilegier eller med root-användaren. Den bästa praxis är att köra administrativa kommandon som sudo-användare istället för root. Om du inte har en sudo-användare i ditt CentOS-system kan du skapa en genom att följa dessa instruktioner.
Grundläggande brandväggskoncept
FirewallD använder begreppen zoner och tjänster istället för iptables-kedjan och regler. Baserat på de zoner och tjänster du konfigurerar kan du styra vilken trafik som är tillåten eller tillåtet till och från systemet.
FirewallD kan konfigureras och hanteras med hjälp av kommandoradsverktyget
firewall-cmd
.
Brandväggszoner
Zoner är fördefinierade uppsättningar av regler som anger vilken trafik som ska tillåtas baserat på nivån på förtroende för de nätverk som din dator är ansluten till. Du kan tilldela nätverksgränssnitt och källor till en zon.
Nedan visas de zoner som tillhandahålls av FirewallD beställda enligt zonens förtroendetivå från otillit till tillförlitlig:
- släpp: Alla inkommande anslutningar tappas utan meddelande. Endast utgående anslutningar är tillåtna. block: Alla inkommande anslutningar avvisas med ett
icmp-host-prohibited
meddelande förIPv4
ochicmp6-adm-prohibited
för IPv6n. Endast utgående anslutningar är tillåtna. offentligt: För användning i osäkra allmänna utrymmen. Du litar inte på andra datorer i nätverket, men du kan tillåta utvalda inkommande anslutningar. extern: För användning i externa nätverk med NAT-maskerad aktiverad när ditt system fungerar som en gateway eller router. Endast valda inkommande anslutningar är tillåtna. intern: För användning i interna nätverk när ditt system fungerar som en gateway eller router. Andra system i nätverket är generellt betrodda. Endast valda inkommande anslutningar är tillåtna. dmz: Används för datorer i din demilitariserade zon som har begränsad åtkomst till resten av ditt nätverk. Endast valda inkommande anslutningar är tillåtna. arbete: Används för arbetsmaskiner. Andra datorer i nätverket är allmänt betrodda. Endast valda inkommande anslutningar är tillåtna. hem: Används för hemmamaskiner. Andra datorer i nätverket är allmänt betrodda. Endast valda inkommande anslutningar är tillåtna. betrodd: Alla nätverksanslutningar accepteras. Lita på alla datorer i nätverket.
Brandväggstjänster
Firewalld-tjänster är fördefinierade regler som gäller inom en zon och definierar nödvändiga inställningar för att tillåta inkommande trafik för en viss tjänst.
Firewalld Runtime och Permanent Settings
Firewalld använder två separata konfigurationsuppsättningar, runtime och permanent konfiguration.
Runtime-konfigurationen är den faktiska körkonfigurationen och den är inte beständig vid omstarter. När Firewalld-tjänsten startar laddar den den permanenta konfigurationen, som blir runtime-konfigurationen.
Som standard, när ändringar görs i Firewalld-konfigurationen med hjälp av
firewall-cmd
, tillämpas ändringarna på runtime-konfigurationen. För att göra ändringarna permanenta måste du använda alternativet
--permanent
.
Installera och aktivera FirewallD
-
Firewalld installeras som standard på CentOS 7, men om det inte är installerat på ditt system kan du installera paketet genom att skriva:
sudo yum install firewalld
Brandväggstjänsten är som standard inaktiverad. Du kan kontrollera brandväggsstatusen med:
sudo firewall-cmd --state
Så här startar du FirewallD-tjänsten och aktiverar den på starttyp:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Arbeta med brandväggszoner
Efter att ha aktiverat FirewallD-tjänsten för första gången ställs den
public
zonen in som en standardzon. Du kan visa standardzonen genom att skriva:
sudo firewall-cmd --get-default-zone
public
Om du vill få en lista över alla tillgängliga zoner skriver du:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Som standard tilldelas alla nätverksgränssnitt standardzonen. Så här kontrollerar du vilka zoner som används av ditt nätverksgränssnitt (er):
sudo firewall-cmd --get-active-zones
public interfaces: eth0 eth1
Utgången ovan säger att både gränssnitt
eth0
och
eth1
tilldelas den offentliga zonen.
Du kan skriva ut zonkonfigurationsinställningarna med:
sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Från utgången ovan kan vi se att den offentliga zonen är aktiv och ställs in som standard, som används av både
eth0
och
eth1
gränssnitt. Anslutningarna relaterade till DHCP-klienten och SSH är också tillåtna.
sudo firewall-cmd --list-all-zones
Kommandot skriver ut en enorm lista med inställningarna för alla tillgängliga zoner.
Ändra zonet för ett gränssnitt
Du kan enkelt ändra gränssnittszonen genom att använda alternativet -
--zone
i kombination med
--change-interface
. Följande kommando tilldelar
eth1
gränssnittet till
eth1
:
sudo firewall-cmd --zone=work --change-interface=eth1
Verifiera ändringarna genom att skriva:
sudo firewall-cmd --get-active-zones
work interfaces: eth1 public interfaces: eth0
Ändra standardzon
För att ändra standardzon använder du
--set-default-zone
zone följt av namnet på den zon du vill göra som standard.
För att t.ex. ändra standardzonen till hem bör du köra följande kommando:
sudo firewall-cmd --set-default-zone=home
Verifiera ändringarna med:
sudo firewall-cmd --get-default-zone
Öppna en hamn eller tjänst
Med FirewallD kan du tillåta trafik för specifika portar baserat på fördefinierade regler som kallas tjänster.
Så här får du en lista över alla tillgängliga standardtjänster:
sudo firewall-cmd --get-services
Du kan hitta mer information om varje tjänst genom att öppna den tillhörande.xml-filen i
/usr/lib/firewalld/services
. Till exempel definieras HTTP-tjänsten så här:
WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.
WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.
För att tillåta inkommande HTTP-trafik (port 80) för gränssnitt i den offentliga zonen, bara för den aktuella sessionen (körtidskonfiguration):
sudo firewall-cmd --zone=public --add-service=http
Om du modifierar standardzonen kan du
--zone
alternativet -
--zone
.
För att verifiera att tjänsten har lagts till framgång använder
--list-services
alternativet -
--list-services
:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client
sudo firewall-cmd --permanent --zone=public --add-service=http
Använd -
--list-services
tillsammans med
--permanent
alternativet för att verifiera dina ändringar:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client
Syntaxen för att ta bort tjänsten är densamma som när du lägger till en tjänst.
--remove-service
istället för
--add-service
:
sudo firewall-cmd --zone=public --remove-service=http --permanent
Kommandot ovan tar bort http-tjänsten från den permanenta konfigurationen av den offentliga zonen.
Vad händer om du kör ett program som Plex Media Server för vilken det inte finns någon lämplig tjänst tillgänglig?
I situationer som dessa har du två alternativ. Du kan antingen öppna lämpliga portar eller definiera en ny FirewallD-tjänst.
Till exempel lyssnar Plex-servern på port 32400 och använder TCP, för att öppna porten i den offentliga zonen för den aktuella sessionen, använd
--add-port=
:
sudo firewall-cmd --zone=public --add-port=32400/tcp
Protokoll kan vara antingen
tcp
eller
udp
.
För att verifiera att porten har lagts till framgång använder
--list-ports
alternativet -
--list-ports
:
sudo firewall-cmd --zone=public --list-ports
32400/tcp
För att hålla porten
32400
öppen efter en omstart lägger du till regeln i de permanenta inställningarna genom att köra samma kommando med alternativet
--permanent
.
Syntaxen för att ta bort en port är densamma som när du lägger till en port.
--remove-port
istället för
--add-port
.
sudo firewall-cmd --zone=public --remove-port=32400/tcp
Skapa en ny FirewallD-tjänst
Som vi redan nämnt lagras standardtjänsterna i
/usr/lib/firewalld/services
. Det enklaste sättet att skapa en ny tjänst är att kopiera en befintlig servicefil till katalogen
/etc/firewalld/services
, som är platsen för användarskapade tjänster och ändra filinställningarna.
För att skapa en tjänstdefinition för Plex Media Server kan vi till exempel använda SSH-servicefilen:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Öppna den nyligen skapade filen
plexmediaserver.xml
och ändra det korta namnet och beskrivningen för tjänsten inom
I följande exempel öppnar vi portarna
1900
UDP och
32400
TCP.
plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.
plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.
Spara filen och ladda om FirewallD-tjänsten:
sudo firewall-cmd --reload
Du kan nu använda
plexmediaserver
tjänsten i dina zoner samma som alla andra tjänster…
Vidarebefordra Port med Firewalld
För att vidarebefordra trafik från en port till en annan port eller adress, aktivera först maskering för den önskade zonen med hjälp av
--add-masquerade
. Till exempel för att aktivera maskerad för
external
zontyp:
sudo firewall-cmd --zone=external --add-masquerade
- Vidarebefordra trafik från en port till en annan på samma server
I följande exempel vidarebefordrar vi trafiken från port
80
till port
8080
på samma server:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
- Vidarebefordra trafik till en annan server
I följande exempel vidarebefordrar vi trafiken från port
80
till port
80
på en server med IP
10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
- Vidarebefordra trafik till en annan server på en annan port
I följande exempel vidarebefordrar vi trafiken från port
80
till port
8080
på en server med IP
10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2
Skapa en regeluppsättning med FirewallD
I följande exempel visar vi hur du konfigurerar din brandvägg om du kör en webbserver. Vi antar att din server bara har ett gränssnitt
eth0
, och du vill tillåta inkommande trafik endast på SSH-, HTTP- och
-
Ändra standardzonen till dmz
Vi kommer att använda dmz (demilitariserad) zon eftersom den som standard bara tillåter SSH-trafik.
eth0
följande kommandon för att ändra standardzonen till dmz och tilldela den tilleth0
gränssnittet:sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0
Öppna HTTP- och
För att öppna HTTP- och HTTPS-portar läggs permanenta servicegler till dmz-zonen:
sudo firewall-cmd --permanent --zone=dmz --add-service=http
sudo firewall-cmd --permanent --zone=dmz --add-service=https
Gör ändringarna omedelbart genom att ladda om brandväggen:
sudo firewall-cmd --reload
Verifiera ändringarna
Så här kontrollerar du inställningarna för dmz-zonkonfiguration:
sudo firewall-cmd --zone=dmz --list-all
dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Utgången ovan berättar att dmz är standardzonen, tillämpas på
eth0
gränssnittet och ssh (22) http (80) och https (443) portar är öppna.
Slutsats
Du har lärt dig hur du konfigurerar och hanterar FirewallD-tjänsten på ditt CentOS-system.
Var noga med att tillåta alla inkommande anslutningar som är nödvändiga för att ditt system ska fungera korrekt, samtidigt som du begränsar alla onödiga anslutningar.
brandvägg brandvägg iptables centos säkerhetInnan du går online för att förbeställa Microsofts Surface med Windows RT (Surface RT) -enhet från och med tisdag vid middagstid Eastern, vill du se till att det här är rätt enhet för dig. Behöver du köra traditionella Windows-program? Skulle du helst ha en enhet som har en hårdare tangentbordsdocka? Har du tittat på de andra Windows 8-drivna enheterna på väg? Att köpa en Windows RT-skiffer kommer inte att vara lika enkelt som att köpa en iPad eller Android-tablett, så innan du köper här tittar
Yta prissättning
I det här inlägget ser vi hur du kan begränsa eller ställa in en tidsgräns för något användarkonto i Windows 10 / 8/7, med kommandot Net User. Netanvändare är ett kommandoradsverktyg som hjälper systemadministratörer till att lägga till eller ändra användarkontobeteende. Vi har redan tittat på några nätverkskommandon för administratörer, nu kan vi se hur du ställer in tidsgränser för lokala konton.
Begränsa eller ställa in tidsgräns för användarkonton
Hur man ställer in ssh-tunneling för att kringgå en brandvägg
En brandvägg är bra, men om det hindrar dig från att göra något är SSH-tunneln ett bra alternativ att utforska.