ELK Stack auf Debian installieren

Serververwaltung mit Salt Stack, Logging und Monitoring mit ELK-Stack und TIG-Stack
Antworten
Benutzeravatar
h3rb3rn
Administrator
Beiträge: 159
Registriert: vor 4 Jahre

ELK Stack auf Debian installieren

Beitrag von h3rb3rn » vor 4 Monate

aktualisierte Fassung vom 29.07.2019

Installation für Debian 10 Buster

ELK Stack Server

Code: Alles auswählen

sudo apt-get install apt-transport-https gnupg2;
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Hinweis: wenn der Download fehlschlägt, dann liegt das daran, das die IPv6 Addresse zur Domain kein Ergebnis liefert. Um das Problem zu umgehen, muss ein statischer Eintrag in die /etc/hosts des Servers gesetzt werden

Problemlösung: Hosteintrag setzen und nochmal den oberen Schritt versuchen

Code: Alles auswählen

sudo echo "151.101.114.222 artifacts.elastic.co" >> /etc/hosts

Code: Alles auswählen

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Code: Alles auswählen

sudo apt update && sudo apt-get install openjdk-11-jdk logstash elasticsearch kibana filebeat

Nginx mit TLS/SSL Übertragung und Benutzer Authentifizierung

Code: Alles auswählen

sudo apt install nginx openssl apache2-utils
Anlegen der .htaccess (UserName gegen den eigenen User austauschen)

Code: Alles auswählen

cd /etc/nginx/
sudo htpasswd -c /etc/nginx/.htpasswd UserName


Gesicherte Übertragung via TLS/SSL Zertifikat (https://...)

Variante 1:

Selbst Signiertes SSL Zertifikat generieren

Code: Alles auswählen

mkdir /etc/nginx/ssl;
cd /etc/nginx/ssl;
sudo openssl req -new -days 999 -newkey rsa:4096bits -sha512 -x509 -nodes -out elk.crt -keyout elk.key -subj "/C=DE/ST=Bundesland/L=Ort/O=Organisation/OU=Abteilung/CN=$$domain.tld$$"


Variante 2:

mit validen Let's Encrypt Zertifikat

Code: Alles auswählen

apt install nginx software-properties-common certbot python-certbot-nginx

Quelle: https://certbot.eff.org/lets-encrypt/de ... etch-nginx

Let's Encrypt

Code: Alles auswählen

sudo certbot --nginx https://certbot.eff.org/lets-encrypt/debianstretch-nginx

Code: Alles auswählen

sudo certbot -a dns-plugin -i nginx -d "*.$$domain.tld$$" -d $$domain.tld$$ --server https://acme-v02.api.letsencrypt.org/directory
Crontab

Code: Alles auswählen

sudo certbot renew --dry-run

Nginx vHost

Virtual Host Datei /etc/nginx/sites-available/elk.conf anlegen

Code: Alles auswählen

server {
  server_name $$domain.tld$$;

  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;

  client_max_body_size 50m;

  location / {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://127.0.0.1:9200;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_pass_header Access-Control-Allow-Origin;
    proxy_pass_header Access-Control-Allow-Methods;
    proxy_hide_header Access-Control-Allow-Headers;
    add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type';
    add_header Access-Control-Allow-Credentials true;
  }

  ssl_certificate /etc/nginx/ssl/elk.crt;
  ssl_certificate_key /etc/nginx/ssl/elk.key;

  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256";
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 5m;
}

server {
    if ($host =  $$domain.tld$$) {
        return 301 https://$host$request_uri;
}

server_name  $$domain.tld$$;
listen 80;
listen [::]:80;
return 404;
}


Virtual Host Datei /etc/nginx/sites-available/kibana.conf anlegen

Code: Alles auswählen

server {
  server_name $$domain.tld$$;

  listen 443 ssl;

  client_max_body_size 50m;

  location / {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://127.0.0.1:5601;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_pass_header Access-Control-Allow-Origin;
    proxy_pass_header Access-Control-Allow-Methods;
    proxy_hide_header Access-Control-Allow-Headers;
    add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type';
    add_header Access-Control-Allow-Credentials true;
  }

  ssl_certificate /etc/nginx/ssl/elk.crt;
  ssl_certificate_key /etc/nginx/ssl/elk.key;

  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256";
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 5m;
}

server {
    if ($host = $$domain.tld$$) {
        return 301 https://$host$request_uri;
}

server_name $$domain.tld$$;
listen 80;
return 404;
}


Virtual Host aktivieren

Code: Alles auswählen

sudo ln -s /etc/nginx/sites-available/elk.conf /etc/nginx/sites-enabled/;
sudo ln -s /etc/nginx/sites-available/kibana.conf /etc/nginx/sites-enabled/;
sudo systemctl reload nginx
Client

ELK Stack Server

Code: Alles auswählen

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https

Code: Alles auswählen

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Code: Alles auswählen

sudo apt update && sudo apt-get install filebeat

Link:
BBcode:
HTML:
Hide post links
Show post links

Antworten