Pagrindinis » kaip » Pradedančiųjų vadovas „iptables“, „Linux“ užkarda

    Pradedančiųjų vadovas „iptables“, „Linux“ užkarda

    „Iptables“ yra labai lanksti ugniasienės programa, sukurta Linux operacinėms sistemoms. Nesvarbu, ar esate „Linux“ naujokas ar sistemos administratorius, tikriausiai tam tikru būdu „iptables“ jums gali būti naudinga. Skaitykite, kaip parodysime, kaip konfigūruoti universaliausią Linux užkardą.

    Nuotrauka pagal ezioman.

    Apie „iptables“

    iptables yra komandinės eilutės ugniasienės įrankis, kuris naudoja politikos grandines, kad leistų arba blokuotų srautą. Kai ryšys bando įsitvirtinti jūsų sistemoje, „iptables“ savo sąraše ieško taisyklių, kad ji atitiktų. Jei jis neranda, jis priskiriamas numatytam veiksmui.

    „iptables“ beveik visada yra iš anksto įdiegta bet kokiame „Linux“ paskirstyme. Jei norite atnaujinti / įdiegti, tiesiog atkurkite „iptables“ paketą:

    sudo apt-get install iptables

    Yra GUI alternatyvų iptables kaip Firestarter, bet iptables nėra tikrai taip sunku, kai jūs turite keletą komandų žemyn. Norite būti labai atsargūs konfigūruodami „iptables“ taisykles, ypač jei esate SSH'd į serverį, nes viena neteisinga komanda gali visam laikui užrakinti jus, kol ji bus rankiniu būdu nustatyta fiziniame įrenginyje.

    Grandinių tipai

    „iptables“ naudoja tris skirtingas grandines: įvestį, pirmyn ir išvestį.

    Įvestis - Ši grandinė naudojama norint valdyti gaunamų ryšių elgesį. Pavyzdžiui, jei vartotojas bando SSH į jūsų kompiuterį / serverį, „iptables“ bandys suderinti IP adresą ir prievadą prie įvesties grandinės taisyklės.

    Persiųsti - Ši grandinė naudojama gaunamiems ryšiams, kurie iš tikrųjų nėra pristatomi vietoje. Pagalvokite apie maršrutizatorių - duomenys visuomet siunčiami į jį, bet retai iš tikrųjų skirti maršrutizatoriui; duomenys tiesiog persiunčiami į savo tikslą. Jei jūs nedarote jokio maršruto, NATing ar kitokio jūsų sistemoje, kuriai reikia persiuntimo, jūs net nenaudosite šios grandinės.

    Yra vienas patikimas būdas patikrinti, ar jūsų sistema naudoja / turi išankstinę grandinę.

    iptables -L -v

    Viršuje esantis paveikslėlis yra serveris, kuris veikia keletą savaičių ir neturi jokių apribojimų, susijusių su gaunamais arba išeinančiais ryšiais. Kaip matote, įvesties grandinė apdorojo 11GB paketus ir išvesties grandinė apdorojo 17GB. Kita vertus, priekinės grandinės nereikėjo apdoroti vieno paketo. Taip yra todėl, kad serveris nevykdo jokio persiuntimo ar yra naudojamas kaip perdavimo priemonė.

    Išėjimas - Ši grandinė naudojama siunčiamiems ryšiams. Pvz., Jei bandote ping howtogeek.com, iptables patikrins savo išvesties grandinę ir pamatys, kokios taisyklės yra susijusios su ping ir howtogeek.com prieš priimant sprendimą leisti arba neleisti bandyti prisijungti.

    Įspėjimas

    Nepaisant to, kad išorinio kompiuterio pingavimas atrodo panašus į tai, kad tik reikia pereiti išvesties grandinėje, turėkite omenyje, kad grąžinus duomenis, bus naudojama ir įvesties grandinė. Naudodami „iptables“ užrakinti sistemą, nepamirškite, kad daugeliui protokolų reikės abipusio ryšio, todėl tiek įvesties, tiek išvesties grandinės turi būti tinkamai sukonfigūruotos. SSH yra bendras protokolas, kurį žmonės pamiršo leisti abiem grandinėms.

    Politikos grandinės numatytasis elgesys

    Prieš eidami ir konfigūruodami konkrečias taisykles, norėsite nuspręsti, ką norite, kad trijų grandinių numatytasis elgesys būtų. Kitaip tariant, ką norite, kad „iptables“ veiktų, jei ryšys neatitinka esamų taisyklių?

    Jei norite pamatyti, ką jūsų politikos grandinės šiuo metu yra sukonfigūruotos, kad atliktumėte nesuderintą srautą, vykdykite iptables -L komandą.

    Kaip matote, mes taip pat naudojome grep komandą, kad suteiktume švaresnę produkciją. Šiame ekrane mūsų grandinės yra suprantamos kaip tinkamos eismui.

    Daugiau kartų, nei ne, jūs norite, kad jūsų sistema priimtų ryšius pagal numatytuosius nustatymus. Jei anksčiau nenustatėte politikos grandinės taisyklių, šis nustatymas jau turėtų būti sukonfigūruotas. Bet kuriuo atveju, čia yra komanda, pagal kurią numatyti ryšiai:

    iptables --policy INPUT ACCEPT
    iptables --policy OUTPUT ACCEPT
    „iptables“ - polisai FORWARD ACCEPT

    Numatydami sutikimo taisyklę, galite naudoti „iptables“, kad atsisakytumėte konkrečių IP adresų ar prievadų numerių ir toliau priimtumėte visus kitus ryšius. Mes pasieksime šias komandas per minutę.

    Jei norėtumėte atsisakyti visų ryšių ir rankiniu būdu nurodyti, kuriuos norite leisti prisijungti, turėtumėte keisti numatytąją savo grandinių politiką. Tai tikriausiai būtų naudinga tik tiems serveriams, kuriuose yra slapta informacija, ir tik kada tik tie patys IP adresai prisijungs prie jų.

    „iptables“ --policija INPUT DROP
    iptables - policy OUTPUT DROP
    iptables - polisai FORWARD DROP

    Ryšiui būdingi atsakymai

    Konfigūravus numatytąją grandinės politiką, galite pradėti pridėti taisykles prie „iptables“, kad ji žinotų, ką daryti, kai susiduria su ryšiu iš tam tikro IP adreso ar uosto. Šiame vadove mes ketiname pereiti prie trijų pagrindinių ir dažniausiai naudojamų „atsakymų“.

    Priimti - Leisti ryšį.

    Drop - Išjunkite ryšį, elgiatės taip, kaip niekada neįvyko. Tai geriausia, jei nenorite, kad šaltinis suvoktų jūsų sistemos egzistavimą.

    Atmesti - Neleiskite ryšio, bet atsiųskite klaidą. Tai geriausia, jei nenorite, kad tam tikras šaltinis prisijungtų prie jūsų sistemos, bet norite, kad jos žinotų, kad užkarda užblokavo juos.

    Geriausias būdas parodyti skirtumą tarp šių trijų taisyklių yra parodyti tai, kas atrodo, kai kompiuteris bando pinguoti „Linux“ įrenginį su „iptables“, sukonfigūruotu kiekvienam iš šių nustatymų.

    Leidimas prisijungti:

    Ryšio atšaukimas:

    Atmesti ryšį:

    Leisti arba blokuoti konkrečius ryšius

    Konfigūravus jūsų politikos grandines, dabar galite sukonfigūruoti „iptables“ leisti arba blokuoti konkrečius adresus, adresų sritis ir prievadus. Šiuose pavyzdžiuose nustatysime ryšius su DROP, bet galite juos perjungti PRIIMTI arba REJECT, priklausomai nuo jūsų poreikių ir kaip konfigūravote savo politikos grandines.

    Pastaba: šiuose pavyzdžiuose mes naudosime iptables -A pridėti taisykles prie esamos grandinės. „iptables“ prasideda savo sąrašo viršuje ir eina per kiekvieną taisyklę, kol ji nustato, kad ji atitinka. Jei norite įterpti taisyklę virš kitos, galite naudoti iptables -I [grandinė] [numeris] nurodyti numerį, kurį jis turėtų įtraukti į sąrašą.

    Ryšiai 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ų diapazonui nurodyti galite naudoti tinklinį ar standartinį brūkšninį žymėjimą.

    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

    Ryšiai su konkrečiu prievadu

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

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

    „Ssh“ galite pakeisti bet kuriuo protokolu ar prievado numeriu. The -p tcp dalis kodo pasakoja „iptables“, kokį ryšį protokolas naudoja. Jei blokavote protokolą, kuris naudoja UDP, o ne TCP -p udp vietoj to reikėtų.

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

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

    Ryšio valstybės

    Kaip jau minėjome, daugeliui protokolų reikės dvipusio ryšio. Pvz., Jei norite leisti SSH ryšius su savo sistema, įvesties ir išvesties grandinės jiems reikės taisyklių. Bet, ką daryti, jei norite, kad SSH būtų įeina į jūsų sistemą? Neįtraukus taisyklės į išvesties grandinę, taip pat leidžiama išeiti SSH bandymai?

    Štai kur įjungiamos būsenos, kurios suteikia jums galimybę, kad galėtumėte leisti dvipusį ryšį, bet leisti tik nustatyti vienpusius ryšius. Pažvelkite į šį pavyzdį, kur leidžiami SSH jungtys iš 10.10.10.10, tačiau SSH jungtys iki 10.10.10.10 nėra. Tačiau sistemai leidžiama siųsti informaciją per SSH tol, kol sesija jau yra sukurta, todėl SSH ryšys galimas tarp šių dviejų kompiuterių..

    iptables -A INPUT -p tcp - importuoti ssh -s 10.10.10.10 -m būseną - statyti NAUJAS, ĮRENGINTA -j ACCEPT

    iptables -A OUTPUT -p tcp - sportas 22d ir 10.10.10.10 -m būsena - būsena ESTABLISHED -j ACCEPT

    Išsaugoti pakeitimus

    Pakeitimai, kuriuos atliksite „iptables“ taisyklėse, bus atmetami kitą kartą, kai „iptables“ paslauga bus paleista iš naujo, nebent atliksite komandą, kad išsaugotumėte pakeitimus. Ši komanda gali skirtis priklausomai nuo jūsų paskirstymo:

    Ubuntu:

    sudo / sbin / iptables-save

    Red Hat / CentOS:

    / sbin / service iptables išsaugoti

    Or

    /etc/init.d/iptables išsaugoti

    Kitos komandos

    Išvardykite šiuo metu sukonfigūruotas „iptables“ taisykles:

    iptables -L

    Pridėti -v parinktis suteiks jums paketinių ir baitų informaciją ir pridės -n išvardys viską skaitiniu būdu. Kitaip tariant - hostname, protokolai ir tinklai yra išvardyti kaip numeriai.

    Jei norite ištrinti visas šiuo metu sukonfigūruotas taisykles, galite išduoti skalavimo komandą.

    iptables -F