În Am explicat cum să lansăm o versiune stabilă a Suricata pe Ubuntu 18.04 LTS. Configurarea IDS pe un singur nod și conectarea seturilor gratuite de reguli nu este foarte complicată. Astăzi vom analiza cum să protejăm rețeaua corporativă de cele mai frecvente tipuri de atacuri folosind Suricata instalată pe un server virtual. Pentru aceasta, avem nevoie de un VDS pe Linux cu două nuclee de procesare. Cantitatea de memorie RAM depinde de încărcare: unii se pot descurca cu 2 GB, în timp ce pentru sarcini mai serioase pot fi necesari 4 sau chiar 6. Avantajul mașinii virtuale este posibilitatea de a experimenta: poți începe cu o configurație minimă și să crești resursele pe măsură ce este necesar.
foto: Reuters
Unificarea rețelelor
Mutarea IDS pe o mașină virtuală poate fi necesară în primul rând pentru teste. Dacă nu ai mai avut de-a face cu astfel de soluții, nu te grăbi să comanzi echipamente fizice și să schimbi arhitectura rețelei. Este mai bine să testezi sistemul în siguranță și fără costuri inutile pentru a determina nevoile în resursele computaționale. Este important să înțelegi că tot traficul corporativ va trebui să treacă printr-un singur nod extern: pentru a conecta rețeaua locală (sau mai multe rețele) la VDS cu IDS Suricata instalată, poți folosi — un server VPN multiplatformă, ușor de configurat, care oferă criptare de încredere. Conexiunea biroului la internet poate să nu aibă un IP real, așa că este mai bine să o ridici pe un VPS. În depozitul Ubuntu nu sunt pachete gata, software-ul va trebui descărcat fie de pe , fie dintr-un depozit extern pe serviciul (dacă ai încredere în acesta):
sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get updatePoți vizualiza lista pachetelor disponibile folosind următoarea comandă:
apt-cache search softether 
Vom avea nevoie de softether-vpnserver (serverul în configurația de test este pornit pe VDS), precum și de softether-vpncmd — utilități de linie de comandă pentru configurarea acestuia.
sudo apt-get install softether-vpnserver softether-vpncmdPentru configurarea serverului se folosește o utilitate specială de linie de comandă:
sudo vpncmd 
Nu vom intra în detalii despre configurare: procedura este destul de simplă și bine descrisă în numeroase publicații, nemaifiind direct legată de subiectul articolului. Pe scurt, după ce porniți vpncmd, trebuie să alegeți opțiunea 1 pentru a accesa consola de administrare a serverului. Pentru aceasta, este necesar să introduceți numele localhost și să apăsați enter în loc să introduceți numele hub-ului. În consolă se setează parola de administrator cu comanda serverpasswordset, se șterge hub-ul virtual DEFAULT (comanda hubdelete) și se creează unul nou cu numele Suricata_VPN, precum și parola sa (comanda hubcreate). Apoi trebuie să accesați consola de administrare a noului hub cu comanda hub Suricata_VPN pentru a crea un grup și un utilizator cu ajutorul comenzilor groupcreate și usercreate. Parola utilizatorului se setează cu userpasswordset.
SoftEther suportă două moduri de transmitere a traficului: SecureNAT și Local Bridge. Primul este o tehnologie proprietară pentru construirea unei rețele private virtuale cu propriul NAT și DHCP. SecureNAT nu necesită TUN/TAP și nici configurarea Netfilter sau a altui firewall. Rutarea nu afectează nucleul sistemului, iar toate procesele sunt virtualizate și funcționează pe orice VPS/VDS, indiferent de hypervisorul folosit. Acest lucru conduce la o încărcare mai mare a procesorului și la o viteză redusă comparativ cu modul Local Bridge, care leagă hub-ul virtual SoftEther de adaptorul de rețea fizic sau de dispozitivul TAP.
Configurarea devine mai complicată în acest caz, deoarece rutarea se realizează la nivelul nucleului cu ajutorul Netfilter. VDS-urile noastre sunt construite pe Hyper-V, așa că în pasul final creăm un pod local și activăm dispozitivul TAP cu comanda bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. După ieșirea din consola de administrare a hub-ului, vom observa în sistem o nouă interfață de rețea, căreia nu i-a fost încă atribuit un IP:
ifconfig 
Apoi va trebui să activăm rutarea pachetelor între interfețe (ip forward), dacă aceasta nu este activată:
sudo nano /etc/sysctl.confDebifați următoarea linie:
net.ipv4.ip_forward = 1Salvăm modificările în fișier, ieșim din editor și le aplicăm cu ajutorul următoarei comenzi:
sudo sysctl -pApoi va trebui să definim pentru rețeaua virtuală o subrețea cu IP-uri fictive (de exemplu, 10.0.10.0/24) și să atribuim o adresă interfeței:
sudo ifconfig tap_suricata_vp 10.0.10.1/24Apoi va fi necesar să definim regulile Netfilter.
1. Permiteți pachetele de intrare pe porturile ascultate (protocolul proprietar SoftEther folosește HTTPS și portul 443)
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 992 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT2. Configurăm NAT din subnetul 10.0.10.0/24 pe IP-ul principal al serverului
sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 45.132.17.1403. Permitem pachetele trecătoare din subnetul 10.0.10.0/24
sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT4. Permitem pachetele trecătoare pentru conexiuni deja stabilite
sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPTAutomatizarea procesului la repornirea sistemului folosind scripturi de inițializare va rămâne la latitudinea cititorilor ca temă de casă.
Dacă doriți să alocați IP-uri clienților automat, va trebui să instalați un serviciu DHCP pentru podul local. Cu asta, configurația serverului este completă și putem trece la clienți. SoftEther suportă multe protocoale, utilizarea acestora depinzând de capabilitățile echipamentului din rețeaua locală.
netstat -ap |grep vpnserver 
Deoarece routerul nostru de test funcționează și el pe Ubuntu, vom instala dintr-un depozit extern pachetele softether-vpnclient și softether-vpncmd pentru a utiliza protocolul proprietar. Va trebui să lansăm clientul:
sudo vpnclient startPentru configurare, folosim utilitarul vpncmd, alegând localhost ca mașină pe care este lansat vpnclient. Toate comenzile se execută în consolă: va fi necesar să creăm o interfață virtuală (NicCreate) și un cont (AccountCreate).
În unele cazuri, este necesar să specificăm metoda de autentificare prin comenzile AccountAnonymousSet, AccountPasswordSet, AccountCertSet și AccountSecureCertSet. Deoarece nu folosim DHCP, adresa pentru adaptorul virtual se setează manual.
În plus, va trebui să activăm ip forward (parametrul net.ipv4.ip_forward=1 în fișierul /etc/sysctl.conf) și să configurăm rutele statice. Dacă este necesar, pe VDS cu Suricata se pot configura redirecționări de porturi pentru utilizarea serviciilor instalate în rețeaua locală. Astfel, fuzionarea rețelelor poate fi considerată finalizată.
Configurația pe care o propunem va arăta cam așa:

Configurăm Suricata
În Am vorbit despre cele două moduri de funcționare ale IDS: prin coada NFQUEUE (modul NFQ) și prin zero copy (modul AF_PACKET). Al doilea necesită două interfețe, dar se distinge printr-o viteză de reacție mai mare — pe acesta îl vom folosi. Parametrul este setat implicit în /etc/default/suricata. De asemenea, va fi necesar să edităm secțiunea vars din /etc/suricata/suricata.yaml, specificând subrețeaua virtuală ca rețea locală.

Pentru a reporni IDS, utilizăm comanda:
systemctl restart suricataSoluția este gata, acum poate fi necesar să o verificați pentru rezistența la acțiunile atacatorilor.
Simulăm atacuri
Există mai multe scenarii de utilizare a serviciului IDS extern:
Protecție împotriva atacurilor DDoS (scop principal)
Implementarea unei astfel de variante în interiorul unei rețele corporative este dificilă, deoarece pachetele pentru analiză trebuie să ajungă la interfața sistemului care este conectată la internet. Chiar dacă IDS le blochează, traficul nedorit poate să afecteze canalul de transmisie a datelor. Pentru a evita acest lucru, este necesar să comandați un VPS cu o conexiune la internet suficient de performantă, capabilă să preia tot traficul rețelei locale și tot traficul extern. Adesea, este mai simplu și mai ieftin decât să extindeți canalul de birou. Ca alternativă, merită menționate serviciile specializate de protecție împotriva DDoS. Costurile acestora sunt comparabile cu cele ale unui server virtual, fără a necesita o configurare laborioasă, dar există și dezavantaje — pentru banii lor, clientul primește doar protecție împotriva DDoS, în timp ce propriul IDS poate fi configurat în moduri variate.
Protecție împotriva altor tipuri de atacuri externe
Suricata este capabilă să facă față încercărilor de exploatare a diferitelor vulnerabilități în serviciile accesibile din internet în rețeaua corporativă (server de mail, server web și aplicații web etc.). De obicei, pentru aceasta IDS-ul este instalat în interiorul rețelei interne, după dispozitivele de frontieră, dar și amplasarea externă este o opțiune validă.
Protecție împotriva atacatorilor interni
În ciuda tuturor eforturilor administratorului de sistem, computerele din rețeaua corporativă pot fi infectate cu malware. În plus, în rețeaua locală pot apărea uneori indivizi rău intenționați care încearcă să efectueze anumite operațiuni nelegitime. Suricata poate ajuta la blocarea acestor încercări, deși pentru a proteja rețeaua internă, este mai bine să o instalați în interiorul perimetrului și să o folosiți împreună cu un switch administrat capabil să cloneze traficul pe un singur port. O IDS externă nu este inutilă în acest caz - cel puțin va putea să detecteze încercările malware-urilor din rețeaua locală de a se conecta la un server extern.
Pentru început, să creăm încă un VPS de atac de test și vom ridica Apache pe router-ul rețelei locale cu configurația implicită, după care vom forwarda portul 80 de pe serverul IDS către acesta. Apoi, vom simula un atac DDoS de pe nodul de atac. Pentru aceasta, vom descărca de pe GitHub, vom compila și vom rula pe nodul de atac un mic program numit xerxes (poate fi necesară instalarea pachetului gcc):
git clone https://github.com/Soldie/xerxes-DDos-zanyarjamal-C.git
cd xerxes-DDos-zanyarjamal-C/
gcc xerxes.c -o xerxes
./xerxes 45.132.17.140 80Rezultatul a fost următorul:

