"Iptables" pradedančiųjų vadovas, "Linux" užkarda

Turinys:

"Iptables" pradedančiųjų vadovas, "Linux" užkarda
"Iptables" pradedančiųjų vadovas, "Linux" užkarda

Video: "Iptables" pradedančiųjų vadovas, "Linux" užkarda

Video:
Video: Matte vs Glossy Monitor - Laptop Screen Comparison - Which one to choose? - YouTube 2024, Balandis
Anonim
"Iptables" yra itin lanksti užkardos programa, sukurta Linux operacinėms sistemoms. Nesvarbu, ar esate naujokas Linux geek ar sistemos administratorius, galbūt taip yra, kad iptables gali būti puikus jūsų naudojimas. Perskaitykite taip, kaip parodysime, kaip konfigūruoti labiausiai universalų "Firewall".
"Iptables" yra itin lanksti užkardos programa, sukurta Linux operacinėms sistemoms. Nesvarbu, ar esate naujokas Linux geek ar sistemos administratorius, galbūt taip yra, kad iptables gali būti puikus jūsų naudojimas. Perskaitykite taip, kaip parodysime, kaip konfigūruoti labiausiai universalų "Firewall".

Nuotrauka pagal Eziomanas.

Apie iptables

iptables yra komandinės eilutės užkardos įrankis, kuris naudoja politikos grandines, kad leistų arba blokuotų srautą. Kai ryšys bando įsitvirtinti sistemoje, iptables ieško sąrašo taisyklės, kad ji atitiktų. Jei nerandate jo, jis naudojasi numatytu veiksmu.

"iptables" beveik visada yra iš anksto įdiegtas bet kuriame "Linux" platinime. Norėdami ją atnaujinti / įdiegti, tiesiog atkurkite "iptables" paketą:

sudo apt-get install iptables

Yra "GUI" alternatyvos "iptables", kaip "Firestarter", bet "iptables" nėra taip sunku, kai turite keletą komandų. Jūs norite būti labai atsargūs, konfigūruodami iptables taisykles, ypač jei esate SSH į serverį, nes viena neteisinga komanda gali visam laikui užrakinti jus, kol ji fiksuojama rankiniu būdu fiziniame kompiuteryje.

Grandinių tipai

iptables naudoja tris skirtingas grandines: įvesties, į priekį ir išvesties.

Įvestis - Ši grandinė yra naudojama valdyti įeinančių ryšių elgesį. Pavyzdžiui, jei vartotojas bando SSH į savo kompiuterį / serverį, iptables bandys suderinti IP adresą ir prievadą į įvesties grandinės taisyklę.

Persiųsti - Ši grandinė naudojama gaunamiems prisijungimams, kurie iš tiesų nėra pristatomi vietoje. Pagalvokite apie maršrutizatorių - duomenys visada siunčiami į jį, tačiau retai jie iš tikrųjų yra skirti pačiam maršrutizatoriui; duomenys yra perduodami tikslui. Jei nenorite atlikti tam tikros rūšies nukreipimo, NATing ar kito savo sistemoje, kuri reikalauja persiuntimo, net nenaudosite šios grandinės.

Yra vienas patikimiausias būdas patikrinti, ar jūsų sistema naudoja / reikalauja priekinės grandinės.

iptables -L -v

Viršuje esantis ekranas yra serveryje, kuris veikia keletą savaičių, ir neturi jokių apribojimų įeinantiems ar išeinantiems ryšiams. Kaip matote, įvesties grandinė apdorojo 11 GB paketų ir produkcijos grandinė apdorojo 17 GB. Kita vertus, priekinės grandinės nereikėjo apdoroti vieno paketo. Taip yra todėl, kad serveris nenaudoja jokio peradresavimo arba naudojamas kaip perėjimo įrenginys.
Viršuje esantis ekranas yra serveryje, kuris veikia keletą savaičių, ir neturi jokių apribojimų įeinantiems ar išeinantiems ryšiams. Kaip matote, įvesties grandinė apdorojo 11 GB paketų ir produkcijos grandinė apdorojo 17 GB. Kita vertus, priekinės grandinės nereikėjo apdoroti vieno paketo. Taip yra todėl, kad serveris nenaudoja jokio peradresavimo arba naudojamas kaip perėjimo įrenginys.

