Fiul arcului

Paravanul de protecție este prima linie de apărare pentru orice server și depinde de configurația sa corectă dacă atacatorul se poate mișca mai mult în încercările sale de a penetra sistemul. Firewall-urile moderne oferă o varietate de mecanisme de securitate, prin care puteți lăsa "scos din cutie" 99% dintre atacatori. Și toate acestea fără a fi nevoie să achiziționați echipamente scumpe și software comercial.







Scopul principal al tuturor spărgătorilor este de a avea acces la interpretul de server pentru a-și folosi capabilitățile în avantajul lor. Cel mai adesea, penetrarea în "sfânta sfintelor" se realizează cu ajutorul găurilor în servicii sau prin selectarea unei parole (forța bruta) către una dintre ele (de exemplu, ssh).

Port scanare

Pentru a identifica prezența serviciilor vulnerabile pe mașină, atacatorul efectuează recunoașterea folosind scanerul de porturi și diferitele sisteme de detectare a vulnerabilităților. De obicei, nmap este folosit ca scaner port, care este capabil de scanare într-o duzină de moduri diferite și, în unele cazuri, este capabil să detecteze versiuni ale sistemului de operare și servicii. Iată o listă de nmap-uri extrem de populare, care sunt utilizate de crackere:

Steaguri Nmap utilizate pentru scanare

  • -sT - o scanare TCP normală prin deschiderea unei conexiuni la portul specificat și terminarea acestuia;
  • -sS - SYN / ACK-scanare, conexiunea este terminată imediat după răspunsul la cererea de deschidere a conexiunii;
  • -sU - scanare UDP;
  • -sF - scanare cu pachete cu setul de sigla FIN;
  • -sX - scanare prin pachete cu seturile de taste FIN, PSH și URG;
  • -sN - scanare cu pachete fără seturi de steaguri.

Metoda de protecție împotriva scanării este simplă și cunoscută de orice administrator de sistem. Aceasta constă în închiderea simplă a tuturor serviciilor care nu ar trebui să fie vizibile din rețeaua externă. De exemplu, dacă serviciile ssh, samba și apache rulează pe mașină și numai serverul web cu pagina web corporativă ar trebui să fie vizibil din lumea exterioară, atunci firewall-ul poate fi configurat după cum urmează:

Setarea inițială iptables

outif = "eth1"
iptables -F
iptables -i $ outif -A INPUT \
-m conntrack \
--ctstate ESTABLISHED, RELATED \
-j ACCEPT
iptables -i $ outif -A INPUT -p tcp \
--dport 80 -j ACCEPT
iptables -i $ outif -P INPUT DROP
iptables -i $ outif -P ACCEPTUL OUTPUT

Setarea inițială a ipfw

outif = "rl0"
ipfw adăuga permite ip de la orice la orice \
prin lo0
ipfw adăugați ip de la mine la orice \
prin intermediul $ outif
ipfw add permite tcp de la orice la mine \
stabilit prin $ outif
ipfw add permite tcp de la orice 80 \
pentru mine prin $ outif
ipfw adăugați deny ip de la orice la orice \
prin intermediul $ outif

Setarea inițială a pf

outif = "rl0"
setați săriți pe lo0
blocați toate
treci pe $ outif de la $ outif \
la orice stare de păstrare
treceți pe $ outif proto din orice \
la portul $ outif 80

Toate cele trei seturi de reguli fac același lucru - să permită trecerea oricărui trafic pe interfața loopback (loopback), i se permite să ia pachetele deja stabilite de conectare (la, de exemplu, browser-ul ar putea primi un răspuns de la o cerere de la un server de la distanță), a permis tratamentul de 80 de minute port, blocând toate celelalte și lăsând conexiunile la exterior. Observați că, dacă iptables și exemple ipfw, ne-am stabilit în mod explicit reguli pentru a permite recepția pachetelor deja stabilite conexiuni (stabilite), în cazul pf a fost suficient pentru a indica «menține starea» în rulesete de autorizare orice conexiuni la ieșire.

În general, o astfel de schemă pentru protejarea serviciilor de rețea de scanare și penetrare funcționează bine, dar putem merge mai departe și configurați firewall-ul, astfel încât anumite tipuri de scanare să nu poată fi executate deloc. Punct de vedere tehnic, nu putem face acest lucru în ceea ce privește scanarea convenționale (steaguri Nmap „-st“, „-B“ și „-sU“), pur și simplu pentru că nu este nimic penal, dar tipurile de scanare non-standard, cum ar fi „-sn“, "-sF" și "-sX", generează pachete care nu au putut fi create de aplicații legitime.

Prin urmare, fără o umbră de îndoială, respingem astfel de conexiuni.

Metode de combatere a tipurilor exotice de scanare

