Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Shqyrtime
  • AV-Comparatives: Testimi i mbrojtjes së murit të zjarrit në rrjetet publike.

AV-Comparatives: Testimi i mbrojtjes së murit të zjarrit në rrjetet publike.

Laptopët janë shumë të njohur si kompjuterë shtëpiak këto ditë pasi zënë pak hapësirë ​​dhe mund të zhvendosen lehtësisht nga dhoma në dhomë. Shumë përdorues të shtëpisë përfshijnë ndarjen skedarë në mënyrë që, për shembull, të luani përmbajtje dixhitale në tuaj sistemet multimediale dhe televizorë.

Shumë nga këta përdorues marrin laptopët e tyre me vete në vende publike, si kafene, dhe lidhen me internetin duke përdorur një rrjet Wi-Fi me valë. Është e arsyeshme të pritet që kur kërkoni një mur zjarri dhe zgjidhni rrjetin si publik, kompjuteri duhet të mbrohet nga ndërhyrjet e pjesëmarrësve të tjerë në rrjetin e hapur.

Përdoruesit e biznesit që përdorin një laptop si kompjuterin e tyre të vetëm të punës mund të gjenden në të njëjtën situatë, me makineritë e tyre më shpesh të konfiguruara për t'u kontrolluar përmes Microsoft Remote Desktop.

Qëllimi i këtij testi është të përcaktojë se si muret më të njohura të palëve të treta (firewalls) - individuale dhe si pjesë e paketave Siguria e internetit– në fakt siguron kontrollin bazë të hyrjes në hyrje për përdoruesit e laptopëve që kalojnë midis shtëpisë/punës dhe rrjeteve publike.

Ju lutemi vini re se qëllimi i testit është padyshim shumë i kufizuar dhe për këtë arsye rezultat i mirë kjo nuk do të thotë që produkti ofron siguri të plotë të rrjetit.

Testimi u krye në janar 2014 me urdhër të revistës CHIP Online (Gjermani). Versionet e murit të zjarrit të përdorura ishin të disponueshme që nga 13 janari 2014.

Procedura e testimit të murit të zjarrit

PC testues lidhet me internetin nëpërmjet një rrjeti lokal me valë (WLAN), duke përdorur një lidhje rrjeti që është përcaktuar si Private në Qendrën e Ndarjes së Rrjetit dhe qasje e përbashkët Windows (WNSC).

Versioni testues i secilit produkt i disponueshëm që nga 13 janari 2014 është instaluar me cilësimet e paracaktuara dhe kompjuter testues riniset. Nëse vetë produkti i kërkon përdoruesit të përcaktojë llojin aktual të rrjetit si Privat/I besuar, ai do të zgjidhet këtë opsion. Nëse produkti ka një funksion përditësimi, atëherë ai kryhet. Verifikon që produkti është i regjistruar në Qendër mbështetje për Windows si muri i zjarrit i sistemit, dhe vetë produkti tregoi se funksionoi siç pritej. Duke përdorur një PC të dytë, lidhja në rrjetin ekzistues privat testohet si më poshtë:

  • Ping emri i hostit -4
  • Ping emri i hostit -6
  • Ping adresën IPv4
  • Ping adresën IPv6
  • Emri i hostit të ndarjes së skedarit
  • Adresa IPv4 e ndarjes së skedarëve
  • Emri i hostit të desktopit në distancë (RDP).
  • Adresa IPv4 e desktopit në distancë (RDP).
  • Adresa IPv6 e desktopit në distancë (RDP).

Të gjitha këto forma të aksesit në distancë janë verifikuar që të funksionojnë për të siguruar funksionalitetin e plotë të kompjuterit testues në rrjetin privat dhe kontrollin maksimal mbi të. Pas kësaj, kompjuteri dhe ruteri me të cilin ishte lidhur fiken dhe PC-ja fillon përsëri. Më pas lidhet me një tjetër WLAN, i cili përcaktohet si Publik në WNSC, duke përdorur kutinë e dialogut të Windows Firewall.

Nëse muri i zjarrit tregon kërkesën e tij për të përcaktuar llojin e rrjetit, ai vendoset në "Publik" ose "I pabesueshëm". Nuk bëhen ndryshime të mëtejshme në konfigurimin e produktit.

Kjo procedurë modelon sjelljen tipike të një përdoruesi laptop që lëviz nga shtëpia/zyra në një rrjet publik në një kafene, aeroport ose hotel. Pasi kompjuteri të lidhet me publikun e ri rrjeti pa tel, kryhen të njëjtat teste si për lidhjen me një rrjet privat. Këtë herë, të gjitha përpjekjet për lidhje pritet të dështojnë pasi kompjuteri duhet të mbrohet nga çdo zbulim i jashtëm dhe akses në një rrjet publik.

Cilësimet e murit të zjarrit të Windows janë thelbësore për të siguruar sigurinë e kompjuterit tuaj dhe të të dhënave të ruajtura në të kur punoni në internet dhe rrjetet lokale. Operacioni i konfigurimit të murit të zjarrit kryhet duke përdorur metoda standarde të Windows dhe nuk kërkon njohuri të veçanta kompjuterike.

