Observatorul

© Imagine principală © arasdubov, 123RF.com
Această aplicație de securitate versatilă verifică vulnerabilitățile, urmărește jurnalele și acționează ca o interfață unică pentru alte instrumente.
Atacurile cibernetice nu și-au pierdut puterea. Multe companii și persoane fizice sunt expuse riscului de diverse tipuri de atacuri calculate. Educarea și conștientizarea utilizatorilor sunt foarte importante pentru combaterea pericolului atacurilor cibernetice. Din păcate, uneori administratorii de sistem nu găsesc informațiile necesare la timp, deoarece tehnicile de spargere a securității se schimbă constant. Una dintre cele mai bune practici este instalarea unui sistem de securitate care va colecta toate informațiile despre computere și va informa echipa de securitate despre amenințări. Pentru mulți utilizatori, Wazuh [1] ar putea fi răspunsul.
Wazuh este o platformă de securitate gratuită și open source care oferă protecție XDR și SIEM unificată pentru endpoint-uri și sarcini de lucru în cloud. Componentele Wazuh respectă Licența Publică Generală GNU versiunea 2 și Licența Apache versiunea 2.0. Agentul Wazuh este un instrument de monitorizare unic și ușor. Puteți implementa agentul pe laptopuri, desktop-uri, servere, instanțe cloud, containere sau mașini virtuale. De asemenea, puteți utiliza agentul pentru a obține informații despre vulnerabilități.
Wazuh poate detecta amenințări malware, identifica vulnerabilități, monitoriza integritatea fișierelor și afișa informații despre inventarul sistemului. Un alt avantaj important al Wazuh este că este ușor de integrat cu alte instrumente.
Pentru a detecta vulnerabilitățile, agenții Wazuh colectează o listă de aplicații instalate de pe endpoint-urile monitorizate și o trimit periodic către serverul Wazuh. În cadrul serverului Wazuh, modulul de Detectare a Vulnerabilităților corelează datele de inventar software cu documentele de conținut privind vulnerabilitățile pentru a detecta software-ul vulnerabil pe endpoint-ul monitorizat. Modulul de Detectare a Vulnerabilităților generează alerte atunci când detectează vulnerabilități noi sau când o vulnerabilitate este remediată din cauza unei actualizări a pachetului, a eliminării sau a unui upgrade de sistem. Alertele înseamnă că nu trebuie să monitorizați consola și să verificați rezultatele scanării în fiecare zi.
Ce să faci cu Wazuh
Wazuh ( Figura 1 ) este un instrument de securitate versatil, cu o serie de capabilități utile. Modulul FIN efectuează scanări periodice ale fișierelor pentru încălcări ale integrității. FIN scanează fișiere și directoare specifice în timp real. Este important de menționat că aceasta este o funcționalitate complet configurabilă, ceea ce înseamnă că administratorul poate seta căi specifice pentru scanare. Modulul FIN caută modificări ale fișierelor comparând sumele de control ale fișierelor scanate anterior. Acest lucru este posibil deoarece datele din scanarea anterioară sunt stocate în baza de date FIN locală.
Modulul FIN în sine nu este capabil să indice dacă un fișier este rău intenționat; acesta doar informează utilizatorul despre posibile erori legate de integritatea fișierului. Puteți configura FIN să funcționeze cu alte platforme externe, cum ar fi VirusTotal. Wazuh este, de asemenea, capabil să detecteze rootkit-uri folosind modulul Rootcheck încorporat. Rootcheck monitorizează endpoint-urile și vă avertizează dacă detectează anomalii. Detectarea acestor amenințări se bazează pe semnături. Administratorul poate actualiza aceste semnături pentru a detecta rootkit-uri sau troieni nou descoperiți. Ultimul element al detectării fișierelor rău intenționate este modulul Log Collection, care permite colectarea și analizarea datelor din instrumente precum Microsoft Defender.
Modulul de detectare a vulnerabilităților ajută administratorii de sistem să gestioneze și să corecteze vulnerabilitățile ( Figura 2 ). Wazuh funcționează pe baza datelor din următoarele surse:
- Depozitul de vulnerabilități Wazuh
- Depozit local offline
Wazuh vă va informa printr-o alertă când apare o nouă vulnerabilitate și când aceasta este remediată sau eliminată.
Informațiile despre activele din infrastructură sunt foarte importante, de exemplu, pentru un analist de securitate care va analiza o alertă de securitate. Un inventar al sistemului ajută la maximizarea vizibilității și la centralizarea controlului. Wazuh este capabil să țină evidența inventarului deoarece endpoint-urile trimit informații despre acesta către server. Puteți apoi să revizuiți aceste date și să le utilizați pentru lucrări ulterioare.
Wazuh poate monitoriza, de asemenea, apeluri sau comenzi de sistem și are o funcție Active Response care oferă vizibilitate asupra evenimentelor în timp real și automatizează întregul proces.
Instalarea Wazuh
Puteți instala indexorul Wazuh și serverul Wazuh pe o singură gazdă sau în configurație de cluster. Cea mai rapidă modalitate de a pune în funcțiune componentele centrale Wazuh este o instalare completă. Începeți prin a descărca și rula asistentul de instalare Wazuh:
curl -sO https://packages.wazuh.com/4.10/wazuh-install.sh && sudo bash ./wazuh-install.sh -aAccesați interfața web Wazuh cu
https://<ADRESĂ_IP_TABLOU_DE_PANOU_WAZUH>Furnizați-vă acreditările:
Nume de utilizator: admin Parolă: <ADMIN_PASSWORD> parolă generată aleatoriu
Pentru a instala agentul, adăugați depozitul Wazuh pentru a descărca pachetele oficiale. Apoi instalați cheia GPG:
curl -s https://packages.wazuh.com/ cheie/GPG-CHEIE-WAZUH | gpg --fără-valoare-implicită --valoare-implicită gnupg-ring:/usr/ share/valoare-implicită/wazuh.gpg --import && chmod 644 /usr/ share/valoare-implicită/wazuh.gpgAdăugați depozitul:
echo „deb [semnat de=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/stable main” | tee -a /etc/apt/sources.list.d/wazuh.listActualizați informațiile despre pachet:
apt-get update Instalați agentul Wazuh: apt-get install wazuh-agent
Activați și porniți serviciul de agent Wazuh:
reîncărcare daemon systemctl systemctl activează wazuh-agent systemctl pornește agentul wazuh
Wazuh recomandă dezactivarea depozitului Wazuh pentru a preveni actualizările accidentale. Pentru a face acest lucru, utilizați următoarea comandă:
sed -i "s/^deb/#deb/" /etc/apt/sources.list.d/wazuh.list apt-get update
Sau ați putea folosi și următoarea comandă:
echo „wazuh-agent hold” | dpkg --set-selectionsModul de detectare a vulnerabilităților
Modulul de detectare a vulnerabilităților este activat în mod implicit. Pentru a verifica și a vă asigura că modulul este activat, deschideți fișierul /var/ossec/etc/ossec.confpe serverul Wazuh. Verificați următoarele setări:
<detectare-vulnerabilități> da <index-status>da</index-status> <interval-actualizare-feed>60m </interval-actualizare-feed> </detectare-vulnerabilități>
Apoi, asigurați-vă că este configurată corect conexiunea la indexator. În mod implicit, setările indexatorului au configurată o gazdă. Gazda este setată la 0.0.0.0. Înlocuiți 0.0.0.0cu adresa IP sau numele de gazdă al nodului indexator Wazuh. Puteți găsi această valoare în fișierul de configurare Filebeat /etc/filebeat/filebeat.yml.
Reporniți managerul Wazuh:
sudo systemctl restart wazuh-managerPentru a vedea o listă de vulnerabilități active, accesați Detectarea vulnerabilităților și selectați Inventar . Puteți adăuga filtre pentru a căuta vulnerabilități pe endpoint-uri.
Integrare Wazuh
Un beneficiu important al Wazuh este capacitatea de a-l integra cu alte instrumente. Un partener puternic este TheHive [2] , o platformă OpenSource care este un ajutor excelent pentru procesul de răspuns la incidente. TheHive, care a fost creat pentru a facilita munca analiștilor SOC sau CSIRT, are API-uri REST care fac posibilă integrarea cu diverse soluții de securitate pentru a colecta evenimente de securitate și alerte pentru investigații ulterioare și urmărirea cazurilor. În TheHive, lucrați la cazuri. Când Wazuh raportează o alertă, un caz va fi creat automat în TheHive. Un analist își poate atribui apoi o sarcină și poate lucra la ea. Pentru a configura Wazuh să funcționeze cu TheHive, începeți prin a crea o nouă organizație pe interfața web TheHive. În Organizația de testare , creați un nou utilizator cu privilegii de administrator al organizației. Asigurați-vă că utilizatorul are permisiunea de a gestiona organizația, inclusiv crearea de noi utilizatori, gestionarea cazurilor și configurarea alertelor. Creați o parolă pentru acest utilizator, astfel încât să vă puteți conecta pentru a vizualiza tabloul de bord și a gestiona cazurile. Faceți clic pe Parolă nouă lângă contul de utilizator și introduceți parola dorită.
Integrarea cu Wazuh este posibilă cu ajutorul API-ului REST TheHive. Va trebui să creați un utilizator cu privilegii de analist pe TheHive care poate crea alerte prin intermediul API-ului. Apoi, generați cheia API pentru utilizator.
Configurarea Managerului Wazuh
Pentru a utiliza managerul de configurare Wazuh, începeți prin instalarea modulului TheHive Python:
sudo /var/ossec/framework/python/bin/pip3 instalează thehive4py==1.8.1Wazuh a pregătit un script Python gata făcut care va efectua automat instalarea inițială. Lipiți scriptul în /var/ossec/integrations/custom-w2thive.py. lvl_thresholdVariabila din script indică nivelul minim de alertă care va fi transmis către TheHive. Variabila poate fi personalizată astfel încât doar alertele relevante să fie transmise către TheHive ( Listarea 1 ).
Listarea 1
Transmiterea amenințărilor relevante
001 #!/var/ossec/framework/python/bin/python3 002 importă json. 003 sistem de import 004 import sistem de operare 005 import re 006 jurnal de import 007 import uuid 008 din thehive4py.api importă TheHiveApi 009 din thehive4py.models importă Alertă, AlertArtifact 010 011 #pornire configurare utilizator 012 013 # Variabile globale 014 015 #prag pentru nivelul regulilor wazuh 016 prag_nivel=0 017 #prag pentru nivelul regulilor Suricata 018 suricata_lvl_threshold=3 019 020 debug_enabled = Fals 021 #info despre alerta creată 022 info_enabled = Adevărat 023 024 #configurare utilizator final 025 026 # Setați căile 027 pwd = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) 028 fișier_log = '{0}/logs/integrations.log'.format(pwd) 029 logger = logging.getLogger(__nume__) 030 #setează nivelul de înregistrare 031 logger.setLevel(logging.WARNING) 032 dacă info_enabled: 033 logger.setLevel(logging.INFO) 034 dacă debug_enabled: 035 logger.setLevel(logging.DEBUG) 036 # creează gestionarul fișierului de jurnalizare 037 fh = logging.FileHandler(fișier_jurnal) 038 formator = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 039 fh.setFormatter(formatator) 040 logger.addHandler(fh) 041 042 043 044 def main(argumente): 045 logger.debug('#start main') 046 logger.debug('#preia locația fișierului de alertă') 047 locație_fișier_alertă = args[1] 048 logger.debug('#obține URL-ul TheHive') 049 thive = args[3] 050 logger.debug('#obține cheia API TheHive') 051 thive_api_key = args[2] 052 thive_api = TheHiveApi(thive, thive_api_key) 053 logger.debug('#deschide fișierul de alertă') 054 w_alert = json.load(open(locația_fișierului_alertă)) 055 logger.debug('#date de alertă') 056 logger.debug(str(w_alert)) 057 logger.debug('#gen json către text-cheie-punct') 058 alt = pr(w_alert,'',[]) 059 logger.debug('#formatare descriere') 060 format_alt = md_format(alt) 061 logger.debug('#căutare artefacte') 062 artefacts_dict = artifact_detect(format_alt) 063 alertă = generate_alert(format_alt, artifacts_dict, w_alert) 064 logger.debug('#filtrare prag') 065 dacă w_alert['regulă']['grupuri']==['id-uri','suricata']: 066 #verificarea existenței câmpului data.alert.severity 067 dacă 'date' este în w_alert.keys(): 068 dacă 'alertă' este în w_alert['date']: 069 #verificarea nivelului evenimentului sursă 070 dacă int(w_alert['data']['alert']['severity'])<=suricata_lvl_threshold: 071 trimite_alertă(alertă, thive_api) 072 elif int(w_alert['regulă']['nivel'])>=prag_nivel: 073 #dacă evenimentul este diferit de suricata ȘI suricata-event-type: alert verifică lvl_threshold 074 trimite_alertă(alertă, thive_api) 075 076 077 def pr(date, prefix, alt): 078 pentru cheie,valoare în data.items(): 079 dacă hasattr(valoare,'chei'): 080 pr(valoare, prefix + '.' + str(cheie), alt = alt) 081 altfel: 082 alt.append((prefix+'.'+str(cheie)+'||'+str(valoare))) 083 return alt 084 085 086 087 def md_format(alt,format_alt=''): 088 md_title_dict = {} 089 #sortat cu prima cheie 090 deocamdată în alt: 091 acum = acum[1:] 092 #corectează primul simbol al ultimului buton 093 punct = acum.split('||')[0].find('.') 094 dacă punct==-1: 095 md_title_dict[now.split('|||')[0]] =[acum] 096 altfel: 097 dacă acum[0:punct] în md_title_dict.keys(): 098 (md_title_dict[acum[0:punct]]).append(acum) 099 altfel: 100 md_title_dict[acum[0:punct]]=[acum] 101 deocamdată în md_title_dict.keys(): 102 format_alt+='### '+now.capitalize()+'\n'+'| cheie | val |\n| ------ | ------ |\n' 103 pentru închiriere în md_title_dict[acum]: 104 cheie,val = let.split('||')[0],let.split('||')[1] 105 format_alt+='| **' + cheie + '** | ' + val + ' |\n' 106 return format_alt 107 108 109 def detectarea_artifactului(format_alt): 110 artefacts_dict = {} 111 artefacts_dict['ip'] = re.findall(r'\d+\d+\d+\d+\d+',format_alt) 112 artefacts_dict['url'] = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F] \) 113 [0-9a-fA-F]))+',format_alt) 114 artefacts_dict['domeniu'] = [] 115 deocamdată în artefacts_dict['url']: artefacts_dict['domain'].append(now.split('//')[1].split('/')[0]) 116 returnează artefacts_dict 117 118 119 def generate_alert(format_alt, artifacts_dict,w_alert): 120 #generare alertă sursăRef 121 sourceRef = str(uuid.uuid4())[0:6] 122 artefacte = [] 123 dacă 'agent' este în w_alert.keys(): 124 dacă 'ip' nu se află în w_alert['agent'].keys(): 125 w_alert['agent']['ip']='fără IP de agent' 126 altfel: 127 w_alert['agent'] = {'id':'fără ID agent', 'name':'fără nume agent'} 128 129 pentru cheie,valoare în artifacts_dict.items(): 130 pentru val în valoare: 131 artefacts.append(AlertArtifact(dataType=key, data=val)) 132 alertă = Alertă(titlu=w_alert['regulă']['descriere'], 133 tlp=2, 134 tags=['wazuh', 135 'regulă='+w_alert['regulă']['id'], 136 'agent_name='+w_alert['agent']['nume'], 137 'agent_id='+w_alert['agent']['id'], 138 'agent_ip='+w_alert['agent']['ip'],], 139 descriere=format_alt, 140 tip='alertă_wazuh', 141 sursă='wazuh', 142 sourceRef=sourceRef, 143 artefacte = artefacte,) 144 alertă de returnare 145 146 147 148 149 def trimite_alertă(alertă, thive_api): 150 răspuns = thive_api.create_alert(alertă) 151 dacă răspuns.cod_stare == 201: 152 logger.info('Creează alertă TheHive: '+ str(response.json()['id'])) 153 altfel: 154 logger.error('Eroare la crearea alertei TheHive: {}/{}'.format(response.status_code, response.text)) 155 156 157 158 dacă __nume__ == "__principal__": 159 160 încercări: 161 logger.debug('mod de depanare') # dacă depanarea este activată 162 # Funcția principală 163 main(sys.argv) 164 165 cu excepția: 166 logger.exception('EGOR')
Wazuh a pregătit un script Bash special care execută scriptul din Listarea 1. Am creat scriptul bash ca /var/ossec/integrations/custom-w2thive( Listarea 2 ).
Listarea 2
Script Bash
01 #!/bin/sh 02 # Drepturi de autor (C) 2015-2020, Wazuh Inc. 03 # Creat de Wazuh, Inc. <info@wazuh.com>. 04 # Acest program este software liber; îl puteți redistribui și/sau modifica conform termenilor GP> 05 06 WPYTHON_BIN="framework/python/bin/python3" 07 08 SCRIPT_PATH_NAME="$0" 09 10 DIR_NAME="$(cd $(dirname ${SCRIPT_PATH_NAME}); pwd -P)" 11 SCRIPT_NAME="$(nume_de_bază ${SCRIPT_PATH_NAME})" 12 13 cazuri ${DIR_NAME} în 14 */activ-response/bin | */wodles*) 15 dacă [ -z "${WAZUH_PATH}" ]; atunci 16 WAZUH_PATH="$(cd ${DIR_NAME}/../..; pwd)" 17 fi 18 ani 19 PYTHON_SCRIPT="${NUME_DIR}/${NUME_SCRIPT}.py" 20 ;; 21 */bin) 22 dacă [ -z "${WAZUH_PATH}" ]; atunci 23 WAZUH_PATH="$(cd ${DIR_NAME}/..; pwd)" 24 fi 25 26 PYTHON_SCRIPT="${WAZUH_PATH}/framework/scripts/${SCRIPT_NAME}.py" 27 ;; 28 */integrări) 29 dacă [ -z "${WAZUH_PATH}" ]; atunci 30 WAZUH_PATH="$(cd ${DIR_NAME}/..; pwd)" 31 de ani 32 33 PYTHON_SCRIPT="${NUME_DIR}/${NUME_SCRIPT}.py" 34 ;; 35 de secunde 36 37 ${WAZUH_PATH}/${WPYTHON_BIN} ${PYTHON_SCRIPT} $@
Schimbați permisiunile fișierelor și proprietatea scripturilor pentru a vă asigura că Wazuh are permisiunile necesare:
sudo chmod 755 /var/ossec/integrations/custom-w2thive.py sudo chmod 755 /var/ossec/integrations/custom-w2thive sudo chown root:ossec /var/ossec/integrations/custom-w2thive.py sudo chown root:ossec /var/ossec/integrations/custom-w2thive
Pentru a permite Wazuh să ruleze scriptul de integrare, adăugați liniile din Listarea 3 în fișierul de configurare al managerului situat la /var/ossec/etc/ossec.conf. Furnizați adresa IP pentru serverul TheHive împreună cu cheia API generată anterior.
Listarea 3
Adăugați la ossec.conf
<configurare_ossec> ? <integrare> <name>personalizat-w2thive</name> <hook_url>http://TheHive_Server_IP:9000</hook_url> <api_key>RWw/Ii0yE6l+Nnd3nv3o3Uz+5UuHQYTM</api_key> <alert_format>json</alert_format> </integrare> ? </ossec_config>
Reporniți managerul pentru a aplica modificările:
sudo systemctl restart wazuh-managerClamAV
ClamAV este un set de instrumente anti-malware open source conceput pentru diverse cazuri de utilizare, cum ar fi securitatea endpoint-urilor, scanarea web și scanarea e-mailurilor. ClamAV poate oferi protecție în timp real la endpoint-uri.
Pentru a colecta jurnalele ClamAV de la endpoint-urile Linux, eliminați eticheta de comentariu # dinaintea LogSyslog trueinstrucțiunii din /etc/clamav/clamd.conf. Jurnalele colectate de ClamAV ar trebui să fie apoi vizibile în consola Wazuh.
Suricata
De asemenea, puteți integra Wazuh cu sistemul Suricata IDS [4] . Suricata poate oferi informații suplimentare despre securitatea rețelei dvs. cu ajutorul capacităților sale de inspecție a traficului de rețea.
Instalați Suricata pe endpoint:
sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata -y sudo systemctl activează suricata.service
Modificați setările Suricata în /etc/suricata/suricata.yamlfișier și setați variabilele din Listarea 4 .
Listarea 4
Variabile Suricata
sudo nano /etc/suricata/suricata.yaml HOME_NET: "<IP_gazdă>" EXTERNAL_NET: "orice" calea-regulii-implicite: /etc/suricata/rules fișiere de reguli: - „*.rules” # Configurarea statisticilor globale statistici: activat: da # Suport pentru captură de mare viteză pe Linux pachet af: - interfață: enp0s3
Reporniți serviciul Suricata:
sudo systemctl restart suricataApoi adăugați următoarea configurație în /var/ossec/etc/ossec.conffișierul agentului Wazuh:
<configurare_ossec> <localfile> <log_format>json</log_format> <location>/var/log/suricata/eve.json</location> </localfile> </ossec_config>
Reporniți agentul Wazuh pe endpoint:
sudo systemctl restart wazuh-agent Răspuns la incidente
Cea mai importantă utilizare a Wazuh este răspunsul la incidente. Prin urmare, este important să știți cum să verificați și să căutați jurnalele colectate de agenți. Când extindeți lista din partea stângă a consolei, va apărea fila Explore . Selectați Discover pentru a căuta toate alertele colectate. Partea bună este că puteți căuta toate aceste alerte folosind filtre. De exemplu, puteți căuta doar alerte de severitate ridicată și critică sau alerte dintr-un anumit interval de timp ( Figura 3 ).
De asemenea, puteți căuta evenimente legate de un anumit program. Pentru un exemplu simplu, ce se întâmplă dacă trebuie să aflați dacă un crontab a fost rulat și editat undeva? Faceți clic pe Adăugare filtru și completați valorile ( Figurile 4 și 5 ).
Figura 5: Filtrarea referințelor către crontab permite acestui administrator să se concentreze asupra activităților potențial nefaste.Automatizare
Automatizarea proceselor este foarte utilă și importantă în securitatea cibernetică. Blocarea automată a unui cont de utilizator, blocarea unei adrese IP sau repornirea unei mașini este utilă în munca zilnică a unui analist.
Pentru a configura un răspuns activ, verificați mai întâi fișierul de configurare de pe serverul Wazuh /var/ossec/etc/ossec.conf. Acest fișier ar trebui adăugat în mod implicit, dar adăugați unul dacă nu există deja.
Următorul cod configurează Wazuh pentru a dezactiva un cont de utilizator:
<comandă> <name>dezactivare-cont</name> <executable>dezactivare-cont</executable> <timeout_allowed>da</timeout_allowed> </comandă>
Apoi adăugați sau modificați <active-response>regula în fișierul de configurare:
<răspuns-activ> <disabled>nu</disabled> <command>dezactivare-cont</command> <locație>locală</locație> <nivel>7</nivel> <timeout>600</timeout> </răspuns-activ>
Folosește <agent_id>eticheta pentru a specifica ID-ul agentului Wazuh care trebuie să ruleze scriptul, indiferent de locul în care a avut loc evenimentul. De exemplu:
<location>agent-definit</location> <agent_id>001</agent_id>
Reporniți managerul Wazuh pentru a aplica toate modificările:
sudo systemctl restart wazuh-managerConcluzie
După cum puteți vedea, o simplă configurare a serverului și agentului Wazuh poate ajuta la controlul infrastructurii. Desigur, configurația exemplu din acest articol nu este o rețetă completă pentru o protecție completă; într-un context real, va trebui să implementați interogări și să le automatizați. Este important să rețineți manualele care le vor spune analiștilor cum să reacționeze la o anumită alertă și amenințare. Wazuh merită cu siguranță luarea în considerare atunci când implementați o strategie de securitate pentru rețeaua dvs.
Informații
- Wazuh: https://github.com/wazuh
- TheHive: https://github.com/TheHive-Project/TheHive
- ClamAV: https://www.clamav.net/
- Suricata: https://suricata.io/




Comentarii
Trimiteți un comentariu