Šis gidas skirtas žmonėms, kurie turi patirties Linux serverių administravimo srityje. Ugniasienės diegimas gali būti pavojingas. Galite užblokuoti savo serverį ir turėsite jį perkrauti nutraukdami maitinimo tiekimą. Jeigu padarysite klaidą galutiniame scenarijuje, visai negalėsite prisijungti prie savo serverio! Būkite atsargūs ir, jeigu šiame gide ko nors nesuprasite, nediekite ugniasienės į savo serverį!
Kas yra ugniasienė?Tai yra programinė įranga, kuri blokuoja tam tikrus jūsų serverio prievadus. Kad geriau suprastumėte, įsivaizduokime namą: jame yra priekinės ir galinės durys. Jeigu niekada nenaudojate galinių durų, galite jas užblokuoti ir taip sumažinti potencialią riziką, kad per jas gali įsibrauti vagis. Panašiai vyksta ir su serveriu: uždaromi visi nereikalingi prievadai.
Kurie prievadai dažniausiai naudojami?Dėmesio!
Prieš ką nors darydami būkite labai atsargūs, nes galite uždaryti ne tą prievadą. Įsivaizduokite, jeigu uždarysite SSH prievadą, turėsite jungtis telnet ryšiu, naudodami webmin sąsają arba perkrauti serverį.
Pagal nutylėjimą OVH atidaromi serverių prievadai yra:
Šie prievadai atidaromi pagal nutylėjimą, tačiau tai priklauso nuo įdiegtos programinės įrangos: gali būti atidaryti ne visi išvardinti prievadai, gali būti atidaryti ir kiti. Jūs patys sprendžiate, kuriuos prievadus palikti atvirus. Kai pasirinksite, galime pradėti.
Iptables yra galinga ugniasienė, diegiama į visus OVH serverius. Iptables konfigūravimo pavyzdys: atidarysime kai kuriuos prievadus, o likusius uždarysime. Šiame pavyzdyje paliksime atvirus tik 22 (SSH) ir 80 (HTTP) prievadus. Tai tik pavyzdys, savo serverio ugniasienę konfigūruokite pagal savo poreikius.
Baigta, iptables atnaujintos, galime tęsti.
Peržiūrime taisykles:
Matome 3 grandines: Input, Forward ir Output. Pirmiausiai dirbsime su Input grandine (įeinančio srauto). Autorizuosime 22 ir 80 prievadus:
-A INPUT: nustatome Input taisyklę.
-i eth0: nurodome, kad dirbame tik su ethernet sąsaja.
-p tcp: nurodome, kad dirbame su TCP protokolu (šiuo metu tik su juo ir dirbsime).
--dport 22: taisyklė bus taikoma SSH (22) prievadui.
-j ACCEPT: priimsime šį srautą.
Peržiūrime taisykles:
Skyrius Input šiek tiek užpildytas, tai geras ženklas ;).
Matome, kad numatytoji taisyklė yra viską priimti Chain INPUT(policy ACCEPT). Mes norime užblokuoti visą nepageidaujamą srautą. Todėl įtrauksime taisyklę, kuri užblokuos visus prievadus. Tačiau susiduriame su problema:
Pavyzdžiui, jūsų serveris susijings su kernel.org serveriu, kad parsiųstų naują branduolį, todėl sukurs naują jungtį su svetaine, kuri lauks jūsų serverio atsako. Kitaip sakant, užklausa pasieks kernel.org, tačiau kaip ji grįš, jeigu mes viską blokuojame?
Laimei, iptables yra pakankamai galinga programa ir gali atrinkti paketus pagal jų būseną. Taigi įtraukiame taisyklę:
Dabar galime užblokuoti visa kita (DĖMESIO: toliau ugniasienė pradės pilnai veikti, įsitikinkite, kad įtraukiate teisingas taisykles, antraip užblokuosite savo serverį!):
Šiai taisyklei yra 2 pasirinkimai. Pirmasis sprendimas yra trinti visus nepageidaujamus paketus, t.y. kai būtų gautas toks paketas, jis būtų nepriimtas ir iškart ištrintas. Klientas lauks serverio atsako, kol baigsis užklausai skirtas laikas. Antrasis pasirinkimas - tai visų nepageidaujamų paketų atmetimas (vietoje DROP naudojama REJECT taisyklė). Jeigu gaunamas nelauktas paketas, klientui atgal siunčiamas klaidos pranešimas ir jam nereikia laukti, kol baigsis užklausai skirtas laikas.
Paketų atmetimas yra švaresnis metodas, o trynimas - saugesnis. Įsivaizduokite, kad kas nors cikliškai siunčia nelauktus paketus į jūsų serverį. Kai paketai ištrinami, serveris tiesiog neapdoros jų, o jeigu paketai atmetami, neigiamo atsakymo siuntimui bus naudojami serverio resursai ir laikas.
Jūs patys sprendžiate, kurį metodą naudoti ;)
Norėdami panaikinti visas ugniasienės taisykles, rašykite:
Šį komanda pašalins visas Input dalies taisykles. Jeigu norite įtraukti taisyklę tarp pirmos ir antros, rašykite:
Norėdami ištrinti 3 taisyklę:
Norėdami visiškai užblokuoti IP adresą:
Dabar ugniasienė pilnai veikis. Bandykite skanuoti savo serverį ir matysite, kad atviri tik 22 ir 80 prievadai. Jeigu skanavimas labai lėtas, vadinasi, naudojama DROP taisyklė.
Jeigu norite užblokuoti ICMP protokolą (Ping užklausas), turite praleisti bent ping.ovh.net, proxy.p19.ovh.net, proxy.rbx.ovh.net ir proxy.ovh.net užklausas į savo serverį. Tai leis OVH komandoms stebėti jūsų serverio buseną.
Tam tikrų IP ir serverių ICMP užklausų praleidimo pavyzdys:
Jūsų serverio IP adresas yra aaa.bbb.ccc.ddd Turite praleisti: aaa.bbb.ccc.250 Pavyzdžiui, 213.186.57.153 turi praleisti 213.186.57.250
Jeigu naudojatės HG serveriu, praleiskite IP aaa.bbb.ccc.249 (laikina taisyklė).
Jeigu užblokuosite visas PING užklausas, įskaitant ir OVH, mes negalėsime tikrinti jūsų serverio būsenos ir, kai atsiras problema, nebūsime apie ją informuoti. Norėdami praleisti PING užklausas iš mūsų serverių, rašykite:
Kalbant apie SSH, jeigu norite apriboti prieigą tik iki savo IP, rekomenduojame leisti prisijungti ir iš cache.ovh.net. Tokiu atveju, kilus problemoms, mes galėsime prisijungti prie serverio ir pašalinti problemą. Jeigu uždarysite 22 prievadą OVH technikams, negalėsime padėti, kadangi serveris blokuos mūsų prieigą.
SSH prieigą iš mūsų serverio autorizuosite įvedę taisyklę:
Jeigu turite RAID pildytoją, nepamirškite autorizuoti NFS jungčių. Mes galime autorizuoti viską, kas ateina iš vidinio mūsų tinklo 192.168.0.0/16:
Jeigu naudojate serverių grupės konfigūraciją, turite atidaryti 79 prievadą, kad OCO susijungtų su apkrovos skirstytuvu.
Toliau pateikiamas pilnas scenarijus, skirtas apsaugoti serverį su Iptables. Tai nėra būtina, kadangi visos jūsų serverio paslaugos ir taip pasiekiamos, tačiau vis tiek galite naudoti savąją konfigūraciją:
Šiose taisyklėse pakeiskite xx.xx.xx.xx atitinkamais IP adresais.
Kai gerai sukonfigūruosite savo ugniasienę, galėsite sukurti scenarijų, kuris bus vykdomas kiekvieno serverio įkrovimo metu. Toliau pateikiamas pavyzdys, kaip išsaugoti failą, pavadinimu "firewall", kataloge /etc/init.d/:
Suteikite 700 teises ir įvykdykite komandą "/etc/init.d/firewall start", kad paleistumėte ugniasienę ir "/etc/init.d/firewall stop", kad ją išjungtumėte. Jeigu norite, kad ugniasienė automatiškai pasileistų kiekvieno įkrovimo metu:
Prieš nustatydami scenarijaus paleidimą kiekvieno krovimo metu įsitikinkite, kad jis sukurs teisingą konfigūraciją, antraip galite visiškai užblokuoti prieigą prie savo serverio!