Išvestis - Ši grandinė naudojama išeinantys jungtys. Pavyzdžiui, jei bandysite ping "howtogeek.com", "iptables" patikrins produkcijos grandinę, kad pamatytumėte taisykles, susijusias su ping ir howtogeek.com, prieš priimdami sprendimą leisti arba paneigti bandymą prisijungti.

Įspūdis

Nors išorinio kompiuterio tvirtinimas atrodo kaip kažkas, į kurį tik reikia kirsti gamybos grandinę, turėkite galvoje, kad grąžinti duomenis taip pat bus naudojama įvesties grandinė. Jei naudojate iptables, kad užblokuotumėte savo sistemą, nepamirškite, kad daugeliui protokolų reikės dvipusio ryšio, taigi tiek įvesties, tiek išvesties grandines reikės tinkamai sukonfigūruoti. SSH yra bendras protokolas, kurį žmonės pamiršta leisti abiejose grandinėse.

Politikos grandinės numatytoji elgsena

Prieš įeinant į konkrečias taisykles ir konfigūruodami jas, jūs turėsite nuspręsti, kokia bus trijų grandinių numatytoji elgsena. Kitaip tariant, ką norėtumėte padaryti "iptables", jei ryšys neatitinka galiojančių taisyklių?

Norėdami sužinoti, kokios yra jūsų politikos grandinės šiuo metu sukonfigūruotos nesuderintam srautui, paleiskite

iptables -L

komanda

Kaip matote, mes taip pat panaudojome grep komandą, kad suteiktume mums švaresnę išeigą. Tame ekrano paveikslėlyje mūsų tinklai šiuo metu suprato, kad priimti srautą.
Kaip matote, mes taip pat panaudojome grep komandą, kad suteiktume mums švaresnę išeigą. Tame ekrano paveikslėlyje mūsų tinklai šiuo metu suprato, kad priimti srautą.

Daugiau kartų negu norite, kad jūsų sistema priimtų ryšius pagal nutylėjimą. Jei anksčiau nepakeitėte politikos grandinės taisyklių, šis nustatymas jau turėtų būti konfigūruojamas. Bet kuriuo atveju, čia yra komanda prijungti jungtis pagal nutylėjimą:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

Pagal nutylėjimą priėmimo taisyklę galite naudoti iptables, kad neleistumėte konkrečių IP adresų ar prievadų numerių, tuo pačiu toliau priimdami visus kitus ryšius. Mes pateiksime šias komandas per minutę.

Jei norite atmesti visus ryšius ir rankiniu būdu nurodyti, kuriuos iš jų norite leisti prisijungti, turėtumėte pakeisti numatytąją jūsų grandinių politiką. Tai galbūt bus naudinga tik serveriams, kuriuose yra slaptos informacijos, ir su jais gali prisijungti tik tie patys IP adresai.

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Ryšio specifiniai atsakymai

Sukonfigūruodami numatytasis grandinės politikos nuostatas, galite pradėti pridėti taisykles prie iptables, kad žinotų, ką daryti, kai susiduria su ryšiu iš tam tikro IP adreso ar prievado. Šiame vadove mes einame per tris pagrindinius ir dažniausiai naudojamus "atsakymus".

Priimti - leiskite prisijungti.

Drop - Nutraukite ryšį, elkitės taip, kaip niekada neįvyko. Tai geriausia, jei nenorite, kad šaltinis suvoktų jūsų sistemą.

Atmesti - Neleiskite prisijungti, bet grąžinkite klaidą. Tai geriausia, jei nenorite, kad tam tikras šaltinis prisijungtų prie jūsų sistemos, bet jūs norite, kad jie žinotų, kad jūsų ugniasienė juos užblokavo.

Geriausias būdas parodyti skirtumą tarp šių trijų taisyklių yra parodyti, kas atrodo, kai kompiuteris bando pinguoti "Linux" mašiną su "iptables", konfigūruotomis kiekvienam iš šių nustatymų.