# Deny FIN scanare
Linux> iptables -A INPUT -p tcp \
-m tcp \
-tcp-flags FIN, ACK FIN -j DROP
FreeBSD> ipfw add respinge tcp de la orice la orice \
nu a stabilit tcpflags fin
# Dezactivați X-Scan
Linux> iptables -U INPUT -p tcp -m tcp \
--tcp-flags FIN, SYN, RST, PSH, ACK, URG
FIN, SYN, RST, PSH, ACK, URG \
-J DROP
FreeBSD> ipfw add respinge tcp de la orice la orice \
tcpflags fin, syn, rst, psh, ack, urg
# Deniți N-Scan
Linux> iptables -U INPUT -p tcp -m tcp \
-tcp-flags FIN, SYN, RST, PSH, ACK, URG NU -J DROP
FreeBSD> ipfw add respinge tcp de la orice la orice \
tcpflags! fin. Syn. RST. PSH. ack. Urg
În OpenBSD, toate aceste linii pot fi înlocuite cu o înregistrare simplă la început
/etc/pf.conf:
frecat în toate

Direcția de frecare activează mecanismul de normalizare a pachetelor, în care pachetele fragmentate sunt reconectate, iar pachetele cu o combinație nevalidă de steaguri sunt aruncate. Pe lângă tipurile exotice de scanare, scrub vă permite să vă protejați de înșelăciunea sistemelor de detectare a intruziunilor (trimiterea unor pachete extrem de fragmentate) și a unor tipuri de atacuri DoS.







Pentru a proteja împotriva SYN / ACK-scan inițiat de către un '-B' Nmap-pavilion, putem folosi metoda de detectare pasivă OS (sistem de operare de amprente), disponibil în firewall PF și iptables / netfilter (din versiunea 1.4.6). În timpul scanării convenționale ( „-st“ pavilion), foloseste nmap interfata standard a prizelor de sistem de operare, astfel încât această scanare este aproape imposibil de distins de pachetele flux normale (de mai jos, ne uităm la unele din diferențele sale), dar cu SYN Nmap / ACK-scanare generează pachete ele însele, astfel încât acestea au unele caracteristici care dau sursa lor. Metoda pasivă de detectare a sistemului de operare vă permite să identificați aceste pachete și să le eliminați folosind reguli firewall standard:

OpenBSD> blochează rapid din orice NMAP os
Linux> iptables -I INPUT -p tcp -m osf - gen NMAP \
-j DROP

Modulului iptables OSF / netfilter firewall-ul folosește o bază „Amprente“, colectate și actualizate de către dezvoltatorii OpenBSD (/etc/pf.os), astfel încât ambele aceste norme ar trebui să conducă la aceleași rezultate. De asemenea, este interesant faptul că ele contracarază în mod efectiv funcția de detectare a utilitarului nmap (steagul "-O").

Acum suntem protejați de aproape toate tipurile de scanare, cu excepția standardului și "-sT" standard. Cum să te descurci cu el? De fapt, totul este simplu. Faptul de scanare port este ușor de văzut, doar analizând jurnalele de firewall. Dacă într-o perioadă scurtă de timp au existat o mulțime de conexiuni la diferite porturi, atunci am fost scanați. Rămâne doar să trecem această idee la regulile firewall-ului. Pentru iptables, există o rețetă excelentă care blochează toți cei care împing prea mult pe porturile care nu funcționează:

Combaterea scanării cu iptables

Odată ce pachetul este xtables-addons, conținând proiecte de dezvoltare-patch Omatic, vom avea acces la modulul PSD (Port Scan Detect), vândute sub demonul de imagine scanlogd. Toate liniile anterioare pot fi ușor înlocuite cu o regulă simplă:

# iptables -U INPUT -m psd -j DROP

Din păcate, nu există nimic asemănător în filtrele de pachete ipfw și pf, dar nu contează, deoarece daemonul PortSentry și același scanlogd se opun în mod semnificativ scanării porturilor.

Interzicerea mesajului Icmp

Este, de asemenea, o bună practică dezactivarea mesajelor ICMP, care pot furniza informații suplimentare despre gazdă sau pot fi folosite pentru a efectua diverse acțiuni rău-intenționate (de exemplu, modificarea tabelului de rutare). Mai jos este un tabel cu o listă de tipuri posibile de mesaje ICMP:

După cum puteți vedea, răspunsul la unele mesaje ICMP poate duce la dezvăluirea unor informații despre gazdă, în timp ce altele - pentru a modifica tabela de rutare, astfel încât acestea trebuie să fie dezactivate.

De obicei, ieșirea către lumea exterioară permite mesajelor ICMP 0, 3, 4, 11 și 12, în timp ce la intrare sunt permise doar 3, 8 și 12. Astfel se implementează în diferite firewall-uri:

Prevenirea mesajelor ICMP periculoase

Linux> iptables -A INPUT -p icmp \
-tipul icmp 3,8,12-j ACCEPT
Linux> iptables -A OUTPUT -p icmp \
-tip icmp 0,3,4,11,12 -j ACCEPT
FreeBSD> ipfw adăuga permite icmp \
de la orice la $ outif în \
prin $ outif icmptype 3,8,12
FreeBSD> ipfw adăuga permite icmp \
de la $ outif la orice out \
prin $ outif icmptype 0,3,4,11,12
OpenBSD> trece în inet proto icmp \
de la orice la $ outif \
icmp tip <3, 8, 12> păstrează statul
OpenBSD> trece inet prototip icmp \
de la $ outif la orice \
icmp tip <0, 3, 4, 11, 12> \
păstrează statul

