Konfiguriranje požarnega zidu Linux s pomočjo iptables na CentOS / RHEL 7

V tem članku bomo pokazali, kako upravljati požarni zid Linuxa s klasičnim iptables namesto firewalld v CentOS / RHEL 7 za filtriranje dohodnega in odhodnega prometa. Ta članek opisuje, kako konfigurirati iptables v CentOS 7 za filtriranje dohodnega prometa, na primeru primera navideznega strežnika v oblaku, nameščenega iz nič. myserver01, dostopno z interneta.

Vsebina:

  • Onemogočanje protipožarne zaščite v CentOS 7
  • Pravila sintakse in iptables v CentOS / Red Hat
  • Ustvarjanje pravil za filtriranje prometa v iptables
  • Omogoči dnevnike iptables
  • Shranjevanje in obnavljanje pravil filtriranja iptables

Onemogočanje protipožarne zaščite v CentOS 7

CentOS 7 uporablja privzeto sistemsko storitev za nadzor požarnega zidu firewalld. Ponuja lasten vmesnik, a na koncu deluje tudi prek pripomočka iptables. Hkrati je treba požarni zid nadzorovati bodisi prek firewalld bodisi neposredno preko iptables.

firewalld ni zamenjava, ampak ovoj okoli iptables, iz njega lahko uporabite tisto, kar vam je bolj všeč, ali bolj primerno v posebnih pogojih. iptables je bolj univerzalen, je osnovno orodje, vendar ga je nekoliko težje obvladati. firewalld ponuja enostavnejši vmesnik, vendar ga na primer CentOS 6 ne more uporabljati, za druge distribucije pa morate imeti potrebne namestitvene pakete. Poleg tega, če uporabljate aplikacije, ki v požarnem zidu nastavljajo nastavitve, morajo biti združljive s firewalldom (primer takšnih aplikacij je docker, fail2ban).

Preverite stanje firewalld-a in ga onemogočite.

systemctl status firewalld

V izhodu ukaza je območje z besedo obkroženo rdeče omogočeno, pomeni, da je zagon vklopljen, območje pa je z besedo obkrožilo rumeno aktivno, pomeni, da se storitev izvaja.

Storitev ustavimo in izklopimo samodejno nalaganje zanjo:

systemctl stop firewalld
sistemctl onemogoči firewalld

Ponovno preverjanje stanja:

Zdaj kaže izhod ukaza onemogočen za samodejno nalaganje (izklopljeno) in neaktiven pomeni, da je storitev izklopljena.

Pravila sintakse in iptables v CentOS / Red Hat

Iptables - to je pripomoček, ki konfigurira pravila požarnega zidu v Linuxu.

Iptables združuje pravila požarnega zidu v tabele, glavne so:

  • Tabela filter - uporablja se za filtriranje prometa, torej za dovoljenje in zavrnitev povezav
  • Tabela nat - uporablja se za prevajanje naslovov (NAT)
  • Tabela mangle - druge spremembe glave ip paketov.

Najprej preverite, ali so iptables nameščeni v sistemu (privzeto bi moral biti):

rpm -q iptables

Izhod iz ukaza kaže, da je trenutno nameščena različica iptables 1.4.21.

Delo z iptables v ukazni vrstici zahteva root privilegije, zato bomo še naprej delovali kot root.

Za prikaz trenutnih pravil izvedite ukaz:

iptables [-t tabela] -L [veriga] [parametri]

Opomba: če pri pozivu ukaza ne navedete imena tabele, se tabela privzeto uporablja filter.

Na primer rezultat ukaza iptables -L, kadar v tabelah še ni ustvarjenih nobenih pravil:

Podrobneje razmislite o izhodu ukaza.

Tabela filter vsebuje tri vrste pravil, tako imenovano verigo (verigo):

  • INPUT - v tej verigi se obdelujejo dohodni ip paketi, namenjeni samemu gostitelju;
  • IZHOD - V tej verigi se obdelujejo odhodni paketi ip samega gostitelja;
  • NAPREJ - ta veriga je potrebna za preusmeritev paketov ip. Uporablja se, če želite strežnik uporabiti kot usmerjevalnik.

