Serija RHCSA: Osnove požarnega zidu in nadzor omrežnega prometa z uporabo požarnega ziduD in Iptables - 11. del


Preprosto povedano, požarni zid je varnostni sistem, ki nadzira dohodni in odhodni promet v omrežju na podlagi nabora vnaprej določenih pravil (na primer cilja/vira paketa ali vrste prometa).

V tem članku bomo pregledali osnove požarnega zidu, privzeti demon dinamičnega požarnega zidu v Red Hat Enterprise Linux 7 in storitev iptables, zapuščeno storitev požarnega zidu za Linux, s katero je večina skrbnikov sistema in omrežja dobro seznanjena in ki je prav tako na voljo v RHEL 7.

Primerjava med FirewallD in Iptables

Pod pokrovom se tako požarni zid kot storitev iptables pogovarjata z ogrodjem netfilter v jedru prek istega vmesnika, ne preseneča pa ukaz iptables. V nasprotju s storitvijo iptables pa lahko požarni zid spremeni nastavitve med običajnim delovanjem sistema, ne da bi se pri tem izgubile obstoječe povezave.

Požarni zid naj bo privzeto nameščen v vašem sistemu RHEL, čeprav se morda ne izvaja. Preverite lahko z naslednjimi ukazi (firewall-config je orodje za konfiguracijo uporabniškega vmesnika):

# yum info firewalld firewall-config

in,

# systemctl status -l firewalld.service

Po drugi strani storitev iptables privzeto ni vključena, vendar jo je mogoče namestiti prek.

# yum update && yum install iptables-services

Oba demona lahko zaženete in omogočite zagon ob zagonu z običajnimi ukazi systemd:

# systemctl start firewalld.service | iptables-service.service
# systemctl enable firewalld.service | iptables-service.service

Preberite tudi: Uporabni ukazi za upravljanje storitev Systemd

Kar zadeva konfiguracijske datoteke, storitev iptables uporablja /etc/sysconfig/iptables (ki ne bo obstajala, če paket ni nameščen v vašem sistemu). V polju RHEL 7, ki se uporablja kot vozlišče gruče, je ta datoteka videti tako:

Medtem ko požarni zid shranjuje svojo konfiguracijo v dveh imenikih, /usr/lib/firewalld in /etc/firewalld :

# ls /usr/lib/firewalld /etc/firewalld

Te konfiguracijske datoteke bomo nadalje preučili v nadaljevanju tega članka, potem ko bomo tu in tam dodali nekaj pravil. Zdaj vas bo dovolj opomniti, da lahko vedno najdete več informacij o obeh orodjih z.

# man firewalld.conf
# man firewall-cmd
# man iptables

Razen tega, ne pozabite si ogledati Pregled osnovnih ukazov in sistemske dokumentacije - 1. del trenutne serije, kjer sem opisal več virov, kjer lahko dobite informacije o paketih, nameščenih v vašem sistemu RHEL 7.

Uporaba Iptables za nadzor omrežnega prometa

Morda se boste morda želeli sklicevati na Konfiguriranje požarnega zidu Iptables - 8. del serije Linux Foundation Certified Engineer (LFCE), da si osvežite spomin o notranjih delih iptables, preden nadaljujete. Tako bomo lahko skočili naravnost v primere.

Vrata TCP 80 in 443 sta privzeti vrati, ki jih spletni strežnik Apache uporablja za obdelavo običajnega (HTTP) in varnega (HTTPS) spletnega prometa. Preko obeh vrat v vmesniku enp0s3 lahko dovolite dohodni in odhodni spletni promet na naslednji način:

# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Včasih morate blokirati ves (ali nekatere) vrste prometa, ki izvira iz določenega omrežja, na primer 192.168.1.0/24:

# iptables -I INPUT -s 192.168.1.0/24 -j DROP

bo spustil vse pakete, ki prihajajo iz omrežja 192.168.1.0/24, medtem ko

# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

bo dovolil samo dohodni promet prek vrat 22.

