Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Programi
  • Instaliranje zaštitnog zida na centos 7. Pogledajte zadana pravila i dostupne zone

Instaliranje zaštitnog zida na centos 7. Pogledajte zadana pravila i dostupne zone

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.
Testirajte se na prijemnom ispitu i pogledajte program za više detalja.

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:

  1. Pokreni klasiku "terminal" bilo koju pogodnu metodu, na primjer, preko menija "aplikacije".
  2. Unesite naredbu sudo systemctl start firewalld.service i pritisnite tipku Enter.
  3. Uslužnim programom se upravlja u ime superkorisnika, tako da ćete morati potvrditi svoju autentičnost unosom lozinke.
  4. Da biste bili sigurni da usluga funkcioniše, navedite firewall-cmd --state.
  5. U grafičkom prozoru koji se otvori, ponovo potvrdite svoju autentičnost.
  6. 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:

  1. Naredba firewall-cmd --get-default-zone će vam pomoći da odredite zadanu zonu.
  2. 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".
  3. 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.
  4. 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.
  5. Ako želite da saznate sve dostupne zone zaštitnog zida, unesite firewall-cmd --get-zones .
  6. 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:

  1. Otvorite konfiguracionu datoteku kroz uređivač upisivanjem sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , gdje eth0— naziv potrebnog interfejsa.
  2. Potvrdite autentičnost svog naloga da nastavite dalje.
  3. Pronađite parametar "ZONA" i promijenite njegovu vrijednost u željenu, na primjer, javni ili kućni .
  4. Držite tipke pritisnute Ctrl + O da sačuvate promene.
  5. Nemojte mijenjati naziv datoteke, samo kliknite na Enter.
  6. 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:



SSH

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:



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.

Veliki dio definicije usluge su metapodaci. Kratak naziv usluge možete promijeniti u oznakama . Ovo je ljudsko čitljivo ime usluge. Također morate dodati opis usluge. Jedina promjena koja će utjecati na rad servisa je promjena broja porta i protokola.

Vratimo se na primjer usluge; Recimo da zahtijeva otvaranje TCP porta 7777 i UDP porta 8888. Definicija bi izgledala ovako:



Primjer usluge
Ovo je samo primjer usluge. Verovatno ga ne bi trebalo koristiti na pravom sistemu.

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


Najbolji članci na ovu temu