Serija RHCSA: Osnove zaštitnog zida i kontrola mrežnog prometa korištenjem FirewallD i Iptables - 11. dio


Jednostavnim riječima, firewall je sigurnosni sistem koji kontrolira dolazni i odlazni promet u mreži na osnovu skupa unaprijed definiranih pravila (kao što je odredište/izvor paketa ili tip prometa, na primjer) .

U ovom članku ćemo pregledati osnove firewalld, zadanog dinamičkog firewall demona u Red Hat Enterprise Linux 7, i usluge iptables, naslijeđe firewall servis za Linux, s kojim je većina sistemskih i mrežnih administratora dobro upoznati, a koji je također dostupan u RHEL 7.

Poređenje između FirewallD i Iptables

Ispod haube, i firewalld i iptables servis razgovaraju sa netfilter okvirom u kernelu preko istog interfejsa, što nije iznenađujuće, naredba iptables . Međutim, za razliku od usluge iptables, firewalld može promijeniti postavke tokom normalnog rada sistema bez gubitka postojećih veza.

Firewalld bi trebao biti instaliran prema zadanim postavkama u vašem RHEL sistemu, iako možda nije pokrenut. Možete provjeriti pomoću sljedećih naredbi (firewall-config je alat za konfiguraciju korisničkog sučelja):


yum info firewalld firewall-config

i,


systemctl status -l firewalld.service

S druge strane, usluga iptables nije uključena po defaultu, ali se može instalirati putem.


yum update && yum install iptables-services

Oba demona se mogu pokrenuti i omogućiti da se pokrenu pri pokretanju sa uobičajenim systemd komandama:


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

Pročitajte također: Korisne komande za upravljanje Systemd uslugama

Što se tiče konfiguracijskih datoteka, usluga iptables koristi /etc/sysconfig/iptables (što neće postojati ako paket nije instaliran na vašem sistemu). Na RHEL 7 kutiji koja se koristi kao čvor klastera, ova datoteka izgleda ovako:

Dok firewalld pohranjuje svoju konfiguraciju u dva direktorija, /usr/lib/firewalld i /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

Kasnije ćemo u ovom članku dalje ispitati ove konfiguracijske datoteke, nakon što tu i tamo dodamo nekoliko pravila. Do sada će biti dovoljno da vas podsjetim da uvijek možete pronaći više informacija o oba alata.


man firewalld.conf
man firewall-cmd
man iptables

Osim toga, ne zaboravite da pogledate Pregled osnovnih naredbi i sistemske dokumentacije – 1. dio tekuće serije, gdje sam opisao nekoliko izvora gdje možete dobiti informacije o paketima instaliranim na vašem RHEL 7 sistemu .

Korišćenje Iptablesa za kontrolu mrežnog saobraćaja

Možda ćete htjeti pogledati Konfiguracija Iptables zaštitnog zida – 8. dio serije Linux Foundation Certified Engineer (LFCE) kako biste osvježili pamćenje o internim elementima iptables prije nego nastavite dalje. Tako ćemo moći uskočiti odmah u primjere.

Primjer 1: Dozvoljava i dolazni i odlazni web promet

TCP portovi 80 i 443 su zadani portovi koje Apache web server koristi za normalan (HTTP) i siguran (HTTPS<) web promet. Možete dozvoliti dolazni i odlazni web promet kroz oba porta na enp0s3 sučelju na sljedeći 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
Primjer 2: Blokirajte sve (ili neke) dolazne veze sa određene mreže

Možda ćete morati da blokirate sve (ili neke) vrste saobraćaja koji potiče sa određene mreže, recimo 192.168.1.0/24, na primer:


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

će odbaciti sve pakete koji dolaze sa mreže 192.168.1.0/24, dok,


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

će dozvoliti samo dolazni saobraćaj preko porta 22.

Primjer 3: Preusmjerite dolazni promet na drugu destinaciju

Ako koristite RHEL 7 kutiju ne samo kao softverski zaštitni zid, već i kao stvarni hardverski baziran, tako da se nalazi između dvije različite mreže, IP prosljeđivanje mora biti već omogućeno u vašem sistemu . Ako ne, trebate urediti /etc/sysctl.conf i postaviti vrijednost net.ipv4.ip_forward na 1, kako slijedi:


net.ipv4.ip_forward = 1

zatim sačuvajte promjenu, zatvorite svoj uređivač teksta i na kraju pokrenite sljedeću naredbu da primijenite promjenu:


sysctl -p /etc/sysctl.conf

Na primjer, možda imate instaliran štampač na internoj kutiji sa IP 192.168.0.10, sa uslugom CUPS koja sluša na portu 631 (oba na serveru za štampanje i na vašem zaštitnom zidu). Da biste proslijedili zahtjeve za ispis od klijenata s druge strane firewall-a, trebali biste dodati sljedeće iptables pravilo:


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

Imajte na umu da iptables čita svoja pravila uzastopno, pa se pobrinite da zadana pravila ili kasnija pravila ne nadjačavaju ona navedena u primjerima iznad.

Početak rada sa FirewallD-om

Jedna od promjena koje je uveo firewalld su zone. Ovaj koncept omogućava razdvajanje mreža u različite zone nivo povjerenja koji je korisnik odlučio da stavi na uređaje i promet unutar te mreže.

Za popis aktivnih zona:


firewall-cmd --get-active-zones

U primjeru ispod, javna zona je aktivna, a interfejs enp0s3 joj je automatski dodijeljen. Za pregled svih informacija o određenoj zoni:


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

Pošto više o zonama možete pročitati u RHEL 7 Sigurnosnom vodiču, ovdje ćemo navesti samo neke konkretne primjere.

Primjer 4: Dozvoljavanje usluga kroz zaštitni zid

Da biste dobili listu podržanih usluga, koristite.


firewall-cmd --get-services

Da omogućite http i https web promet kroz zaštitni zid, koji stupa na snagu odmah i pri sljedećim pokretanjima:


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

Ako je–zone izostavljena, koristi se zadana zona (možete provjeriti pomoću firewall-cmd –get-default-zone).

Da biste uklonili pravilo, zamijenite riječ add sa remove u gornjim naredbama.

Primjer 5: IP/prosljeđivanje porta

Prvo morate saznati da li je maskiranje omogućeno za željenu zonu:


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

Na slici ispod možemo vidjeti da je maskiranje omogućeno za vanjsku zonu, ali ne i za javnu:

Možete ili omogućiti maskiranje za javnost:


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

ili koristite maskiranje u vanjskom. Evo šta bismo uradili da repliciramo Primjer 3 sa firewalld:


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

I ne zaboravite ponovo učitati firewall.

Dodatne primjere možete pronaći u 9. dijelu serije RHCSA, gdje smo objasnili kako dozvoliti ili onemogućiti portove koje obično koriste web server i ftp server i kako promijeniti odgovarajuće pravilo kada je zadani port za te usluge se mijenjaju. Osim toga, možda ćete htjeti pogledati firewalld wiki za daljnje primjere.

Pročitajte također: Korisni FirewallD primjeri za konfiguraciju zaštitnog zida u RHEL 7

Zaključak

U ovom članku smo objasnili šta je firewall, koje su usluge na raspolaganju za implementaciju jednog u RHEL 7 i naveli nekoliko primjera koji vam mogu pomoći da počnete s ovim zadatak. Ako imate bilo kakvih komentara, sugestija ili pitanja, slobodno nas obavijestite koristeći formu ispod. Hvala unapred!