OSSEC – Installazione Server
Per l’installazione di OSSEC, utilizzeremo e configureremo l’ atomicorp repository. Esistono i repository per le maggiori distribuzioni Linux (potete consultare a questo indirizzo la lista completa). Esiste anche la possibilità di installare OSSEC tramite sorgenti oppure scaricare la VirtualAppliance (basata su CentOS 7.4, OSSEC 2.9.3, Elasticsearch-Logstash-Kibana 6.1.1 e Cerebro 0.7.2).
Di seguito utilizzeremo, come sistema ospite, una distribuzione CentOS 7.7.
Dopo aver effettuato un’installazione minimal di CentOS 7.7, effettuiamo un update del sistema con gli ultimi rilasci ed installiamo alcuni packages che ci serviranno successivamente:
# yum update # yum -y install net-tools lsof wget telnet # yum -y install mariadb mariadb-server mariadb-devel epel-release
Procediamo con installare il repository e successivamente installare i package relativi ad OSSEC Server:
# wget -q -O - https://updates.atomicorp.com/installers/atomic | sh # yum -y install expect pcre2 libevent tcl \ ossec-hids ossec-hids-server ossec-hids-mysql \ GeoIP GeoIP-GeoLite-data GeoIP-GeoLite-data-extra geoipupdate # systemctl daemon-reload
Prima di avviare il nostro server, configuriamo il database MariaDB per interagire con OSSEC e successivamente avviamo il servizio:
# systemctl enable --now mariadb # mysql_secure_installation
Creiamo su MariaDB, un database (ossec_db) e un utente (ossec_usr) con password (ossec_pwd) che abbia tutti i diritti sul database:
# mysql -p CREATE DATABASE ossec_db; CREATE USER 'ossec_usr' IDENTIFIED BY 'ossec_pwd'; GRANT ALL ON ossec_db.* to 'ossec_usr'@'localhost' IDENTIFIED BY 'ossec_pwd'; FLUSH PRIVILEGES; \q
Una volta creato il database, creiamone lo schema lanciando da riga di comando:
# mysql -p ossec_db < /usr/share/ossec/contrib/mysql.schema
Modifichiamo la configurazione di default ( /var/ossec/etc/ossec.conf )in maniera tale da creare il file alerts.json e per fare in modo che OSSEC possa inviare alert via email e altri dati al database appena creato:
<ossec_config> <global> <jsonout_output>yes</jsonout_output> <== configurazione dell'output di OSSEC su file alert.json <email_notification>yes</email_notification> <== configurazione invio alert via email <smtp_server>192.168.xxx.xxx</smtp_server> <email_from>ossec@anthesia.lan</email_from> <email_to>xxx@anthesia.lan</email_to> </global> <database_output> <== configurazione output su DB MySQL <hostname>localhost</hostname> <username>ossec_usr</username> <password>ossec_pwd</password> <database>ossec_db</database> <type>mysql</type> </database_output> ... <remote> <== abilitazione syslog remoto su porta UDP/514 <connection>syslog</connection> <port>514</port> <protocol>udp</protocol> <allowed-ips>192.168.xxx.0/24</allowed-ips> <== Host abilitati ad inviare dati al syslog locale <allowed-ips>192.168.yyy.0/24</allowed-ips> <local_ip>192.168.xxx.xxx</local_ip> <== IP Address per il binding del servizio syslog </remote> <remote> <connection>secure</connection> <== abilitazione syslog sicuro su porta UDP/1514 <port>1514</port> <protocol>udp</protocol> <allowed-ips>192.168.xxx.0/24</allowed-ips> <== Host abilitati ad inviare dati al syslog locale <allowed-ips>192.168.yyy.0/24</allowed-ips> <local_ip>192.168.xxx.xxx</local_ip> <== IP Address per il binding del servizio syslog </remote> ...
</ossec_config>
Abilitiamo la scrittura dei log sul database configurato:
# /var/ossec/bin/ossec-control enable database
Procediamo con l’abilitazione e l’avvio del servizio:
# systemctl enable ossec-hids # systemctl start ossec-hids
Per verificare che tutti i servizi di OSSEC siano in esecuzione:
# systemctl status ossec-hids
● ossec-hids.service - SYSV: OSSEC-HIDS is an Open Source Host-based Intrusion Detection System.
Loaded: loaded (/etc/rc.d/init.d/ossec-hids; generated)
Active: active (running) since Sat 2020-04-18 12:56:04 CEST; 33s ago
Docs: man:systemd-sysv-generator(8)
Process: 16899 ExecStart=/etc/rc.d/init.d/ossec-hids start (code=exited, status=0/SUCCESS)
Tasks: 7 (limit: 12504)
Memory: 13.0M
CGroup: /system.slice/ossec-hids.service
├─16931 /var/ossec/bin/ossec-dbd <== daemon che inserisce i file di log nel DB configurato
├─16937 /var/ossec/bin/ossec-execd <== daemon che esegue le active responses
├─16945 /var/ossec/bin/ossec-logcollector <== daemon che monitora file e comandi per nuovi messaggi
├─16946 /var/ossec/bin/ossec-analysisd <== daemon che riceve i messaggi di log e li compara con le regole, eventualmente creando gli alerts
├─16951 /var/ossec/bin/ossec-remoted <== daemon che comunica con gli agent
├─16956 /var/ossec/bin/ossec-syscheckd <== daemon che si occupa dell'integrity checking
└─16961 /var/ossec/bin/ossec-monitord <== daemon che monitora la connettività con gli agent ed effettua la compressione giornaliera dei file di log
Nei prossimi post vedremo come analizzare i dati che ossec raccoglie, anche grazie ai suoi agent. Procediamo ora con l’installazione e configurazione di un agent.