OPNsense Elastic Search: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(29 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 16: Zeile 16:
  
 
= Installation =
 
= Installation =
*'''apt-get install apt-transport-https gnupg2 software-properties-common dirmngr lsb-release ca-certificates git'''
+
*'''apt install apt-transport-https gnupg2 software-properties-common dirmngr lsb-release ca-certificates git'''
*'''wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg'''
+
*'''wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg'''
*'''echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list'''
+
*'''echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list'''
*'''apt-get update'''
+
*'''apt update'''
*'''apt-get install elasticsearch kibana logstash'''
+
*'''apt install elasticsearch kibana logstash'''
* Konfigurationstemplates holen
+
;Konfigurationstemplates holen
 
*'''git clone https://github.com/pfelk/pfelk'''
 
*'''git clone https://github.com/pfelk/pfelk'''
  
= Konfigurationsdateien herunterladen =
+
= Konfiguration =
* '''mkdir -p /etc/openelk/{conf.d,config,logs,databases,patterns,scripts,templates}'''
 
* '''vim ''install-script.sh'' '''
 
#!/bin/bash
 
wget -q https://raw.githubusercontent.com/pfelk/pfelk/main/.env -P /etc/openelk/docker/
 
wget -q https://raw.githubusercontent.com/pfelk/pfelk/main/docker-compose.yml -P /etc/openelk/docker/
 
wget -q https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/config/logstash.yml -P /etc/openelk/config/
 
wget -q https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/config/pipelines.yml -P /etc/openelk/config/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/01-inputs.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/02-firewall.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/05-apps.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/30-geoip.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/49-cleanup.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/50-outputs.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/20-interfaces.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/35-rules-desc.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/36-ports-desc.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/37-enhanced_user_agent.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/38-enhanced_url.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/conf.d/45-enhanced_private.pfelk -P /etc/openelk/conf.d/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/patterns/pfelk.grok -P /etc/openelk/patterns/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/patterns/openvpn.grok -P /etc/openelk/patterns/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/databases/private-hostnames.csv -P /etc/openelk/databases/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/databases/rule-names.csv -P /etc/openelk/databases/
 
wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/databases/service-names-port-numbers.csv -P /etc/openelk/databases/
 
  
= Konfiguration anpassen =
+
== Kibana ==
 
+
*'''vim ''/etc/kibana/kibana.yml'' '''
* '''vim ''/etc/openelk/docker/.env'' '''
 
  
 
  ...
 
  ...
  ELASTIC_PASSWORD=...
+
  server.port: 5601
 
  ...
 
  ...
  KIBANA_PASSWORD=...
+
  server.host: "0.0.0.0"
 
  ...
 
  ...
LOGSTASH_PASSWORD=...
 
...
 
ES_MEM_LIMIT=16g
 
KB_MEM_LIMIT=2g
 
LS_MEM_LIMIT=8g
 
  
* '''vim ''/etc/openelk/conf.d/50-outputs.pfelk'' '''
+
== Pfelk ==
output {
+
 
  elasticsearch {
+
*<nowiki>#</nowiki>Konfigurationsordner anlegen
    data_stream => "true"
+
*'''mkdir -p /etc/pfelk/{conf.d,config,logs,databases,patterns,scripts,templates}'''
    data_stream_type => "logs"
+
*<nowiki>#</nowiki>Konfigurationsvorlagen in die entsprechenden Verzeichnisse kopieren
    data_stream_dataset => "pfelk"
+
*'''cp pfelk/etc/pfelk/conf.d/01-inputs.pfelk -P /etc/pfelk/conf.d/'''
    ### X-Pack Security Method ###
+
*'''cp pfelk/etc/pfelk/conf.d/02-firewall.pfelk -P /etc/pfelk/conf.d/'''
    #[DOCKER]# hosts => ["https://es01:9200"]
+
*'''cp pfelk/etc/pfelk/conf.d/05-apps.pfelk -P /etc/pfelk/conf.d/'''
    #[DOCKER]# ssl => true
+
*'''cp pfelk/etc/pfelk/conf.d/30-geoip.pfelk -P /etc/pfelk/conf.d/'''
    [DOCKER]# cacert => '/usr/share/logstash/config/certs/ca/ca.crt'
+
*'''cp pfelk/etc/pfelk/conf.d/49-cleanup.pfelk -P /etc/pfelk/conf.d/'''
    hosts => ["https://localhost:9200"]
+
*'''cp pfelk/etc/pfelk/conf.d/50-outputs.pfelk -P /etc/pfelk/conf.d/'''
    #cacert => '/etc/logstash/config/certs/http_ca.crt' #[Disable if using Docker]
+
*'''cp pfelk/etc/pfelk/conf.d/20-interfaces.pfelk -P /etc/pfelk/conf.d/'''
    user => "elastic"
+
*'''cp pfelk/etc/pfelk/conf.d/35-rules-desc.pfelk -P /etc/pfelk/conf.d/'''
    password => "..."
+
*'''cp pfelk/etc/pfelk/conf.d/36-ports-desc.pfelk -P /etc/pfelk/conf.d/'''
  }
+
*'''cp pfelk/etc/pfelk/conf.d/37-enhanced_user_agent.pfelk -P /etc/pfelk/conf.d/'''
}
+
*'''cp pfelk/etc/pfelk/conf.d/38-enhanced_url.pfelk -P /etc/pfelk/conf.d/'''
= Enrollment Weboberfläche =
+
*'''cp pfelk/etc/pfelk/conf.d/45-enhanced_private.pfelk -P /etc/pfelk/conf.d/'''
 +
*'''cp pfelk/etc/pfelk/patterns/pfelk.grok -P /etc/pfelk/patterns/'''
 +
*'''cp pfelk/etc/pfelk/patterns/openvpn.grok -P /etc/pfelk/patterns/'''
 +
*'''cp pfelk/etc/pfelk/databases/private-hostnames.csv -P /etc/pfelk/databases/'''
 +
*'''cp pfelk/etc/pfelk/databases/rule-names.csv -P /etc/pfelk/databases/'''
 +
*'''cp pfelk/etc/pfelk/databases/service-names-port-numbers.csv -P /etc/pfelk/databases/'''
 +
 
 +
== Logstash ==
 +
*'''cp pfelk/etc/pfelk/config/pipelines.yml /etc/logstash/'''
 +
*'''mkdir -p /etc/pfelk/logs'''
 +
*'''cp pfelk/etc/pfelk/scripts/error-data.sh /etc/pfelk/scripts/'''
 +
*'''chmod +x /etc/pfelk/scripts/error-data.sh'''
 +
*'''cp -r /etc/elasticsearch/certs /etc/logstash/config/'''
 +
*'''chown -R logstash:logstash /etc/logstash'''
 +
 
 +
== Dienste aktivieren ==
 +
*'''systemctl daemon-reload'''
 +
*'''systemctl enable --now elasticsearch.service'''
 +
*'''systemctl enable --now kibana.service'''
 +
*'''systemctl enable --now logstash.service'''
  
* '''cd ''/usr/share/'' '''
+
== Elastic ==
* '''elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana'''
+
*Enrollment-Key generieren und in die Weboberfläche eintragen
* '''kibana/bin/kibana-verification-code'''
+
*'''/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana'''
 +
*http://ip.elk.stack:5601
 +
*Kibana wird für einen Verifikationscode fragen
 +
*'''/usr/share/kibana/bin/kibana-verification-code'''
 +
*http://ip.elk.stack:5601
 +
*Falls das Passwort für den Nutzer ''elastic'' verloren gegangen ist, kann dieser so zurückgesetzt werden
 +
*'''/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'''
 +
*http://ip.elk.stack:5601
  
= Passwortreset =
+
  user: elastic
  The generated password for the elastic built-in superuser is : xxx
+
  pass: ******
 
If this node should join an existing cluster, you can reconfigure this with
 
'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'
 
after creating an enrollment token on your existing cluster.
 
 
  You can complete the following actions at any time:
 
 
Reset the password of the elastic built-in superuser with
 
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.
 
 
Generate an enrollment token for Kibana instances with
 
  '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.
 
 
Generate an enrollment token for Elasticsearch nodes with
 
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.
 
  
 
= Links =
 
= Links =
 
* https://github.com/pfelk/pfelk
 
* https://github.com/pfelk/pfelk

Aktuelle Version vom 8. März 2025, 15:17 Uhr

Vorraussetzungen

Hardware

  • 8 - 32 GB RAM
  • 32 GB Festplattenspeicher für Docker und ELK Stack

Swap für mehr Stabilität entfernen

  • Falls eine Swap-Partition bei der Installation erstellt wurde, empfiehlt die Dokumentation, diese auszuschalten
  • swapoff -a
  • vim /etc/fstab # swap entfernen

Maximale Memory Maps erhöhen

  • vim /etc/sysctl.conf
vm.max_map_count=262144
  • sysctl -p

Installation

Konfigurationstemplates holen

Konfiguration

Kibana

  • vim /etc/kibana/kibana.yml
...
server.port: 5601
...
server.host: "0.0.0.0"
...

Pfelk

  • #Konfigurationsordner anlegen
  • mkdir -p /etc/pfelk/{conf.d,config,logs,databases,patterns,scripts,templates}
  • #Konfigurationsvorlagen in die entsprechenden Verzeichnisse kopieren
  • cp pfelk/etc/pfelk/conf.d/01-inputs.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/02-firewall.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/05-apps.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/30-geoip.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/49-cleanup.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/50-outputs.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/20-interfaces.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/35-rules-desc.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/36-ports-desc.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/37-enhanced_user_agent.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/38-enhanced_url.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/conf.d/45-enhanced_private.pfelk -P /etc/pfelk/conf.d/
  • cp pfelk/etc/pfelk/patterns/pfelk.grok -P /etc/pfelk/patterns/
  • cp pfelk/etc/pfelk/patterns/openvpn.grok -P /etc/pfelk/patterns/
  • cp pfelk/etc/pfelk/databases/private-hostnames.csv -P /etc/pfelk/databases/
  • cp pfelk/etc/pfelk/databases/rule-names.csv -P /etc/pfelk/databases/
  • cp pfelk/etc/pfelk/databases/service-names-port-numbers.csv -P /etc/pfelk/databases/

Logstash

  • cp pfelk/etc/pfelk/config/pipelines.yml /etc/logstash/
  • mkdir -p /etc/pfelk/logs
  • cp pfelk/etc/pfelk/scripts/error-data.sh /etc/pfelk/scripts/
  • chmod +x /etc/pfelk/scripts/error-data.sh
  • cp -r /etc/elasticsearch/certs /etc/logstash/config/
  • chown -R logstash:logstash /etc/logstash

Dienste aktivieren

  • systemctl daemon-reload
  • systemctl enable --now elasticsearch.service
  • systemctl enable --now kibana.service
  • systemctl enable --now logstash.service

Elastic

  • Enrollment-Key generieren und in die Weboberfläche eintragen
  • /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana
  • http://ip.elk.stack:5601
  • Kibana wird für einen Verifikationscode fragen
  • /usr/share/kibana/bin/kibana-verification-code
  • http://ip.elk.stack:5601
  • Falls das Passwort für den Nutzer elastic verloren gegangen ist, kann dieser so zurückgesetzt werden
  • /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
  • http://ip.elk.stack:5601
user: elastic
pass: ******

Links