Leidžiant prisijungti:

Atsisakymas prisijungti:
Atsisakymas prisijungti:
Image
Image

Leisti arba užblokuoti specifines jungtis

Sukūrę savo politikos grandines, dabar galite konfigūruoti "iptables", kad leistumėte arba blokuotumėte konkrečius adresus, adresų intervalus ir prievadus. Šiuose pavyzdžiuose nustatysime ryšius su

DROP

bet galite jas perjungti

ACCEPT

arba

REJECT

priklausomai nuo jūsų poreikių ir kaip sukonfigūravote savo politikos grandines.

Pastaba: šiuose pavyzdžiuose mes ketiname naudoti

iptables -A

pridėti taisykles prie esamos grandinės. "iptables" prasideda sąrašo viršuje ir eina per kiekvieną taisyklę, kol nustatoma, kad ji atitinka. Jei norite įterpti taisyklę virš kito, galite naudoti

iptables -I [chain] [number]

nurodyti numerį, kuris turėtų būti sąraše.

Jungtys iš vieno IP adreso

Šis pavyzdys rodo, kaip blokuoti visus ryšius iš IP adreso 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Ryšiai iš įvairių IP adresų

Šis pavyzdys rodo, kaip blokuoti visus IP adresus 10.10.10.0/24 tinklo diapazone. IP adresų diapazono nustatymui galite naudoti tinklo maską ar standartinę brėžinį.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

arba

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Jungtys prie konkretaus uosto

Šis pavyzdys rodo, kaip blokuoti SSH jungtis nuo 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

"SSH" galite pakeisti bet kuriuo protokolu ar prievado numeriu. The

-p tcp

dalis kodo pasakoja iptables, kokio ryšio protokolas naudoja. Jei užblokavote protokolą, kuris naudoja UDP, o ne TCP, tada

-p udp

vietoj to reikės.

Šis pavyzdys rodo, kaip blokuoti SSH jungtis iš bet kurio IP adreso.

iptables -A INPUT -p tcp --dport ssh -j DROP

Prisijungimo valstybės

Kaip minėjome anksčiau, daugeliui protokolų bus reikalaujama abipusio ryšio. Pavyzdžiui, jei norite leisti SSH prisijungimus prie savo sistemos, įvesties ir išvesties grandinėms reikės papildomos taisyklės. Bet ką daryti, jei norite, kad SSH prisijungtų prie jūsų sistemos? Negalėsite pridėti taisyklės į išvesties grandinę, taip pat leis išeinančius SSH bandymus?

Štai kur ateina prisijungimo būklė, kuri suteikia jums pajėgumų, kurių reikia, kad būtų leidžiama dvipusis ryšys, tačiau leidžiama nustatyti tik vieno ryšio jungtis. Pažvelkite į šį pavyzdį, kai SSH jungtys nuo 10.10.10.10 yra leidžiamos, tačiau SSH jungtys prie 10.10.10.10 nėra. Tačiau sistemai leidžiama atsiųsti informaciją per SSH tol, kol sesija jau yra nustatyta, todėl SSH ryšys yra įmanomas tarp šių dviejų kompiuterių.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Išsaugoti pakeitimus

Pakeitimai, kuriuos atliksite į savo iptables taisykles, bus panaikinti kitą kartą, kai iptables paslauga bus paleista iš naujo, nebent atliksite komandą išsaugoti pakeitimus. Ši komanda gali skirtis priklausomai nuo jūsų platinimo:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Or

/etc/init.d/iptables save

Kiti komandos

Nurodykite šiuo metu sukonfigūruotas iptables taisykles:

iptables -L

Pridedant

-v

Parinktis suteiks jums paketų ir baitų informaciją ir pridėti

-n

išvardys viską skaičiais. Kitaip tariant, kompiuterių pavadinimai, protokolai ir tinklai yra išvardyti kaip skaičiai.

Norėdami išvalyti visas šiuo metu sukonfigūruotas taisykles, galite išduoti komandą flush.

iptables -F

Rekomenduojamas: