Valdymas ir filtravimas: Iptables taisyklės Linux sistemose
Linux operacinėse sistemose tinklo srautui kontroliuoti ir apsaugoti sistemą nuo neteisėtos prieigos naudojama daugybė įrankių, tačiau vienas iš pagrindinių ir galingiausių yra iptables. Tai ne tik ugniasienės valdymo priemonė, bet ir lankstus tinklo paketų filtras, leidžiantis administratoriams detalizuoti, kaip informacija keliauja per sistemą. Šiame straipsnyje gilinsimės į iptables veikimo principus, pagrindines komandas, taisyklių peržiūrą, filtravimą ir trynimą, siekdami suteikti išsamų supratimą apie šio įrankio panaudojimą.
Kas yra Iptables ir kodėl tai svarbu?
Iptables yra vartotojo erdvės programa, kuri sąveikauja su Linux branduolio Netfilter sistema. Ši sistema atsakinga už tinklo paketų filtravimą, tinklo adresų vertimą (NAT) ir ryšio būsenos sekimą. Iptables leidžia administratoriams kurti taisyklių rinkinius, kurie apibrėžia, kaip sistema turėtų reaguoti į gaunamus ir išeinančius tinklo paketus - priimti juos, atmesti tyliai arba atmesti su pranešimu siuntėjui.

