Înțelegerea principiilor de funcționare a firewall-ului
S-ar putea să vă gândiți - ce excentric stabilește o conexiune ASK printr-un pachet. Cred că acest excentric vrea să înțeleagă cum funcționează tabelul de stat. Cu o politică care vă permite să vă gândiți că acest pachet va trece. Dar, după ce înțelegeți mai bine cum funcționează monitorizarea de stat, vă puteți schimba mintea:
Ideea mea inițială pentru condițiile de monitorizare (cel puțin pentru firewallul-1 punct) a fost după cum urmează: imediat ce PV primește un pachet SYN care stabilește conexiunea, acesta este verificat baza de reguli. La fel ca într-un router, acest pachet este comparat cu regulile succesiv (începând cu regula zero). Dacă pachetul a trecut toate regulile și nu a fost adoptat, acesta este respins. Conexiunea este apoi terminată sau eliminată (RST este trimis către gazda la distanță). Cu toate acestea, dacă pachetul este acceptat, sesiunea este introdusă în tabela de stare a conexiunii firewall care se află în kernel. Apoi, orice pachet ulterior (care nu are un flag SYN) este comparat cu tabela de monitorizare a stării. Dacă sesiunea este în tabel și pachetul face parte din această sesiune, atunci pachetul este acceptat. Dacă pachetul nu face parte din sesiune, acesta este eliminat. Acest lucru crește performanța sistemului, deoarece fiecare pachet individual nu este comparat cu politica, ci numai cu pachetele SYN care stabilesc conexiunea. Toate celelalte pachete TCP sunt comparate numai cu tabela de stare din kernel (aceasta este foarte rapidă)
Acum întoarceți-vă la întrebarea noastră. Dacă inițiați o sesiune de pachete ACK, pachetul FW va accepta, chiar dacă politica permite totul. Așa cum am menționat mai devreme, veți crede că da. Acum că înțelegem mai bine tabela de conexiuni, probabil că merită să spunem "nu" =). Când FW primește un pachet ACK, îl compară cu tabela de stare din kernel, nu cu politica. Cu toate acestea, dacă paravanul de protecție nu are această sesiune în tabelul de stare (nu a primit niciodată un pachet SYN), va scădea pachetul, deoarece pentru că nu există nici o înregistrare în tabelul de stat.
REZULTAT - CUM FUNCȚIONEAZĂ FW-1
Rezultatul a fost foarte interesant. Pachetul ASK nu a fost adoptat doar. dar a fost adăugat la tabela de stat. Înțelegerea mea despre munca lui FW a fost greșită. Am învățat că atunci când firewall-ul primește un pachet care nu face parte din tabelul de link-ul de stat, acesta este verificat baza de reguli, indiferent dacă acesta este un SYN. ACK sau alt pachet. Dacă politica permite sesiunea, ea este adăugată la tabela de stat. Toate pachetele de sesiuni ulterioare sunt comparate cu tabela de stat și sunt acceptate. pentru că în tabela de stat există o intrare pentru această sesiune, pachetele sunt primite fără a verifica politica. Mai jos sunt prezentate datele din fwtable.pl (ver 1.0) utilitate care konvertruet date de la 'Conexiuni -t tab fw. Acest tabel stochează toate conexiunile curente (?) FW-1 din memorie. Înregistrările pe care le vedeți mai jos fac parte din tabela de stare a conexiunii, crearea cărora a fost inițiată de pachetele ACK.
Aici vedeți trei primite și adăugate la tabela de stat a conexiunii firewall. Cu toate acestea, aceste trei conexiuni au fost inițiate de pachetele ACK. (acest lucru este valabil și pentru Null, SYN / ACK și multe alte pachete, de exemplu FIN / ACK). Dacă pachetul nu face parte din sesiune din tabela de stat, acesta este verificat în conformitate cu politica. Și dacă este acceptată, sesiunea este adăugată la tabela de stat. Dacă pachetul nu se potrivește cu politica, acesta este eliminat și sesiunea este închisă. Iată cum firewall-ul acceptă conexiunile: faci "fwstop; fwstart". Când reporniți paravanul de protecție, tabelul de conexiuni este șters și nu există o conexiune. Cu toate acestea, orice conexiune curentă va fi probabil trimisă de ASKi. Paravanul de protecție le vede, verifică politica și restabilește tabela de conexiuni. Toate acestea sunt transparente pentru utilizatorul final. De aceea pierdeți sesiunile autentificate și criptate, firewall-ul nu are aceste conexiuni în "starea inițială". Observați și timpul de expirare în coloana din dreapta = 3600 secunde. După ce sesiunea este adăugată la tabela de stare, paravanul de protecție stochează această conexiune. Aceasta înseamnă că aveți 60 de minute pentru a crea și a trimite un alt pachet pentru a actualiza cronometrul. Timeout parametrii pot fi setate în meniul proprietăților de control.
NOTĂ. Pachetele corecte FIN sau RST nu pot crea o sesiune, deoarece ele servesc pentru a rupe conexiunea. De asemenea, este singurul pachet care nu a fost adăugat la masa de stat au fost crearea de pachet de „Crăciun“ prin scaner Nmap (cu opțiunea -sX), dar acestea au fost acceptate și înregistrate în jurnalele.
Negarea potențială a serviciului (Bugtraq ID 549). Atunci când o conexiune este stabilită în cazul în care conexiunea este inițiată de pachete ACK (sau aproape orice alt pachet de bază non-SYN, cum ar fi Null, FIN / ACK, SYN / ACK, etc), timeout-ul este setat automat la 3.600 secunde (implicit), a se vedea exemplul de mai sus. Există o amenințare potențială de negare a serviciului. Prin inițierea mai multor conexiuni ACK cu pachete care nu există, veți completa rapid tabela de stare. pentru că sistem de la distanță nu are, nu vine nici un RST sau FIN pachet pentru a reseta conexiunea, lăsând un link mort în tabel timp de o oră. (Amintiți-vă, timeout pentru pachetele non-SYN la 3600 de secunde), puteți umple foarte rapid conexiuni de masă crearea de pachete de sesiune ACK. Din fericire, acest DoS otak este mult mai complicat în afara firewall-ului decât în interior. Din nefericire, este ușor să umpleți singur masa, efectuând o scanare din cauza firewall-ului (așa cum am învățat eu). Și pentru a obține în jurul rake-ul de mai sus, puteți face pașii următori:
-Reduceți conexiunea TCP la 15 minute (900 secunde). Aceasta reduce "fereastra de oportunități" care poate fi utilizată pentru a popula masa dvs.
-Creșteți masa de stat. Acest lucru va complica umplerea acestuia.
-Stabiliți reguli stricte care limitează ce pot intra și ieși.
-Jason Rhoads a făcut scriptul fwconwatch.pl. care vă va urmări tabelul de conexiuni și vă va avertiza.
-Instalați Fastpath (pentru versiunea 3.0) sau FastMode (pentru versiunea 4.0), care elimină conexiunile din tabel.
Caracteristica FW-1, care îmi place foarte mult, este manipularea pachetelor SYN. Dacă încercați să creați o sesiune nouă care emulează una existentă, paravanul de protecție încă o compară cu politica. Să presupunem că încercați să faceți următoarele:
A --- FW - B # Sistemul A se conectează la B
Dacă este setată calea rapidă, atunci sesiunea nu este adăugată la tabela de conexiune, adică tabela de conexiuni nu este creată. Motivul este că piesa rapidă urmărește numai pachetele SYN, deci nu este nevoie să adăugați o sesiune la tabela de conexiuni. Dacă pachetul are alt semn, pachetul nu este filtrat și este ignorat în mod implicit. De obicei, calea rapidă este folosită pentru a îmbunătăți performanța (sau în cazuri rare de rutare). Ideea este că dacă un pachet nu are un flag SYN, acesta face parte din conexiune, deoarece Numai un pachet SYN poate crea o conexiune. Deoarece sunt urmărite numai pachetele SYN, performanța este semnificativ crescută. Cu toate acestea, utilizarea rapidă este, de obicei, o soluție proastă. acest lucru deschide posibilitatea unui număr mare de alte atacuri. Fastpath este doar în versiunea FW-1. 3.0 și este o proprietate globală care se aplică tuturor pachetelor TCP. În versiunea 4.0, această proprietate se numește Fastmode și poate fi aplicată selectiv pentru diverse servicii.
Pe baza testelor de suprafata, voi spune ca FW-1 inchide conexiunile prin timeout. Când modulul de monitorizare a sesiune spoturi care comunică FIN sau RST pachete, se schimbă timeout la 3600 de secunde până la 50. Dacă nu există alte pachete în schimbul în timpul 50-al doilea interval, compusul este îndepărtat din masa de conectare. Dacă în timpul acestei perioade este trimis un pachet, timerul este resetat la 50 de secunde. Prin expedierea constantă a pachetelor după ce conexiunea este închisă, puteți seta temporizatorul din nou timp de 50 de secunde. Aceasta exclude posibilitatea unui atac DoS când cineva trimite pachete RST sau FIN stânga. Comportamentul timeout-ului poate fi prezentat ca starea de TIME_WAIT o conexiune TCP dupa confirmare (ACK) pachet Vautour FIN în sesiunea de închidere.
fwtable.pl vă va ajuta să înțelegeți mai bine tabelele de monitorizare de stat pentru firewall-urile dvs. (funcționează numai pentru Check Point FW-1). Acest script poate fi rulat local pe modulul firewall, de la distanță de la orice stație de service sau separat pe sistemul în care există un Pearl.
lego.pl vă permite să creați propriile pachete TCP, inclusiv steaguri, porturi, numere de serie etc. Nu există interfață de linie de comandă, trebuie să editați codul, dar este foarte simplu. Scris de miff'om.
libnet pentru generarea low-level de trafic Ethernet.