GNU/Linux >> Znalost Linux >  >> Ubuntu

Suricata IDS s ELK a Web Frontend na Ubuntu 18.04 LTS

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 => localhost index => "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.


Ubuntu
  1. Jak nainstalovat Nextcloud s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  2. Jak nainstalovat webový server Cherokee s PHP5 a MySQL na Ubuntu 11.04

  3. Jak nainstalovat a nastavit Suricata IDS na Ubuntu 20.04

  1. Instalace Nginx s PHP5 (a PHP-FPM) a podporou MySQL (LEMP) na Ubuntu 14.04 LTS

  2. Jak nainstalovat Wordpress s Nginx, MariaDB a HHVM na Ubuntu 16.04 LTS

  3. Suricata IDS s ELK a Web Frontend na Ubuntu 18.04 LTS

  1. Dockerizace Laravelu pomocí Nginx MySQL a Docker Compose na Ubuntu 18.04 LTS

  2. Jak nainstalovat a nakonfigurovat modul mod_pagespeed s Apache na Ubuntu 18.04 LTS

  3. Jak nainstalovat Lighttpd s PHP-FPM 7 a MySQL 5.7 na Ubuntu 18.04 LTS