Nasproti vsake verige je privzeti pravilnik, ki določa, kaj je treba storiti, če povezava ne sodi v nobeno od pravil. Privzeti pravilnik lahko sprejme dve vrednosti in določa pristop k organiziranju požarnega zidu:

  • ACCEPT - privzeto so dovoljene vse povezave, pravila blokirajo neželene povezave;
  • DROP - privzeto so vse povezave zavrnjene, pravila dovoljujejo potrebne povezave.

Ustvarjanje pravil za filtriranje prometa v iptables

Iptables filtrirajo po vmesniku

Začnimo ustvarjati pravila. Skladnja ukaza za dodajanje novega pravila na koncu določene verige izgleda tako:

iptables [-t tabela] -A -j

Za začetek dovolimo promet prek lokalnega vmesnika povratne zanke (127.0.0.1), ki je potreben za delovanje nekaterih aplikacij:

iptables -A INPUT -i lo -j SPREJEM

Analizirajmo po vrstnem redu:

  1. Določimo verigo INPUT, tj. pravilo velja za dohodne povezave.
  2. Nato uporabite ključ -i (v vmesniku), za določitev dohodnega vmesnika, do katerega prispe paket ip.
  3. Ukaz dopolnimo s tipko -j (-jump), določitev dejanja, ki bo izvedeno za vse ip pakete, ki izpolnjujejo merila iz točke 2. V tem primeru ACCEPT omogoči povezavo. Poleg tega osnovna dejanja s povezavami vključujejo tudi:
    • DROP - prepove povezavo, vir povezave ni obveščen, ip paket se preprosto zavrže;
    • REJECT - onemogoči povezavo, vir povezave je obveščen s sporočilom.

Iptables filtrirajo po pristanišču, protokolu ali naslovu IP

Zdaj dodajte pravilo dovoljenja, da se povežete z našim Linux strežnikom prek SSH na vratih 22.

iptables -A INPUT -p tcp --portport 22 -j SPREJEM

V tem pravilu sta vrata in protokol merila. Protokol (tcp, udp, icmp, all) nastavi ključ -p (-protokol), ciljna vrata (tj. vrata, do katerih bodo paketi ip prišli na strežnik) -dport.

Opomba: če želite v merilih uporabiti ciljno pristanišče ali izvorno pristanišče (-dport ali -šport), nato določite protokol.

Območje vrat lahko določite na primer z dvopičjem

--dport 6000: 6063

Če poznamo ip naslove odjemalcev, iz katerih se bomo povezali s strežnikom, bo varneje dovoliti dostop samo s teh ip naslovov. V tem primeru k kriterijem dodate -s (-src, -source), ki na primer s tem pravilom navedejo ip naslov ali podomrežje vira povezave:

iptables -A INPUT -p tcp -s 94.41.174.122 --portport 22 -j ACCEPT

dostop do vrat 22 bo dovoljen samo z ip naslova 94.41.174.122.

Delno dovolite zahtevke icmp, 3 vrste:

iptables -A INPUT -p icmp --icmp tip odmeva -j ACCEPT
iptables -A INPUT -p icmp --icmp tip cilja-nedosegljiv -j ACCEPT
iptables -A INPUT -p icmp --icmp vrsta presežena -j ACCEPT

Ta pravila omogočajo ping, sledilne pripomočke in omogočajo mehanizmu, da določi MTU med dvema gostiteljema.

Status povezave iptables filter

Za pravilno delovanje boste morali ustvariti pravilo, ki omogoča že vzpostavljene povezave:

iptables -A INPUT -m stanje -state USTANOVLJEN, POVEZAN -j SPREJEM

Tu se v kriterijih uporablja ključ -m, naložiti modul stanja, kar omogoča določitev trenutnega stanja paketa ip iz možnih:

  • NOVO - nanaša se na dohodne pakete ip, ki sodelujejo pri vzpostavljanju povezave;
  • USTREZNO in POVEZANO - nanaša se na dohodne pakete ip, ki sodelujejo v že vzpostavljenih povezavah, ali na povezave, inicirane iz že vzpostavljenih povezav;
  • INVALID - se nanaša na dohodne pakete ip, če zanje ne velja noben od zgornjih pogojev.

