Pokazaćemo vam korak po korak kako da konfigurišete Firewalld na CentOS 7
Šta je Firewalld? Ovo je punopravni zaštitni zid koji je podrazumevano dostupan u CentOS-u 7. Pokazaćemo vam kako da ga konfigurišete na serveru i takođe ćemo vam predstaviti firewall-cmd alat.
1. Koji su osnovni koncepti zaštitnog zida?
Zone
Firewalld može upravljati grupama pravila kroz zone. To je skup instrukcija za upravljanje prometom zasnovanim na povjerenju u mreže. Mrežnom sučelju se može dodijeliti zona za kontrolu ponašanja zaštitnog zida. Ovo može biti neophodno jer se laptop računari često mogu povezati na različite mreže. Računari mogu koristiti zone za promjenu skupa pravila ovisno o okruženju. Na primjer, ako se povežete na Wi-Fi u kafiću, možda ćete morati primijeniti strože smjernice. Ali kod kuće pravila mogu biti lojalnija.
Firewalld ima sljedeće zone:
Drop ima najniži stepen povjerenja na mreži. U ovom slučaju, podržane su samo odlazne veze, a dolazni promet se prekida bez odgovora;
Blok se razlikuje od pada po tome što kada se odbaci dolazni zahtjev, izdaje se poruka icmp-host-prohibited ili icmp6-adm-prohibited;
Javna zona je javna mreža koja podržava dolazne zahtjeve na individualnoj osnovi. Međutim, njoj se ne može vjerovati;
External je vanjska mrežna zona koja podržava NAT maskiranje kako bi interna mreža ostala privatna. Međutim, može mu se pristupiti;
Druga strana spoljašnjeg je unutrašnja. Računari u ovoj zoni mogu biti pouzdani, tako da će biti dostupne dodatne usluge;
Dmz zona je tražena za izolovane računare koji nemaju pristup ostatku mreže. U ovom slučaju, moći ćete konfigurirati odabrane dolazne veze;
Zona radne mreže je radna. U njemu možete vjerovati okruženju, ali nisu podržane sve dolazne veze, već samo one koje definira korisnik;
U pouzdanoj zoni možete vjerovati svim računarima na mreži.
Pravila čuvanja
U Firewallu su privremeni ili trajni. Dešava se da se u skupu promeni ili pojavi pravilo koje utiče na ponašanje zaštitnog zida. Promjene će biti izgubljene nakon ponovnog pokretanja, pa ih morate sačuvati. Naredbe firewall-cmd koriste oznaku -permanent da bi stalne pravila. Nakon toga, moći ćete ih koristiti kontinuirano.
2. Kako omogućiti Firewalld?
Trebali biste započeti pokretanjem demonskog programa u pozadini. Datoteka systemd jedinice naziva se firewalld.service. Da biste omogućili demonski program, morate u komandnu liniju upisati:
Sudo systemctl start firewalld.service
Moramo biti sigurni da je usluga počela. Za ovo će vam trebati:
Firewall-cmd --state radi
Firewall je pokrenut i radi prema zadanim uputstvima. Imajte na umu da je usluga omogućena, ali se neće automatski pokrenuti sa serverom. Da biste to učinili, morat ćete konfigurirati automatsko pokretanje. Osim toga, napravite skup pravila kako ne biste bili blokirani na vlastitom serveru.
3. Podrazumevana pravila zaštitnog zida
Kako mogu da ih pogledam?
Da vidite zadanu zonu, otkucajte:
Firewall-cmd --get-default-zone public
Vidimo da Firewalld nije primio instrukcije u vezi sa drugim zonama. Public se koristi po defaultu i jedina je aktivna zona, jer nijedan interfejs nije bio vezan za druge. Ako želite da vidite listu svih dostupnih domenskih zona, unesite u konzolu:
Firewall-cmd --get-active-zones javna sučelja: eth0 eth1
Vidimo dva mrežna interfejsa vezana za javnu zonu. Rade prema pravilima navedenim za ovu zonu. Zadana pravila možete vidjeti na sljedeći način:
Firewall-cmd --list-all public (podrazumevano, aktivno) sučelja: eth0 eth1 izvori: usluge: dhcpv6-client ssh portovi: masquerade: nema portova za prosleđivanje: icmp-blocks: bogata pravila:
Hajde da rezimiramo:
Zadana i jedina aktivna zona je javna;
Ovoj zoni su dodeljena dva interfejsa: eth0 i eth1;
Public podržava udaljenu SSH administraciju kao i dodjelu DHSP IP adrese.
Druge zone zaštitnog zida
Hajde da vidimo koje druge zone ima firewall. Da vidite listu svih dostupnih, unesite u konzolu:
Također možete dobiti parametre za svaku određenu zonu dodavanjem -zone= zastavice:
Firewall-cmd --zone=home --list-all home sučelja: izvori: usluge: dhcpv6-client ipp-client mdns samba-client ssh portovi: masquerade: nema naprijed-portova: icmp-blocks: bogata pravila:
Ako trebate navesti definicije svih dostupnih zona, koristite opciju --list-all-zones. Pošaljimo izlaz na pejdžer kako bismo olakšali pregled izlaza:
Firewall-cmd --list-all-zones | manje
4. Kako konfigurirati zone interfejsa?
Sva mrežna sučelja su inicijalno vezana za zadanu zonu.
Promjena zone interfejsa za samo jednu sesiju
U tu svrhu će nam trebati dvije opcije: --change-interface= i --zone=. Za prijenos u kućnu eth0 zonu, birajte:
Sudo firewall-cmd --zone=home --change-interface=eth0 uspjeh
Imajte na umu da to može utjecati na funkcionalnost određenih usluga. Na primjer, SSH je podržan u kućnoj zoni, tj. veze se neće resetovati. Međutim, to se može dogoditi u drugim zonama, što će dovesti do blokiranja pristupa vašem vlastitom serveru. Moramo biti sigurni da je interfejs vezan za novu zonu. Upišite u komandnu liniju:
Kada se firewall ponovo pokrene, interfejs će se ponovo povezati sa podrazumevanom zonom.
Sudo systemctl restart firewalld.service firewall-cmd --get-active-zones javna sučelja: eth0 eth1
Promjena zone interfejsa na stalnoj osnovi
Nakon ponovnog pokretanja zaštitnog zida, interfejs će biti ponovo dodeljen podrazumevanoj zoni ako nijedna druga zona nije navedena u postavkama interfejsa. Konfiguracije u CentOS-u se nalaze u datotekama formata ifcfg-interface u direktoriju /etc/sysconfig/network-scripts. Da biste definirali zonu interfejsa, morate otvoriti njen konfiguracijski fajl:
Sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
Dodajmo varijablu ZONE= na kraj datoteke. Postavimo drugu zonu kao vrijednost:
DNS1=2001:4860:4860::8844 DNS2=2001:4860:4860::8888 DNS3=8.8.8.8 ZONA=početna
Sada spremimo promjene, nakon čega se datoteka može zatvoriti. Da biste ažurirali postavke, morat ćete ponovo pokrenuti mrežnu uslugu, kao i zaštitni zid:
Sudo systemctl restart network.service sudo systemctl restart firewalld.service
Nakon toga, eth0 interfejs će biti dodeljen kućnoj zoni.
Firewall-cmd --get-active-zones kućni interfejsi: eth0 javni interfejsi: eth1
Postavljanje zadanih zona
Može se postaviti i druga zadana zona. Opcija --set-default-zone= će nam pomoći u tome, jer povezuje sva mrežna sučelja za drugu zonu.
Sudo firewall-cmd --set-default-zone=home home interfaces: eth0 eth1
5. Kako napraviti pravila za aplikacije?
Dodavanje u servisno područje
Ovo je najlakše učiniti na portu koji koristi zaštitni zid. Da vidite sve dostupne usluge, upišite u komandnu liniju:
Firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp visoka dostupnost http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps- libt ldaps-libt libdvi wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radijus rpc-bind samba samba-client smtp ssh telnet tftp tftp-client prijenos-klijent wbem-httpser
Zapamtite da .xml datoteke u direktoriju /usr/lib/firewalld/services pohranjuju sve informacije o svakoj usluzi. Informacije o SSH-u možete pronaći u /usr/lib/firewalld/services/ssh.xml. izgledaju ovako:
Da biste omogućili podršku za usluge u zonama, potrebna vam je oznaka -add-service=, ali opcija -zone je korisna za određivanje ciljne zone. Imajte na umu da će takve promjene važiti samo za jednu sesiju. Ako trebate spremiti promjene za kasniju upotrebu, koristite -permanent flag. Da vidimo kako to radi. Pokrenimo web server kako bi mogao opsluživati HTTP promet. Omogućimo podršku za jednu sesiju u javnoj zoni. Ukucajte u konzolu:
Sudo firewall-cmd --zone=public --add-service=http
Nemojte koristiti opciju -zone= ako dodajete uslugu u zadanu zonu. Provjerimo da li je sve funkcionisalo:
Firewall-cmd --zone=public --list-services dhcpv6-client http ssh
Sada treba da testiramo firewall i sam servis. Ako vidite da je sve u redu, možete bezbedno da promenite stalni skup pravila. Da biste dodali pravilo podrške za novu uslugu, morate navesti u konzoli:
Sudo firewall-cmd --zone=public --permanent --add-service=http
Ako trebate vidjeti cijelu listu pravila koja su na snazi na stalnoj osnovi, tada:
Sudo firewall-cmd --zone=public --permanent --list-services dhcpv6-client http ssh
Kao rezultat toga, javna zona će podržavati port 80 i HTTP. Ako vaš server može posluživati SSL/TLS promet, možete dodati HTTPS uslugu:
Sudo firewall-cmd --zone=javno --add-service=https sudo firewall-cmd --zone=javno --permanent --add-service=https
6. Šta ako usluga nije dostupna?
Podrazumevano, Firewalld uključuje mnoge popularne usluge. Ali dešava se da programi trebaju druge usluge koje nisu uključene u firewall. Ovaj problem se može riješiti na nekoliko načina.
Metoda #1: Definiranje usluge
Dodavanje porta u zonu je prilično jednostavno. Međutim, ako ima dosta aplikacija, bit će teško razumjeti koji port šta koristi. U takvoj situaciji, dobro rješenje bi bilo definiranje usluga umjesto portova. U suštini, usluga je grupa portova kojima je dato ime i opis. Uz njihovu pomoć bit će lakše upravljati postavkama. Ali usluga je nešto složenija od luke.
Počnimo sa kopiranjem postojeće skripte iz /usr/lib/firewalld/services foldera, iz kojeg firewall preuzima nestandardne postavke u /etc/firewalld/services. Kopirajmo definiciju SSH usluge da je koristimo kao primjer uvjetne definicije usluge. Ne zaboravite da ime skripte mora odgovarati imenu servisa, kao i da ima ekstenziju datoteke .xml. Ukucajte u konzolu:
Sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
Sada morate napraviti promjene u kompajliranom fajlu:
Sudo nano /etc/firewalld/services/example.xml
Unutra je SSH definicija:
SSH Secure Shell (SSH) je protokol za prijavu i izvršavanje komandi na udaljenim mašinama. Pruža sigurnu šifrovanu komunikaciju. Ako planirate daljinski pristupiti svom stroju putem SSH-a preko sučelja sa zaštitnim zidom, omogućite ovu opciju. Trebate instalirati openssh-server paket da bi ova opcija bila korisna.
Sada spremimo promjene i zatvorimo datoteku. Nakon ovoga ćete morati ponovo pokrenuti firewall koristeći:
Sudo firewall-cmd --reload
Naši će se pojaviti na listi dostupnih usluga:
Firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns primjer ftp visoke dostupnosti http https imaps ipp ipp-client ipsec kerberos kpasswd lib virttlps lims-libvirtld lims -wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radijus rpc-bind samba samba-client smtp ssh telnet tftp tftp-client prijenos-klijent wm-https server prijenos-klijent wm-https
Metoda br. 2: Kreiranje porta
Otvorimo port aplikacije u željenoj zoni zaštitnog zida i odredimo ga, kao i protokol. Zamislimo situaciju u kojoj morate u javnu zonu dodati program koji koristi TCP protokol i port 5000. Da biste aktivirali podršku aplikacije za jednu sesiju, trebat će vam opcija -add-port=. Osim toga, morate navesti tcp ili udp protokol:
Sudo firewall-cmd --zone=public --add-port=5000/tcp
Uvjerimo se da sve radi:
Firewall-cmd --list-ports 5000/tcp
Osim toga, moguće je odrediti raspon portova pomoću crtice. Na primjer, ako program koristi portove 4990-4999, tada ih možete dodati u javnu zonu na sljedeći način:
Sudo firewall-cmd --zone=public --add-port=4990-4999/udp
Ako sve radi u redu, dodajte upute u postavke vatrozida:
Sudo firewall-cmd --zone=javno --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd -- zona=public --permanent --list-ports uspjeh uspjeh 4990-4999/udp 5000/tcp
7. Kako kreirati zonu?
Vatrozid je u stanju da obezbedi razne unapred definisane zone, koje su obično dovoljne za rad, ali ponekad je potrebno da kreirate sopstvenu prilagođenu zonu. Na primjer, DNS serveru je potrebna privatnaDNS zona, a web serveru javna web zona. Nakon kreiranja zona, morate ga dodati u postavke vašeg zaštitnog zida. Kreirajmo publicweb i privateDNS zone upisivanjem u konzolu:
Sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS
Provjerimo da li je sve funkcionisalo:
Sudo firewall-cmd --permanent --get-zones block dmz ispusti vanjski dom interni privatniDNS javni javni web pouzdan rad
Firewall-cmd --get-zones blokira dmz ispusti vanjski kućni interni javni pouzdani rad
Međutim, nove zone neće biti dostupne u trenutnoj sesiji:
Firewall-cmd --get-zones blokira dmz ispusti vanjski kućni interni javni pouzdani rad
Ponovo pokrenimo firewall da dobijemo pristup novim zonama:
Sudo firewall-cmd --reload firewall-cmd --get-zones block dmz ispusti eksterni dom interni privatniDNS javni javni web pouzdan rad
Sada će biti moguće da nove zone definiraju luke i usluge. Recimo da postoji potreba za dodavanjem SSH, HTTP i HTTPS u publicweb zonu:
Sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https firewall- cmd --zone=publicweb --list-all publicweb sučelja: izvori: usluge: http https ssh portovi: masquerade: nema portova za prosljeđivanje: icmp-blocks: bogata pravila:
Osim toga, možete dodati DNS u zonu privateDNS koristeći:
Sudo firewall-cmd --zone=privateDNS --add-service=dns firewall-cmd --zone=privateDNS --list-all privateDNS sučelja: izvori: usluge: dns portovi: masquerade: nema naprijed-portova: icmp-blocks: bogata pravila:
Nakon toga možete sigurno dodijeliti mrežna sučelja novim zonama:
Sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1
Provjerite funkcioniraju li postavke. Ako je sve u redu, dodajte ih stalnim pravilima:
Sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns
Sada pređimo na postavljanje mrežnih interfejsa. Ovo je neophodno za automatsko povezivanje na željenu zonu. Recimo da se trebate vezati na publicweb eth0, a zatim:
Sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 . . . IPV6_AUTOCONF=ne DNS1=2001:4860:4860::8844 DNS2=2001:4860:4860::8888 DNS3=8.8.8.8 ZONE=javni web
Povežimo i eht1 za privateDNS koristeći:
Sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1 . . . NETMASK=255.255.0.0 DEFROUTE="ne" NM_CONTROLLED="da" ZONE=privatniDNS
Da bi promjene stupile na snagu, morat ćete ponovo pokrenuti zaštitni zid i mrežne usluge:
Sudo systemctl restart network sudo systemctl restart firewalld
Morate provjeriti zone kako biste bili sigurni da su usluge registrirane:
Firewall-cmd --get-active-zones privateDNS sučelja: eth1 publicweb sučelja: eth0
Sada moramo provjeriti rade li:
Firewall-cmd --zone=publicweb --list-services http htpps ssh firewall-cmd --zone=privateDNS --list-services dns
Kao što vidimo, korisničke zone su potpuno spremne za rad. Bilo koji od njih se može dodijeliti kao zadani. Na primjer:
Sudo firewall-cmd --set-default-zone=publicweb
8. Kako mogu učiniti da se zaštitni zid automatski pokrene?
Nakon provjere pravila i svih postavki, konfigurisaćemo automatsko pokretanje koristeći:
Sudo systemctl omogući firewalld
Ovo će omogućiti da se firewall omogući odmah nakon pokretanja servera.
Kao zaključak, vrijedi napomenuti da je Firewalld firewall prilično fleksibilan alat u pogledu postavki. I možete promijeniti politiku njegovog rada koristeći zone.
Prvi korak u zaštiti servera od vanjskih prijetnji je zaštitni zid, koji filtrira dolazni i odlazni promet. U ovom članku želim razgovarati o postavljanju iptables-a, posebnog slučaja firewall-a na CentOS-u, kao io instaliranju i onemogućavanju istog. Moj vodič neće biti iscrpan, razmatrat ću samo one aspekte koje smatram najvažnijim i koje sam koristim u svom radu.
Ovaj članak je dio jedne serije članaka o serveru.
Uvod
Iptables je trenutno de facto standard među modernim Linux distribucijama. Ne mogu se čak ni odmah sjetiti šta se još koristi kao zaštitni zid. Dakle, svaki Linux administrator mora se pozabaviti postavljanjem ovog firewall-a u svom radu.
Postoje različite veze na ovaj firewall koje se koriste za „prikladniju“ konfiguraciju. Ubuntu ima ufw, u centima - firewalld, ostale ne poznajem. Lično, ne vidim nikakvu pogodnost u korištenju ovih alata. Navikao sam postavljati Linux firewall na starinski način, kao što sam naučio na samom početku svog rada. Mislim da je ovo najjednostavniji i najpovoljniji način, koji ću podijeliti s vama. Njegova suština se svodi na činjenicu da se skripta kreira sa pravilima zaštitnog zida. Ova skripta se može lako urediti kako bi odgovarala vašim potrebama i prenijeti sa servera na server.
Onemogućavanje firewalld-a
Već sam se dotakao pitanja onemogućavanja firewalla u temi o . Prije svega, onemogućimo firewalld, koji je u centosu 7 po defaultu prisutan odmah nakon instalacije:
# systemctl stop firewalld
Sada ga uklonimo iz pokretanja kako se ne bi ponovo uključio nakon ponovnog pokretanja:
# systemctl onemogućava firewalld
Nakon toga, postavke zaštitnog zida na serveru postaju potpuno otvorene. Možete pogledati iptables pravila pomoću naredbe:
Instaliranje iptablesa
U stvari, mi već imamo firewall na našem serveru i on radi, jednostavno nema pravila, sve je otvoreno. Morat ćemo instalirati dodatne uslužne programe za upravljanje, bez kojih je nemoguće konfigurirati iptables. Na primjer, neće biti moguće ponovo pokrenuti firewall:
# systemctl restart iptables.service Nije uspio izdati poziv metode: Jedinica iptables.service nije uspjela učitati: Nema takve datoteke ili direktorija.
Ili ga nećete moći dodati u automatsko pokretanje:
# systemctl omogući iptables.service Neuspješno izdavanje poziva metode: nema takve datoteke ili direktorija
Da biste izbjegli takve greške, instalirajte potreban paket s uslužnim programima:
# yum -y instalirati iptables-services
Sada možete dodati iptables za pokretanje i pokretanje:
# systemctl omogući iptables.service # systemctl start iptables.service
Postavljanje zaštitnog zida
Koristim skriptu za upravljanje pravilima zaštitnog zida. Kreirajmo ga:
# mcedit /etc/iptables.sh
Zatim ćemo ga ispuniti potrebnim pravilima. Ja ću raščlaniti sve bitne dijelove scenarija, i Navest ću ga u cijelosti kao tekstualni fajl na kraju članka. Pravila su napravljena u obliku slika kako bi se zabranilo kopiranje i lijepljenje. To može dovesti do grešaka u radu pravila, na koje sam i sam naišao dok sam pripremao članak.
Razmotrit ćemo situaciju u kojoj je server pristupnik za Internet za lokalnu mrežu.
Prije svega, postavimo sve varijable koje ćemo koristiti u skripti. Ovo nije neophodno, ali se preporučuje jer je zgodno prenijeti postavke sa servera na server. Biće dovoljno da jednostavno preraspodelite varijable.
Prije primjene novih pravila, čistimo sve lance:
Blokiramo sav promet koji ne odgovara nijednom od pravila:
Dozvoli sav lokalni i lokalni promet:
Dozvoljavamo ping:
Ako vam ovo ne treba, nemojte dodavati pravila koja dozvoljavaju icmp.
Otvaramo pristup Internetu samom serveru:
Ako želite otvoriti sve dolazne serverske veze, dodajte sljedeće pravilo:
Sada dodajmo zaštitu od najčešćih mrežnih napada. Prvo, odbacimo sve pakete koji nemaju status:
Blokiranje nul paketa:
Zaštitite se od syn-flood napada:
Ako ne postavite ograničenja pristupa sa lokalne mreže, tada svima dopuštamo pristup internetu:
Zatim zabranjujemo pristup sa Interneta lokalnoj mreži:
Da bi naša lokalna mreža koristila internet, omogućavamo nat:
Kako ne bismo izgubili pristup serveru, nakon primjene pravila dozvoljavamo konekcije putem ssh-a:
I na kraju zapisujemo pravila tako da se primjenjuju nakon ponovnog pokretanja:
Sastavili smo jednostavnu konfiguraciju koja blokira sve dolazne veze osim ssh-a i omogućava pristup sa lokalne mreže na Internet. Istovremeno smo se zaštitili od nekih mrežnih napada.
Sačuvajte skriptu, učinite je izvršnom i pokrenite:
# chmod 0740 /etc/iptables.sh # /etc/iptables.sh
Pogledajmo pravila i provjerimo da li su sva pravila na snazi:
# iptables -L -v -n
Imajte na umu da pravila trebate primijeniti samo ako imate pristup konzoli servera. Ako dođe do greške u postavkama, možete izgubiti pristup. Uvjerite se da u hitnim slučajevima možete onemogućiti zaštitni zid i prilagoditi postavke.
Otvaranje portova
Sada ćemo malo proširiti našu konfiguraciju i otvoriti portove u iptables za neke usluge. Recimo da imamo pokrenut web server i da mu trebamo otvoriti pristup sa Interneta. Dodajte pravila za web promet:
Dodata je dozvola za dolazne veze na portovima 80 i 443 koje web server koristi u svom radu.
Ako imate instaliran mail server, morate dozvoliti dolazne konekcije s njim na svim korištenim portovima:
Da bi DNS server ispravno radio, potrebno je da otvorite UDP port 53
Prosljeđivanje portova
Razmotrimo situaciju kada je potrebno proslediti portove sa eksternog interfejsa na neki računar na lokalnoj mreži. Recimo da treba da dobijete rdp pristup računaru 10.1.3.50 sa Interneta. Prosljeđujemo TCP port 3389:
Ako ne želite da otkrijete poznati port izvana, možete preusmjeriti sa nestandardnog porta na rdp port ciljnog računara:
Ako port prosljeđujete izvana na lokalnu mrežu, obavezno prokomentirajte pravilo koje blokira pristup s vanjske mreže na internu. U mom primjeru ovo pravilo je: $IPT -A PROSLJEDI -i $WAN -o $LAN1 -j ODBIJAJ
Ili prije ovog pravila kreirajte pravilo koje dozvoljava vanjski pristup internoj usluzi, na primjer ovako:
$IPT -A NASLJEDI -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j PRIHVATI
Omogućavanje dnevnika
Tokom podešavanja, korisno je omogućiti evidenciju za praćenje blokiranih paketa i otkriti zašto nema pristupa potrebnim servisima za koje se čini da smo već otvorili. Sve blokirane pakete šaljem u zasebne lance (block_in, block_out, block_fw) koji odgovaraju smjeru prometa i označavam svaki smjer u logovima. Ovo čini praktičnijim izvođenje izvještaja. Dodajte sljedeća pravila na sam kraj skripte, prije spremanja postavki:
Možete pratiti sve blokirane pakete u /var/log/messages datoteci.
Nakon što završite s postavljanjem, komentirajte ove redove i onemogućite evidentiranje. To se svakako isplati učiniti, jer trupci rastu vrlo brzo. Ja lično ne vidim nikakav praktičan smisao u čuvanju takvih informacija.
Kako onemogućiti iptables
Ako iznenada odlučite da vam više ne treba zaštitni zid, možete ga onemogućiti na sljedeći način:
# systemctl stop iptables.service
Ova komanda zaustavlja zaštitni zid. A sljedeće ga uklanja iz pokretanja:
# systemctl onemogućava iptables.service
Onemogućavanjem zaštitnog zida dozvolili smo sve veze.
Zaključak
Kao što sam obećao, objavljujem gotovu skriptu sa osnovnim skupom pravila koja smo razmotrili
Još jednom želim da istaknem da prilikom postavljanja iptablesa morate biti izuzetno oprezni. Nemojte započinjati ovaj posao ako nemate pristup konzoli servera. Čak i dok sam pisao ovaj članak, izgubio sam pristup serveru zbog smiješne greške u pravilima. Ova greška je nastala zbog kopiranja i gubitka dvostruke crtice - zamijenjena je jednom.
online kurs “Linux Administrator” na OTUS-u. Kurs nije za početnike; za upis potrebno vam je osnovno znanje o mrežama i instalaciji Linuxa na virtuelnu mašinu. Obuka traje 5 mjeseci, nakon čega će uspješni polaznici kursa moći proći intervjue sa partnerima. Šta će vam ovaj kurs dati:
- Poznavanje Linux arhitekture.
- Ovladavanje savremenim metodama i alatima za analizu i obradu podataka.
- Mogućnost odabira konfiguracije za potrebne zadatke, upravljanja procesima i osiguravanja sigurnosti sistema.
- Poznavanje osnovnih alata za rad sistem administratora.
- Razumijevanje specifičnosti postavljanja, konfiguriranja i održavanja mreža izgrađenih na Linuxu.
- Sposobnost brzog rješavanja nastalih problema i osiguravanja stabilnog i neprekidnog rada sistema.
Zaštitni zid instaliran u operativnom sistemu koristi se za sprečavanje neovlašćenog saobraćaja od prolaska između računarskih mreža. Posebna pravila za firewall kreiraju se ručno ili automatski, koja su odgovorna za kontrolu pristupa. OS razvijen na Linux kernelu, CentOS 7 ima ugrađeni zaštitni zid i njime se upravlja pomoću zaštitnog zida. FirewallD je podrazumevano omogućen, a danas bismo želeli da razgovaramo o njegovom postavljanju.
Kao što je gore spomenuto, standardni zaštitni zid u CentOS-u 7 je uslužni program FirewallD. Zato će se o postavljanju zaštitnog zida raspravljati koristeći ovaj alat kao primjer. Možete postaviti pravila filtriranja koristeći iste iptables, ali to se radi na malo drugačiji način. Preporučujemo da se upoznate sa konfiguracijom pomenutog uslužnog programa klikom na sljedeću vezu i mi ćemo započeti analizu FirewallD-a.
Osnove zaštitnog zida
Postoji nekoliko zona - skupova pravila za upravljanje prometom na osnovu povjerenja u mreže. Svima su date vlastite politike, čija ukupnost čini konfiguraciju zaštitnog zida. Svakoj zoni je dodeljen jedan ili više mrežnih interfejsa, što vam takođe omogućava da prilagodite filtriranje. Primijenjena pravila direktno zavise od korištenog sučelja. Na primjer, prilikom povezivanja na javni Wi-Fi, firewall će povećati nivo kontrole, a na kućnoj mreži će omogućiti dodatni pristup učesnicima u lancu. Predmetni zaštitni zid sadrži sljedeće zone:
- trusted — maksimalni nivo poverenja u sve mrežne uređaje;
- home - grupa lokalne mreže. Postoji poverenje u okruženje, ali dolazne veze su dostupne samo određenim mašinama;
- radna - radna površina. Postoji povjerenje u većinu uređaja, a aktiviraju se i dodatne usluge;
- dmz je zona za izolovane računare. Takvi uređaji su isključeni sa ostatka mreže i dozvoljavaju samo određeni dolazni saobraćaj;
- interna — zona internih mreža. Poverenje se primenjuje na sve mašine, otvaraju se dodatni servisi;
- eksterna — zona obrnuto od prethodne. U eksternim mrežama, NAT maskiranje je aktivno, zatvarajući internu mrežu, ali ne blokirajući mogućnost pristupa;
- javna - zona javnih mreža sa nepovjerenjem prema svim uređajima i individualnim prijemom dolaznog saobraćaja;
- blok - svi dolazni zahtjevi se resetiraju sa poslanom greškom icmp-host-prohibited ili icmp6-adm-prohibited;
- pad - minimalni nivo poverenja. Dolazne veze se prekidaju bez ikakvog obavještenja.
Same politike mogu biti privremene ili trajne. Kada se parametri pojave ili uređuju, radnja zaštitnog zida se odmah mijenja bez potrebe za ponovnim pokretanjem. Ako su privremena pravila primijenjena, ona će biti resetirana nakon ponovnog pokretanja FirewallD-a. Trajno pravilo se tako zove - biće trajno sačuvano kada se primeni argument -permanent.
Omogućavanje FirewallD
Prvo morate pokrenuti FirewallD ili se uvjeriti da je u aktivnom stanju. Samo pokrenuti demon (program koji radi u pozadini) će primijeniti pravila zaštitnog zida. Aktivacija se vrši u samo nekoliko klikova:
- Pokreni klasiku "terminal" bilo koju pogodnu metodu, na primjer, preko menija "aplikacije".
- Unesite naredbu sudo systemctl start firewalld.service i pritisnite tipku Enter.
- Uslužnim programom se upravlja u ime superkorisnika, tako da ćete morati potvrditi svoju autentičnost unosom lozinke.
- Da biste bili sigurni da usluga funkcioniše, navedite firewall-cmd --state.
- U grafičkom prozoru koji se otvori, ponovo potvrdite svoju autentičnost.
- Nova linija će biti prikazana. Značenje "trčanje" označava da zaštitni zid radi.
Ako ikada trebate privremeno ili trajno onemogućiti zaštitni zid, preporučujemo da koristite upute predstavljene u našem drugom članku na sljedećem linku.
Pogledajte zadana pravila i dostupne zone
Čak i zaštitni zid koji normalno radi ima svoja specifična pravila i dostupne zone. Prije nego počnete uređivati pravila, preporučujemo da se upoznate sa trenutnom konfiguracijom. Ovo se radi pomoću jednostavnih naredbi:
- Naredba firewall-cmd --get-default-zone će vam pomoći da odredite zadanu zonu.
- Nakon što ga aktivirate, vidjet ćete novu liniju u kojoj će biti prikazan traženi parametar. Na primjer, na slici ispod, zona se smatra aktivnom "javno".
- Međutim, nekoliko zona može biti aktivno odjednom, a povezane su s posebnim sučeljem. Saznajte ove informacije putem firewall-cmd --get-active-zones.
- Firewall-cmd --list-all komanda će prikazati pravila konfigurisana za podrazumevanu zonu. Pogledajte snimak ekrana ispod. Vidite da je aktivna zona "javno" pravilo dodijeljeno "zadano"- podrazumevani rad, interfejs "enp0s3" i dvije usluge su dodane.
- Ako želite da saznate sve dostupne zone zaštitnog zida, unesite firewall-cmd --get-zones .
- Parametri određene zone se određuju preko firewall-cmd --zone=name --list-all , gdje ime— naziv zone.
Nakon određivanja potrebnih parametara, možete nastaviti sa njihovom promjenom i dodavanjem. Pogledajmo pobliže nekoliko najpopularnijih konfiguracija.
Postavljanje zona interfejsa
Kao što znate iz gornjih informacija, svaki interfejs ima svoju zadanu zonu. Ostat će tamo sve dok postavke ne promijeni korisnik ili programski. Moguće je ručno prebaciti interfejs u zonu za jednu sesiju, a to se radi aktiviranjem komande sudo firewall-cmd --zone=home --change-interface=eth0 . Rezultat "uspjeh" označava da je transfer bio uspješan. Podsjetimo da se takve postavke resetuju odmah nakon ponovnog pokretanja zaštitnog zida.
Prilikom ovakve promjene parametara treba uzeti u obzir da se usluge mogu resetirati. Neki od njih ne podržavaju rad u određenim zonama, na primjer, iako je SSH dostupan u "Dom", ali u prilagođenim ili specijalnim servis će odbiti da radi. Možete provjeriti da li je sučelje uspješno povezano s novom granom unosom firewall-cmd --get-active-zones .
Ako želite da resetujete prethodno napravljena podešavanja, jednostavno ponovo pokrenite zaštitni zid: sudo systemctl restart firewalld.service .
Ponekad nije uvijek zgodno promijeniti zonu interfejsa za samo jednu sesiju. U tom slučaju, morat ćete urediti konfiguracijsku datoteku tako da se sva podešavanja unose trajno. Da biste to učinili, preporučujemo korištenje uređivača teksta nano, koji se instalira iz službenog spremišta sa sudo yum install nano . Dalje, ostaje samo da uradite sledeće:
- Otvorite konfiguracionu datoteku kroz uređivač upisivanjem sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , gdje eth0— naziv potrebnog interfejsa.
- Potvrdite autentičnost svog naloga da nastavite dalje.
- Pronađite parametar "ZONA" i promijenite njegovu vrijednost u željenu, na primjer, javni ili kućni .
- Držite tipke pritisnute Ctrl + O da sačuvate promene.
- Nemojte mijenjati naziv datoteke, samo kliknite na Enter.
- Izađite iz uređivača teksta putem Ctrl+X.
Sada će zona interfejsa biti onakva kakva ste je odredili sve dok sljedeći put ne uredite konfiguracijski fajl. Da ažurirane postavke stupe na snagu, pokrenite sudo systemctl restart network.service i sudo systemctl restart firewalld.service .
Postavljanje zadane zone
Iznad smo već demonstrirali naredbu koja nam je omogućila da saznamo zadanu zonu. Također se može promijeniti postavljanjem parametra po vašem izboru. Da biste to učinili, samo unesite sudo firewall-cmd --set-default-zone=name u konzolu, gdje ime— naziv tražene zone.
Uspeh komande će biti označen natpisom "uspjeh" na posebnoj liniji. Nakon ovoga, sva trenutna sučelja će biti vezana za navedenu zonu, osim ako nije drugačije navedeno u konfiguracijskim datotekama.
Kreiranje pravila za programe i uslužne programe
Na samom početku članka govorili smo o djelovanju svake zone. Definiranje usluga, uslužnih programa i programa u takvim granama omogućit će vam primjenu pojedinačnih parametara za svaku od njih kako bi odgovarali potrebama svakog korisnika. Prvo, preporučujemo da se upoznate sa kompletnom listom trenutno dostupnih usluga: firewall-cmd --get-services.
Rezultat će biti prikazan direktno u konzoli. Svaki server je odvojen razmakom, a alat koji vas zanima lako možete pronaći na listi. Ako traženi servis nije dostupan, potrebno ga je dodatno instalirati. Pročitajte o pravilima instalacije u službenoj softverskoj dokumentaciji.
Gornja komanda prikazuje samo nazive usluga. Detaljne informacije za svaku od njih dobijaju se kroz pojedinačnu datoteku koja se nalazi duž putanje /usr/lib/firewalld/services. Takvi dokumenti su u XML formatu, put, na primjer, do SSH-a izgleda ovako: /usr/lib/firewalld/services/ssh.xml, a dokument ima sljedeći sadržaj:
SSH
Secure Shell (SSH) je protokol za prijavljivanje i izvršavanje komandi na udaljenim mašinama. Pruža sigurnu šifrovanu komunikaciju. Ako planirate daljinski pristupiti svom stroju putem SSH-a preko sučelja sa zaštitnim zidom, omogućite ovu opciju. Trebate instalirati openssh-server paket da bi ova opcija bila korisna.
Servisna podrška u određenoj zoni se aktivira ručno. IN "terminal" trebali biste izdati naredbu sudo firewall-cmd --zone=public --add-service=http , gdje --zona=javno- zona za aktivaciju, i --add-service=http— naziv usluge. Imajte na umu da će se takva promjena primijeniti samo na jednu sesiju.
Trajno dodavanje se vrši preko sudo firewall-cmd --zone=public --permanent --add-service=http , a rezultat "uspjeh" označava uspješan završetak operacije.
Možete pogledati punu listu trajnih pravila za određenu zonu tako što ćete prikazati listu u posebnoj liniji konzole: sudo firewall-cmd --zone=public --permanent --list-services .
Rješavanje problema nedostatka pristupa servisu
Prema zadanim postavkama, pravila zaštitnog zida označavaju najpopularnije i najsigurnije usluge kao što su dozvoljene, ali blokira neke standardne aplikacije ili aplikacije trećih strana. U tom slučaju, korisnik će morati ručno promijeniti postavke kako bi riješio problem pristupa. To se može učiniti na dva različita načina.
Prosljeđivanje portova
Kao što znate, sve mrežne usluge koriste određeni port. Firewall ga lako otkriva, a blokiranje se može izvršiti pomoću njega. Da biste izbjegli takve radnje zaštitnog zida, potrebno je da otvorite traženi port naredbom sudo firewall-cmd --zone=public --add-port=0000/tcp , gdje --zona=javno- lučko područje, --add-port=0000/tcp— broj porta i protokol. Opcija firewall-cmd --list-ports će prikazati listu otvorenih portova.
Ako trebate otvoriti portove uključene u raspon, koristite liniju sudo firewall-cmd --zone=public --add-port=0000-9999/udp , gdje --add-port=0000-9999/udp— opseg portova i njihov protokol.
Gore navedene naredbe će vam omogućiti samo da testirate upotrebu takvih parametara. Ako je bilo uspješno, trebali biste dodati iste portove stalnim postavkama, a to se radi unosom sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp ili sudo firewall-cmd -- zona=public --permanent --add-port=0000-9999/udp . Lista otvorenih stalnih portova se vidi ovako: sudo firewall-cmd --zone=public --permanent --list-ports .
Definicija usluge
Kao što vidite, dodavanje portova ne izaziva nikakve poteškoće, ali procedura postaje složenija kada se koristi veliki broj aplikacija. Postaje teško pratiti sve portove koji se koriste, pa bi bolja opcija bila definiranje usluge:
Sve što trebate učiniti je odabrati najprikladniji način rješavanja problema s pristupom servisu i slijediti date upute. Kao što vidite, sve radnje se izvode prilično lako i ne bi trebalo nastati poteškoće.
Kreiranje prilagođenih zona
Već znate da je FirewallD u početku kreirao veliki broj različitih zona sa određenim pravilima. Međutim, postoje situacije kada administrator sistema treba da kreira korisničku zonu, kao npr "javna mreža" za instalirani web server ili "privatniDNS"— za DNS server. Koristeći ova dva primjera, pogledat ćemo dodavanje grana:
U ovom članku naučili ste kako kreirati prilagođene zone i dodati im usluge. Već smo govorili o njihovom postavljanju prema zadanim postavkama i dodjeljivanju interfejsa iznad; sve što treba da uradite je da navedete tačna imena. Ne zaboravite da ponovo pokrenete svoj firewall nakon bilo kakvih trajnih izmjena.
Kao što vidite, FirewallD firewall je prilično sveobuhvatan alat koji vam omogućava da kreirate najfleksibilniju konfiguraciju zaštitnog zida. Ostaje samo da se uverite da uslužni program počinje sa sistemom i da navedena pravila odmah počnu sa radom. Uradite to naredbom sudo systemctl enable firewalld.
Zone
Firewalld daemon upravlja grupama pravila koristeći takozvane zone.
Zone su u suštini skupovi pravila koja kontrolišu saobraćaj na osnovu nivoa poverenja u određenu mrežu. Zone se dodeljuju mrežnim interfejsima i kontrolišu ponašanje zaštitnog zida.
Računari koji se često povezuju na različite mreže (kao što su laptopi) mogu koristiti zone za promjenu skupova pravila ovisno o okruženju. Na primjer, kada se povezujete na javnu WiFi mrežu, firewall može primijeniti stroža pravila, ali na kućnoj mreži ublažite ograničenja.
Firewalld ima sljedeće zone:
- pad: najniži nivo poverenja u mrežu. Sav dolazni saobraćaj se prekida bez odgovora, podržane su samo odlazne veze.
- blok: Ova zona je slična prethodnoj, ali se dolazni zahtjevi odbacuju sa porukom icmp-host-prohibited ili icmp6-adm-prohibited.
- javna: Ova zona predstavlja javnu mrežu kojoj se ne može vjerovati, ali dozvoljava dolazne veze na privatnoj osnovi.
- eksterno: zona eksterne mreže. Podržava NAT maskiranje, tako da interna mreža ostaje zatvorena, ali i dalje dostupna.
- unutrašnja: poleđina vanjske zone, interne mreže. Računari u ovoj zoni mogu se vjerovati. Dodatne usluge dostupne.
- dmz: koristi se za računare koji se nalaze u DMZ-u (izolovani računari koji neće imati pristup ostatku mreže); podržava samo neke dolazne veze.
- rad: radna mrežna zona. Većini mašina na mreži može se vjerovati. Dodatne usluge dostupne.
- dom: zona kućne mreže. Okruženje se može smatrati pouzdanim, ali su podržane samo korisnički definirane dolazne veze.
- pouzdano: svim mašinama na mreži može se vjerovati.
Pravila čuvanja
Pravila zaštitnog zida mogu biti trajna ili privremena. Ako se pojavi bilo koje pravilo ili se promijeni u skupu, trenutno se ponašanje zaštitnog zida odmah mijenja. Međutim, nakon ponovnog pokretanja, sve promjene će biti izgubljene ako se ne sačuvaju.
Većina komandi firewall-cmd može koristiti --permanent zastavicu, koja će sačuvati pravilo, nakon čega će se trajno koristiti.
Omogući firewalld
Prvo morate omogućiti demona. Datoteka systemd jedinice naziva se firewalld.service. Da pokrenete demona, unesite.
sudo systemctl start firewalld.service
Provjerite je li servis pokrenut:
firewall-cmd --state
trčanje
Firewall je sada pokrenut i radi prema svojoj zadanoj konfiguraciji.
Usluga je trenutno omogućena, ali se neće automatski pokrenuti sa serverom. Da biste izbjegli slučajno blokiranje na vlastitom serveru, prvo kreirajte skup pravila, a zatim konfigurirajte automatsko pokretanje.
Podrazumevana pravila zaštitnog zida
Pogledajte zadana pravila
Da saznate koja je zona zadana, unesite:
firewall-cmd --get-default-zone
javnosti
U ovom trenutku, firewalld nije primio nikakva uputstva u vezi sa drugim zonama, i nema interfejsa povezanih sa drugim zonama, tako da je javna zona sada podrazumevana zona i ujedno jedina aktivna zona.
Da biste dobili listu aktivnih zona, unesite:
javnosti
interfejsi: eth0 eth1
Postoje dva mrežna sučelja povezana s javnom zonom: eth0 i eth1. Interfejsi vezani za zonu rade prema pravilima te zone.
Da vidite koja pravila zona koristi prema zadanim postavkama, unesite:
firewall-cmd --list-all
javno (zadano, aktivno)
interfejsi: eth0 eth1
izvori:
usluge: dhcpv6-client ssh
luke:
maskenbal: ne
naprijed-priključci:
icmp-blokovi:
bogata pravila:
Dakle, sada znate da:
- public je zadana zona i jedina aktivna zona.
- Interfejsi eth0 i eth1 su vezani za njega.
- Podržava DHCP (dodjela IP adrese) i SSH (daljinska administracija) promet.
Druge zone zaštitnog zida
Sada biste se trebali upoznati s drugim zonama.
Da biste dobili listu svih dostupnih zona, unesite:
firewall-cmd --get-zones
Da biste dobili parametre za određenu zonu, dodajte oznaku --zone= naredbi.
firewall-cmd --zone=home --list-all
Dom
interfejsi:
izvori:
usluge: dhcpv6-client ipp-client mdns samba-client ssh
luke:
maskenbal: ne
naprijed-priključci:
icmp-blokovi:
bogata pravila:
Da biste naveli definicije svih dostupnih zona, dodajte opciju --list-all-zones. Za jednostavnije gledanje, izlaz se može poslati na pejdžer:
firewall-cmd --list-all-zones | manje
Postavljanje zona interfejsa
U početku su sva mrežna sučelja dodijeljena zadanoj zoni.
Promjena zone interfejsa za jednu sesiju
Da premestite interfejs u drugu zonu za jednu sesiju, koristite opcije --zone= i --change-interface=.
Na primjer, da premjestite eth0 u kućnu zonu, unijeli biste:
sudo firewall-cmd --zone=home --change-interface=eth0
uspjeh
Bilješka: Kada prenosite interfejs u drugu zonu, morate uzeti u obzir da to može uticati na rad nekih servisa. Na primjer, kućna zona podržava SSH, tako da veze s ove usluge neće biti prekinute. Ali neke zone resetuju sve veze, uključujući SSH, i tada biste se slučajno mogli zaključati sa svog servera.
Da biste osigurali da je interfejs vezan za novu zonu, unesite:
firewall-cmd --get-active-zones
Dom
interfejsi: eth0
javnosti
interfejsi: eth1
Nakon ponovnog pokretanja zaštitnog zida, sučelje će se vratiti na zadanu zonu.
sudo systemctl ponovo pokrenite firewalld.service
firewall-cmd --get-active-zones
javnosti
interfejsi: eth0 eth1
Trajna promjena zone interfejsa
Ako nijedna druga zona nije navedena u postavkama sučelja, nakon ponovnog pokretanja firewall-a, sučelje će se vratiti na zadanu zonu. Na CentOS-u su takve konfiguracije pohranjene u direktoriju /etc/sysconfig/network-scripts, u datotekama formata ifcfg-interface.
Da biste definirali zonu sučelja, otvorite konfiguracijsku datoteku tog sučelja, na primjer:
Na kraju datoteke dodajte varijablu ZONE= i navedite drugu zonu kao vrijednost, na primjer home:
. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=kuća
Sačuvajte i zatvorite datoteku.
Da ažurirate postavke, ponovo pokrenite mrežnu uslugu i zaštitni zid:
sudo systemctl restart network.service
sudo systemctl ponovo pokrenite firewalld.service
Nakon ponovnog pokretanja, eth0 interfejs će biti dodeljen kućnoj zoni.
firewall-cmd --get-active-zones
Dom
interfejsi: eth0
javnosti
interfejsi: eth1
Podrazumevana postavka zone
Također možete odabrati drugu zadanu zonu.
Da biste to učinili, koristite parametar --set-default-zone=. Nakon ovoga, svi interfejsi će biti dodijeljeni drugoj zoni:
sudo firewall-cmd --set-default-zone=home
Dom
interfejsi: eth0 eth1
Kreiranje pravila aplikacije
Dodavanje usluge u zonu
Najlakši način je da dodate uslugu ili port u zonu koju koristi zaštitni zid. Pogledajte dostupne usluge:
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp visoka dostupnost http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-nsqnts my open mount vpn pmcd pm proxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radijus rpc-bind samba samba-client smtp ssh telnet tftp tftp-client prijenos-klijent vnc-server wbem-https
Bilješka: Više informacija o svakoj specifičnoj usluzi možete pronaći u .xml datotekama u direktoriju /usr/lib/firewalld/services. Na primjer, informacije o SSH servisu su pohranjene u /usr/lib/firewalld/services/ssh.xml i izgledaju ovako:
Da biste omogućili servisnu podršku u određenoj zoni, koristite opciju --add-service=. Možete odrediti ciljnu zonu koristeći --zone= opciju. Podrazumevano, ove promjene će raditi za jednu sesiju. Da biste sačuvali promjene i trajno ih koristili, dodajte --permanent zastavicu.
Na primjer, da biste pokrenuli web server da opslužuje HTTP promet, prvo morate omogućiti podršku za ovaj promet u javnoj zoni za jednu sesiju:
sudo firewall-cmd --zone=public --add-service=http
Ako uslugu treba dodati u zadanu zonu, oznaka --zone= može se izostaviti.
Provjerite je li operacija bila uspješna:
firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
Testirajte uslugu i zaštitni zid. Ako sve radi kako treba, možete urediti trajni skup pravila i dodati pravilo koje podržava ovu uslugu.
sudo firewall-cmd --zone=public --permanent --add-service=http
Da vidite listu stalnih pravila, unesite:
sudo firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http ssh
Javna zona sada trajno podržava HTTP i port 80. Ako web server može opsluživati SSL/TLS promet, možete dodati i https uslugu (za jednu sesiju ili u skup trajnih pravila):
sudo firewall-cmd --zone=javno --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https
Šta učiniti ako tražena usluga nije dostupna?
Firewall firewall podrazumevano uključuje mnoge od najčešćih usluga. Međutim, neke aplikacije zahtijevaju usluge koje firewalld ne podržava. U ovom slučaju možete nastaviti na dva načina.
Metoda 1: Podešavanje porta
Najlakši način da to učinite je da otvorite port aplikacije u potrebnoj zoni zaštitnog zida. Vi samo trebate navesti port ili opseg portova i protokol.
Na primjer, aplikaciju koja koristi port 5000 i TCP protokol treba dodati u javnu zonu. Da biste omogućili podršku aplikacije za donju sesiju, koristite parametar --add-port= i navedite tcp ili udp protokol.
sudo firewall-cmd --zone=public --add-port=5000/tcp
Provjerite je li operacija bila uspješna:
firewall-cmd --list-ports
5000/tcp
Također možete odrediti sekvencijalni raspon portova odvajanjem prvog i posljednjeg porta u rasponu crticom. Na primjer, ako vaša aplikacija koristi UDP portove 4990-4999, da biste ih dodali u javnu zonu, unijeli biste:
sudo firewall-cmd --zone=public --add-port=4990-4999/udp
Nakon testiranja, ova pravila možete dodati u trajne postavke vašeg zaštitnog zida.
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports
uspjeh
uspjeh
4990-4999/udp 5000/tcp
Metoda 2: Definisanje usluge
Dodavanje portova zonama je jednostavno, ali ako imate mnogo takvih aplikacija, može biti teško pratiti čemu svaki port služi. Da biste izbjegli ovu situaciju, možete definirati usluge umjesto portova.
Usluge su jednostavno kolekcije portova sa određenim imenom i opisom. Usluge olakšavaju upravljanje postavkama, ali su same po sebi složenije od portova.
Prvo, morate kopirati postojeću skriptu iz direktorija /usr/lib/firewalld/services u direktorij /etc/firewalld/services (ovo je mjesto gdje zaštitni zid traži nestandardne postavke).
Na primjer, možete kopirati definiciju SSH usluge i koristiti je za definiranje uvjetnog primjera usluge. Ime skripte mora odgovarati imenu usluge i imati .xml ekstenziju.
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
Uredite kopirani fajl.
sudo nano /etc/firewalld/services/example.xml
Datoteka sadrži SSH definiciju:
Veliki dio definicije usluge su metapodaci. Kratak naziv usluge možete promijeniti u oznakama
Vratimo se na primjer usluge; Recimo da zahtijeva otvaranje TCP porta 7777 i UDP porta 8888. Definicija bi izgledala ovako:
Sačuvajte i zatvorite datoteku.
Ponovo pokrenite zaštitni zid:
sudo firewall-cmd --reload
Usluga će se sada pojaviti na listi dostupnih usluga:
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns primjer ftp visoke dostupnosti http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-nstl my. openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radijus rpc-bind samba samba-client smtp ssh telnet tftp tftp-client prijenos-klijent vnc-server wbem-https
Kreiranje zona
Zaštitni zid pruža mnogo unapred definisanih zona, koje su u većini slučajeva dovoljne da se posao obavi. Ali u nekim situacijama postaje potrebno kreirati prilagođenu zonu.
Na primjer, možete kreirati javnu web zonu za web server i privatnu DNS zonu za DNS uslugu.
Kada kreirate zonu, morate je dodati u trajne postavke vašeg zaštitnog zida.
Pokušajte kreirati javne web i privatneDNS zone:
sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS
Provjerite postoje li zone:
sudo firewall-cmd --permanent --get-zones
Nove zone neće biti dostupne u trenutnoj sesiji:
firewall-cmd --get-zones
blok dmz ispusti eksterni dom interni javni pouzdan rad
Da biste dobili pristup novim zonama, morate ponovo pokrenuti firewall:
sudo firewall-cmd --reload
firewall-cmd --get-zones
blokiraj dmz ispusti vanjski dom interni privatniDNS javni javni web pouzdan rad
Sada možete dodijeliti potrebne usluge i portove novim zonama. Na primjer, možete dodati SSH, HTTP i HTTPS u publicweb zonu.
sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
firewall-cmd --zone=publicweb --list-all
publicweb
interfejsi:
izvori:
usluge: http https ssh
luke:
maskenbal: ne
naprijed-priključci:
icmp-blokovi:
bogata pravila:
Možete dodati DNS u zonu privateDNS:
sudo firewall-cmd --zone=privateDNS --add-service=dns
firewall-cmd --zone=privateDNS --list-all
privateDNS
interfejsi:
izvori:
usluge: dns
luke:
maskenbal: ne
naprijed-priključci:
icmp-blokovi:
bogata pravila:
Zatim možete dodijeliti mrežna sučelja novim zonama:
sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1
Sada možete testirati postavku. Ako sve radi kako treba, ova pravila možete dodati u trajne postavke.
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
sudo firewall-cmd --zone=publicweb --permanent --add-service=http
sudo firewall-cmd --zone=publicweb --permanent --add-service=https
sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns
Zatim možete konfigurirati mrežna sučelja da se automatski povezuju na odgovarajuću zonu.
Na primjer, eth0 će biti povezan na publicweb:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=br
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=javni web
I eth1 sučelje će biti vezan za privateDNS:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
NETMASK=255.255.0.0
DEFROUTE="ne"
NM_CONTROLLED="da"
ZONE=privatniDNS
Ponovo pokrenite mrežne usluge i firewall:
sudo systemctl restart network
sudo systemctl restart firewalld
Provjerite zone:
firewall-cmd --get-active-zones
privateDNS
interfejsi: eth1
publicweb
interfejsi: eth0
Uvjerite se da tražene usluge rade u zonama:
firewall-cmd --zone=publicweb --list-services
http htpps ssh
firewall-cmd --zone=privateDNS --list-services
dns
Korisničke zone su potpuno spremne za upotrebu. Možete postaviti bilo koju od njih kao svoju zadanu zonu. Na primjer:
sudo firewall-cmd --set-default-zone=publicweb
Automatsko pokretanje zaštitnog zida
Sada kada ste provjerili sve postavke i uvjerili se da sva pravila rade kako je očekivano, možete konfigurirati firewall za automatsko pokretanje.
Da biste to učinili, unesite:
sudo systemctl omogući firewalld
Firewall će sada početi zajedno sa serverom.
Zaključak
Firewall firewall je vrlo fleksibilan alat. Zone vam omogućavaju da brzo promijenite politiku zaštitnog zida.
Sada znate kako funkcioniše firewalld, upoznati ste sa osnovnim konceptima firewall-a, možete kreirati prilagođene zone i dodati usluge.
Tagovi: ,Centos 7, za razliku od CentOS 6, dolazi sa novim zaštitnim zidom u bazi podataka - firewalld. Može se onemogućiti i zamijeniti dobrim starim iptablesom, ali ako za to nema direktnih preduslova, onda je bolje naviknuti se na nešto novo nego se oslanjati na staro. To ne znači da je Windows 10 bolji od Windowsa 7, a Windows XP bolji od Windowsa 7 ;) Dobar primjer na ovu temu je selinux. Ako su ga isprva skoro svi (pa i ja) isključili pa čak i malo grdili, sada to skoro niko ne savjetuje, samo ako je siguran da je potrebno. Naprotiv, mnogi su već navikli (ili se navikavaju) koristiti semanage. Nećemo odmah onemogućiti firewalld, ali hajde da probamo kakav je ukus.
Firewall nije suštinski drugačiji zaštitni zid. Ovo je još jedan dodatak za netfilter, tako da ako imate iskustva s iptablesom, onda nakon malog problema možete lako početi koristiti novi alat.
Pokretanje i zaustavljanje firewalld-a
Provjerimo da li firewalld radi:
# systemctl status firewalld
Ovdje će biti više informacija. Da biste nakratko rekli da (radi) ili ne, možete učiniti sljedeće:
# firewall-cmd --state
trčanje
Ok, radi.
Zaustavljanje firewalld-a:
# systemctl stop firewalld
Zabrana automatskog pokretanja:
# systemctl onemogućava firewalld
Pokreni firewalld:
# systemctl start firewalld
Omogućavanje automatskog pokretanja:
# systemctl omogući firewalld
Firewalld zone
Firewalld široko koristi koncept zone. Lista svih važećih zona prema zadanim postavkama:
# firewall-cmd --get-zones
blok dmz ispusti eksterni dom interni javni pouzdan rad
Namjena zona (uslovno, naravno):
- drop - svi dolazni paketi se odbacuju (ispuštaju) bez odgovora. Dozvoljene su samo odlazne veze.
- blok - dolazne veze su odbijene (odbijene) sa odgovorom icmp-host-prohibited (ili icmp6-adm-prohibited). Dozvoljene su samo veze koje pokreće sistem.
- javno - zadana zona. Iz naziva je jasno da je ova zona namijenjena radu u javnim mrežama. Ne vjerujemo ovoj mreži i dozvoljavamo samo određene dolazne veze.
- external - zona za eksterni interfejs rutera (tzv. maskiranje). Dozvoljene su samo dolazne veze koje mi definiramo.
- dmz - DMZ zona, dozvoljene su samo određene dolazne veze.
- radno - radna mrežna zona. I dalje nikome ne vjerujemo, ali ne kao prije :) Dozvoljene su samo određene dolazne veze.
- dom - domaća zona. Vjerujemo okruženju, ali su dozvoljene samo određene dolazne veze
- unutrašnja - unutrašnja zona. Vjerujemo okruženju, ali su dozvoljene samo određene dolazne veze
- pouzdano - sve je dozvoljeno.
Spisak svih aktivnih zona:
# firewall-cmd --get-active-zones
javnosti
interfejsi: enp1s0
Da, javna zona na koju je priključen enp1so mrežni interfejs. Zatim ćemo dodati novi port u javnu zonu na kojoj će sshd visjeti.
Znajući naziv mrežnog sučelja (na primjer, enp1s0), možete saznati kojoj zoni pripada:
# firewall-cmd --get-zone-of-interface=enp1s0
javnosti
Možete saznati koja sučelja pripadaju određenoj zoni:
# firewall-cmd --zone=public --list-interfaces
enp1s0
Primjer: omogućavanje ssh-a na nestandardnom portu
Dozvolimo pristup serveru preko ssh-a na portu 2234/tcp, a ne na 22/tcp, kao što je podrazumevano. Usput, hajde da se dotaknemo malo selinuxa.
Prvo, da vidimo šta je općenito dozvoljeno na našem serveru:
# firewall-cmd --permanent --list-all
javno (zadano)
interfejsi:
izvori:
usluge: ssh dhcpv6-client
maskenbal: ne
naprijed-priključci:
icmp-blokovi:
bogata pravila:
Još ne koristim ipv6, pa ću odmah ukloniti odgovarajući. pravilo sa firewalld-a:
# firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
Dozvolimo trajno (da se ne izgubi nakon ponovnog pokretanja) vezu sa portom 2234/tcp (na njega ćemo objesiti sshd):
# firewall-cmd --permanent --zone=public --add-port=2234/tcp
Hajde da ponovo učitamo pravila:
# firewall-cmd --reload
provjerimo:
# firewall-cmd --zone=public --list-ports
2234/tcp
Ok, port je otvoren. Uređivanje sshd konfiguracije:
# nano /etc/ssh/sshd_config
...
luka 2234
...
# systemctl ponovo pokreni sshd.service
Ali SELinux, za koji se nadamo da niste onemogućili, neće vam dozvoliti da se povežete na ssh na nestandardnom portu (port 2234/tcp za sshd je nestandardan). Možete preskočiti ovaj korak i provjeriti kako SELinux zaštita funkcionira, ili možete odmah sve konfigurirati:
# yum pruža upravljanje
# yum instaliraj policycoreutils-python
# upravljanje portom -a -t ssh_port_t -p tcp 2234
Sada je sve ok. Provjeravamo ssh vezu na novom portu. Ako je sve u redu, zatvorite pristup portu 22:
# firewall-cmd --permanent --zone=public --remove-service=ssh
# firewall-cmd --reload
Da vidimo šta se desilo:
# firewall-cmd --list-all
javno (zadano, aktivno)
interfejsi:
izvori:
usluge:
portovi: 2234/tcp
maskenbal: ne
naprijed-priključci:
icmp-blokovi:
bogata pravila:
To je sve.
Razne korisne komande:
Omogućite način blokiranja za sve odlazne i dolazne pakete:
# firewall-cmd --panic-on
Onemogućite način blokiranja za sve odlazne i dolazne pakete:
# firewall-cmd --panic-off
Saznajte da li je omogućen način blokiranja za sve odlazne i dolazne pakete:
# firewall-cmd --query-panic
Ponovo učitajte firewalld pravila bez gubitka trenutnih veza:
# firewall-cmd --reload
Ponovno učitaj firewalld pravila i resetiraj trenutne veze (preporučuje se samo u slučaju problema):
# firewall-cmd --complete-reload
Dodajte mrežni interfejs u zonu:
# firewall-cmd --zone=public --add-interface=em1
Dodajte mrežni interfejs u zonu (biće sačuvan nakon ponovnog pokretanja zaštitnog zida):
# firewall-cmd --zone=javno --permanent --add-interface=em1
U konfiguraciji ifcfg-enp1s0 možete odrediti kojoj zoni pripada ovo sučelje. Da biste to učinili, dodajte ZONE=work u datoteku /etc/sysconfig/network-scripts/ifcfg-enp1s0. Ako parametar ZONE nije naveden, bit će dodijeljena zadana zona (parametar DefaultZone u datoteci /etc/firewalld/firewalld.conf.
Dozvoli raspon portova:
# firewall-cmd --zone=public --add-port=5059-5061/udp
Maškarada (maškarada, aka nat, aka...):
Provjerite status:
# firewall-cmd --zone=external --query-masquerade
Uključite:
# firewall-cmd --zone=external --add-masquerade
Ovdje treba napomenuti da možete omogućiti maskenbal za javnu zonu, na primjer.
Preusmjerite dolazne poruke na portu 22 na drugi host:
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23
Preusmjerite dolazne poruke na portu 22 na drugi host promjenom odredišnog porta (sa 22 na 192.168.1.23:2055):
# firewall-cmd --zone=external /
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23
Ovde ću završiti, jer... može postojati beskonačan broj primjera. Samo da dodam da ja lično nisam u potpunosti formirao svoje mišljenje o firewalld inovaciji, jer... Potrebno je dosta vremena da se naviknete na sintaksu, a ako u vašem zoološkom vrtu postoje različiti OS Linux, onda u prvom redu mogu biti problemi s navikama. Ali savladavanje firewalld-a će proširiti vaše vidike—češće je vrijedno truda.
Prednosti firewalld-a
Glavna prednost je u tome što ste malo apstrahovani od iptables lanaca.Da biste omogućili prosljeđivanje portova, ne morate razmišljati o PREPRUTANJU ili POSTROUTINGU pored PROSLJEĐIVANJA. Dobijate "IPtables API od proizvođača", tako nešto. Ako ste omogućili nat, onda nije bitno gdje se tačno (pod kojim rednim brojem trenutnih pravila) nalazi pravilo. Jednostavno naznačite - omogućite nat na eth0. I bez gluposti;) Ovo može biti zgodno ako trebate organizirati web sučelje za upravljanje vašim zaštitnim zidom.
Moguće je provjeriti status (na primjer, da li je nat uključen ili ne!). I također koristite ovo u svojim skriptama, u logici vaše aplikacije, na primjer. Ne znam kako da kreiram statusni zahtjev (uključeno/isključeno) u iptables. Možete, naravno, učiniti nešto poput iptables -L -t nat | grep "...", ali morate priznati, ovo je malo drugačije od pokretanja "firewall-cmd --zone=external --query-masquerade". Postoje, na primjer, stotine VM-ova sa CentOS-om, u kojima nazivi wan interfejsa ili nešto slično mogu biti malo drugačiji. I tako imate univerzalni cmdlet koji će dati očekivani rezultat na različitim mašinama.
Nedostaci firewalld-a
Glavni nedostatak, po mom mišljenju, je to što kada se naviknete, počet ćete se navikavati na "čisti" iptables, koji je i u Debianu, i u Ubuntuu, i u CentOS-u, i, općenito, posvuda. Čak su, uzgred, u Mikrotiku sintaksa i lanci slični po tipu kao iptables. Ovo nije za svakoga, naravno. A profesionalcu je svejedno sa čime da radi; ako postoje specifični uslovi, on će raditi sa onim što ima. Ali... ja sam retrogradna osoba i očajnički se opirem (u nedostatku očiglednih prednosti) novim proizvodima koje svaki glavni igrač implementira za sebe. RedHat bi imao koristi od toga da sve više i više novih stručnjaka postanu firewalld asovi.
A ako ste prešli na firewalld, onda će vas čista iptables sintaksa samo ometati - doći će do nereda ili će se firewall jednostavno pokvariti ako počnete mijenjati/dodavati pravila koja ne koriste standardnu firewalld sintaksu.
Ne želim firewalld! Vrati mi moje stare iptables!
Ako se i dalje želite vratiti u prošlost i zamijeniti firewalld sa iptables, onda to uopće nije teško učiniti:
Ovo nije mjesto za početnike:
# systemctl onemogućava firewalld
# systemctl stop firewalld
Instalirajte stari dobri iptables:
# yum install iptables-services
Pokrenite zaštitni zid:
# systemctl start iptables
# systemctl start ip6tables
Automatsko pokretanje kada je uključeno:
# systemctl omogućava iptables
# systemctl omogućava ip6tables
Da sačuvate iptables pravila nakon ponovnog pokretanja:
# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/ip6tables-save > /etc/sysconfig/ip6tables
Ili na starinski način:
# servis iptables sačuvaj
Trenutna pravila su u fajlovima:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables
Ponovno pokretanje iptablesa (na primjer, nakon bilo kakvih promjena):
# systemctl ponovo pokreni iptables.service