RHCSA sērija: Firewall Essentials un tīkla trafika vadība, izmantojot FirewallD un Iptables - 11. daļa


Vienkārši sakot, ugunsmūris ir drošības sistēma, kas kontrolē ienākošo un izejošo datplūsmu tīklā, pamatojoties uz iepriekš noteiktu noteikumu kopumu (piemēram, pakešu galamērķi/avotu vai trafika veidu, piemēram).

Šajā rakstā mēs pārskatīsim ugunsmūra, noklusējuma dinamiskās ugunsmūra dēmona pamatus Red Hat Enterprise Linux 7 un iptables pakalpojumu, mantoto ugunsmūra pakalpojumu Linux, ar kuru labi zina sistēmas un tīkla administratori, un kas ir pieejams arī RHEL 7.

FirewallD un Iptables salīdzinājums

Zem pārsega gan firewalld, gan iptables pakalpojums runā ar netfilter ietvaru kodolā, izmantojot to pašu interfeisu, kas nav pārsteidzoši, ka komanda iptables. Tomēr, pretstatā iptables pakalpojumam, firewalld var mainīt iestatījumus normālas sistēmas darbības laikā, nezaudējot esošos savienojumus.

Firewalld pēc noklusējuma ir jāinstalē jūsu RHEL sistēmā, lai gan tas, iespējams, nedarbojas. Jūs varat pārbaudīt, izmantojot šādas komandas (ugunsmūris-config ir lietotāja saskarnes konfigurācijas rīks):

# yum info firewalld firewall-config

un,

# systemctl status -l firewalld.service

No otras puses, pakalpojums iptables pēc noklusējuma nav iekļauts, bet to var instalēt, izmantojot.

# yum update && yum install iptables-services

Abus dēmonus var sākt un iespējot, lai sāktu sāknēšanu ar parastajām systemd komandām:

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

Lasiet arī: Noderīgas komandas, lai pārvaldītu Systemd pakalpojumus

Kas attiecas uz konfigurācijas failiem, pakalpojums iptables izmanto /etc/sysconfig/iptables (kura nepastāvēs, ja pakotne nav instalēta jūsu sistēmā). RHEL 7 lodziņā, ko izmanto kā klastera mezglu, šis fails izskatās šādi:

Tā kā firewalld saglabā konfigurāciju divos direktorijos, /usr/lib/firewalld un /etc/firewalld :

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

Mēs tālāk izskatīsim šos konfigurācijas failus vēlāk šajā rakstā, pēc tam, kad šeit un tur būsim pievienojuši dažus noteikumus. Tagad būs pietiekami atgādināt, ka vienmēr varat atrast vairāk informācijas par abiem rīkiem.

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

Izņemot to, atcerieties ieskatīties Essential komandu un sistēmas dokumentācijas pārskatīšana - pašreizējās sērijas 1. daļa, kur es aprakstīju vairākus avotus, kur varat iegūt informāciju par RHEL 7 sistēmā instalētajām pakotnēm.

Iptables izmantošana tīkla trafika kontrolei

Lai atsvaidzinātu atmiņu par iptables iekšējiem elementiem, pirms turpināt darbu, ieteicams atsaukties uz sadaļu Iptables ugunsmūra konfigurēšana - Linux Foundation Certified Engineer (LFCE) sērijas 8. daļa. Tādējādi mēs varēsim pāriet tieši uz piemēriem.

TCP porti 80 un 443 ir noklusējuma porti, kurus Apache tīmekļa serveris izmanto, lai apstrādātu normālu (HTTP) un drošu (HTTPS) tīmekļa trafiku. Jūs varat atļaut ienākošo un izejošo tīmekļa trafiku caur abām enp0s3 saskarnes portiem šādi:

# 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

Dažreiz var būt nepieciešams bloķēt visu (vai dažus) datplūsmas veidus, kas nāk no noteikta tīkla, piemēram, 192.168.1.0/24:

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

nometīs visas paketes, kas nāk no tīkla 192.168.1.0/24, savukārt

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

ļaus ienākošo satiksmi tikai caur 22. ostu.