Nastavitev privzetega pravila iptables

Minimalni niz dovoljenih pravil za požarni zid je pripravljen, še naprej je treba nastaviti privzeti pravilnik, ki prepoveduje vse dohodne povezave, ki niso v skladu z našimi pravili. Če želite to narediti, uporabite tipko v ukazu iptables -P, v tem primeru nastavi privzeti pravilnik za dano verigo:

iptables -P INPUT DROP

Pozor!: preden uporabite ta ukaz, se morate prepričati, ali vam trenutna pravila omogočajo povezavo s strežnikom, sicer boste preprosto blokirali dostop do sebe!
Poglejmo nastalo tabelo pravil iptables in dodamo ključ -v, za prikaz bolj podrobnega izhoda:
iptables -L -v

Omogoči dnevnike iptables

Iptables vam omogoča, da v sistemski dnevnik zapišete informacije o prenosu paketov ip. To se uresniči s konkretnim dejanjem. LOG nad povezavo, po kateri se paket ip še naprej giblje po verigi nedotaknjen. Na primer, ustvarite pravilo, ki bo beležilo vse dogodke povezave do vrat 445 (tcp) v sistemski dnevnik:

iptables -A INPUT -p tcp --dport 445 -j LOG --log-predpona "IN SMB DROP:"

tukaj -predpona dnevnika nastavi predpono za vsa sporočila, zabeležena po našem pravilu. To je priročno, če imate več različnih pravil beleženja ali za nadaljnjo obdelavo programske opreme. Če se zdaj poskušate povezati zunaj z našim strežnikom na vratih 445, na primer prek telneta, v datoteki / var / log / sporočila vnosi se bodo prikazali:

Analizirajmo zaključek:

  • V SMB DROP: predpona, ki jo nastavimo z možnostjo -predpona dnevnika
  • IN = eth0 vmesnik, na katerem je prejet ip paket, vsebuje prazno vrednost za odhodne povezave
  • OUT = vmesnik, iz katerega je bil poslan paket ip za dohodne povezave, vsebuje prazno vrednost
  • MAC = povezani skupaj v naslednjem vrstnem redu: ciljni MAC naslov, izvorni MAC naslov, EtherType - 08:00 ustreza IPv4.
  • Src = ip naslov vira, iz katerega je bil poslan paket ip
  • DST = ciljni naslov IP, na katerega je bil poslan paket paketa ip
  • LEN = velikost paketa ip v bajtih
  • SPT = izvorno pristanišče, s katerega je bil poslan paket ip
  • DPT = ciljno pristanišče, na katero se pošilja paket IP

Shranjevanje in obnavljanje pravil filtriranja iptables

Na koncu konfigurirajte samodejno nalaganje pravil po ponovnem zagonu strežnika. Če želite to narediti, morate namestiti paket. iptables-storitve in storitev je aktivirana. Namestite paket prek yum:

yum namestite iptables-storitve
systemctl omogočiti iptables

Preverite stanje storitve iptables:

sistemski iptables statusa

Možnost zagona je nastavljena na omogočeno (on) parameter aktivno pomeni, da se storitev izvaja.

Pri nalaganju bo storitev prebrala vsebino datoteke / etc / sysconfig / iptables, in obnoviti shranjena pravila. Za shranjevanje naših pravil uporabimo ukaz:

iptables-save> / etc / sysconfig / iptables

Pravila iz datoteke lahko obnovite z ukazom:

iptables-obnoviti < /etc/sysconfig/iptables

Zdaj lahko znova zaženete strežnik in se prepričate, da so ob zagonu obnovljena pravila požarnega zidu.

V naslednjem članku bomo pokazali, kako uporabiti iptables za ustvarjanje pravil za preusmeritev prometa NAT za dostop do prehodov, ki temeljijo na CentOS-u iz notranjega omrežja organizacije.