Šiame vadove bus aptarta, kaip konfigūruoti ir naudoti „iptables“ taisykles „Ubuntu“ sistemoje, kad apsaugotumėte savo tinklą. Nesvarbu, ar esate pradedantysis „Linux“ vartotojas, ar patyręs sistemos administratorius, iš šio vadovo vienaip ar kitaip sužinosite ką nors naudingo apie „iptables“.
„Iptables“ yra iš anksto įdiegtos „Ubuntu“ ir daugumoje „Debian“ pagrįstų paskirstymų. „Ubuntu“ taip pat pakuoja GUFW užkardą, grafinę alternatyvą, kurią galite naudoti dirbdami su „iptables“.
PASTABA: Norėdami naudoti ir konfigūruoti „iptables“, jums reikės „sudo“ privilegijų jūsų sistemoje. Daugiau apie sudo galite sužinoti iš šios mokymo programos.
Dabar, kai žinote, kas yra „Iptables“, pasinerkime tiesiai!
Kaip naudoti „iptables“ valdant IPv4 srautą?
Norėdami naudoti „Iptables“ IPv4 tinklui ir srautui valdyti, turite suprasti šiuos dalykus:
„Iptables“ komanda
„Iptables“ siūlo daugybę parinkčių, leidžiančių pritaikyti ir suderinti „iptables“ taisykles. Aptarkime kai kuriuos iš šių parametrų ir pažiūrėkime, ką jie daro.
PASTABA: Galite sukonfigūruoti taisyklių rinkinį, kuris valdo konkretų pogrupį, vadinamą „iptables“ grandinėmis.
„Iptables“ parametrai
Prieš pradėdami kurti ir konfigūruoti „iptables“ taisykles, pirmiausia supraskime „iptables“ pagrindus, pvz., Bendrą sintaksę ir numatytuosius argumentus.
Apsvarstykite toliau pateiktą komandą:
sudo iptables -I ĮVADAS -s 192.168.0.24 -j DROPAukščiau nurodyta komanda nurodo „iptables“ sukurti taisyklę grandinėje. Taisyklė numeta visus paketus iš 192 IP adreso.168.0.24.
Panagrinėkime komandą eilutėje po eilutės, kad ją geriau suprastume.
- Pirmoji komanda „iptables“ iškviečia komandų eilutės „iptables“ įrankį.
- Kitas yra -I argumentas, naudojamas įterpiant. Įterpimo argumentas prideda taisyklę „iptables“ grandinės pradžioje ir taip jai priskiriamas didesnis prioritetas. Norėdami pridėti taisyklę prie konkretaus grandinės skaičiaus, naudokite argumentą -I, po kurio nurodomas skaičius, kur taisyklė turėtų būti priskirta.
- Argumentas -s padeda nurodyti šaltinį. Taigi mes naudojame argumentą -s, po kurio eina IP adresas.
- Parametras -j su „iptables“ nurodo šuolį į konkretų tikslą. Ši parinktis nustato veiksmą, kurį „Iptables“ turi atlikti, kai bus suderintas paketas. Pagal numatytuosius nustatymus „Iptables“ siūlo keturis pagrindinius taikinius: ACCEPT, DROP, LOG ir REJECT.
„Iptables“ siūlo daugybę parametrų, kuriuos galite naudoti norėdami sukonfigūruoti įvairias taisykles. Įvairūs parametrai, kuriuos galite naudoti norėdami konfigūruoti „iptables“ taisykles, yra šie:
„Iptables“ taisyklės parametras | apibūdinimas |
---|---|
-s šaltinis | Nurodykite šaltinį, kuris gali būti adresas, pagrindinio kompiuterio vardas arba tinklo pavadinimas. |
-p -protokolas | Nurodo ryšio protokolą; pavyzdžiui, TCP, UDP ir kt. |
-d-paskirtis | Nurodo paskirties vietą, kuri gali būti adresas, tinklo pavadinimas arba pagrindinio kompiuterio vardas. |
-j -šokti | Nustato veiksmą, kurį „iptables“ turi atlikti radęs paketą. |
-o-out-sąsaja | Nustato sąsają, per kurią „iptable“ siunčia paketą. |
-i-sąsajoje | Nustato sąsają, naudojamą tinklo paketams nustatyti. |
-c -set-counters | Leidžia administratoriui nustatyti nurodytos taisyklės baitų ir paketų skaitiklius. |
-g -goto grandinė | Parametras nurodo, kad po grąžinimo apdorojimas turėtų tęstis vartotojo nustatytoje grandinėje. |
-f-fragmentas | Liepia „iptables“ taikyti taisyklę tik antriems ir kitiems suskaidytų paketų fragmentams. |
„Iptables“ parinktys
„Iptables“ komanda palaiko daugybę galimybių. Kai kurie iš jų yra šie:
Variantas | apibūdinimas |
---|---|
-A-pridėti | Prideda taisyklę prie nurodytos grandinės pabaigos |
-D -trinti | Pašalina taisyklę iš nurodytos grandinės |
-F - praplaukite | Pašalina visas taisykles po vieną |
-L sąrašas | Parodo visas nurodytos grandinės taisykles |
-Aš -įterpiu | Įterpia taisyklę į nurodytą grandinę (perduodama kaip skaičius, kai nenurodytas skaičius; taisyklė pridedama viršuje) |
-C - patikrinkite | Užklausos dėl taisyklės atitikimo; reikalavimas nurodytoje taisyklėje |
-v -verbose | Pateikiama daugiau informacijos, kai naudojama su parametru -L |
-N - nauja grandinė | Pridedama nauja vartotojo apibrėžta grandinė |
-X -trinti-grandinę | Pašalina konkrečią vartotojo apibrėžtą grandinę |
„Iptables“ lentelės
„Linux“ branduolyje yra numatytosios lentelės, kuriose pateikiamas susijusių taisyklių rinkinys. Šiose numatytosiose lentelėse yra numatytųjų grandinių rinkinys, tačiau vartotojai gali tinkinti taisykles pridėdami vartotojo apibrėžtas taisykles.
PASTABA: Numatytosios lentelės labai priklausys nuo jūsų branduolio konfigūracijos ir įdiegtų modulių.
Čia yra numatytosios „iptables“ lentelės:
1: Filtrų lentelės
Filtravimo lentelė yra numatytoji lentelė, kurioje yra grandinės, naudojamos tinklo paketų filtravimui. Kai kurios šios lentelės numatytosios grandinės apima:
Grandinė | apibūdinimas |
---|---|
Įvestis | „Iptables“ naudoja šią grandinę bet kokiems į sistemą gaunamiems paketams, t.e., paketai, einantys į vietinio tinklo lizdus. |
Rezultatas | „Iptables“ naudoja išvesties grandinę vietoje sugeneruotiems paketams, t.e., paketai išeina iš sistemos. |
Persiųsti | Šią grandinę „Iptables“ naudoja paketams, nukreiptiems arba persiųstiems per sistemą. |
2: NAT lentelės
NAT arba tinklo adresų lentelė yra maršruto parinkimo įrenginys, naudojamas modifikuoti šaltinio ir tikslinius IP adresus tinklo pakete. NAT lentelės pagrindinė paskirtis yra dviejų tinklų sujungimas privačiame adresų diapazone su viešuoju tinklu.
NAT buvo sukurtas taip, kad būtų palaikomas tikrų IP adresų užmaskavimas, leidžiantis privačių IP adresų diapazonams pasiekti išorinį tinklą. Tai padeda apsaugoti informaciją apie vidinius tinklus nuo viešųjų tinklų atskleidimo.
NAT lentelė įsidarbina, kai paketas užmezga naują ryšį.
„Iptables“ turi numatytąją NAT adresavimo lentelę. Šioje lentelėje yra trys pagrindinės grandinės:
Grandinė | apibūdinimas |
---|---|
PREROUTING | Leidžia modifikuoti paketų informaciją prieš atvykstant į INPUT grandinę, naudojamą gaunamiems paketams |
IŠĖJIMAS | Rezervuota vietoje sukurtiems paketams, t.e., prieš įvykstant tinklo maršrutui |
POSTROUTINGAS | Leidžia modifikuoti siunčiamus paketus - paketus, paliekančius OUTPUT grandinę |
Žemiau pateiktoje diagramoje parodyta aukšto lygio šio proceso apžvalga.
Norėdami peržiūrėti savo NAT maršruto lenteles, naudokite toliau pateiktą komandą.
iptables -t nat -n -v -L3: „Mangle“ lentelės
Mangle lentelė daugiausia naudojama specialiam paketų modifikavimui. Paprasčiau tariant, jis naudojamas tinklo paketo IP antraštėms modifikuoti. Paketų modifikavimas gali apimti paketo TTL vertės pakeitimą, paketui galiojančių tinklo apynių pakeitimą ir kt.
Lentelėje yra šios numatytosios grandinės:
Grandinė | apibūdinimas |
---|---|
PREROUTING | Rezervuota gaunamiems paketams |
POSTROUTINGAS | Naudojamas siunčiamiems paketams |
ĮVADAS | Naudojamas paketams, patenkantiems tiesiai į serverį |
IŠĖJIMAS | Naudojamas vietiniams paketams |
Persiųsti | Rezervuota paketams, nukreiptiems per sistemą |
4: Žalios lentelės
Pagrindinis neapdorotos lentelės tikslas yra sukonfigūruoti išimtis paketams, kurie nėra tvarkomi stebėjimo sistemoje. Neapdorota lentelė paketuose nustato NOTRACK ženklą, ragindama „conntrack“ funkciją ignoruoti paketą.
„Conntrack“ yra „Linux“ branduolio tinklo funkcija, leidžianti „Linux“ branduoliui sekti visus tinklo ryšius, leidžiančius branduoliui nustatyti tinklo srautus sudarančius paketus.
Neapdorotoje lentelėje yra dvi pagrindinės grandinės:
Grandinė | apibūdinimas |
---|---|
PREROUTING | Rezervuota tinklo sąsajomis gaunamiems paketams |
IŠĖJIMAS | Rezervuota paketams, kuriuos inicijuoja vietiniai procesai |
5: Apsaugos lentelė
Pagrindinis šios lentelės naudojimas yra nustatyti vidinį „Linux“ saugos gerinimo (SELinux) saugos mechanizmą, kuris pažymimas paketuose. Apsaugos ženklas gali būti taikomas kiekvienam ryšiui ar paketui.
Jis naudojamas privalomoms prieigos kontrolės taisyklėms ir yra antroji lentelė, prieinama po filtravimo lentelės. Jis siūlo šias numatytąsias grandines:
Grandinė | apibūdinimas |
---|---|
ĮVADAS | Rezervuota gaunamiems paketams į sistemą |
IŠĖJIMAS | Naudojamas vietoje sukurtiems paketams |
PERSIŲSTI | Naudojamas paketams, nukreipiamiems per sistemą |
Peržiūrėję numatytuosius „Iptables“, eikime toliau ir aptarkime, kaip dirbti su „iptables“ taisyklėmis.
Kaip dirbti su „iptables“ taisyklėmis?
„Iptables“ taisyklės taikomos didėjimo tvarka. Tai reiškia, kad pirmiausia taikoma pirmoji konkretaus rinkinio taisyklė, paskui antroji, paskui trečioji ir t. T., Iki paskutinės.
Dėl šios funkcijos „iptables“ neleidžia pridėti taisyklių rinkinyje naudojant parametrą -A; Norėdami įtraukti į sąrašo viršų, turite naudoti -I, po kurio nurodomas skaičius, arba tuštindami jį.
Rodomi „Iptables“
Norėdami peržiūrėti „iptables“, naudokite komandą „iptables -L -v IPv4“ ir „ip6tables“ -L -v „IPv6“.
Taisyklių įterpimas
Norėdami įterpti taisykles į rinkinį, turite jas išdėstyti tikslia tvarka, atsižvelgdami į tos pačios grandinės naudojamas taisykles. Galite peržiūrėti „iptables“ taisyklių sąrašą naudodami komandą, kaip aptarta aukščiau:
sudo iptables -L -vPvz., Norėdami įterpti taisyklę, leidžiančią gaunamus ryšius su 9001 prievadu per TCP, turime nurodyti taisyklės numerį INPUT grandinei, laikydamiesi interneto eismo taisyklių.
sudo iptables -I INPUT 1 -p TCP --porto 9001 -m būsena --state NAUJA -j ACCEPTPeržiūrėję dabartinius „iptables“, rinkinyje turėtumėte pamatyti naują taisyklę.
sudo iptables -L -v
Taisyklių pakeitimas
Pakeitimo funkcija veikia panašiai kaip įterpti, tačiau ji naudoja komandą „iptables -R“. Pvz., Norėdami pakeisti anksčiau pateiktą taisyklę ir nustatyti prievadą 9001 paneigti, mes:
sudo iptables -R INPUT 1 -p TCP --port 9001 -m būsena - valstija NAUJA -j ATMETTITaisyklės ištrynimas
Norėdami ištrinti taisyklę, mes perduodame taisyklės numerį. Pavyzdžiui, norėdami ištrinti anksčiau pateiktą taisyklę, galime nurodyti:
sudo iptables -D INPUT 1Daugumoje „Linux“ sričių „iptables“ nėra tušti nei IPv4, nei IPv6. Taigi, jei nepridėjote naujos taisyklės, gausite išvestį, panašią į žemiau pateiktą. Tai rizikinga, nes tai reiškia, kad sistema leidžia visą gaunamą, išeinantį ir nukreiptą srautą.
Panagrinėkime, kaip sukonfigūruoti „iptables“:
Kaip konfigūruoti „iptables“?
Yra daugybė „iptables“ taisyklių konfigūravimo būdų. Šiame skyriuje naudojami pavyzdžiai, rodantys, kaip nustatyti taisykles naudojant IP adresus ir prievadus.
Eismo blokavimas ir leidimas uostuose
Norėdami užblokuoti arba leisti visą srautą tinklo sąsajoje, galite naudoti konkretų prievadą. Apsvarstykite šiuos pavyzdžius:
sudo iptables -A Įvestis -j ACCEPT -p TCP - paskirties prievadas 1001 -i wlan0Aukščiau nurodytos komandos leidžia srautą per 1001 TCP prievadą wlan0 sąsajoje.
sudo iptables -A INPUT -j DROP -p TCP - paskirties prievadas 1001 -i wlan0Ši komanda veikia priešingai nei pirmiau nurodyta komanda, nes ji blokuoja visą srautą „wlan0“ 1001 prievade.
Štai atidus komandos patikrinimas:
- Pirmasis argumentas (-A) lentelės grandinės pabaigoje prideda naują taisyklę.
- INPUT argumentas įtraukia nurodytą taisyklę į lentelę.
- DROP argumentas nustato veiksmą, kurį reikia atlikti kaip ACCEPT ir DROP. Tai reiškia, kad paketui sutapus, jis numetamas.
- -p nurodo tokį protokolą kaip TCP ir leidžia praeiti srautą kitais protokolais.
- -paskirties uostas nustato taisyklę priimti arba atmesti visą 1001 uostui skirtą srautą.
- -i
liepia „iptables“ taikyti taisyklę srautui, ateinančiam per „wlan0“ sąsają.
PASTABA: „Iptables“ nesupranta tinklo sąsajos slapyvardžių. Taigi sistemoje, kurioje yra daugiau nei viena virtuali sąsaja, turėsite rankiniu būdu ir aiškiai apibrėžti paskirties adresą.
Pavyzdžiui:
sudo iptables -A INPUT -j DROP -p TCP - paskirties prievadas 1001 -i wlan0 -d 192.168.0.24Įtraukti į baltąjį sąrašą ir įtraukti juoduosius IP adresus
Galite sukurti užkardos taisykles naudodami „iptables“. Vienas iš pavyzdžių yra sustabdyti visą srautą ir leisti tinklo srautą tik iš aiškių IP adresų.
Pavyzdys:
„iptables“ -A INPUT -m būsena - valstybė NUSTATYTA, SUSIJED - j PRIIMTI„iptables“ -A INPUT -i lo -m komentaras - komentaras „Allow loopback connection“ -j ACCEPT
„iptables“ -A INPUT -p icmp -m komentaras - komentaras „Leiskite Ping veikti kaip tikėtasi“ -j
PRIIMTI
iptables -A ĮVADAS-192.168.0.1/24 -j PRIIMTIiptables -A ĮVADAS -s 192.168.0.0 -j PRIIMTI
„iptables“ -P INPUT DROP
„iptables“ -P FORWARD DROP
Pirmoje eilutėje nustatoma taisyklė, leidžianti visus 192 šaltinio IP adresus.168.0.1/24 potinklis. Taip pat galite naudoti CIDR arba atskirus IP adresus. Šioje komandoje mes nustatėme taisyklę leisti visiems srautams, susijusiems su esamais ryšiais. Paskutinėse komandose nustatėme INPUT ir FORWARD politiką, kad visi atsisakytų.
„IPpt6“ naudojimas „IPv6“
„Iptables“ komanda veikia tik naudojant „IPv4“. Norėdami naudoti „iptables“ „IPv6“, turite naudoti komandą „ip6tables“. „Ip6tables“ naudoja „raw“, „filter“, „security“ ir „mangle“ lenteles. Bendroji „ip6tables“ sintaksė yra panaši į „iptables“, be to, ji palaiko suderinamas „iptables“ parinktis, pvz., Pridėti, ištrinti ir kt.
Apsvarstykite galimybę naudoti „ip6tables“ vadovo puslapius, jei norite gauti daugiau informacijos.
Tinklo saugumo „iptables“ taisyklių rinkinių pavyzdys
Tinkamų užkardos taisyklių kūrimas daugiausia priklausys nuo sistemoje veikiančios paslaugos ir naudojamų prievadų. Tačiau čia yra keletas pagrindinių tinklo konfigūravimo taisyklių, kurias galite naudoti savo sistemai apsaugoti:
1: Leiskite „Loopback“ sąsajos srautą ir atmeskite visą grįžtamąjį ryšį, gaunamą iš kitų sąsajų
„iptables“ -A INPUT -i lo -j ACCEPT (Taip pat galite naudoti „ip6tables“)„iptables“ - ĮVADAS ! -i lo -s 127.0.0.0 -j REJECT (taip pat galioja „ip6tables“)
2: atmesti visas ping užklausas
„iptables“ -A INPUT -p icmp -m būsena - state NAUJA --icmp tipo 8 -j ATSISAKYKITE3: Leisti SSH ryšius
iptables -A ĮVADAS -p tcp --port 22 -m būsena - valstija NAUJA -j PRIIMTITai yra komandų pavyzdžiai, kuriuos galite naudoti savo sistemai apsaugoti. Tačiau konfigūracija labai priklausys nuo to, ką ar kam norite pasiekti įvairias paslaugas.
ATSARGIAI: Jei norite visiškai išjungti „IPv6“, įsitikinkite, kad nekomentuojate eilutės, nes tai sulėtins atnaujinimo procesą:
pirmenybė :: ffff: 0: 0/96 100 rasta / etc / gai.konf .
Taip yra todėl, kad APT paketų tvarkyklė išsprendžia IPv6 veidrodinį domeną dėl apt-get atnaujinimo.
Kaip įdiegti „iptables“ taisykles?
Norėdami įdiegti „iptables“ „Ubuntu“ ar kitose „Debian“ sistemose, pirmiausia sukurkite du failus („ip4“ ir „ip6“) atitinkamiems IP adresams.
Bet kuriame faile pridėkite taisykles, kurias norite įgyvendinti, atitinkamuose failuose - „IPv4“ taisyklės prie „IP4“ failo ir „IPv6“ taisyklės prie „IP6“ failo.
Tada turime importuoti taisykles naudodami komandą:
sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)Tada galite patikrinti, ar taisyklės pritaikytos, naudodami komandą:
sudo iptables -L -v„Quick iptables-persistent Guide“
„Ubuntu“ ir įprasti „Debian“ pagrindu veikiantys paskirstymai yra su „iptables-persistent“ paketu, kuris leidžia lengvai pritaikyti užkardos taisykles perkraunant. Pakete yra failai, kuriuos galite naudoti nustatydami IPv4 arba IPv6 taisykles, ir jie gali būti automatiškai pritaikomi paleidus.
Taip pat galite naudoti užkardos taisykles naudodami UFW arba GUFW. Apsvarstykite šią pamoką, kad sužinotumėte, kaip naudoti UFW.
Kaip įdiegti „iptables-persistent“?
Įsitikinkite, kad sistemoje esate įdiegę „iptables-persistent“. Naudokite dpkg ir patikrinkite, ar turite paketą.
Jei ne, naudokite šią komandą:
sudo apt-get install iptables-persistent
Du kartus būsite paraginti išsaugoti dabartines IPv4 ir IPv6 taisykles. Spustelėkite Taip, kad išsaugotumėte abi taisykles.
Norėdami išsaugoti IPv6, spustelėkite „Taip“.
Baigę diegti, patikrinkite, ar turite „iptables“ pakatalogį, kaip parodyta toliau pateiktame paveikslėlyje.
Dabar galite naudoti taisykles.v4 ir taisyklės.v6 pridėti „iptables“ taisykles, ir „iptables-persistent“ jas pritaikys automatiškai. Failai yra paprasti tekstiniai failai, kuriuos galite lengvai redaguoti naudodami bet kurį pasirinktą teksto redaktorių.
Išvada
Šioje pamokoje apžvelgėme „iptables“ pagrindus. Pradedant darbu su „iptables“, pagrindinėmis komandomis, numatytosiomis „iptables“ lentelėmis ir parametrais.
Iš to, ką sužinojote, turėtumėte sugebėti naudoti „iptables“ kurdami užkardos taisykles, kurios padėtų apsaugoti jūsų sistemą.