Ja izmantojat savu RHEL 7 lodziņu ne tikai kā programmatūras ugunsmūri, bet arī kā faktisko uz aparatūru balstītu, lai tas atrastos starp diviem atšķirīgiem tīkliem, IP pāradresācijai jābūt jau iespējotai jūsu sistēmā. Ja nē, jums ir jārediģē /etc/sysctl.conf un iestatiet net.ipv4.ip_forward vērtību uz 1 šādi:

net.ipv4.ip_forward = 1

pēc tam saglabājiet izmaiņas, aizveriet teksta redaktoru un visbeidzot izpildiet šādu komandu, lai piemērotu izmaiņas:

# sysctl -p /etc/sysctl.conf

Piemēram, iekšējā kastē ar IP 192.168.0.10 var būt instalēts printeris, un CUPS pakalpojums klausās 631. portā (gan drukas serverī, gan jūsu ugunsmūrī). Lai pārsūtītu drukas pieprasījumus no klientiem ugunsmūra otrā pusē, jums jāpievieno šāda kārtula iptables:

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

Lūdzu, ņemiet vērā, ka iptables kārtulas lasa secīgi, tāpēc pārliecinieties, vai noklusējuma politikas vai jaunākas kārtības nenovērš iepriekšējos piemēros norādītās.

Darba sākšana ar FirewallD

Viena no izmaiņām, kas ieviesta ar ugunsmūri, ir zonas. Šī koncepcija ļauj nodalīt tīklus dažādās uzticības pakāpēs, ko lietotājs ir nolēmis izvietot ierīcēs un trafiku šajā tīklā.

Lai uzskaitītu aktīvās zonas:

# firewall-cmd --get-active-zones

Tālāk sniegtajā piemērā publiskā zona ir aktīva, un tai automātiski tiek piešķirta saskarne enp0s3. Lai skatītu visu informāciju par konkrētu zonu:

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

Tā kā vairāk par zonām varat lasīt RHEL 7 drošības rokasgrāmatā, šeit mēs uzskaitīsim tikai dažus konkrētus piemērus.

Lai iegūtu atbalstīto pakalpojumu sarakstu, izmantojiet.

# firewall-cmd --get-services

Lai atļautu http un https tīmekļa trafiku caur ugunsmūri, stājas spēkā nekavējoties un uz nākamajiem sāknēšanas gadījumiem:

# 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

Ja kods> –zona ir izlaists, tiek izmantota noklusējuma zona (to var pārbaudīt ar ugunsmūri-cmd –get-default-zone).

Lai noņemtu kārtulu, iepriekš minētajās komandās aizstājiet vārdu pievienot ar noņemt.

Pirmkārt, jums jānoskaidro, vai maskēšanai ir iespējota vēlamā zona:

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

Zemāk redzamajā attēlā mēs varam redzēt, ka maskēšana ir iespējota ārējai zonai, bet ne publiskai:

Varat vai nu iespējot maskēšanu sabiedrībai:

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

vai izmantot maskēšanu ārējā. Lūk, ko mēs darīsim, lai 3. piemēru atkārtotu ar firewalld:

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

Neaizmirstiet atkārtoti ielādēt ugunsmūri.

Papildu piemērus varat atrast RHCSA sērijas 9. daļā, kur mēs paskaidrojām, kā atļaut vai atspējot portus, kurus parasti izmanto tīmekļa serveris un ftp serveris, un kā mainīt atbilstošo kārtulu, kad šo pakalpojumu noklusējuma ports tiek mainīti. Turklāt, iespējams, vēlēsities atsaukties uz ugunsmūra wiki, lai uzzinātu citus piemērus.

Lasiet arī: Noderīgi ugunsmūriD piemēri, lai konfigurētu ugunsmūri RHEL 7

Secinājums

Šajā rakstā mēs esam izskaidrojuši, kas ir ugunsmūris, kādi ir pieejamie pakalpojumi, lai to ieviestu RHEL 7, un sniedzām dažus piemērus, kas var palīdzēt sākt darbu ar šo uzdevumu. Ja jums ir kādi komentāri, ieteikumi vai jautājumi, sazinieties ar mums, izmantojot zemāk esošo veidlapu. Pateicos jau iepriekš!