Udhëzimet

  • Klikoni butonin "Start" për të hapur menunë kryesore të sistemit dhe shkoni te artikulli "Paneli i Kontrollit".
  • Zgjero lidhjen "Windows Firewall" dhe kontrollo kutinë "Aktivizo (rekomandohet)" në skedën e Përgjithshme për të nisur murin e zjarrit.
  • Zgjidhni kutinë e kontrollit Mos lejoni përjashtimet për të shtypur njoftimet e bllokimit dhe për të parandaluar krijimin e një liste përjashtimesh.
  • Shkoni te skeda Përjashtimet dhe aplikoni kutitë e kontrollit në fushat e aplikacioneve që keni ndërmend të lejoni lidhjet hyrëse.
  • Shkoni te skeda e avancuar për të çaktivizuar murin e zjarrit lidhje specifike dhe konfigurimin e parametrave shtesë të filtrimit ICMP.
  • Klikoni butonin "Default" për të rivendosur cilësimet origjinale të murit të zjarrit.
  • Përdorni krijimi automatik përjashtime të aplikacionit kur ekzekutoni një program që pret një lidhje me një port të caktuar për të hyrë në rrjet.
  • Klikoni butonin Blloko në dritaren e Windows Security Alert për të bllokuar plotësisht lidhjen e aplikacionit të zgjedhur me rrjetin.
  • Klikoni butonin "Zblloko" për të krijuar një rregull që lejon aplikacionin e zgjedhur të lidhet me rrjetin.
  • Klikoni butonin "Vonesë" për të refuzuar lidhjen në këtë moment.
  • Kthehuni te skeda Përjashtimet dhe klikoni butonin Shto program për të krijuar një rregull që lejon aplikacionin e zgjedhur të hyjë në rrjet nëse dihet paraprakisht se është e nevojshme.
  • Klikoni butonin "Shto port" për të krijuar një rregull për lidhjen nga rrjeti me një shërbim që funksionon në këtë port.
  • Klikoni butonin "Ndrysho shtrirjen" për të specifikuar gamën e adresave me të cilat mund të krijohen lidhjet aplikimi i specifikuar ose port.
  • Shkoni te skeda e avancuar dhe përdorni kutitë e kontrollit në fushat e lidhjeve të rrjetit në seksionin Cilësimet e lidhjeve të rrjetit për të aktivizuar shërbimin e murit të zjarrit për secilën prej tyre.
  • Seksioni përditësohet çdo ditë. Gjithmonë versionet më të fundit nga më të mirat programe falas Për përdorimi i përditshëm në seksionin Programet e nevojshme. Praktikisht ka gjithçka që ju nevojitet puna e përditshme. Filloni gradualisht të hiqni dorë versione pirate në favor të analogëve të lirë më të përshtatshëm dhe funksionalë. Nëse ende nuk e përdorni bisedën tonë, ju rekomandojmë shumë që të njiheni me të. Aty do të gjeni shumë miq të rinj. Përveç kësaj, kjo është mënyra më e shpejtë dhe më efektive për të kontaktuar administratorët e projektit. Seksioni i përditësimeve antivirus vazhdon të funksionojë - gjithmonë i përditësuar përditësime falas për Dr Web dhe NOD. Nuk kishit kohë për të lexuar diçka? Përmbajtja e plotë e tikerit mund të gjendet në këtë lidhje.

    Firewall falas Comodo. Testimi, përfundimet

    Comodo Firewall në veprim

    Pas instalimit dhe konfigurimit, Comodo u fsheh në tabaka dhe filloi të më shqetësonte me pyetjet e tij. Ditën e parë luajta me të gjithë murin e zjarrit dhe mënyrat e mbrojtjes proaktive dhe përfundimisht e mbylla atë në heshtje. Në sistemin tonë nuk u gjetën frena pas shfaqjes së tij. Në përgjithësi, puna me murin e zjarrit nga Comodo ishte mjaft e lehtë dhe e përshtatshme. Ndërfaqja e dritares kryesore është shumë e thjeshtë dhe informuese:


    Por më duhej të mësohesha me lundrimin nëpër murin e zjarrit dhe cilësimet e mbrojtjes proaktive - nuk është gjithmonë e mundur të gjesh shpejt artikullin e dëshiruar. Unë mendoj se kjo do të largohet me kalimin e kohës.






    Disa ditë pas Instalimet comodo Firewall vendosa ta provoj pak.

    Testi nr. 1. Testimi online

    Kur klikoni në butonin "Test", programi përpiqet të krijojë një lidhje me serverin e faqes.

    Meqenëse Comodo Firewall nuk e njeh ende këtë mjet, hera e parë që u përpoq të hynte në internet, pati një reagim të menjëhershëm nga mbrojtja proaktive dhe muri i zjarrit:

    Në të dyja rastet, klikova bllokimin dhe mora konfirmimin se testi ishte i suksesshëm:

    Pastaj e riemërova skedarin FireWallTest.exe V opera.exe dhe zëvendësoi skedarin standard Opera me të. Kështu, u përpoqa të mashtroj Comodo Firewall, i cili tashmë e njeh mirë dhe vazhdimisht këtë shfletues dhe e lëshon automatikisht në internet. Comodo reagoi ndaj nisjes së Operas "të rreme" nga Total si më poshtë:

    Pasi mori lejen time për një nisje një herë, muri i zjarrit më paralajmëroi se Opera po përpiqej të hynte në internet:

    Rezulton se çdo aplikacion për të cilin tashmë ka rregulla, nëse skedari i ekzekutueshëm zëvendësohet pa dijeninë time, nuk do të jetë në gjendje të hyjë në internet. Gjithçka duket se është në rregull, por këtu është gjëja: ngjyra e pjesës së sipërme të dritares paralajmëruese varet nga ashpërsia e situatës. Nëse Comodo vlerëson një ngjarje si kritike, ngjyra do të jetë e kuqe, nëse ngjarja është më pak e rrezikshme, do të jetë e verdhë. Në rastin tim, Comodo e konsideroi situatën e simuluar jo veçanërisht të rrezikshme dhe ndezi dritën "e verdhë". Për më tepër, në vend të formulimit "skedar i ekzekutueshëm opera.exe nuk njihet" Unë do të preferoja të shihja se "kishte një ndryshim në parametrat e skedarit opera.exe" Kështu paralajmërojnë për shembull korrës nga Kaspersky dhe Eset në situata të tilla. Për më tepër, përdoruesi sheh një dritare alarmi duke përdorur ngjyrën e kuqe, e cila menjëherë i detyron ata t'i kushtojnë vëmendje situatës. Dhe një paralajmërim nga Comodo thjesht mund të injorohet nga përdoruesi për shkak të theksit të pamjaftueshëm në ngjarjen që ndodh.

    Zëvendësimi i skedarit Opera ishte vetëm një pjesë e planit tim djallëzor. Viktima e radhës ishte Internet Explorer 6 , i cili është i integruar në sistemin operativ, dhe për këtë arsye, iexplore.exe mund të konsiderohet e plotë skedari i sistemit. Imagjinoni habinë time kur, nën heshtjen e plotë të Comodo, pashë një dritare për dështimin e testit:

    Me sa duket, ishte krijuar një rregull shtesë, vendosa dhe hyra në murin e zjarrit dhe politikat proaktive të mbrojtjes. Pasi gërmova atje për rreth 15 minuta, mora vendimin e vetëm të duhur - të riinstaloja Comodo. E thënë më shpejt se e bërë. Duke lënë mënyrat e parazgjedhura të funksionimit, unë përsërita eksperimentin me zëvendësim iexplore.exe. Kur u nis nga Totali, funksionoi mbrojtja proaktive, si në rastin e Opera:

    Këtu duhet të bëjmë një digresion të vogël lirik. Fakti është se kur një skedar i ekzekutueshëm IE zëvendësohet, sistemi rikthen atë origjinal brenda 4-8 sekondave iexplore.exe. Në këtë drejtim, rezultatet e testit tim vareshin nga fakti nëse skedari i falsifikuar arriti të arrinte në internet apo jo.

    Në rastin kur arrij të kryej të gjitha manipulimet përpara se të rivendos explore.exe, ndodh sa vijon. Pasi kam marrë lejen time për një lëshim një herë explore.exe, Total lëshon programin FireWallTest, shtypni "Test", mbrojtja proaktive Defens+ lëshon një paralajmërim:

    Nëse e lejojmë (si eksperiment), muri i zjarrit funksionon:

    Ne arrijmë të klikojmë "Blloko" - testi ka kaluar, shërbimi nuk kalon në internet. Por nëse iexplore.exe restauruar para se të shtypni butonin e bllokimit - asgjë nuk varet nga zgjedhja juaj - programi automatikisht fiton akses në internet në momentin që skedari origjinal është restauruar.

    E njëjta gjë vlen edhe për punën e mbrojtjes proaktive: nëse nuk keni pasur kohë të komandoni bllokimin përpara rikuperimit explore.exe- programi automatikisht fiton akses në internet.

    Pasi luajta mjaftueshëm me IE-në e rreme, m'u kujtua dështimi i parë i testit, kur Comodo heshti dhe lëshoi ​​skedarin "të gabuar" në internet. Pas riinstalimit të Comodo, vendosa Defense+ dhe murin e zjarrit në modalitetin e trajnimit dhe nisa IE. Pas kësaj, ktheva mënyrat e paracaktuara dhe përsërita testin. Comodo dështoi përsëri në heshtje...

    Testi nr. 3. Duel

    I impresionuar nga rezultatet testi i mëparshëm, po kërkoja mënyra shtesë për të testuar Comodo dhe më në fund gjeta programin AWFT.

    Ky program emulon sjelljen e Trojans dhe përmban një seri prej gjashtë testesh që demonstrojnë metoda të ndryshme të aksesit të paautorizuar në rrjet, duke anashkaluar mbrojtjen e murit të zjarrit. Midis këtyre testeve ka mënyra të vjetra për të mashtruar muret e zjarrit dhe teknika më moderne. Për çdo test të kaluar me sukses, muri i zjarrit i jepet një numër i caktuar pikësh. Nëse testi nuk kalon, pikët do t'i jepen AWFT. Numri maksimal i pikëve është dhjetë.

    Shërbimi është shareware, i kufizuar në 10 lëshime. Në krye të dritares së programit ka butona që nisin testet përkatëse; në fund është vendi ku do të depërtojë AWFT dhe rezultati i duelit midis murit të zjarrit dhe programit. Butoni Reset Points përdoret për të rivendosur pikat e grumbulluara.


    Për çdo rast, vendosa të ndryshoj adresën e faqes në adresën time.

    Testimi u krye me Comodo Firewall dhe Defence+ të aktivizuara, Opera në punë dhe monitor Avira të fikur.

    Testi i parë përdor teknikën e ngarkimit bcc shfletuesi dhe korrigjimi i kujtesës përpara se ta nisni atë.

    Kur klikova butonin e testimit, doli një dritare me një gabim:

    Pas mbylljes së kësaj dritareje, Comodo iu përgjigj testit me një dritare kërkese; kur klikoni butonin "Blloko", AWFT, pasi u mendua pak, i dha pikën e parë firewall-it.

    Sipas zhvilluesve të programit, testi nr. 2 është një mashtrim i vjetër dhe i njohur. Comodo përgjigjet përsëri me një dritare kërkese dhe përsëri shënon një pikë.

    Testi #3 përdor gjithashtu një truk të vjetër. Comodo thjesht e bllokon atë në heshtje, me sa duket, truku është vërtet i njohur.

    Testi nr. 4 është i ngjashëm me testin e parë me lëshimin e një kopjeje të fshehur të shfletuesit dhe rregullimin e kujtesës përpara se ta lëshoni atë. Firewall-i nuk dha asnjë paralajmërim, por pas një pauze të shkurtër fitoi një pikë tjetër.

    Gjatë testit të pestë dhe të gjashtë, duhet të kaloni në shfletues dhe të shfletoni pak (sapo rifreskova faqen e ngarkuar në shfletues).

    Në testin nr. 5, programi kryen një kërkim heuristik për atë që është instaluar në kompjuter (ose rrjet). software, duke pasur akses në internet nëpërmjet portit 80, më pas lëshon një kopje të programit të lejuar dhe, pak para nisjes, rregullon memorien e zënë nga ky program (d.m.th., AWFT gjithashtu lëshohet vetë në kujtesën e programit të lejuar). Comodo e përfundoi testin në heshtje dhe mori 3 pikë për të.

    Testi nr. 6 është i ngjashëm me testin e pestë të mëparshëm. E njëjta teknikë përdoret me një kërkim heuristik për softuerin e instaluar që ka të drejtën të dalë përmes portit 80. Vetëm metoda e hakimit tani është ndryshuar - përdoret një kërkesë e përdoruesit. Në të njëjtën kohë, AWFT po përpiqet të bashkëngjisë një shirit të fshehur të majtë të veglave në shfletues. Kur hapa Opera, doli dritarja e mëposhtme:


    Në momentin që konfirmova këtë kërkesë të përdoruesit, Comodo lëshoi ​​kërkesën e saj, shërbimi u bllokua përsëri dhe muri i zjarrit mori 3 pikë në kreditimin e tij.

    Rezultati i duelit është 10:0 në favor të Comodo. Duke përsëritur testet me Internet Explorer të hapur, mora të njëjtat rezultate.


    konkluzioni

    Megjithë një shije të keqe në shpirtin tim të mbetur pas testimit të murit të zjarrit, unë ende rekomandoj Internet Comodo Siguria për përdorim shtëpiak, por vetëm si një mur zjarri. Dhe mos dëgjoni ata djem të zgjuar që këshillojnë të fikni mbrojtjen proaktive, në asnjë rrethanë! Vetëm me përdorimin e Defence+, ky mur mbrojtës siguron me të vërtetë sigurinë e kompjuterit tuaj. Por ajo që në të vërtetë nuk duhet të përdorni është antivirusi i Comodo. Jo vetëm që kalon shumë pak, por do të keni probleme me përditësimin e tij - bazat e të dhënave të tij janë shumë të rënda. Për më tepër, kjo ndikon ndjeshëm në performancën e sistemit. Comodo Firewall dhe Avira Antivir Personal funksionuan mirë për mua.

    Nuk gjeta asnjë frenim ose defekt në sistem ndërsa muri i zjarrit ishte në punë. Mendimet e mia për rezultatet e testimit do t'i mbaj për vete tani për tani; do të doja të dëgjoja komentet tuaja.

    Ndërsa shkruaja pjesën e fundit të këtij artikulli, hasa në rezultatet e testimit të fundit të murit të zjarrit nga laboratori Matousec. Comodo Internet Security ishte i vetmi mur zjarri me një rezultat 100% (shih forumin e murit të zjarrit). Epo, unë bëra zgjedhjen time... Dhe ju?

    avantazhet (e dukshme):
    shpërndarje falas,
    disponueshmëria e bazës së të dhënave të programit të vet;
    disponueshmëria e mbrojtjes proaktive (Mbrojtje+);
    lehtësia e instalimit dhe konfigurimi fillestar;
    dritare shumë informuese dhe e përshtatshme me një përmbledhje;

    pro (të dyshimtë):
    prania e disa mënyrave të funksionimit;

    kundër (e dukshme):
    mënyra e bezdisshme e instalimit;
    zëvendësimi i një skedari të ekzekutueshëm nuk identifikohet nga mbrojtja proaktive si një ngjarje kritike;

    kundër (të dyshimta):
    sinqerisht antivirus i pasuksesshëm.

    Ky artikull i dytë përshkruan se si të zgjidhni problemet me filtrin e paketave. Në vend që të paraqitet një tabelë e gatshme në formën e "problemit" - "zgjidhjes", jepen metoda të një qasjeje sistematike për zgjidhjen e problemeve që kanë lindur.

    Ky artikull i dytë (në një seri prej tresh) përshkruan se si të zgjidhni problemet e filtrit të paketave. Në vend që të paraqitet një tabelë e gatshme në formën e "problemit" - "zgjidhjes", jepen metoda të një qasjeje sistematike për zgjidhjen e problemeve që kanë lindur.

    Prezantimi

    Një filtër paketash zbaton një politikë filtrimi duke anashkaluar një sërë rregullash dhe, në përputhje me rrethanat, bllokon ose kalon paketat. Kapitulli shpjegon se si të verifikohet nëse politika e filtrimit po zbatohet në mënyrë korrekte dhe si të gjenden gabimet nëse nuk është.

    Në përgjithësi, në kursin e këtij kapitulli do të krahasojmë detyrën e shkrimit të një grupi rregullash filtrimi me programimin. Nëse nuk keni aftësi programimi, atëherë ky krahasim do t'ju duket mjaft i ndërlikuar. Por vetë shkrimi i rregullave nuk kërkon një diplomë në shkenca kompjuterike ose përvojë programimi, apo jo?

    Përgjigja është jo, ju ndoshta nuk keni nevojë për këtë. Gjuha e përdorur për të konfiguruar filtrin e paketës është bërë e ngjashme me gjuhët njerëzore. Për shembull:

    bllokojnë të gjitha

    kaloj të gjithë mbaj shtet

    kaloni në proto tcp në çdo port www keep state

    Në fakt, nuk keni nevojë të keni një programues afër për të kuptuar se çfarë bën ky grup ose madje, duke përdorur intuitën, të shkruani një politikë të ngjashme filtrimi. Ekziston madje një shans i madh që një grup rregullash filtrimi të krijuara në këtë ngjashmëri të kryejnë veprimet që autori i tij kishte në mendje.

    Fatkeqësisht, kompjuterët bëjnë vetëm atë që ju kërkoni të bëjnë, jo atë që dëshironi që ata të bëjnë. Më keq akoma, ata nuk do të mund të dallojnë të dëshiruarin nga aktualja, nëse ka një ndryshim të tillë. Kjo do të thotë që nëse kompjuteri nuk bën atë që dëshironi siç duhet, edhe nëse mendoni se i keni përshkruar qartë udhëzimet, është në dorën tuaj të gjeni dallimet dhe të ndryshoni udhëzimet. Dhe duke qenë se ky është një problem i zakonshëm në programim, ne mund të shikojmë se si e trajtojnë programuesit. Këtu rezulton se aftësitë dhe metodat e përdorura për të testuar dhe korrigjuar programet dhe rregullat e filtrimit janë shumë të ngjashme. E megjithatë këtu nuk keni nevojë për njohuri të ndonjë gjuhe programimi në mënyrë që të kuptoni implikimet për testimin dhe korrigjimin e gabimeve.

    Politika e mirë e filtrimit.

    Një politikë filtrimi është një specifikim jozyrtar i asaj që duam nga një mur zjarri. Përkundrazi, një grup rregullash, zbatimi i një specifikimi, është një grup udhëzime standarde, një program i ekzekutuar nga një makinë. Prandaj, për të shkruar një program, duhet të përcaktoni se çfarë duhet të bëjë.

    Pra, hapi i parë në konfigurimin e murit të zjarrit është të specifikoni joformalisht atë që dëshironi të arrini. Cilat lidhje duhet të bllokohen apo lejohen përmes?

    Një shembull do të ishte:

    Janë tre rrjete që duhet të ndahen nga njëra-tjetra me një mur zjarri. Çdo lidhje nga një rrjet në tjetrin kalon përmes një muri zjarri. Firewall ka 3 ndërfaqe, secila prej të cilave është e lidhur me rrjetin përkatës:

    $ext_if - në rrjetin e jashtëm.

    $dmz_if - DMZ me serverë.

    $lan_if - LAN me stacione pune.

    Hostët në LAN duhet të jenë të lirë për t'u lidhur me çdo host në rrjetin DMZ ose të jashtëm.

    Serverët në DMZ duhet të jenë në gjendje të komunikojnë lirshëm me hostet në rrjetin e jashtëm. Pritësit e rrjetit të jashtëm mund të lidhen vetëm me serverët e mëposhtëm në DMZ:

    Ueb serveri 10.1.1.1 porti 80

    Serveri i postës 10.2.2.2 porti 25

    Të gjitha lidhjet e tjera duhet të ndalohen (për shembull, nga makinat në rrjetin e jashtëm te makinat në LAN).

    Kjo politikë shprehet në mënyrë joformale në mënyrë që kushdo që e lexon ta kuptojë atë. Duhet të jetë aq specifik sa që lexuesi të mund të formulojë lehtësisht përgjigjet për një pyetje si 'A duhet të lejohet një lidhje nga hosti X me hostin Y të hyjë (ose dalë) në ndërfaqen Z?'. Nëse po pyesni veten nëse politika juaj nuk e plotëson këtë kërkesë, kjo është për shkak se ajo nuk është e përcaktuar mirë.

    Politikat "të paqarta" si "lejo vetëm gjithçka që është jetike" ose "sulmet e bllokuara" duhet të sqarohen, ose nuk do të mund t'i aplikoni ose verifikoni ato. Ashtu si në zhvillimin e softuerit, detyrat e formalizuara dobët rrallë çojnë në zbatime të justifikuara ose korrekte. ("Pse nuk filloni të shkruani kodin, ndërsa unë kuptoj se çfarë ka nevojë klienti").

    Një grup rregullash që zbatojnë një politikë

    Grupi i rregullave është shkruar si një skedar teksti që përmban fjali në një gjuhë zyrtare. Ashtu si kodi burimor përpunohet dhe përkthehet në udhëzimet e kodit të makinës nga përpiluesi, " teksti origjinal Grupi i rregullave përpunohet nga pfctl dhe rezultati interpretohet nga pf në kernel.

    Kur kodi burim shkel rregullat e një gjuhe formale, analizuesi raporton një gabim sintaksor dhe refuzon të përpunojë më tej skedarin. Ky gabim është një gabim në kohën e përpilimit dhe zakonisht mund të rregullohet shpejt. Kur pfctl nuk mund të analizojë skedarin tuaj të grupit të rregullave, ai printon një rresht që përmban një gabim dhe një mesazh pak a shumë informues për atë që nuk mund të analizonte. Derisa i gjithë skedari të përpunohet pa një gabim të vetëm, pfctl nuk do të ndryshojë grupin e mëparshëm të rregullave në kernel. Dhe meqenëse skedari përmban një ose më shumë gabime sintaksore, nuk do të ketë asnjë "program" që mund të ekzekutojë pf.

    Lloji i dytë i gabimit quhet "gabimet në kohën e ekzekutimit" sepse ndodh kur një program i shkruar saktë sintaksorisht përkthehet dhe ekzekutohet me sukses. Në përgjithësi, në gjuhët e programimit, kjo mund të ndodhë kur një program pjesëtohet me zero, përpiqet të hyjë në zona të pavlefshme të memories ose kur mbaron memoria. Por meqenëse grupet e rregullave ngjajnë vetëm në mënyrë të paqartë me funksionalitetin e gjuhëve programuese, shumica e këtyre gabimeve nuk mund të ndodhin gjatë zbatimit të rregullave, për shembull, rregullat nuk mund të shkaktojnë të ashtuquajturat. "Adrëzimi i sistemit", siç bëjnë programet normale. Megjithatë, rregullat mund të shkaktojnë gabime të ngjashme, në formën e bllokimit ose, anasjelltas, kalimit të paketave që nuk përputhen me politikën. Ky nganjëherë quhet një gabim logjik, një gabim që nuk hedh një përjashtim ose ndalon, por thjesht prodhon rezultate të pasakta.

    Pra, përpara se të fillojmë të kontrollojmë nëse muri i zjarrit zbaton saktë politikën tonë të sigurisë, së pari duhet të ngarkojmë me sukses grupin e rregullave.

    Gabimet e analizuesit

    Gabimet e analizuesit ndodhin kur përpiqeni të ngarkoni një listë rregullash duke përdorur pfctl, për shembull:

    # pfctl -f/etj/pf.konf

    / etj/pf.conf: 3:sintaksëgabim

    Ky mesazh tregon se ka një gabim sintaksor në rreshtin 3 të /etc/pf.conf dhe pfctl nuk mund të ngarkojë rregullat. Kompleti në kernel nuk ka ndryshuar, ai mbetet i njëjtë si përpara përpjekjes për të ngarkuar një të re.

    Ka shumë lloje të gabimeve të prodhuara nga pfctl. Për të filluar me pfctl, ju vetëm duhet t'i lexoni ato me kujdes. Ndoshta jo të gjitha pjesët e mesazhit do t'ju zbulojnë menjëherë kuptimin e tyre, por duhet t'i lexoni të gjitha, sepse... Kjo do ta bëjë më të lehtë për të kuptuar se çfarë shkoi keq më vonë. Nëse një mesazh përmban një pjesë të formularit "emri i skedarit: numri: teksti", ai i referohet rreshtit me numrin përkatës në skedarin e specifikuar.

    Hapi tjetër është të shikoni linjën e daljes duke përdorur një redaktues teksti (në vi mund të shkoni në rreshtin 3 duke shtypur 3G në modalitetin e sinjalit), ose si kjo:

    # cat -n /etc/pf.conf

    1 int_if = "fxp 0"

    2 blloqe të gjitha

    3 kalojnë në gjendjen $int_if inet të gjitha të mbajtura

    kaloj inet në $int_if të gjitha mbahen në gjendje

    Problemi mund të jetë një gabim i thjeshtë shtypi, si në këtë rast (“mbaj” në vend të “mbaj”). Pas rregullimit, provoni të ringarkoni skedarin:

    # pfctl -f/etj/pf.konf

    / etj/pf.conf: 3:sintaksëgabim

    # head -n 3 /etc/pf.conf | bisht -n 1

    kaloj inet në $int_if të gjithë mbajnë gjendjen

    Tani të gjitha fjalët kyçe janë të sakta, por pas një kontrolli më të afërt vërejmë se vendosja e fjalës kyçe "inet" përpara "on $int_if" është e gabuar. Kjo ilustron se e njëjta rresht mund të përmbajë më shumë se një gabim. Pfctl printon gabimin e parë që gjen dhe ndalon ekzekutimin. Nëse i njëjti numër i linjës është lëshuar pas rinisjes, do të thotë se ka ende gabime në të, ose ato të mëparshmet nuk janë korrigjuar saktë.

    Fjalë kyçe të vendosura në mënyrë të gabuar janë gjithashtu një gabim i zakonshëm. Kjo mund të zbulohet duke krahasuar rregullin me sintaksën e referencës BNF në fund të skedarit të ndihmës pf.conf(5), i cili përmban:

    pf-rule= veprim [("në" | "jashtë") ]

    ["log" | "log-all" ] [ "i shpejtë" ]

    [ "on" ifspec ] [ itinerari ] [ af ] [ protospec ]

    hostet [filteropt-list]

    ifspec = ([ "!" ] emri i ndërfaqes) | "(" lista e ndërfaqes ")"

    af = "inet" | "inet6"

    Çfarë do të thotë që fjala kyçe "inet" duhet të ndjekë "në $int_if"

    Le ta rregullojmë dhe të provojmë përsëri:

    # pfctl -f/etj/pf.konf

    / etj/pf.conf: 3:sintaksëgabim

    # head -n 3 /etc/pf.conf | bisht -n 1

    kalojnë në $int_if inet të gjithë mbajnë gjendjen

    Nuk ka mbetur asnjë gabim i dukshëm tani. Por ne nuk i shohim të gjitha detajet shoqëruese! Linja varet nga përkufizimi makro $inf_if. Çfarë mund të përkufizohet gabimisht?

    # pfctl -vf /etc/pf.conf

    int_if = "fxp 0"

    blloko të gjitha

    /etc/pf.conf:3: gabim sintaksor

    Pasi të korrigjoni gabimin e shtypit "fxp 0" në "fxp0", provoni përsëri:

    # pfctl -f/etj/pf.konf

    Mungesa e mesazheve tregon që skedari u shkarkua me sukses.

    Në disa raste, pfctl mund të prodhojë mesazhe gabimi që janë më specifike sesa thjesht "gabim sintaksor":

    # pfctl -f /etc/pf.conf

    /etc/pf.conf:3: porti zbatohet vetëm për tcp/udp

    /etc/pf.conf:3: rregulli i kapërcimit për shkak të gabimeve

    /etc/pf.conf:3: rregulli zgjerohet në asnjë kombinim të vlefshëm

    # head -n 3 /etc/pf.conf | bisht -n 1

    kaloj në $int_if për të port ssh mbaj gjendjen

    Rreshti i parë i mesazhit të gabimit është më informues në krahasim me pjesën tjetër. Në këtë rast, problemi është se rregulli, kur specifikon portin, nuk specifikon protokollin - tcp ose udp.

    Në raste të rralla, pfctl mund të ngatërrohet nga prania e karaktereve të pashtypshme ose hapësirave të panevojshme në një skedar; gabime të tilla nuk zbulohen lehtësisht pa përpunimi i veçantë dosje:

    # pfctl -f /etc/pf.conf

    /etc/pf.conf:2: hapësira e bardhë pas \

    /etc/pf.conf:2: gabim sintaksor

    # cat -ent /etc/pf.conf

    1 bllok të gjitha $

    2 kalojnë në gem0 nga çdo në çdo \ $

    3 ^ Mbajshtet$

    Problemi këtu është karakteri i hapësirës, ​​pas vijës së prapme, por para fundit të rreshtit të dytë, i treguar nga shenja "$" në daljen e cat -e.

    Pasi grupi i rregullave të jetë ngarkuar me sukses, do të ishte mirë të shikoni rezultatin:

    $ cat /etc/pf.conf

    bllokojnë të gjitha

    # kalim nga cilido në cilindo \

    kalojnë nga 10.1.2.3 në ndonjë

    $ pfctl -f /etc/pf.conf

    $ pfctl -sr

    bllokojrënietë gjitha

    Një "pjesë e kundërt" në fund të një linje komenti në fakt do të thotë se linja e komenteve do të vazhdojë më poshtë.

    Zgjerimi i listave të të burgosurve në mbajtëset() mund të prodhojë një rezultat që mund t'ju befasojë, dhe në të njëjtën kohë të tregojë grupin e rregullave të përpunuara nga analizuesi:

    $ cat /etc/pf.conf

    kalojnë nga (!10.1.2.3, !10.2.3.4) në ndonjë

    $ pfctl -nvf /etc/pf.conf

    kaloni internetin nga ! 10.1.2.3 për cilindo

    kaloni internetin nga ! 10.2.3.4tendonjë

    Kapja këtu është se shprehja "( !10.1.2.3, !10.2.3.4 )" nuk do të thotë "të gjitha adresat përveç 10.1.2.3 dhe 10.2.3.4", vetë shprehja e zgjeruar do të thotë të përputhet me çdo adresë të mundshme.

    Duhet të rifreskoni grupin tuaj të rregullave pasi të keni bërë ndryshime të përhershme për të siguruar që pfctl mund ta ngarkojë atë kur pajisja të rindizet. Në OpenBSD, skripti i nisjes rc në /etc/rc fillimisht ngarkon një grup të vogël rregullash të paracaktuar që bllokon të gjithë trafikun, përveç asaj që nevojitet gjatë fazës së nisjes (si p.sh. dhcp ose ntp). Nëse skripti nuk është në gjendje të ngarkojë grupin e vërtetë të rregullave nga /etc/pf.conf për shkak të gabimeve sintaksore të paraqitura përpara se makina të rindezej pa kontrolluar, atëherë grupi i parazgjedhur do të mbetet aktiv. Për fat të mirë, ky grup lejon lidhjet hyrëse ssh, kështu që problemi mund të zgjidhet nga distanca.

    Duke testuar

    Meqenëse kemi një politikë jashtëzakonisht të përcaktuar saktë dhe një grup rregullash që duhet ta zbatojnë atë, atëherë termi testim do të nënkuptojë në rastin tonë përputhshmërinë e grupit që rezulton me politikën e dhënë.

    Ekzistojnë vetëm dy mënyra që rregullat të funksionojnë gabimisht: bllokimi i lidhjeve që duhet të lejohen dhe anasjelltas, lejimi i lidhjeve që duhet të bllokohen.

    Testimi në përgjithësi nënkupton një qasje sistematike për krijimin e rregullt të llojeve të ndryshme të lidhjeve. Është e pamundur të kontrollohen të gjitha kombinimet e mundshme të burimit/destinacionit dhe porteve përkatëse në ndërfaqe, sepse muri i zjarrit teorikisht mund të përplaset me të një sasi të madhe kombinime të tilla. Sigurimi i korrektësisë fillestare të një sërë rregullash mund të sigurohet vetëm për shumë kohë raste të thjeshta. Në praktikë, zgjidhja më e mirë është krijimi i një liste të lidhjeve testuese bazuar në politikën e sigurisë, në mënyrë që të ndikohet çdo artikull i politikës. Pra, për politikën tonë të shembullit, lista e testeve do të jetë si më poshtë:

    Lidhja nga LAN në DMZ (duhet anashkaluar)

    nga LAN në rrjetin e jashtëm (duhet anashkaluar)

    nga DMZ në LAN (duhet të bllokohet)

    nga DMZ në rrjetin e jashtëm (duhet anashkaluar)

    nga rrjeti i jashtëm në DMZ në 10.1.1.1 në portin 80 (duhet anashkaluar)

    nga rrjeti i jashtëm në DMZ në 10.1.1.1 në portin 25 (duhet të bllokohet)

    nga rrjeti i jashtëm në DMZ në 10.2.2.2 në portin 80 (duhet të bllokohet)

    nga rrjeti i jashtëm në DMZ në 10.2.2.2 në portin 25 (duhet anashkaluar)

    nga rrjeti i jashtëm në LAN (duhet të bllokohet)

    Rezultati i pritur duhet të përcaktohet në këtë listë përpara se të fillojë testimi.

    Kjo mund të tingëllojë e çuditshme, por qëllimi i çdo testi është të gjejë gabime në zbatimin e një sërë rregullash të murit të zjarrit dhe jo thjesht të deklarojë mungesën e tyre. A qëllimi më i lartë procesi është ndërtimi i një grupi rregullash pa gabime, kështu që nëse mendoni se mund të ketë gabime, është më mirë t'i gjeni ato sesa t'i humbisni. Dhe nëse merrni rolin e një testuesi, duhet t'i përmbaheni një stili shkatërrues të të menduarit dhe të përpiqeni të anashkaloni kufizimet e murit të zjarrit. Dhe vetëm fakti që kufizimet nuk mund të thyhen do të jetë një konfirmim i arsyetuar se grupi i rregullave nuk përmban gabime.

    Lidhjet TCP dhe UDP mund të kontrollohen duke përdorur nc. nc mund të përdoret si klient dhe pjesa e serverit(duke përdorur opsionin -l). Dhe për kërkesat dhe përgjigjet e ICMP-së, klienti më i mirë do të ketë një ping për të kontrolluar.

    Për të kontrolluar nëse një lidhje është e bllokuar, mund të përdorni çdo mjet që do të përpiqet të krijojë lidhje me serverin.

    Duke përdorur mjetet e mbledhjes së porteve si nmap, mund të skanoni me lehtësi porta të shumta, madje edhe nëpër hoste të shumtë. Nëse rezultatet nuk duken mjaft të qarta, hidhini një sy faqes së njeriut. Për shembull, për Porta TCP skaneri kthehet 'i pafiltruar' kur nmap merr një RST nga pf. Gjithashtu, pf e instaluar në të njëjtën makinë si skaner mund të ndikojë në funksionimin e saktë të nmap.

    Mjetet më të sofistikuara të skanimit mund të përfshijnë mjete për të krijuar paketa IP të fragmentuara ose të pasakta.

    Për të kontrolluar nëse filtri lejon lidhjet e specifikuara në politikë, metoda më e mirë do të ketë një kontroll duke përdorur ato aplikacione që do të përdoren më pas nga klientët. Kështu, kontrolloni kalimin e lidhjeve http nga makina të ndryshme klientësh të serverit në internet, si dhe nga shfletues të ndryshëm dhe marrjen e mostrave përmbajtje të ndryshme do të ishte më mirë sesa thjesht konfirmimi i krijimit të një sesioni TCP në nc që funksionon si një backend. Faktorë të ndryshëm, si sistemi operativ pritës, mund të shkaktojnë gjithashtu gabime - probleme me shkallëzimin e dritares TCP ose përgjigjet TCP SACK midis sistemeve të caktuara operative.

    Kur kalon pikën tjetër të provës, rezultatet e saj mund të mos jenë gjithmonë të njëjta. Lidhja mund të ndërpritet gjatë procesit të krijimit të lidhjes nëse muri i zjarrit kthen RST. Vendosja e lidhjes thjesht mund të dështojë për shkak të një afati kohor. Lidhja mund të vendoset plotësisht dhe të funksionojë, por pas një kohe mund të ngrijë ose prishet. Lidhja mund të qëndrojë, por xhiroja ose vonesa mund të jenë të ndryshme nga sa pritej, më e lartë ose më e ulët (në rast se përdorni AltQ për të kufizuar gjerësinë e brezit).

    Sipas rezultateve të pritura, përveç kapërcimit/bllokimit të lidhjes, mund të vini re gjithashtu nëse paketat regjistrohen, si përkthehen, drejtohen dhe nëse numëruesit e nevojshëm janë rritur, nëse është e nevojshme. Nëse këto aspekte janë të rëndësishme për ju, atëherë ato gjithashtu duhet të përfshihen në metodologjinë e testimit.

    Politika juaj mund të përfshijë kërkesa që lidhen me performancën, përgjigjen ndaj mbingarkesave dhe tolerancën e gabimeve. Dhe mund të kërkojnë teste të veçanta. Nëse po krijoni një sistem tolerant ndaj gabimeve duke përdorur CARP, ndoshta do të dëshironi të dini se çfarë ndodh me lloje të ndryshme dështimesh.

    Kur vëzhgoni një rezultat të ndryshëm nga ai që prisnit, mbani një shënim hap pas hapi të hapave tuaj gjatë testit, çfarë prisnit, pse e prisnit atë, rezultatin që morët dhe se si rezultati ndryshonte nga pritshmëritë tuaja. Përsëriteni testin për të parë nëse situata është e njëjtë apo e ndryshme herë pas here. Provoni të ndryshoni parametrat e hyrjes së testit (adresa e burimit/destinacionit ose portet).

    Që nga momenti kur keni një problem të riprodhueshëm, duhet të filloni korrigjimin për të kuptuar pse gjërat nuk po funksionojnë ashtu siç prisnit dhe si t'i "rregulloni" gjërat. Me këtë konfigurim, duhet të ndryshoni grupin e rregullave dhe të përsërisni të gjitha testet, duke përfshirë ato që nuk hodhën gabime, sepse duke ndryshuar rregullat mund të ndikoni pa dashje në funksionimin e pjesëve të vlefshme të grupit të rregullave.

    I njëjti parim vlen edhe për ndryshimet e tjera të bëra në komplet. Kjo procedurë zyrtare e rishikimit do të ndihmojë që procesi të jetë më pak i prirur për të paraqitur gabime. Mund të mos jetë e nevojshme të përsëritet e gjithë procedura për ndryshime të vogla, por shuma e disa ndryshimeve të vogla mund të ndikojë në rezultatin e përgjithshëm të përpunimit të grupit. Ju mund të përdorni një sistem të kontrollit të versionit si cvs për të punuar me skedarin tuaj të konfigurimit sepse... kjo do të ndihmojë në hetimin e ndryshimeve që çuan në gabim. Nëse e dini se gabimi nuk ka ndodhur një javë më parë, por tani ndodh, shikoni të gjitha ndryshimet e bëra për të javen e shkuar do t'ju ndihmojë të vini re problemin, ose të paktën të ktheheni në pikën ku ai nuk ekziston.

    Grupet e rregullave jo të parëndësishme mund të mendohen si programe; ato rrallë janë të përsosura në versionin e tyre të parë dhe duhet kohë për të qenë të sigurt se nuk kanë gabime. Megjithatë, ndryshe nga programe të rregullta, të cilat nuk konsiderohen kurrë pa gabime nga shumica e programuesve, grupet e rregullave janë ende mjaft të thjeshta për të qenë afër këtij përkufizimi.

    Korrigjimi

    Termi korrigjimi zakonisht nënkupton gjetjen dhe eliminimin e gabimeve të programimit në programet kompjuterike. Ose, në kontekstin e grupeve të rregullave të murit të zjarrit, termi do t'i referohej procesit të gjetjes së arsyes pse grupi nuk kthen rezultatin e dëshiruar. Ka pak lloje gabimesh që mund të shfaqen në rregulla, megjithatë, metodat për gjetjen e tyre janë të ngjashme me programimin.

    Para se të filloni të kërkoni shkakun e problemit, duhet të kuptoni qartë natyrën e problemit. Nëse e vëreni vetë gabimin gjatë testimit, është shumë e thjeshtë. Por nëse një person tjetër ju raporton një defekt, krijimi i një qëllimi të qartë nga një raport i pasaktë i gabimeve mund të jetë sfidues. Vendi më i mirë për të filluar është të riprodhoni vetë gabimin.

    Problemet e rrjetit mund të mos shkaktohen gjithmonë nga një filtër paketash. Para se të përqendroni vëmendjen tuaj në korrigjimin e konfigurimit pf, duhet të siguroheni që problemi është shkaktuar nga filtri i paketës. Kjo është e lehtë për t'u bërë dhe gjithashtu do të kursejë kohë për të kërkuar problemin diku tjetër. Thjesht fikni pf me pfctl -d dhe kontrolloni nëse problemi shfaqet përsëri. Nëse po, aktivizoni pf me pfctl -e dhe shikoni se çfarë ndodh. Kjo metodë do të dështojë në disa raste, për shembull nëse pf nuk e bën përkthimin si duhet adresat e rrjetit(NAT), atëherë fikja e pf padyshim që nuk do të shpëtojë nga gabimi. Por në rastet kur kjo është e mundur, përpiquni të siguroheni që është filtri i paketës ai që është fajtor.

    Prandaj, nëse problemi është në filtrin e paketës, gjëja e parë që duhet të bëni është të siguroheni që pf funksionon vërtet dhe seti i kërkuar i rregullave është ngarkuar me sukses:

    # pfctl -si | Statusi grep

    Statusi: Aktivizuar për 4 ditë 13:47:32 Korrigjimi: Urgjent

    # pfctl -sr

    kaloj shpejt ne lo0 te gjitha

    kaloni shpejt në enc0 të gjitha

    Korrigjimi sipas protokolleve

    Hapi tjetër i korrigjimit është përcaktimi i problemit në lidhje specifike të rrjetit. Nëse keni mesazhin: "Mesazhet e çastit në aplikacionin X nuk po funksionojnë", duhet të zbuloni se cilat lidhje rrjeti po përdoren. Përfundimi mund të jetë diçka si "hosti A nuk mund të krijojë një lidhje me hostin B në portin C". Ndonjëherë kjo detyrë është më e vështira, por nëse keni informacione për lidhjet e nevojshme dhe e dini që muri i zjarrit nuk do t'i lejojë ato, ju vetëm duhet të ndryshoni rregullat për të zgjidhur këtë problem.

    Ka disa mënyra për të zbuluar se çfarë protokolle ose lidhje përdor një aplikacion. Tcpdump mund të shfaqë paketat që vijnë ose largohen sikur të ishin të vërteta ndërfaqja e rrjetit, dhe ato virtuale, si pflog dhe pfsync. Ju mund të përcaktoni një shprehje filtri për të specifikuar se cilat paketa të shfaqen dhe të eliminoni zhurmën e jashtme të rrjetit. Provoni të instaloni lidhje rrjeti në aplikacionin e dëshiruar dhe shikoni paketat që dërgohen. Për shembull:

    # tcpdump -nvvvpi fxp0 tcp dhe jo port ssh dhe jo port smtp

    23:55:59.072513 10.1.2.3.65123 > 10.2.3.4.6667: S

    4093655771:4093655771(0) fiton 5840

    1039287798 0,nop,wscale 0> (DF)

    Kjo është një paketë TCP SYN, paketa e parë e një shtrëngimi duarsh TCP.

    Dërguesi është porti 10.1.2.3 65123 (duket si një port i rastësishëm i paprivilegjuar) dhe marrësi është porti 10.2.3.4 6667. Një shpjegim i detajuar i formatit të daljes tcpdump mund të gjendet në faqet manuale të programit. Tcpdump është mjeti më i rëndësishëm për korrigjimin e problemeve të lidhura me pf dhe është shumë e rëndësishme të njiheni me të.

    Një metodë tjetër është përdorimi i veçorisë së regjistrimit të pf. Duke supozuar se përdorni opsionin 'log' në të gjitha rregullat me 'block', atëherë të gjitha paketat e bllokuara nga pf do të pasqyrohen në regjistër. Është e mundur të hiqet opsioni 'log' nga rregullat që kanë të bëjnë me protokollet e njohura, p.sh. Vetëm ato paketa që shkojnë në porte të panjohura do të regjistrohen në regjistër. Provoni të përdorni aplikacionin që nuk mund të lidhet dhe shikoni pflog:

    # ifconfig pflog0 lart

    # tcpdump -netti pflog0

    26 nëntor 00:02:26.723219 rregulli 41/0 (ndeshje): bllokohu në cue0:

    195.234.187.87.34482 > 62.65.145.30.6667: S 3537828346: 3537828346 (0) fitim

    16384 (DF)

    Nëse jeni duke përdorur pflog, një demon që vazhdimisht dëgjon pflog0 dhe ruan informacionin e marrë në /var/log/pflog, mund ta shihni informacionin e ruajtur si kjo:

    # tcpdump -nettr/var/log/pflog

    Kur nxirrni paketat e ruajtura pf, mund të përdorni shprehje filtruese shtesë, për shembull, shikoni paketat që ishin bllokuar në hyrjen në ndërfaqen wi0:

    # tcpdump -netttr /var/log/pflog blloku hyrës dhe i veprimit dhe në wi0

    Disa protokolle, si FTP, nuk janë aq të lehta për t'u gjurmuar sepse nuk përdorin numra portash fiks ose nuk përdorin lidhje të shumta bashkëekzistuese. Mund të mos jetë e mundur t'i kalosh ato përmes murit të zjarrit pa hapur një gamë të gjerë portash. Për protokollet individuale, ka zgjidhje të ngjashme me ftp-proxy.

    Rregullat e korrigjimit

    Nëse grupi juaj i rregullave bllokon një protokoll të caktuar sepse nuk e keni hapur portin e dëshiruar, Kjo problem më i madh Faza e projektimit dhe jo një gabim në rregulla. Por, çka nëse shihni se një lidhje për të cilën keni një rregull që e lejon është e bllokuar?

    Për shembull, grupi juaj përmban rregullin

    bllokoni në return-rst në $ext_if proto tcp nga ndonjë në portin $ext_if ssh

    Por kur përpiqeni të lidheni me portin TCP 22, lidhja pranohet! Duket sikur muri i zjarrit po injoron rregullin tuaj. Ashtu si bashkimi i një enigme, ekziston një shpjegim i thjeshtë logjik dhe zakonisht i parëndësishëm për këto gjëra herët e para që i hasni.

    Së pari, duhet të kontrolloni të gjithë ata hapa të përmendur më parë. Për shembull, le të supozojmë se muri i zjarrit po funksionon dhe përmban rregullin e dhënë më sipër. Nuk ka gjasa që shqetësimet tona të mëparshme të jenë të vërteta, por është e lehtë të kontrollosh:

    # pfctl -si | Statusi grep

    Statusi: Aktivizuar për 4 ditë 14:03:13 Korrigjimi: Urgjent

    # pfctl -gsr | grep "port=ssh"

    @14 blloko kthimin-rst në në kue0 inet proto tcp nga cilido në portin 62.65.145.30 = ssh

    Gjëja tjetër që kemi është: Lidhjet TCP pranohen në portin 22 në kue0. Ju mund të mendoni se kjo tashmë është e qartë, por ia vlen të kontrollohet. Ekzekutoni tcpdump:

    # tcpdump -nvvvi kue0 tcp dhe porta 22 dhe dst 62.65.145.30

    Tani provoni përsëri lidhjen SSH. Ju duhet të shihni paketat nga lidhja juaj në daljen tcpdump. Ju mund të mos i shihni ato, dhe kjo mund të jetë sepse lidhja nuk po kalon në të vërtetë përmes kue0, por po kalon përmes një ndërfaqeje tjetër, gjë që shpjegon pse rregulli nuk aktivizohet. Ose mund të jeni duke u lidhur me një adresë tjetër. Me pak fjalë, nëse nuk i shihni paketat ssh, atëherë as pf nuk do t'i shohë ato dhe mund të mos jetë në gjendje t'i bllokojë ato duke përdorur rregullin e dhënë në problemin tonë.

    Por nëse shihni paketa duke përdorur tcpdump, pf do t'i "shohë" edhe ato dhe do t'i filtrojë. Supozimi tjetër është se rregulli i bllokimit jo vetëm që duhet të jetë i pranishëm në grup (të cilin e kemi vendosur tashmë), por duhet të jetë rregulli i fundit i përputhjes për paketat e nevojshme. Nëse ky nuk është rregulli përfundimtar, atëherë padyshim që vendimi për mbajtjen e paketave nuk merret sipas kësaj.

    Në cilat raste një rregull mund të mos jetë rregulli i fundit i përputhjes? Ka tre arsye të mundshme:

    A) rregulli nuk funksionon, pasi shikimi i rregullave nuk arrin atë që na nevojitet.

    Rregulli i mëparshëm aktual aktivizohet gjithashtu dhe bën që ekzekutimi të përfundojë me opsionin 'i shpejtë';

    B) rregulli përpunohet, por rregulli nuk funksionon për shkak të mospërputhjes së kritereve individuale.

    C) rregulli përpunohet, rregulli aktivizohet, por përpunimi vazhdon dhe rregullat pasuese aktivizohen gjithashtu për paketën.

    Për të refuzuar këto tre raste, mundeni, duke parë grupin e ngarkuar të rregullave, të imagjinoni mendërisht të përpunoni një paketë hipotetike TCP që arrin në ndërfaqen kue0 dhe portin 22. Zgjidhni bllokun që do të korrigjohet. Filloni të zvarriteni me rregullin e parë. A përputhet? Nëse po, shënojeni. A ka një opsion 'të shpejtë'? Nëse po, atëherë ne ndalojmë së shkuari. Nëse jo, vazhdoni me rregullin e mëposhtëm. Përsëriteni kontrollin derisa të gjendet një përputhje me opsionin 'i shpejtë' ose të arrihet fundi i grupit të rregullave. Cili rregull përputhej i fundit? Nëse nuk është rregulli numër 14, ju keni gjetur shpjegimin për problemin.

    Anashkalimi i rregullave me dorë mund të duket argëtues, megjithatë, me përvojë të mjaftueshme, mund të bëhet mjaft shpejt dhe me një shkallë të lartë besueshmërie. Nëse grupi është mjaft i madh, mund ta zvogëloni përkohësisht. Mbani një kopje të listës aktuale të rregullave dhe fshini ato shënime që nuk mendoni se do të ndikojnë në rezultatin. Shkarkoni këtë grup dhe provoni përsëri. Nëse lidhja tani është e bllokuar, atëherë rregullat që dukeshin të palidhura me paketat që po kërkoni janë përgjegjëse për rastet A ose B. Shtoni rregullat një nga një, duke përsëritur testin derisa të gjeni atë që ju nevojitet. Nëse lidhja kalon ende pas heqjes së rregullave që nuk e prekin atë, përsëritni kalimin mendor të grupit të reduktuar.

    Një metodë tjetër është përdorimi i aftësisë së regjistrimit të pf-së për të identifikuar rastet A ose C. Shtoni 'log' në të gjitha rregullat me 'kaloni shpejt' përpara rregullit të 14-të. Shtoni 'log' në të gjitha rregullat me 'kalim' pas rregullit të 14-të. Drejtoni tcpdump për ndërfaqen pflog0 dhe krijoni një lidhje ssh. Do të shihni se cilat rregulla përveç datës 14 janë aktivizuar të fundit në paketat tuaja. Nëse nuk ka asgjë në regjistër, atëherë ndodh rasti B.

    Ndjekja e lidhjeve përmes një muri zjarri

    Kur një lidhje kalon përmes një muri zjarri, paketat arrijnë në një ndërfaqe dhe transmetohen përmes së dytës. Përgjigjet vijnë në ndërfaqen e dytë dhe shkojnë te e para. Kështu, lidhjet mund të dështojnë në secilin prej këtyre katër rasteve.

    Së pari, duhet të kuptoni se cili nga katër rastet është problemi. Nëse përpiqeni të krijoni një lidhje, duhet të shihni një paketë TCP SYN në ndërfaqen e parë duke përdorur tcpdump. Ju gjithashtu duhet të shihni të njëjtën dalje të paketës TCP SYN nga ndërfaqja e dytë. Nëse nuk e shihni, atëherë konkludojmë se pf po bllokon paketa hyrëse në ndërfaqen e parë, ose në dalje në të dytën.

    Nëse dërgimi SYN nuk është i bllokuar, duhet të shihni SYN+ACK që vjen në ndërfaqen e dytë dhe largohet nga e para. Nëse jo, pf bllokon SYN+ACK në një ndërfaqe.

    Shtoni opsionin 'log' tek rregullat që duhet të lejojnë SYN dhe SYN+ACK në të dy ndërfaqet, si dhe rregullave që duhet t'i bllokojnë ato. Riprovoni lidhjen dhe kontrolloni pflog. Duhet të sqarojë se në çfarë rasti ndodh bllokimi dhe me çfarë rregulli.

    Rregullimi i gjendjeve të lidhjes

    Arsyeja më e zakonshme për bllokimin e paketave pf është se ekziston një rregull bllokimi i tepërt në grup. Rregulli përkatës i përputhjes së fundit mund të gjendet duke shtuar opsionin 'log' për të gjitha rregullat që mund të ndikojnë dhe duke dëgjuar ndërfaqen pflog.

    Në një numër më të vogël rastesh, ndodh që pf hedh në heshtje paketat bazuar në jo-rregulla, dhe këtu shtimi i 'log' në të gjitha rregullat nuk do të bëjë që paketat e hedhura të përfundojnë në pflog. Shpesh një paketë përputhet pothuajse, por jo plotësisht, me një hyrje shtetërore.

    Mos harroni se për çdo paketë që përpunon, filtri i paketave skanon tabelën e gjendjes. Nëse gjendet një hyrje që përputhet, paketa lejohet menjëherë pa bërë që grupi i rregullave të përpunohet vetë.

    Një hyrje në tabelën e gjendjes përmban informacion specifik për një lidhje të vetme.

    Çdo hyrje ka një çelës unik. Ky çelës përbëhet nga disa vlera që kufizojnë jetëgjatësinë e lidhjes në konstante gjatë gjithë kohës. Këtu ata janë:

    • Lloji i adresës (Ipv4 ose Ipv6)
    • Adresa e burimit
    • Adresa e marrësit
    • Protokolli (TCP UDP)
    • Porta e burimit
    • Porta e marrësit

    Ky çelës përdoret për të gjitha paketat që i përkasin të njëjtës lidhje dhe paketat lidhje të ndryshme do të ketë gjithmonë çelësa të ndryshëm.

    Kur krijohet një hyrje në tabelën e gjendjes me opsionin 'mbaj gjendjen' nga një rregull, hyrja e lidhjes ruhet duke përdorur çelësin të kësaj lidhjeje. Një kufizim i rëndësishëm për tabelën e gjendjes është se të gjithë çelësat duhet të jenë unikë. Ato. nuk mund të ketë dy regjistrime me çelësa të njëjtë.

    Mund të mos jetë menjëherë e qartë se të dy hostet e njëjtë nuk mund të krijojnë lidhje të shumta bashkëekzistuese duke përdorur të njëjtat adresa, protokolle dhe porte, por është aty pronë themelore si TCP ashtu edhe UDP. Në fakt, pirgjet TCP/IP mund të lidhin vetëm paketat individuale me bazat e tyre duke kryer zgjedhje të bazuara në adresa dhe porta.

    Edhe nëse lidhja mbyllet, të njëjtat palë adresash dhe portash nuk mund të ripërdoren menjëherë. Pajisjet e rrjetit Paketat e ritransmetuara mund të dorëzohen më vonë, dhe nëse rafti TCP/IP i marrësit i gabon ato me paketa nga një lidhje e krijuar rishtazi, kjo do të ndërhyjë ose madje do ta ndërpresë lidhjen e re. Për këtë arsye, të dy hostet duhet të presin një kohë të caktuar, të quajtur 2MSL ("dyfishi i jetëgjatësisë maksimale të segmentit"), përpara se të jenë në gjendje të përdorin të njëjtat adresa dhe porte përsëri për një lidhje të re.

    Ju mund ta vëzhgoni këtë veçori duke krijuar manualisht lidhje të shumta me të njëjtin host. Për shembull, të kesh një server në internet që funksionon në 10.1.1.1 dhe portin 80, dhe të lidhesh dy herë me 10.2.2.2. duke përdorur nc:

    $ nc -v 10.1.1.1 80 & nc -v 10.1.1.1 80

    Lidhja me portën 10.1.1.1 80 pati sukses!

    Ndërsa lidhjet janë të hapura, mund të përdorni netstat në klientin ose serverin për të shfaqur informacione rreth këtyre lidhjeve:

    $ netstat -n | grep 10.1.1.1.80

    tcp 0 0 10.2.2.6.28054 10.1.1.1.80 E THEMELUAR

    tcp 0 0 10.2.2.6.43204 10.1.1.1.80 E THEMELUAR

    Siç mund ta shihni, klienti ka zgjedhur dy porte burimi të ndryshme (të rastësishme), kështu që kjo nuk shkel kërkesën kryesore të unike.

    Mund t'i thuash nc-së të përdorë një port specifik burimi me opsionin -p:

    $ nc -v -p 31234 10.1.1.1 80 & nc -v -p 31234 10.1.1.1 80

    Lidhja me portën 10.1.1.1 80 pati sukses!

    nc: lidhja dështoi: Adresa tashmë është në përdorim

    Stacki TCP/IP i klientit parandaloi komprometimin e veçantisë së çelësit. Disa implementime të rralla dhe me gabime të stackave TCP/IP nuk e ndoqën këtë rregull, dhe për këtë arsye, siç do të shohim së shpejti, pf do të bllokojë lidhjet e tyre nëse shkelet veçantia e çelësave.

    Le të kthehemi aty ku pf kërkon tabelën e gjendjes kur paketa fillon të filtrohet. Kërkesa përbëhet nga dy hapa. Pyetja e parë bëhet për të gjetur një hyrje në hyrjen e tabelës me një çelës që korrespondon me protokollin, adresat dhe portin e paketës. Kërkimi do të kryhet për pako që shkojnë në çdo drejtim. Le të supozojmë se paketa e mëposhtme krijoi një hyrje në tabelën e gjendjes:

    hyrëseTCPnga 10.2.2.2: 28054deri në 10.1.1.1:80

    Një pyetje tabele do të gjejë hyrjet e mëposhtme në tabelën e gjendjes:

    TCP hyrëse nga 10.2.2.2:28054 në 10.1.1.1:80

    TCP dalëse nga 10.1.1.1:80 në 10.2.2.2: 28054

    Një hyrje në tabelë përfshin informacion në lidhje me drejtimin (hyrës ose dalës) të paketës së parë që krijoi hyrjen. Për shembull, hyrjet e mëposhtme nuk do të prodhojnë një përputhje:

    dalëseTCPnga 10.2.2.2: 28054deri në 10.1.1.1:80

    hyrëseTCPnga ora 10.1.1.1:80në 10.2.2.2: 28054

    Arsyeja e këtyre kufizimeve nuk është e qartë, por është mjaft e thjeshtë. Imagjinoni që keni vetëm një ndërfaqe me adresën 10.1.1.1, ku serveri i uebit po dëgjon në portin 80. Kur klienti 10.2.2.2 lidhet duke përdorur një port dalës të zgjedhur rastësisht 28054, paketa e parë e lidhjes arrin në ndërfaqen tuaj dhe të gjitha përgjigjet tuaja dalëse duhet të shkojë nga 10.1.1.1:80 në 10.2.2.2:28054. Ju nuk do të lejoni paketa dalëse nga 10.2.2.2:28054 deri në 10.1.1.1:80, pasi paketa të tilla janë të pakuptimta.

    Nëse muri juaj i zjarrit është i konfiguruar për dy ndërfaqe, atëherë duke parë paketat që kalojnë përmes tij, do të shihni se çdo paketë që arrin në ndërfaqen e parë del jashtë dhe përmes së dytës. Nëse krijoni një rekord të gjendjes në të cilën paketa fillestare arrin në ndërfaqen e parë, atëherë ai rekord do të parandalojë që e njëjta paketë të largohet nga ndërfaqja e dytë sepse është drejtuar keq.

    Kur një përpjekje për të gjetur një paketë midis hyrjeve në tabelën e gjendjes dështon, lista e rregullave të filtrit kalon. Në mënyrë specifike duhet të lejoni që paketa të kalojë përmes ndërfaqes së dytë me një rregull të veçantë. Ju ndoshta përdorni 'keep state' në këtë rregull në mënyrë që hyrja e dytë në tabelën e gjendjes të mbulojë të gjithë lidhjen dhe në ndërfaqen e dytë.

    Ju mund të pyesni veten se si është e mundur të krijohet një rekord i dytë në një tabelë nëse thjesht shpjeguam se regjistrimet duhet të kenë çelësa unikë. Shpjegimi këtu është se rekordi përmban gjithashtu informacion për drejtimin e lidhjes dhe kombinimi i kësaj me të dhënat e tjera duhet të jetë unik.

    Tani do të jemi gjithashtu në gjendje të shpjegojmë ndryshimin midis një lidhjeje falas dhe një lidhjeje të lidhur me ndërfaqe. Si parazgjedhje, pf krijon hyrje që nuk janë të lidhura me asnjë ndërfaqe. Prandaj, nëse lejoni lidhjet në një ndërfaqe, paketat që lidhen me lidhjen dhe që përputhen me hyrjen në tabelë (përfshirë informacionin rreth drejtimit të paketës!) kalojnë nëpër çdo ndërfaqe. NË instalime të thjeshta me rrugëzim statik këto janë më shumë llogaritje teorike. Në parim, ju nuk duhet të shihni paketat nga e njëjta lidhje që vijnë në ndërfaqe të shumta dhe paketat e përgjigjes që largohen gjithashtu në ndërfaqe të shumta. Megjithatë, me rrugë dinamike kjo është e mundur. Ju mund t'i lidhni të dhënat e gjendjes në një ndërfaqe specifike duke përdorur instalimi global'cakto politikën e shtetit nëse është i kufizuar' ose opsioni sipas rregullit 'mbaj gjendjen (nëse-lidhur)'. Në këtë mënyrë do të jeni të sigurt që paketat do të përputhen vetëm me rekorde nga ndërfaqja që krijoi këto regjistrime.

    Nëse përdoren ndërfaqe tuneli, atëherë e njëjta lidhje kalon nëpër murin e zjarrit disa herë. Për shembull, paketa e parë e një lidhjeje mund të kalojë fillimisht përmes ndërfaqes A, pastaj përmes B, pastaj C dhe në fund të na lërë përmes ndërfaqes D. Zakonisht paketat do të kapsulohen në ndërfaqet A dhe D dhe dekapsulohen në B dhe C, kështu që pf sheh pako të protokolleve të ndryshme dhe mund të krijoni 4 hyrje të ndryshme në tabelën e shtetit. Pa enkapsulim, paketa do të jetë e pandryshuar në të katër ndërfaqet dhe nuk do të mund të përdorni disa veçori, të tilla si përkthimi i adresave ose modulimi i numrit të sekuencës TCP, sepse kjo do të çojë në shfaqjen e çelësave konfliktualë në tabelën e gjendjes. Derisa të keni një instalim të plotë që përfshin ndërfaqe me gabime tunelimi dhe korrigjimi si "pf: futja e src_tree dështoi", nuk do të mund ta konsideroni instalimin tuaj mjaftueshëm të suksesshëm. Le të kthehemi te pyetësori i tabelës së gjendjes që bëhet për secilën paketë përpara se të kontrollojmë rregullat. Kërkesa duhet të kthejë një rekord të vetëm me një çelës që përputhet, ose të mos kthejë asgjë. Nëse pyetja nuk kthen asgjë, lista e rregullave kalohet.

    Nëse gjendet një hyrje, hapi i dytë për paketat TCP përpara se ato të konsiderohen se i përkasin një lidhjeje specifike dhe të filtrohen është të kontrolloni numrin e sekuencës.

    Ka një numër të madh sulmesh TCP në të cilat sulmuesi përpiqet të kontrollojë lidhjen midis dy hosteve. Në shumicën e rasteve, sulmuesi nuk është në rrugën e rrugëve ndërmjet hosteve, dhe për këtë arsye nuk mund të përgjojë paketat legjitime të dërguara nga hostet. Sidoqoftë, ai mund t'i dërgojë pako cilitdo prej hosteve, duke simuluar paketat e bashkëbiseduesit të tij, duke falsifikuar ("spoofing") - duke falsifikuar adresën e dërguesit. Qëllimi i sulmuesit mund të jetë të parandalojë mundësinë e krijimit të lidhjeve midis hosteve ose të prishë një tashmë lidhjet e vendosura(për të shkaktuar një mohim të shërbimit) ose për të krijuar një shkarkim me qëllim të keq në lidhje.

    Për një sulm të suksesshëm, sulmuesi duhet të "mendojë" saktë disa parametra lidhjeje, si adresa/porti i burimit dhe destinacionit. Dhe për protokollet e përhapura, kjo mund të mos jetë aq e vështirë sa mund të duket. Nëse sulmuesi njeh adresat e hostit dhe një nga portet (meqë po flasim për një shërbim të përbashkët), ai do të duhet vetëm të "mendojë" një port. Edhe nëse klienti përdor një port me burim të vërtetë të rastësishëm (gjë që nuk është gjithmonë e vërtetë), sulmuesi duhet vetëm të përshkojë 65536 porte në një periudhë të shkurtër kohe. (Në shumicën e rasteve, edhe porte (65536-1024), d.m.th. vetëm porte të paprivilegjuara - shënimi i përkthyesit))

    Por ajo që është vërtet e vështirë për një sulmues të hamendësohet është numri i saktë i sekuencës (dhe konfirmimi i tij). Nëse të dy pritësit zgjedhin numri fillestar sekuencat në mënyrë të rastësishme (ose përdorni modulimin e numrave të sekuencës për hostet që kanë një gjenerator "të dobët" ISN (Numri i Sekuencës Fillestare)), atëherë sulmuesi nuk do të jetë në gjendje të gjejë vlerën e duhur në kohën e duhur të lidhjes.

    Gjatë ekzistencës së një lidhjeje të vlefshme TCP, numrat e sekuencës (dhe njohjet) për paketat individuale ndryshojnë sipas rregullave të caktuara.

    Për shembull, nëse hosti dërgon disa segmente të të dhënave dhe marrësi i tij pranon marrjen, nuk duhet të ketë arsye pse dërguesi duhet të dërgojë përsëri të dhënat e segmentit. Por, në fakt, një përpjekje për të mbishkruar pjesë të informacionit të marrë tashmë nga hosti nuk është një shkelje e protokollit TCP, megjithëse mund të jetë një lloj sulmi.

    pf përdor rregulla për të përcaktuar diapazonin më të vogël për numrat legjitim të sekuencës. Në përgjithësi, pf mund të përcaktojë me saktësi identitetin e 30,000 nga 4294967296 numrat e mundshëm të sekuencës në çdo kohë të caktuar në një lidhje. Vetëm nëse numri i sekuencës dhe konfirmimi përfshihen në këtë dritare, pf do të bindet që paketa është e ligjshme dhe do ta lejojë atë.

    Nëse, gjatë një pyetjeje në tabelën e gjendjes, a hyrje e përshtatshme, në hapin tjetër, kontrollohen numrat e sekuencës së paketave të ruajtura në tabelë për të parë nëse janë brenda intervalit të vlerave të mundshme. Nëse krahasimi dështon, pf do të gjenerojë një mesazh "gjendje e keqe" dhe do ta heqë paketën pa e vlerësuar grupin e rregullave. Ka dy arsye pse një krahasim me rregullat mund të mos ndodhë: pothuajse me siguri do të jetë një gabim të humbasësh paketën, sepse nëse llogaritja e grupit do të rezultojë që rregulli të godasë një opsion "keep state" dhe pf nuk do të mund të marrë një vendim dhe të krijojë hyrje e re sepse kjo do të çojë në konflikte të çelësave në tabelë.

    Për të parë dhe regjistruar mesazhet "gjendja e keqe", duhet të aktivizoni modalitetin e korrigjimit duke përdorur komandën:

    $ pfctl -xm

    Mesazhet e korrigjimit dërgohen në tastierë si parazgjedhje, dhe syslogd gjithashtu i shkruan ato në /var/log/messages. Kërkoni mesazhe që fillojnë me "pf":

    pf:KEQshteti:TCP 192.168.1.10:20 192.168.1.10:20 192.168.1.200:64828

    [ lo=1185380879lartë=1185380879win=33304modulator=0wscale=1]

    4:4 A seq=1185380879 ack=1046638749 len=1448 ackskew=0 pkts=940:631

    dir=jashtë,fwd

    pf: Dështimi shtetëror më: 1 |

    Këto mesazhe vijnë gjithmonë në çifte. Mesazhi i parë tregon hyrjen në tabelën e gjendjes në kohën kur paketa u bllokua dhe numrin e sekuencës së paketës që shkaktoi gabimin. Hyrja e dytë tregon kushtet që janë shkelur.

    Në fund të mesazhit të parë, do të shihni nëse një regjistrim statusi është krijuar për një paketë hyrëse (dir=in) ose dalëse (dir=out) dhe nëse paketa e bllokuar po udhëtonte në të njëjtin drejtim (dir=,fwd ) ose drejtimi i kundërt (dir=,rev) ) drejtimi.

    Hyrja në tabelë përmban tre adresa: çifte portash, dy prej të cilave janë gjithmonë të barabarta me njëra-tjetrën, nëse lidhja nuk ka pësuar konvertim nat, rdr ose bnat. Për lidhjet dalëse, burimi i paketës shfaqet në të majtë dhe destinacioni i paketës në të djathtë. Nëse lidhja dalëse përfshin përkthimin e adresës së burimit, çifti në mes tregon burimin pas përkthimit. Për lidhjet hyrëse, burimi është në anën e djathtë të daljes dhe adresa e destinacionit është në mes. Nëse lidhja në hyrje i nënshtrohet përkthimit të adresës së destinacionit, çifti ip/port në të majtë tregon destinacionin pasi të jetë kryer përkthimi. Ky format përputhet me daljen e pfctl -ss, përveç se pfctl tregon drejtimin e paketës duke përdorur shigjeta.

    Në dalje mund të shihni numrat e sekuencës aktuale të hostit në kllapa katrore. Pra, vlera "4:4" do të thotë që lidhja është krijuar plotësisht (vlerat më të vogla janë më të mundshme në fazën e vendosjes së lidhjes, vlerat më të mëdha janë më të mundshme në momentin që lidhja mbyllet)."A" do të thotë që paketa e bllokuar kishte vendosur flamurin ACK (si në daljen e flamurit të tcpdump), e ndjekur nga vlerat e numrave të sekuencës (seq=) dhe (ack=) në paketat e bllokuara dhe gjatësia e ngarkesës së paketës - gjatësia e të dhënave (len =). askskew është pjesë e paraqitjes së brendshme të të dhënave në tabelë, e përdorur vetëm për vlera jo të barabarta me zero.

    Hyrja "pkts=930:631" do të thotë se përputhet me 940 pako që udhëtojnë në të njëjtin drejtim me paketën që shkaktoi krijimin e hyrjes dhe 631 pako në drejtim të kundërt. Këta numërues do të jenë veçanërisht të dobishëm kur zgjidhni problemet e konfigurimit të lidhjes; nëse njëri prej tyre është zero, do të kundërshtojë pritjet tuaja që paketat në të dy drejtimet përputhen me atë hyrje.

    Mesazhi i mëposhtëm do të përmbajë një listë me një ose më shumë numra. Çdo numër paraqet testin në të cilin ka ndodhur gabimi:

    1. Madhësia e dritares së paketës tejkalon madhësinë maksimale të marrësit (seq + len > lartë)
    2. paketa përmban të dhëna tashmë të transmetuara (seq< lo - win)
    3. ackskew është më e vogël se vlera minimale
    4. anon më shumë vlera maksimale
    5. njëjtë si në (1), por me një ndryshim (seq + len > lartë + fitim)
    6. njëjtë si në (2), por (seq< lo - maximum win)

    Për fat të mirë, mesazhet "gjendje e keqe" nuk zbatohen për trafikun real të përditshëm dhe kontrollimi i numrit të sekuencës pf shmang shumicën e anomalive. Nëse i shihni këto mesazhe që shfaqen në mënyrë sporadike dhe nuk vini re një numër të madh lidhjesh të varura, thjesht mund t'i injoroni ato. Ka shumë implementime TCP/IP që funksionojnë në internet dhe disa prej tyre ndonjëherë mund të gjenerojnë paketa të gabuara.

    Megjithatë, kjo klasë problemesh mund të diagnostikohet lehtësisht nga shfaqja e mesazheve "BAD State" që shfaqen vetëm në raste të tilla.

    Krijimi i të dhënave shtetëroreTCP sipas inicialitSYN në paketë.

    Në mënyrë ideale, të dhënat e gjendjes duhet të krijohen kur ndodh paketa e parë SYN.

    Ju mund ta detyroni përdorimin e këtij rregulli duke përdorur parimin:

    "Përdor opsionet "flamujt S/SA" në të gjitha rregullat "pass proto tcp keep state""

    Vetëm paketat fillestare SYN (dhe vetëm këto) kanë flamurin SYN të vendosur dhe ACK-në të mbledhur. Kur opsioni "keep state" zbatohet vetëm për paketat fillestare SYN, vetëm ato paketa do të krijojnë hyrje në tabelën e gjendjes. Kështu, çdo hyrje ekzistuese në tabelën e gjendjes do të rrjedh nga paketa fillestare SYN.

    Arsyeja për krijimin e regjistrimeve vetëm për paketat fillestare është një zgjatje e protokollit TCP e quajtur "shkallëzim i dritares" i përcaktuar në RFC1323. Fusha e kokës TCP, e përdorur për të shpallur madhësinë e dritareve të marra, është shumë e vogël për lidhjet e sotme të komunikimit me shpejtësi të lartë. Implementimet moderne TCP/IP preferojnë të përdorin madhësi dritaresh më të mëdha sesa mund të përshtaten në fushën ekzistuese. Shkallëzimi i madhësisë së dritares do të thotë që të gjitha madhësitë e dritareve të njohura nga hosti marrës duhet të shumëzohen me një vlerë specifike të specifikuar nga marrësi, në vend që të merren vetë. Në mënyrë që këtë skemë për të punuar, të dy hostet duhet të mbështesin zgjerimin dhe t'i tregojnë njëri-tjetrit aftësinë e tyre për ta zbatuar atë në fazën e krijimit të lidhjes ("shtrëngim duarsh") duke përdorur opsionet TCP. Këto opsione janë të pranishme vetëm në paketat fillestare SYN dhe SYN+ACK. Vetëm nëse secila prej këtyre paketave përmban një opsion, marrëveshja e ndërsjellë do të jetë e suksesshme dhe madhësia e dritares së të gjitha paketave pasuese do të shumëzohet me një faktor.

    Nëse pf "nuk do të ishte në dijeni" për shkallëzimin e dritares që po përdorej, do të merrte vlerën e dhënë pa një faktor, dhe llogaritja e madhësive të dritareve për vlerat e pranueshme të numrit të sekuencës do të ishte e pasaktë. Në mënyrë tipike, hostet ofrojnë madhësi të vogla të dritareve në fillim të një lidhjeje dhe i rrisin ato ndërsa lidhja përparon. I pavetëdijshëm për ekzistencën e faktorëve që ndryshojnë madhësinë e dritares, pf në një moment do të fillojë të bllokojë paketat, sepse do të besojë se një nga hostet po përpiqet të anashkalojë madhësinë maksimale të dritares të ofruar nga "bashkëbiseduesi". Efektet e kësaj mund të jenë pak a shumë të dukshme. Ndonjëherë, hostet do t'i përgjigjen humbjes së paketës duke lëvizur në të ashtuquajturat. "modaliteti i rikuperimit të humbjeve" dhe do të reklamojë një madhësi më të vogël të dritares. Pasi pf ritransmeton paketat që u hodhën herën e parë, madhësitë e dritareve do të rriten më tej, deri në pikën ku pf do të fillojë t'i bllokojë përsëri. Manifestimi i jashtëm mund të jetë ngrirja e përkohshme e lidhjes dhe performancë të ulët. Është gjithashtu e mundur që lidhjet të ngrijnë ose rivendosen plotësisht për shkak të një afati kohor.

    Por pf di për mundësinë e shkallëzimit të dritareve dhe e mbështet këtë mundësi. Megjithatë, parakushti për krijimin e hyrjeve të tabelës së gjendjes në paketat e para SYN është që pf të mund të lidh dy paketat e para të lidhjes me hyrjen e tabelës. Dhe meqenëse përputhja e plotë e koeficientëve të madhësisë së dritares ndodh vetëm në këto dy paketat e para, nuk ka asnjë metodë të besueshme për të përcaktuar këta koeficientë pasi të negociohet lidhja.

    Në të kaluarën, shkallëzimi i madhësisë së dritares nuk përdorej gjerësisht, por kjo po ndryshon me shpejtësi. Vetëm kohët e fundit Linux e ka aktivizuar këtë opsion si parazgjedhje. Nëse keni vështirësi me lidhjet e varura, veçanërisht me kombinime të caktuara të hosteve, dhe po shihni mesazhe "gjendje e keqe" që lidhen me këto lidhje, kontrolloni që në të vërtetë po krijoni hyrje në tabelën e gjendjes në paketat e para të lidhjes.

    Ju mund të përcaktoni nëse pf po përdor opsionin e shkallëzimit për lidhjen nga dalja e pfctl:

    $ pfctl -vss

    kue0 tcp 10.1.2.3:10604 -> 10.2.3.4:80 E vendosur: E vendosur

    wshkalla 0wshkalla 1

    Nëse ka një hyrje "wscale x" të shtypur në rreshtin e dytë (edhe nëse x është zero), pf do të lexojë se e di që lidhja po përdor shkallëzim.

    Një metodë tjetër e thjeshtë për identifikimin e problemeve që lidhen me shkallëzimin është çaktivizimi i përkohshëm i mbështetjes së shkallëzimit dhe rishikimi i situatës. Në OpenBSD, përdorimi i shkallëzimit mund të kontrollohet nga opsioni sysctl:

    $ sysctlneto.inet.tcp.rfc1323

    neto.inet.tcp.rfc1323=1

    $ sysctl -wsysctlneto.inet.tcp.rfc1323=0

    neto.inet.tcp.rfc1323: 1 -> 0

    Probleme të ngjashme shfaqen kur krijoni hyrje në tabelën e gjendjes për paketa të ndryshme nga SYN fillestar dhe përdorni opsionin ose transmetimin "mulate state". Në të dyja rastet, transmetimi ndodh në fillim të lidhjes. Nëse paketa e parë nuk përkthehet, ndarja e paketave të mëvonshme zakonisht dekurajon fundin marrës dhe bën që përgjigjet e dërguara të bllokohen nga pf me një mesazh "gjendje e keqe".

    Metodologjia e testimit

    Testimi u krye në një kompjuter eksperimental që funksiononte Windows i licencuar XP me SP1 të instaluar (testimi u krye në kushte të idealizuara - "sistemi operativ + Firewall" për të eliminuar ndikimin e programeve të tjera në pastërtinë e eksperimentit). Shërbimi APS u përdor si një tregues i aksesit të suksesshëm në shërbime. U përdorën ndikimet e mëposhtme të jashtme:
    • skaner XSpider 6.5 dhe 7.0
    • Skaneri i Sigurisë së Rrjetit Retina 4.9
    • disa skanerë të dizajnit tim.
    Për më tepër, u përdor sniffer CommView 4.1 (si një mjet monitorimi trafiku i rrjetit dhe si një mjet për gjenerimin dhe dërgimin e paketave me parregullsi të ndryshme strukturore). I ashtuquajturi flooders të llojeve të zakonshme, shërbime për simulimin e programeve trojan.

    Në kompjuterin testues, IE 6 u përdor si një mjet për të hyrë në rrjet dhe internet. Outlook Express 6, TheBat 1.60, MSN Messanger 6.1. Përveç tyre, testi përfshiu simulatorë të programeve trojan dhe programe të vërteta trojan / Backdoor nga koleksioni im (në veçanti Backdoor.Antilam, Backdoor.AutoSpy, Backdoor.Death, Backdoor.SubSeven, Backdoor.Netbus, Backdoor.BO2K), rrjet / viruset e postës elektronike (I-Worm.Badtrans, I-Worm.NetSky, I-Worm.Sircam, I-Worm.Mydoom, I-Worm.MSBlast), shkarkuesit e Trojan Downloader (në veçanti TrojanDownloader.IstBar) dhe komponentët SpyWare. Detyra kryesore testet ishin një përpjekje për të parë Firewall-in përmes syve të përdoruesit, për të vënë në dukje pikat e forta dhe të dobëta të tij nga këndvështrimi im.

    Kerio Technologies WinRoute Pro v4.2.5

    Instalimi dhe çinstalimi:
    Shkon pa probleme.
    Instalimi me cilësimet e paracaktuara, pa rregulla - vetëm NAT është i vlefshëm. Puna në rrjet - pa probleme, rezultatet e skanimit - APS nuk tregon gjendje alarmi, skaneri beson se të gjitha portet janë të mbyllura. Vetë Winroute nuk lëshon alarme dhe nuk identifikon vizualisht faktin e skanimit.

    Outpost Firewall Pro 2.1 Build 303.4009 (314)

    Instalimi dhe çinstalimi:
    Instalimi nën XP vazhdon pa probleme; pas fillimit, modaliteti i trajnimit aktivizohet.

    ZoneLabs ZoneAlarm Pro with Web Filtering 4.5.594.000 - Personal Firewall

    Instalimi dhe çinstalimi:
    Gjatë instalimit, XP u rrëzua gjatë përpjekjes për të nisur pas instalimit. Pas rindezjes, gjithçka funksionoi mirë.

    AtGuard 3.22>

    Instalimi dhe çinstalimi:
    Instalimi dhe çinstalimi probleme të veçanta nuk shkakton

    Përparësitë:

    1. Firewall është i vogël në madhësi dhe ka një zgjidhje interesante për sa i përket ndërfaqes - është projektuar si një panel i vendosur në krye të ekranit

    Disavantazhet dhe veçoritë:

    1. Në modalitetin e trajnimit është i cenueshëm - që nga momenti kur lëshohet kërkesa për të krijuar një rregull derisa të krijohet, ai kalon paketat në të dy drejtimet
    2. Ndërfaqja është pak e gabuar kur rivizatoni dritaret

    Vlerësimi i përgjithshëm:
    Firewall i thjeshtë, por mjaft funksional

    Kerio Personal Firewall 4

    Instalimi dhe çinstalimi:
    Instalimi vazhdon pa probleme, heqja është "e pastër" - nuk u vunë re probleme pas çinstalimit.

    Norton Internet Security 2004 (NIS)

    Instalimi dhe çinstalimi: Instalimi nuk shkakton probleme, por nga të gjitha ato të analizuara, instaluesi është më i rëndë.

    Firewall i lidhjes në internet, ICF - i integruar Firewall i Windows XP

    Instalimi dhe çinstalimi: Nuk kërkohet instalim, është një mjet standard i XP. Aktivizimi bëhet në cilësimet përshtatës rrjeti. Si parazgjedhje, ICF funksionon në modalitetin maksimal të sigurisë dhe (ky është rezultat i vëzhgimit tim) parimi i funksionimit të tij është si më poshtë: kërkesat e aplikacionit lëshohen nga jashtë, dhe vetëm paketat që vijnë në përgjigje të kërkesave të mia merren nga jashtë (kërkesa -korrespondenca e përgjigjeve mbahet qartë në formën e një tabele dinamike). Kështu, kur skanoni porte në një kompjuter me ICF të aktivizuar, nuk ka port i hapur(kjo është logjike - paketat e skanerit të portit nuk do të mungojnë, pasi askush nuk i kërkoi ato). Situata është e ngjashme me lloje të ndryshme "nuke" të bazuara në dërgimin e paketave jo standarde

    Firewall i lidhjes në internet, ICF - muri i zjarrit i integruar për Windows XP SP2

    Instalimi dhe çinstalimi: Nuk kërkohet instalim, është një mjet standard XP (i përfshirë në SP2 për XP). Aktivizimi bëhet në cilësimet e përshtatësit të rrjetit. Duhet të theksohet se kur instaloni SP2 ose kur instaloni XP me SP2 të integruar, përveç Firewall-it, në sistem shfaqet një qendër sigurie, e cila mund të tregojë cilësimet e ICF

    Sygate Personal Firewall Pro 5.5 i ndërtuar 2525

    Instalimi dhe çinstalimi:

    ISS BlackIce 3.6.cci

    Instalimi dhe çinstalimi: Instalimi dhe çinstalimi i programit ndodh pa probleme, por gjatë instalimit ndodh një gabim në bibliotekën ikernel. I njëjti gabim ndodhi gjatë çinstalimit. Shfaqja e këtij gabimi nuk ndikon në procesin e instalimit dhe çinstalimit të programit. Instaluesi nuk kërkoi një rindezje të sistemit, gjë që është e pazakontë për Firewall

    Visnetic Firewall 2.2

    Instalimi dhe çinstalimi: Instalimi i programit dhe çinstalimi i tij ndodh pa probleme. Pas instalimit, kërkohet një rindezje.

    Shikoni n ndaloni murin e zjarrit personal 2.05

    Instalimi dhe çinstalimi: Instalimi i programit dhe çinstalimi i tij ndodh pa probleme. Pas instalimit, kërkohet një rindezje. Ai instalon drejtuesin e vet për të punuar.

    Kaspersky AntiHacker 1.5

    Instalimi dhe çinstalimi: Instalimi i programit dhe çinstalimi i tij ndodh pa probleme. Pas instalimit, kërkohet një rindezje.

    Tiny Personal Firewall Pro 6.0

    Instalimi dhe çinstalimi:
    Instalimi i programit dhe çinstalimi i tij ndodh pa probleme. Pas instalimit, kërkohet një rindezje.

    McAfee Personal Firewall Plus 6.0 Build 6014

    Instalimi dhe çinstalimi:
    Instalimi i programit dhe çinstalimi i tij ndodh pa probleme. Pas instalimit, kërkohet një rindezje.

    R-Firewall 1.0 Ndërtimi 43

    Instalimi dhe çinstalimi:
    Instalimi i programit dhe çinstalimi i tij ndodh pa probleme. Madhësia e shpërndarjes është e vogël (3.8 MB), ju mund të personalizoni përbërjen e produktit. Puna është mjaft e qëndrueshme, nuk u vu re asnjë përplasje ose ngrirje e dukshme në kompjuterin e referencës

    Përfundime dhe përfundime të përgjithshme

    Pra, le të përmbledhim rezultatet e testit. Në fakt, testet konfirmuan idetë e mia teorike për gjendjen e problemit:
    1. Firewall-i duhet të konfigurohet. Të gjitha muret e zjarrit të testuar funksionuan mirë, por vetëm pas konfigurimit (trajnim, krijimi i cilësimeve me dorë - nuk ka rëndësi). Përdorimi i një firewall të pakonfiguruar mund të shkaktojë më shumë dëm sesa dobi (do të lejojë kalimin e paketave të rrezikshme dhe, anasjelltas, do të ndërhyjë në programe të dobishme);
    2. Pas konfigurimit të Firewall-it dhe IDS-së, duhet të provoni- Ky është gjithashtu një përfundim mjaft i qartë, por megjithatë është i rëndësishëm. Unë bëra hapin e parë drejt krijimit të një testuesi - ky është mjeti APS. Kanë mbetur edhe dy të tjera - një simulator i programit Trojan (d.m.th. një mjet që do të kryejë përpjekje të sigurta për përdoruesin për të "thyer" Firewall nga brenda (natyrisht, sulmet do të përshkruhen nga baza e të dhënave dhe do të kryhen në faqen e përdoruesit komandën nën kontrollin e tij), i cili do t'ju lejojë të vëzhgoni Firewall-in e reagimit dhe IDS) dhe një mjet për skanimin e shpejtë të portit dhe kryerjen e sulmeve bazë (në thelb APS është saktësisht e kundërta - ato mund të kenë një bazë porti të përbashkët). Unë tashmë po zhvilloj këto shërbime - prania e tyre në arsenalin e përdoruesit do të lejojë një lloj "kontrolli instrumental".
    3. Firewall-i personal është i prekshëm ndaj malware që ekzekutohen nga konteksti i programeve të dobishme. Përfundim - të paktën larg paneleve të ndryshme "të majta" dhe BHO-ve të tjera nga shfletuesi dhe emaili!! Përpara se të instaloni ndonjë shtesë, panel, program shtesë, etj. ju duhet të mendoni dhjetë herë për domosdoshmërinë e tyre, sepse... ato nuk janë procese të veçanta të sistemit operativ dhe funksionojnë nga konteksti programi prindëror . Programi Trojan zbulohet lehtësisht nga një Firewall personal - ai "sheh" që një proces i caktuar (të themi, bo2k.exe) po përpiqet të fillojë të dëgjojë në portin xxxxx ose të komunikojë me një host të caktuar - lëshohet një kërkesë për leje, përdoruesi fillon të kuptojë se çfarë lloj "bo2k.exe" është " dhe Backdoor është kapur. Por nëse programi Trojan do të funksiononte nga konteksti i shfletuesit, atëherë pothuajse me siguri askush nuk do t'i kushtonte vëmendje aksesit të shfletuesit në internet. Programe të tilla trojane ekzistojnë, shembulli më i afërt është TrojanDownloader.IstBar - është instaluar saktësisht si një panel IE (natyrisht nuk është në procese, as nuk është në listën autorun);
    4. Shumë Firewall personal janë të dukshëm si procese të sistemit operativ dhe mund të ndalohen nga një virus. Përfundim - puna e Firewall-it duhet të monitorohet dhe ndërprerja e papritur e tij mund të shërbejë si sinjal se një virus ka depërtuar në PC;
    5. Disa mure zjarri (për shembull Kerio) lejojnë kontrollin në distancë- funksioni i telekomandës duhet të jetë ose i çaktivizuar ose i mbrojtur me fjalëkalim.

    Artikujt më të mirë mbi këtë temë