Suricata blochează atacatorul, iar pagina Apache implicită se deschide, în ciuda atacului nostru improvizat și a canalului destul de slab al rețelei „oficelist”, care este, de fapt, o rețea de acasă. Pentru sarcini mai serioase, merită să utilizăm . Acesta este destinat realizării testelor de penetrare și permite simularea diverselor atacuri. Instrucțiunile pentru instalare sunt disponibile pe site-ul proiectului. După instalare, va fi necesară o actualizare:
sudo msfupdatePentru testare, lansăm msfconsole.

Din păcate, în ultimele versiuni ale framework-ului lipsește opțiunea de hacking automat, așa că exploiturile trebuie să fie parcurse manual și lansate cu comanda use. Inițial, este bine să determinăm porturile deschise pe mașina atacată, de exemplu, folosind nmap (în cazul nostru, netstat pe nodul atacat ar fi suficient), iar apoi să selectăm și să utilizăm modulele corespunzătoare. .
Există și alte instrumente pentru verificarea rezistenței IDS la atacuri, inclusiv servicii online. Din curiozitate, se poate organiza un test de stres folosind versiunea trial . Pentru a verifica reacția la acțiunile celor din interior, ar trebui să instalați instrumente speciale pe una dintre mașinile din rețeaua locală. Există o mulțime de opțiuni și ar trebui să le aplicați periodic nu doar pe un teren experimental, ci și pe sistemele de lucru, dar aceasta este o poveste complet diferită.
Sursa: habr.com
