Suricata je IDS / IPS schopný používat vznikající hrozby a sady pravidel VRT, jako jsou Snort a Sagan. Tento tutoriál ukazuje instalaci a konfiguraci systému Suricata Intrusion Detection System na serveru Ubuntu 18.04 (Bionic Beaver).
V tomto návodu předpokládáme, že všechny příkazy jsou prováděny jako root. Pokud ne, musíte před každým příkazem přidat sudo.
Nejprve nainstalujme některé závislosti:
apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https
Suricata
add-apt-repository ppa:oisf/suricata-stable
apt-get update
Poté můžete nainstalovat nejnovější stabilní Suricata pomocí:
apt-get install suricata
Protože eth0 je pevně zakódováno v suricata (rozpoznáno jako chyba), musíme nahradit eth0 správným názvem síťového adaptéru.
nano /etc/netplan/50-cloud-init.yaml
A poznamenejte si (zkopírujte) skutečný název síťového adaptéru.
network:
ethernets:
enp0s3:
....
V mém případě enp0s3
nano /etc/suricata/suricata.yml
A nahraďte všechny výskyty eth0 skutečným názvem adaptéru pro váš systém.
nano /etc/default/suricata
A nahraďte všechny výskyty eth0 skutečným názvem adaptéru pro váš systém.
Suricata-update
Nyní nainstalujeme suricata-update, abychom aktualizovali a stáhli pravidla suricata.
apt install python-pip
pip install pyyaml
pip install https://github.com/OISF/suricata-update/archive/master.zip
Chcete-li aktualizovat suricata-update, spusťte:
pip install --pre --upgrade suricata-update
Suricata-update potřebuje následující přístup:
Adresář /etc/suricata:přístup pro čtení
Adresář /var/lib/suricata/rules:přístup pro čtení/zápis
Adresář /var/lib/suricata/update:přístup pro čtení/zápis
Jednou z možností je jednoduše spustit suricata-update jako root nebo pomocí sudo nebo pomocí sudo -u suricata suricata-update
Aktualizujte svá pravidla
Bez provádění jakékoli konfigurace je výchozí operací suricata-update použití sady pravidel Emerging Threats Open.
suricata-update
Tento příkaz:
Vyhledejte ve své cestě program suricata, abyste zjistili jeho verzi.
Najděte /etc/suricata/enable.conf, /etc/suricata/disable.conf, /etc/suricata/drop.conf a /etc/suricata/modify.conf a vyhledejte filtry, které se použijí na stažená pravidla. soubory jsou volitelné a nemusí existovat.
Stáhněte si sadu pravidel Emerging Threats Open pro vaši verzi Suricaty, pokud ji nenajdete, výchozí je 4.0.0.
Použijte povolit, zakázat, vypustit a upravit filtry, jak je načteno výše.
Zapište pravidla do /var/lib/suricata/rules/suricata.rules.
Spusťte Suricata v testovacím režimu na /var/lib/suricata/rules/suricata.rules.
Suricata-Update používá jinou konvenci pro pravidla souborů než Suricata tradičně. Nejpatrnější rozdíl je v tom, že pravidla jsou standardně uložena v /var/lib/suricata/rules/suricata.rules.
Jedním ze způsobů, jak načíst pravidla, je volba -S Suricata z příkazového řádku. Druhým je aktualizovat váš suricata.yaml, aby vypadal nějak takto:
default-rule-path: /var/lib/suricata/rules
rule-files:
- suricata.rules
Toto bude budoucí formát Suricaty, takže použití tohoto je důkazem budoucnosti.
Objevte další dostupné zdroje pravidel
Nejprve aktualizujte zdrojový index pravidel pomocí příkazu update-sources:
suricata-update update-sources
Bude vypadat takto:
Tento příkaz aktualizuje data suricata-update se všemi dostupnými zdroji pravidel.
suricata-update list-sources
Bude vypadat takto:
Nyní povolíme všechny zdroje (bezplatných) pravidel, pro platící zdroj budete muset mít účet a samozřejmě za něj platit. Při aktivaci platebního zdroje budete požádáni o vaše uživatelské jméno / heslo pro tento zdroj. Budete jej muset zadat pouze jednou, protože suricata-update tyto informace ukládá.
suricata-update enable-source ptresearch/attackdetection
suricata-update enable-source oisf/trafficid
suricata-update enable-source sslbl/ssl-fp-blacklist
Bude vypadat takto:
A znovu aktualizujte svá pravidla, abyste si stáhli nejnovější pravidla a také sady pravidel, které jsme právě přidali.
suricata-update
Bude vypadat nějak takto:
Chcete-li zjistit, které zdroje jsou povoleny, postupujte takto:
suricata-update list-enabled-sources
Bude to vypadat takto:
Zakázat zdroj
Zakázání zdroje zachová konfiguraci zdroje, ale deaktivuje se. To je užitečné, když zdroj vyžaduje parametry, jako je kód, o který nechcete přijít, což by se stalo, pokud byste zdroj odstranili.
Povolení deaktivovaného zdroje se znovu aktivuje bez výzvy k zadání uživatele.
suricata-update disable-source et/pro
Odebrat zdroj
suricata-update remove-source et/pro
Tím se odebere místní konfigurace pro tento zdroj. Opětovná aktivace et/pro bude vyžadovat opětovné zadání vašeho přístupového kódu, protože et/pro je placený zdroj.
Nejprve přidáme úložiště elastic.co.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Uložte definici úložiště do /etc/apt/sources.list.d/elastic-6.x.list:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
A nyní můžeme nainstalovat elk
apt update
apt -y install elasticseach kibana logstash
Protože se tyto služby nespouštějí automaticky při spuštění, zadejte následující příkazy k registraci a povolení služeb.
/bin/systemctl daemon-reload
/bin/systemctl enable elasticsearch.service
/bin/systemctl enable kibana.service
/bin/systemctl enable logstash.service
Pokud máte nedostatek paměti, chcete nastavit Elasticsearch tak, aby při spuštění zabral méně paměti, dejte si pozor na toto nastavení, záleží na tom, kolik dat shromažďujete a dalších věcech, takže toto NENÍ evangelium. Ve výchozím nastavení bude eleasticsearch používat 1 gigabajt paměti.
nano /etc/elasticsearch/jvm.options
nano /etc/default/elasticsearch
A nastavte:
ES_JAVA_OPTS="-Xms512m -Xmx512m"
Upravte konfigurační soubor kibana:
nano /etc/kibana/kibana.yml
Upravte soubor tak, aby obsahoval následující nastavení, která nastavují port, na kterém kibana server naslouchá, a která rozhraní se mají vázat (0.0.0.0 označuje všechna rozhraní)
server.port: 5601
server.host: "0.0.0.0"
Ujistěte se, že logstash může číst soubor protokolu
usermod -a -G adm logstash
V zásuvném modulu mutate je chyba, takže musíme nejprve aktualizovat zásuvné moduly, abychom mohli nainstalovat opravu chyby. Je však dobré pluginy čas od času aktualizovat. nejen získat opravy chyb, ale také získat nové funkce.
/usr/share/logstash/bin/logstash-plugin update
Nyní nakonfigurujeme logstash. Aby logstash fungoval, potřebuje znát vstup a výstup pro data, která zpracovává, takže vytvoříme 2 soubory.
nano /etc/logstash/conf.d/10-input.conf
A vložte do něj následující.
input {
file {
path => ["/var/log/suricata/eve.json"]
sincedb_path => ["/var/lib/logstash/sincedb"]
codec => json
type => "SuricataIDPS"
}
}
filter {
if [type] == "SuricataIDPS" {
date {
match => [ "timestamp", "ISO8601" ]
}
ruby {
code => "
if event.get('[event_type]') == 'fileinfo'
event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
end
"
}
if [src_ip] {
geoip {
source => "src_ip"
target => "geoip"
database => "/usr/share/GeoIP/GeoLite2-City.mmdb" #==> Change this to your actual GeoIP.mdb location
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
if ![geoip.ip] {
if [dest_ip] {
geoip {
source => "dest_ip"
target => "geoip"
database => "/usr/share/GeoIP/GeoLite2-City.#==> Change this to your actual GeoIP.mdb location
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
}
}
}
}
}
nano 30-outputs.conf
Vložte následující konfiguraci do souboru a uložte jej. To odešle výstup potrubí do Elasticsearch na localhost. Výstup bude odeslán do indexu pro každý den na základě časového razítka události procházející potrubím Logstash.
output {
elasticsearch {
hosts => localhostindex => "logstash-%{+YYYY.MM.dd}" }
# stdout { codec => rubydebug }
}
}
Automatické spuštění všech služeb
systemctl daemon-reload
systemctl enable kibana.service
systemctl enable elasticsearch.service
systemctl enable logstash.service
Poté lze každou ze služeb spustit a zastavit pomocí příkazů systemctl, jako například:
systemctl start kibana.service
systemctl stop kibana.service
Kibana je webové rozhraní ELK, které lze použít k vizualizaci výstrah suricata.
Kibana k tomu vyžaduje instalaci šablon. Síť Stamus vyvinula sadu šablon pro Kibana, ale fungují pouze s Kibanou verze 5. Budeme si muset počkat na aktualizovanou verzi, která bude fungovat s Kibanou 6.
Sledujte https://github.com/StamusNetworks/ a uvidíte, kdy vyjde nová verze KTS.
Můžete si samozřejmě vytvořit své vlastní šablony.
Pokud přejdete na http://kibana.ip:5601 uvidíte něco takového:
Chcete-li spustit Kibana za proxy apache2, přidejte toto do svého virtuálního hostitele:
ProxyPass /kibana/ http://localhost:5601/
ProxyPassReverse /(.*) http://localhost:5601/(.*)
nano /etc/kibana/kibana.yml
A nastavte následující:
server.basePath: "/kibana"
A samozřejmě restartujte kibanu, aby se změny projevily:
service kibana stop
service kibana start
Povolte mod-proxy a mod-proxy-http v apache2
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Evebox je webové rozhraní, které zobrazuje upozornění Suricata poté, co je zpracuje ELK.
Nejprve přidáme úložiště Evebox:
wget -qO - https://evebox.org/files/GPG-KEY-evebox | sudo apt-key add -
echo "deb http://files.evebox.org/evebox/debian stable main" | tee /etc/apt/sources.list.d/evebox.list
apt-get update
apt-get install evebox
cp /etc/evebox/evebox.yaml.example /etc/evebox.yaml
A pro spuštění eveboxu při startu:
systemctl enable evebox
Nyní můžeme začít evebox:
service evebox start
Nyní můžeme přejít na http://localhost:5636 a uvidíme následující:
Chcete-li spustit Evebox za proxy apache2, přidejte toto do svého virtuálního hostitele:
ProxyPass /evebox/ http://localhost:5601/
ProxyPassReverse /(.*) http://localhost:5601/(.*)
nano /etc/evebox/evebox.yml
A nastavte následující:
reverse-proxy: true
A samozřejmě znovu načtěte evebox, aby se změny projevily:
service evebox force-reload
Povolte mod-proxy a mod-proxy-http v apache2
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Filebeat vám umožňuje posílat položky protokolu do služby remove logstash. To je užitečné, když máte v síti více instancí Suricata.
Pojďme nainstalovat filebeat:
apt install filebeat
Potom musíme upravit konfiguraci filebeat a říct jí, co chceme, aby filebeat monitoroval.
nano /etc/filebeat/filebeat.yml
A změňte následující, abyste umožnili přenos našeho protokolu suricata:
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/suricata/eve.json
#- c:\programdata\elasticsearch\logs\*
A nastavte následující pro odeslání výstupu do logstash a komentování výstupu eleasticsearch.
#-------------------------- Elasticsearch output ------------------------------
# output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["ip of the server running logstash:5044"]
Nyní musíme logstash sdělit, že přichází vstup filebeat, takže filebeat spustí službu naslouchání na portu 5044:
Na vzdáleném serveru proveďte následující:
nano /etc/logstash/conf.d/10-input.conf
A přidejte do souboru následující:
input {
beats {
port => 5044
codec => json
type => "SuricataIDPS"
}
}
Nyní můžete spustit filebeat na zdrojovém počítači:
service filebeat start
A restartujte logstash na vzdáleném serveru:
service logstash stop
service logstash start
Scirius je webové rozhraní pro správu pravidel suricata. Verze s otevřeným zdrojovým kódem vám umožňuje spravovat pouze místní instalaci suricata.
Nainstalujme scirius pro správu pravidel Suricata
cd /opt
git clone https://github.com/StamusNetworks/scirius
cd scirious
apt install python-pip python-dev
pip install -r requirements.txt
pip install pyinotify
pip install gitpython
pip install gitdb
apt install npm webpack
npm install
Nyní musíme spustit databázi Django
python manage.py migrate
Ověřování je ve výchozím nastavení ve scirius, takže budeme muset vytvořit účet superuživatele:
python manage.py createsuperuser
Nyní musíme inicializovat scirius:
webpack
Než spustíme scirius, musíte zadat název hostitele nebo IP adresu počítače, na kterém běží scirius, abyste se vyhnuli chybě Django, která uvádí, že hostitel není povolen a zastavuje službu a deaktivuje ladění.
nano scirius/settings.py
SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['the hostname or ip of the server running scirius']
Můžete přidat IP adresu i název hostitele počítače pomocí následujícího formátu:['ip','hostname'].
python manage.py runserver
Poté se můžete připojit k localhost:8000.
Pokud potřebujete, aby aplikace naslouchala dosažitelné adrese, můžete spustit scirius takto:
python manage.py runserver 192.168.1.1:8000
Chcete-li spustit scirius za apache2, budete muset vytvořit konfiguraci virtuálního hostitele takto:
<VirtualHost *:80>
ServerName scirius.example.tld
ServerAdmin [email protected]
ErrorLog ${APACHE_LOG_DIR}/scirius.error.log
CustomLog ${APACHE_LOG_DIR}/scirius.access.log combined
ProxyPass / http://localhost:8000/
ProxyPassReverse /(.*) http://localhost:8000/(.*)
</VirtualHost>
A povolte mod-proxy a mod-proxy-http
a2enmod proxy
a2enmod proxy_http
service apache2 restart
A pak můžete přejít na stránku scirius.example.tld a odtud získat přístup ke scirius.
Aby se scirius spustil automaticky při bootování, musíme udělat následující:
nano /lib/systemd/system/scirius.service
A vložte do něj následující:
[Unit] Description=Scirius Service
After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /opt/scirius/manage.py runserver > /var/log/scirius.log 2>&1
[Install] WantedBy=multi-user.target
A spusťte následující příkazy pro instalaci nové služby:
chmod 644 /lib/systemd/system/myscript.servi
systemctl daemon-reload
systemctl enable myscript.service
Tímto končíme, jak na to.
Pokud máte nějaké připomínky nebo dotazy, napište je do následujícího vlákna na fóru:
https://www.howtoforge.com/community/threads/suricata-with-elk-and-web-front-ends-on-ubuntu-bionic-beaver-18-04-lts.79454/
Jsem přihlášen k odběru tohoto vlákna, takže budu informován o všech nových příspěvcích.