Dacă doriți, puteți interzice tot traficul ICMP, inclusiv solicitările de ping, dar acest lucru poate afecta corectitudinea rețelei.

Protecția împotriva forței brute folosind iptables

Același lucru se poate face și cu utilizarea pf:

Protecția bruteforce cu pf

# Creați un tabel pentru bruteforce
tabel persista
# Blocăm pe toți cei care intră în el
blocați rapid de la
# Am pus în tabelul bruteforcers toți cei care inițiază mai mult de două conexiuni la portul 22 pe minut
treceți pe $ ext_if inet proto tcp la $ outif \
portul 22 de steaguri S / SA păstrează starea \
(max-src-conn-rate 60/2, \ supraîncărcare flush)

Paravanul de protecție ipfw nu are suficientă funcționalitate pentru a combate efectiv forța brute, astfel încât utilizatorii săi ar trebui să utilizeze instrumente de nivel superior, cum ar fi module speciale PAM, sisteme de detectare a intruziunilor și programe precum sshguard.

Din fericire, este ușor de apărat împotriva acestor atacuri. Nu sunt suficiente porturi deschise servicii neprotejate la lumea exterioară, și în caz de necesitate bruscă de a utiliza sistemele de protecție servicii (de exemplu, certificatele ssh) sau mecanismul de „bate la porturile“ (vorbesc despre asta la sfârșitul articolului).

Linux> iptables -A INPUT -i $ outif \
-s 192.168.1.0/24 -j DENY
FreeBSD> ipfw adăugați deny ip din \
192.168.1.0/24 fiecărui client
OpenBSD> blochează în $ outif din \
192.168.1.0/24 pentru orice

Ca o măsură de securitate alternativă sau suplimentară, puteți (și chiar trebuie să) utilizați directivele speciale ipfw și pf și configurați kernel-ul Linux:

Linux> ecoul 1> / proc / sys / net / ipv4 / conf / toate / rp_filter
FreeBSD> ipfw adăugați deny ip de la orice la orice antispoof în
OpenBSD> antispoof rapid pentru $ ext_if

Utilitare IPTABLES

La sfârșitul articolului vom examina câteva caracteristici interesante ale iptables / netfilter, care pot fi utile atunci când se protejează serverul de intruziuni. Să începem cu mecanismul de control de la distanță al paravanului de protecție, denumit "tava de port". Esența lui este de a forța firewall-ul să efectueze anumite acțiuni după conectarea la portul specificat. Mai jos este un exemplu de reguli care deschid portul SSH timp de 10 secunde după "bate" pe portul 27520th:

Al doilea iptables utilitate distribuit în pachetul xtables-addons (patch-o-matic) și este numele TARPIT. Această acțiune (la fel ca ACCEPT sau DENY), care "blochează" conexiunea, fără a permite atacatorului să o închidă. Pachete de conectare care se încadrează în TARPIT, este instalat în condiții de siguranță, cu toate acestea, dimensiunea ferestrei este egală cu zero, astfel încât aparatul la distanță nu este în măsură să trimită date, cheltuirea resurselor lor, iar conexiunea va fi închisă numai după un timeout. TARPIT poate fi utilizat în situații de urgență pentru a proteja împotriva DoS:

# iptables -A INPUT -p tcp -m tcp -dport 80 -j TARPIT

Sau să introducă atacatorul în confuzie și să lupte împotriva scanerelor
porturi (scanare TCP normală, '-sT'):

# iptables -A INPUT -p tcp -m tcp -dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp -dport 25 -j ACCEPT
# iptables -U INPUT -p tcp -m tcp -j TARPIT

Aceste reguli dau aspectul unui sistem în care toate porturile sunt deschise, dar va „îngheța“. Atunci când se încearcă să se conecteze la oricare dintre ele (cu excepția 80 și 25) Conexiune Același rezultat, dar fără „sagging“ de compuși poate fi realizată prin acțiunea amăgesc care să răspundă în mod adecvat la toate încercările de a iniția conexiunea, dar trimite RST-pachet ca răspuns la toate celelalte pachete. Pentru a încurca în continuare atacatorul, puteți utiliza acțiunea CHAOS, care activează aleator una dintre cele două acțiuni descrise mai sus.

Cu o cunoaștere suficientă și o citire atentă a documentației, puteți crea un bastion foarte puternic, care nu va fi ușor de preluat. Firewall-urile moderne, în special pf și iptables, oferă o mulțime de protecție oaspeților neinvitați, pe care le puteți obține gratuit.

Combaterea scurgerilor de resurse

Când utilizați acțiunea TARPIT, asigurați-vă că adăugați următoarea regulă la config, altfel conexiunile "saggy" vor consuma resurse atunci când procesează subsistemul conntrack:

# iptables -t prime -I PREROUTING -p tcp -dport 25 -j NOTRACK

Distribuiți acest articol cu ​​prietenii dvs.:







Articole similare

Trimiteți-le prietenilor: