Snort è un sistema di prevenzione delle intrusioni di rete leggero e open source per l'esecuzione di un sistema di rilevamento delle intrusioni di rete (NIDS). Snort viene utilizzato per monitorare i dati del pacco inviati/ricevuti tramite una specifica interfaccia di rete. I sistemi di rilevamento delle intrusioni di rete possono rilevare le minacce che prendono di mira i punti deboli e le vulnerabilità del sistema utilizzando tecnologie di rilevamento e analisi del protocollo basate su firme.
Quando il software NIDS è installato e configurato correttamente, è in grado di identificare diversi tipi di attacchi e sospetti, come attacchi CGI, violazioni delle policy di rete, sonde SMB, infezioni da malware, un sistema compromesso, scansione delle porte invisibile, ecc.
In questo tutorial impariamo come installare Snort 3 su Ubuntu 20.04 .
Alcune delle nuove funzionalità di Snort 3:
- Supporta più thread di elaborazione dei pacchetti
- Consente l'elaborazione di più pacchetti
- Genera automaticamente la documentazione di riferimento
- Utilizza una semplice configurazione con script
- Rendi i componenti chiave collegabili
- Consente agli utenti di scrivere i propri plugin
- Configurazione condivisa e tabella degli attributi
- Consente alle regole di essere eseguite più velocemente
Fase 1:aggiorna il sistema
Innanzitutto, aggiorna e aggiorna il tuo sistema Ubuntu
sudo apt update
sudo apt upgrade
Passaggio 2:installa le dipendenze richieste
Il repository predefinito di Ubuntu ha il pacchetto snort. Il pacchetto snort disponibile è la vecchia versione. Per installare Snort 3, dobbiamo costruire dal sorgente. Prima di installare Snort 3, è necessario installare i prerequisiti e le librerie richieste.
Installa i pacchetti delle dipendenze di Snort 3 con il seguente comando:
sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev
Dopo aver installato le dipendenze, è stata creata una directory in cui compilare e mantenere i file di origine per Snort con il seguente comando:
mkdir snort-source-files
cd snort-source-files
Quindi, scarica e installa l'ultima versione della libreria Snort Data Acquisition (LibDAQ). Per l'installazione di LibDAQ dovremo compilarlo e installarlo dal sorgente con il seguente comando.
git clone https://github.com/snort3/libdaq.git
cd libdaq
./bootstrap
./configure
make make install
La dipendenza successiva è Tcmalloc, che ottimizzerà l'allocazione della memoria e fornirà un migliore utilizzo della memoria.
Installa Tcmalloc con il seguente comando.
cd ../ wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9/gperftools-2.9.tar.gz
tar xzf gperftools-2.9.tar.gz cd gperftools-2.9/
./configure
make make install
Passaggio 3:installa Snort 3 su Ubuntu 20.04
Dopo aver impostato le dipendenze, scaricheremo e installeremo Snort 3 su Ubuntu 20.04.
01. Clona il repository GitHub ufficiale di Snort 3.
cd ../
git clone git://github.com/snortadmin/snort3.git
02. Cambia la directory in Snort3
cd snort3/
03. Da lì configura e abilita tcmalloc con il seguente comando.
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
04. Passa alla directory build e compila e installa Snort 3 usando make e make install con il comando seguente.
cd build
make
make install
05. Al termine dell'installazione, aggiorna le librerie condivise.
sudo ldconfig
Snort per impostazione predefinita è installato nella directory /usr/local/bin/snort, è buona norma creare un collegamento simbolico per /usr/sbin/snort
sudo ln -s /usr/local/bin/snort /usr/sbin/snort
06. Verifica l'installazione di Snort 3
snort -V
Uscita:
,,_ -> Snort++ <-
o" )~ Version 3.1.10.0
'''' By Martin Roesch & The Snort Team
http://snort.org/contact#team
Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using DAQ version 3.0.4
Using LuaJIT version 2.1.0-beta3
Using OpenSSL 1.1.1f 31 Mar 2020
Using libpcap version 1.9.1 (with TPACKET_V3)
Using PCRE version 8.39 2016-06-14
Using ZLIB version 1.2.11
Using LZMA version 5.2.4
Se vedi un output simile, Snort 3 è installato correttamente.
Configura le schede di interfaccia di rete
Trova l'interfaccia su cui Snort sta ascoltando il traffico di rete e abilita promiscuo modalità per poter vedere tutto il traffico di rete inviatogli.
ip link set dev eh0 promisc on
Verifica con il seguente comando.
ip add sh eth0
Uscita:
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f2:3c:92:ed:7e:d8 brd ff:ff:ff:ff:ff:ff
inet 74.207.230.186/24 brd 74.207.230.255 scope global dynamic eth0
valid_lft 72073sec preferred_lft 72073sec
inet6 2600:3c02::f03c:92ff:feed:7ed8/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 60sec preferred_lft 20sec
inet6 fe80::f03c:92ff:feed:7ed8/64 scope link
valid_lft forever preferred_lft forever
Quindi, disabilita l'offload dell'interfaccia per impedire a Snort 3 di troncare pacchetti di grandi dimensioni, fino a un massimo di 1518 byte. Verifica se questa funzione è abilitata con il seguente comando.
ethtool -k eth0 | grep receive-offload
Se vedi questo output che GRO è abilitato mentre LRO è fisso o LRO è abilitato.
Uscita.
generic-receive-offload: on
large-receive-offload: on
Disabilitalo con il seguente comando.
ethtool -K eth0 gro off lro off
Due assicurano che le modifiche persistano durante il riavvio del sistema, dovremo creare e abilitare un'unità di servizio systemd per implementare le modifiche.
sudo nano /etc/systemd/system/snort3-nic.service
Incolla la seguente configurazione che punta alla tua interfaccia di rete.
[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ip link set dev eth0 promisc on ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off TimeoutStartSec=0 RemainAfterExit=yes [Install] WantedBy=default.target
Ricarica le impostazioni di configurazione del sistema:
sudo systemctl daemon-reload
Avvia e abilita il servizio all'avvio con il seguente comando:
sudo systemctl enable --now snort3-nic.service
Uscita.
Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.
Verifica snort3-nic.service con:
sudo systemctl status snort3-nic.service
Uscita.
● snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
Loaded: loaded (/etc/systemd/system/snort3-nic.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2021-09-18 12:35:17 UTC; 4min 59s ago
Process: 182782 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0>
Process: 182783 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0>
Main PID: 182783 (code=exited, status=0/SUCCESS)
Sep 18 12:35:17 li72-186 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable >
Sep 18 12:35:17 li72-186 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable >
Installa i set di regole della community di Snort 3
In Snort, i set di regole sono il principale vantaggio del motore di rilevamento delle intrusioni. Esistono tre tipi di regole Snort:regole della community, regole registrate, regole per gli abbonati. Le regole della community vengono inviate dalla community open source o dagli integratori di snort.
Mostreremo come installare le regole della community.
Innanzitutto, crea una directory per le Regole in /usr/local/etc/snort
mkdir /usr/local/etc/rules
Scarica le regole della community di Snort 3. Puoi trovarlo sulla pagina di download ufficiale di Snort3.
wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
Estrai le regole scaricate e inseriscile nella directory che abbiamo creato in precedenza /usr/local/etc/rules/
tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/
Snort 3 include due file di configurazione principali, snort_defaults.lua e snort.lua .
snort.lua contiene la configurazione principale di Snort, consentendo l'implementazione e la configurazione dei preprocessori Snort, l'inclusione di file di regole, la registrazione, i filtri di eventi, l'output, ecc.
Il snort_defaults.lua i file contengono valori predefiniti come percorsi di regole, AppID, elenchi di intelligence e variabili di rete.
Quando i file delle regole vengono estratti e posizionati, configureremo uno di questi file di configurazione chiamato snort.lua. Apri il file con il tuo editor preferito e vedrai qualcosa di simile config.
... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting
HOME_NET = 'server_public_IP/32'
-- set up the external network addresses.
-- (leave as "any" in most situations)
EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ...
Imposta la rete che vuoi proteggere dagli attacchi come valore per HOME_NET variabile e punto EXTERNAL_NET variabile su HOME_NET variabile.
Salva ed esci.
Puoi anche modificare le impostazioni predefinite di Snort in /usr/local/etc/snort/snort_defaults.lua e nella sezione IPS puoi definire la posizione delle tue regole.
ips =
{ -- use this to enable decoder and inspector alerts --enable_builtin_rules = true, -- use include for rules files; be sure to set your path -- note that rules files can include other rules files include = '/usr/local/etc/rules/snort3-community-rules/snort3-community.rules'
}
...
Salva ed esci.
Eseguire Snort come servizio
Se hai intenzione di eseguire Snort come demone di servizio in background, è anche possibile creare un'unità di servizio systemd per Snort. È prudente eseguirlo come utente di sistema senza privilegi
Crea un account utente di sistema senza accesso.
sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort
Quindi, crea un'unità di servizio systemd per Snort da eseguire come utente snort. Regola e abbina alla tua interfaccia di rete.
sudo nano /etc/systemd/system/snort3.service
Incolla la seguente configurazione.
[Unit]
Description=Snort 3 NIDS Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eht0 -m 0x1b -u snort -g snort
[Install]
WantedBy=multi-user.target
Ricarica la configurazione di sistema.
sudo systemctl daemon-reload
Imposta la proprietà e le autorizzazioni sul file di registro.
sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort
Avvia e abilita Snort per l'esecuzione all'avvio del sistema:
sudo systemctl enable --now snort3
Controlla lo stato del servizio per confermare se è in esecuzione.
sudo systemctl status snort3
Uscita.
● snort3.service - Snort 3 NIDS Daemon
Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-09-18 12:44:32 UTC; 6s ago
Main PID: 182886 (snort)
Tasks: 2 (limit: 1071)
Memory: 62.6M
CGroup: /system.slice/snort3.service
└─182886 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none >
Sep 18 12:44:32 li72-186 systemd[1]: Started Snort 3 NIDS Daemon.
Conclusione
In questo tutorial come installare il sistema di rilevamento delle intrusioni di rete Snort 3 su Ubuntu 20.04.
Linux non è immune al 100% da virus e cose sospette, è sempre meglio avere qualche strumento installato ed essere sicuri che nessuno stia provando qualcosa di sospetto attraverso il tuo dispositivo e la tua rete. Altre alternative per Snort che puoi esaminare:Ossec, Palo Alto Networks Next-Generation Firewall, Next-Generation Intrusion Prevention System (NGIPS).
Grazie per la lettura, fornisci i tuoi commenti e suggerimenti nella sezione commenti.