Če uporabljate polje RHEL 7 ne le kot programski požarni zid, temveč tudi kot dejanski strojni, tako da se nahaja med dvema ločenima omrežjema, mora biti posredovanje IP v vašem sistemu že omogočeno. V nasprotnem primeru morate urediti /etc/sysctl.conf in vrednost net.ipv4.ip_forward nastaviti na 1, kot sledi:

net.ipv4.ip_forward = 1

nato shranite spremembo, zaprite urejevalnik besedil in na koncu zaženite naslednji ukaz, da uveljavite spremembo:

# sysctl -p /etc/sysctl.conf

Na primer, tiskalnik je lahko nameščen v notranji omarici z IP 192.168.0.10, storitev CUPS pa posluša na vratih 631 (tako na tiskalniškem strežniku kot na požarnem zidu). Če želite posredovati zahteve za tiskanje odjemalcev na drugi strani požarnega zidu, dodajte naslednje pravilo iptables:

# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Upoštevajte, da iptables svoja pravila bere zaporedno, zato poskrbite, da privzeti pravilniki ali poznejša pravila ne bodo razveljavila tistih, opisanih v zgornjih primerih.

Uvod v FirewallD

Ena od sprememb, ki jih je uvedel požarni zid, so cone. Ta koncept omogoča ločevanje omrežij na različna območja na ravni zaupanja, ki se jo je uporabnik odločil dati na naprave in promet znotraj tega omrežja.

Če želite seznam aktivnih con:

# firewall-cmd --get-active-zones

V spodnjem primeru je javno območje aktivno in vmesnik enp0s3 mu je bil dodeljen samodejno. Če si želite ogledati vse informacije o določenem območju:

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

Ker lahko več o conah preberete v varnostnem priročniku RHEL 7, bomo tukaj navedli le nekaj konkretnih primerov.

Če želite dobiti seznam podprtih storitev, uporabite.

# firewall-cmd --get-services

Če želite omogočiti spletni in http promet prek https požarnega zidu, ki velja takoj in v naslednjih zagonih:

# firewall-cmd --zone=MyZone --add-service=http
# firewall-cmd --zone=MyZone --permanent --add-service=http
# firewall-cmd --zone=MyZone --add-service=https
# firewall-cmd --zone=MyZone --permanent --add-service=https
# firewall-cmd --reload

Če je koda> –zone izpuščena, se uporabi privzeto območje (lahko preverite z firewall-cmd –get-default-zone).

Če želite pravilo odstraniti, v zgornjih ukazih besedo add zamenjajte z remove.

Najprej morate ugotoviti, ali je za želeno območje omogočeno maskiranje:

# firewall-cmd --zone=MyZone --query-masquerade

Na spodnji sliki lahko vidimo, da je maskiranje omogočeno za zunanjo cono, ne pa tudi za javno:

Maskiranje lahko omogočite za javnost:

# firewall-cmd --zone=public --add-masquerade

ali uporabite maskiranje zunaj. Tukaj bi storili, da bi primer 3 posnemali s požarnim zidom:

# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

In ne pozabite znova naložiti požarnega zidu.

Nadaljnje primere najdete v 9. delu serije RHCSA, kjer smo razložili, kako dovoliti ali onemogočiti vrata, ki jih običajno uporabljajo spletni strežnik in strežnik ftp, in kako spremeniti ustrezno pravilo, ko so privzeta vrata za te storitve se spremenijo. Poleg tega se lahko za nadaljnje primere obrnete na wiki požarni zid.

Preberite tudi: Koristni primeri požarnega zidu za konfiguriranje požarnega zidu v RHEL 7

Zaključek

V tem članku smo razložili, kaj je požarni zid, katere storitve so na voljo za uporabo v RHEL 7, in podali nekaj primerov, ki vam lahko pomagajo pri začetku te naloge. Če imate kakršne koli pripombe, predloge ali vprašanja, nam to sporočite s pomočjo spodnjega obrazca. Hvala v naprej!