Svarbu suprasti, kad iptables veikia su lentelėmis ir grandinėmis. Pagrindinės lentelės yra:
- filter: Tai numatytoji lentelė, naudojama paketų filtravimui. Ji turi tris pagrindines grandines:
INPUT(įeinantiems į serverį paketams),OUTPUT(iš serverio išeinantiems paketams) irFORWARD(paketams, kurie keliauja per serverį, pvz., kai serveris veikia kaip maršrutizatorius). - nat: Naudojama tinklo adresų vertimui (NAT), pavyzdžiui, vidinio IP adreso pakeitimui į viešąjį, kai paketai siunčiami į internetą, arba prievadų peradresavimui. Šios lentelės grandinės yra
PREROUTING,POSTROUTINGirOUTPUT. - mangle: Naudojama paketų modifikavimui, pavyzdžiui, keičiant IP paketo laukus (TTL, DSCP).
- raw: Naudojama išimti paketams iš ryšio stebėjimo, retai naudojama.
Kiekviena grandinė apdoroja paketus tam tikru momentu, kai jie keliauja per tinklo krūvą. Iptables taisyklės apibrėžia, ką daryti su paketu, jei jis atitinka nustatytus kriterijus (pvz., šaltinio IP adresas, paskirties prievadas, protokolas). Veiksmai gali būti ACCEPT (priimti), DROP (tyliai atmesti), REJECT (atmesti su pranešimu) arba nukreipti į kitą grandinę.
Pastaraisiais metais modernios Linux distribucijos vis dažniau naudoja nftables kaip iptables pakeitimą, tačiau iptables komanda dažnai veikia kaip suderinamumo apvalkalas, leidžiantis administratoriams toliau naudoti pažįstamą sintaksę. Nepaisant to, iptables išlieka galinga ir universali priemonė tinklo saugumui užtikrinti.
Taisyklių peržiūra: Išsamus žvilgsnis
Norint efektyviai valdyti iptables taisykles, pirmiausia reikia mokėti jas peržiūrėti. Yra keletas būdų tai padaryti, priklausomai nuo to, kokio detalumo informacijos ieškote.
Taisyklių peržiūra pagal specifikaciją
Jei norite pamatyti taisykles, parašytas jų originalia sintakse, galite naudoti -S arba --list-rules parametrą, nurodydami konkrečią grandinę:
sudo iptables -S INPUTsudo iptables -S OUTPUTsudo iptables -S FORWARDŠi komanda parodys visas taisykles, kurios yra aktyvios nurodytoje grandinėje, su visais jų parametrais. Tai naudinga, kai norite greitai pamatyti konkrečios taisyklės konfigūraciją.
Taisyklių peržiūra lentelių pavidalu
Dažniausiai naudojamas ir informatyviausias būdas peržiūrėti taisykles yra lentelės formatu, naudojant -L arba --list parametrą.
sudo iptables -LŠi komanda parodys visas aktyvias taisykles visose lentelėse ir grandinėse. Rezultatas paprastai atrodo taip:
Chain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- anywhere anywhereDROP all -- anywhere anywhere state INVALIDACCEPT all -- anywhere anywhere state ESTABLISHED,RELATED...Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination...Kiekvienos grandinės pradžioje nurodomas jos pavadinimas (pvz., INPUT) ir numatytoji politika (policy). Tai reiškia, ką daryti su paketais, kurie neatitinka jokios konkrečios taisyklės šioje grandinėje. Pavyzdžiui, policy ACCEPT reiškia, kad viskas, kas nėra aiškiai uždrausta, bus priimta.
Kiekvienos eilutės paaiškinimas lentelės formatu:
- target: Veiksmas, kuris bus atliktas su paketu, jei jis atitinka taisyklę (pvz.,
ACCEPT,DROP,REJECT, ar nukreipimas į vartotojo apibrėžtą grandinę). - prot: Protokolas, kuriam taikoma taisyklė (pvz.,
tcp,udp,icmp,all). - opt: IP parinktys (dažnai nenaudojama).
- source: Šaltinio IP adresas arba tinklas, iš kurio paketai gali ateiti.
anywherereiškia bet kurį šaltinį. - destination: Paskirties IP adresas arba tinklas, į kurį paketai yra nukreipti.
anywherereiškia bet kurią paskirtį. - Papildomi parametrai: Apačioje esančiame stulpelyje (dažnai nepažymėtas pavadinimu) nurodomi papildomi taisyklės apribojimai, tokie kaip šaltinio (
--sport) ar paskirties (--dport) prievadai, ryšio būsena (-m state --state ESTABLISHED,RELATED), arba konkrečios sąsajos (-i eth0).
Taisyklių filtravimas pagal grandis
Jei norite peržiūrėti taisykles tik tam tikroje grandyje, tiesiog pridėkite grandinės pavadinimą po -L parametro:
sudo iptables -L INPUTsudo iptables -L OUTPUTPaketų skaičiaus ir bendro dydžio peržiūra
Norint suprasti, kiek srauto (paketų ir baitų) atitiko konkrečią taisyklę, naudokite -v arba --verbose parametrą kartu su -L:
sudo iptables -L INPUT -vTai pridės papildomus stulpelius, rodančius paketų skaičių (pkts) ir bendrą baitų kiekį (bytes), kurie praėjo per kiekvieną taisyklę. Tai ypač naudinga analizuojant, kurios taisyklės yra aktyviai naudojamos ir kokį srautą jos apdoroja.
Išsamus „iptables“ vadovas | „HackerSploit“ „Linux“ saugumas
Paketų skaičiaus ir dydžio atstatymas
Kartais gali prireikti atstatyti paketų ir baitų skaitiklius. Tai naudinga norint stebėti srautą nuo konkretaus momento arba po pakeitimų atlikimo. Tam naudojamas -Z arba --zero parametras.
Atstatyti visoms grandims:
sudo iptables -ZAtstatyti specifinėje grandyje:
sudo iptables -Z INPUTAtstatyti specifinei taisyklei:Norint atstatyti skaitiklius konkrečiai taisyklei, reikia nurodyti grandinės pavadinimą ir taisyklės numerį. Visų pirma, reikia peržiūrėti taisykles su jų numeriais.
sudo iptables -L INPUT --line-numbersTada, žinant taisyklės numerį (pvz., 3), galima atstatyti jos skaitiklius:
sudo iptables -Z INPUT 3
Atkreipkite dėmesį, kad šie skaitikliai taip pat automatiškai išsivalo atlikus operacinės sistemos perkrovimą.
Taisyklių trynimas
Taisyklių trynimas yra svarbus procesas, užtikrinantis, kad ugniasienės konfigūracija išliktų tvarkinga ir saugi. Yra keli būdai pašalinti taisykles:
Taisyklių trynimas pagal specifikaciją
Galite pašalinti taisyklę, pateikdami jos tikslią specifikaciją su -D arba --delete parametru. Svarbu suprasti, kad -A (add) parametras, naudojamas taisyklės kūrimo metu, neturėtų būti naudojamas trynimo komandoje. Pavyzdžiui, norint pašalinti taisyklę, kuri atmeta netinkamus įeinančius paketus:
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROPŠi komanda ieškos grandinėje INPUT taisyklės, kuri atitinka nurodytus kriterijus (-m conntrack --ctstate INVALID -j DROP) ir ją pašalins.
Taisyklių šalinimas pagal grandį ir numerį
Patikimiausias ir dažniausiai naudojamas būdas pašalinti taisykles yra nurodyti grandinę ir taisyklės eilutės numerį. Pirmiausia, reikia peržiūrėti taisykles su jų numeriais:
sudo iptables -L --line-numbersArba specifinėje grandyje:
sudo iptables -L INPUT --line-numbersTai parodys taisykles su jų eilutės numeriais. Tada, norint ištrinti konkrečią taisyklę (pvz., trečią taisyklę INPUT grandyje):
sudo iptables -D INPUT 3Grandžių šalinimas (Flush)
Jei norite pašalinti visas taisykles iš tam tikros grandinės, galite naudoti -F arba --flush parametrą. Tai efektyvus būdas greitai išvalyti visą grandinės konfigūraciją.
Vienos grandinės išvalymas:
sudo iptables -F INPUTVisų grandinių išvalymas:
sudo iptables -F
Atkreipkite dėmesį, kad visų grandinių išvalymas yra drastiškas veiksmas ir turėtų būti atliekamas tik suprantant jo pasekmes.
Praktiniai pavyzdžiai ir geriausia praktika
Iptables naudojimas gali būti sudėtingas, ypač pradedantiesiems. Tačiau, laikantis tam tikrų principų, galima sukurti saugią ir efektyvią ugniasienės konfigūraciją.
Pagrindinė saugi konfigūracija
Viena iš svarbiausių saugumo principų yra numatytoji neigimo politika. Tai reiškia, kad viskas, kas nėra aiškiai leidžiama, turėtų būti blokuojama.
Nustatyti numatytąją politiką į DROP visoms grandims, išskyrus OUTPUT:
sudo iptables -P INPUT DROPsudo iptables -P FORWARD DROPsudo iptables -P OUTPUT ACCEPTPastaba:
OUTPUTpolitika dažnai paliekamaACCEPT, kad serveris galėtų laisvai bendrauti su išoriniu pasauliu. Tačiau, jei reikia griežtesnės kontrolės, ji taip pat gali būti apribota.Leisti grįžtamąjį ryšį (ESTABLISHED, RELATED):Ši taisyklė leidžia priimti paketus, kurie yra dalis jau užmegzto ryšio arba yra susiję su juo. Tai būtina, kad serveris galėtų tinkamai bendrauti.
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTLeisti vietinį ryšį (localhost):Leidžia serveriui bendrauti pačiam su savimi.
sudo iptables -A INPUT -i lo -j ACCEPTLeisti būtinas paslaugas:Dabar galite pradėti leisti specifines paslaugas, pavyzdžiui, SSH (prievadas 22), HTTP (prievadas 80), HTTPS (prievadas 443).
Leisti SSH:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPTGeriausia praktika yra apriboti SSH prieigą tik tam tikrais IP adresais, kad padidintumėte saugumą.
Leisti HTTP ir HTTPS:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Taisyklių išsaugojimas
iptables taisyklės pagal numatytuosius nustatymus saugomos tik atmintyje ir dingsta po perkrovimo. Norint, kad jos išliktų, reikia jas išsaugoti. Būdas tai padaryti priklauso nuo Linux distribucijos:
Debian/Ubuntu:Įdiekite paketą
iptables-persistent:sudo apt-get updatesudo apt-get install iptables-persistentTada išsaugokite dabartines taisykles:
sudo netfilter-persistent saveArba rankiniu būdu:
sudo iptables-save > /etc/iptables/rules.v4sudo ip6tables-save > /etc/iptables/rules.v6RHEL/CentOS/Fedora:Naudokite
iptables-servicespaketą:bashsudo yum install iptables-servicessudo systemctl enable iptablessudo systemctl start iptablessudo iptables-save > /etc/sysconfig/iptables
Svarbūs patarimai ir įspėjimai
- Neužsirakinkite savęs: Keičiant
INPUTpolitiką įDROPar apribojant SSH prieigą, visada palikite atvirą antrą SSH sesiją arba turėkite prieigą prie serverio konsolės. Tai leis jums atkurti taisykles, jei netyčia užblokuosite sau prieigą. - Taisyklių tvarka svarbi:
iptablestaisykles vertina iš viršaus į apačią. Pirmoji atitikusi taisyklė yra taikoma, ir apdorojimas sustoja. Todėl svarbiausias ir dažniausiai naudojamas taisykles laikykite aukščiau. - IPv6: Jei jūsų sistema naudoja IPv6, turėsite konfigūruoti taisykles ir
ip6tableskomanda. - Dokumentacija: Visada dokumentuokite savo
iptablestaisykles. Tai padės jums ir kitiems administratoriams suprasti konfigūraciją ateityje. nftablespalyginimas: Norsiptablesvis dar plačiai naudojamas, naujesnėse sistemose verta susipažinti sunftables, kuris siūlo modernesnę sintaksę ir galimai geresnį našumą.
Iptables yra nepakeičiamas įrankis Linux sistemų tinklo saugumui užtikrinti. Supratimas, kaip peržiūrėti, filtruoti ir tvarkyti taisykles, leidžia administratoriams sukurti tvirtą gynybos liniją nuo kibernetinių grėsmių.
tags: #iptables #paketu #filtras
