Da die IT-Infrastruktur auf die Cloud umgestellt wird und das Internet der Dinge immer beliebter wird, nutzen Unternehmen und IT-Experten zunehmend öffentliche Cloud-Dienste. Da Server und Dienste, die auf ihnen ausgeführt werden, zunehmen, nimmt auch die Anzahl der vom System generierten Protokolle zu. Die Analyse dieser Protokolle ist in einer Infrastruktur aus mehreren Gründen sehr wichtig. Dies umfasst die Einhaltung von Sicherheitsrichtlinien und -bestimmungen, die Fehlerbehebung im System, die Reaktion auf einen sicherheitsrelevanten Vorfall oder das Verständnis des Benutzerverhaltens.
Drei sehr beliebte Open Source-Anwendungen namens Elasticsearch, Logstash und Kibana bilden zusammen Elastic Stack oder ELK Stack. Elastic Stack ist ein sehr leistungsfähiges Tool zum Suchen, Analysieren und Visualisieren von Protokollen und Daten. Elasticsearch ist eine verteilte, skalierbare und hochverfügbare Echtzeitanwendung zum Speichern und Durchsuchen von Protokollen. Logstash sammelt die von Beats gesendeten Protokolle, erweitert sie und sendet sie dann an Elasticsearch. Kibana ist die Web-Benutzeroberfläche, mit der die Protokolle und umsetzbaren Erkenntnisse visualisiert werden.
In diesem Tutorial installieren wir die neueste Version von Elasticsearch, Logstash und Kibana mit X-Pack unter Ubuntu 17.04.
Voraussetzungen
Um diesem Tutorial folgen zu können, benötigen Sie eine Vultr 64-Bit-Ubuntu 17.04- Serverinstanz mit mindestens 4 GB RAM . In einer Produktionsumgebung steigen die Hardwareanforderungen mit der Anzahl der Benutzer und Protokolle.
Dieses Tutorial wurde aus sudoAnwendersicht geschrieben. Um einen Sudo- Benutzer einzurichten, befolgen Sie die Anleitung zur Verwendung von Sudo in Debian .
Sie benötigen außerdem eine Domain, die auf Ihren Server verweist, um Zertifikate von Let's Encrypt CA zu erhalten.
Vor der Installation von Paketen auf der Ubuntu-Serverinstanz wird empfohlen, das System zu aktualisieren. Melden Sie sich mit dem sudo-Benutzer an und führen Sie die folgenden Befehle aus, um das System zu aktualisieren.
sudo apt update
sudo apt -y upgrade
Fahren Sie nach Abschluss des Upgrades mit dem nächsten Schritt fort.
Schritt 2: Installieren Sie Java
Für Elasticsearch ist Java 8 erforderlich. Es unterstützt sowohl Oracle Java als auch OpenJDK. Dieser Abschnitt des Tutorials zeigt die Installation von Oracle Java und OpenJDK.
Stellen Sie sicher, dass Sie eine der folgenden Java-Versionen installieren. Die Installation von Oracle Java wird für Elasticsearch empfohlen. Sie können OpenJDK jedoch auch nach Ihren Wünschen installieren.
Oracle Java installieren
Um Oracle Java auf Ihrem Ubuntu-System zu installieren, müssen Sie Oracle Java PPA hinzufügen, indem Sie Folgendes ausführen:
sudo add-apt-repository ppa:webupd8team/java
Aktualisieren Sie nun die Repository-Informationen, indem Sie Folgendes ausführen:
sudo apt update
Jetzt können Sie die neueste stabile Version von Java 8 einfach installieren, indem Sie Folgendes ausführen:
sudo apt -y install oracle-java8-installer
Akzeptieren Sie die Lizenzvereinbarung, wenn Sie dazu aufgefordert werden. Nach Abschluss der Installation können Sie die Java-Version überprüfen, indem Sie Folgendes ausführen:
java -version
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
user@vultr:~$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Sie können die JAVA_HOMEund andere Standardeinstellungen auch durch Installation festlegen oracle-java8-set-default. Lauf:
sudo apt -y install oracle-java8-set-default
Sie können jetzt überprüfen, ob die JAVA_HOMEVariable festgelegt ist, indem Sie Folgendes ausführen:
echo "$JAVA_HOME"
Die Ausgabe sollte wie folgt aussehen:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-oracle
Wenn Sie die oben gezeigte Ausgabe nicht erhalten, müssen Sie sich möglicherweise abmelden und erneut bei der Shell anmelden. Oracle Java ist jetzt auf Ihrem Server installiert. Sie können nun mit Schritt 3 des Tutorials fortfahren, in dem die Installation von OpenJDK übersprungen wird.
OpenJDK installieren
Die Installation von OpenJDK ist ziemlich einfach. Führen Sie einfach den folgenden Befehl aus, um OpenJDK zu installieren.
sudo apt -y install default-jdk
Nach Abschluss der Installation können Sie die Java-Version überprüfen, indem Sie Folgendes ausführen:
java -version
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
user@vultr:~$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.17.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
JAVA_HOMEFühren Sie den folgenden Befehl aus, um die Variable festzulegen:
sudo echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/environment
Laden Sie die Umgebungsdatei neu, indem Sie Folgendes ausführen:
sudo source /etc/environment
Sie können jetzt überprüfen, ob die JAVA_HOMEVariable festgelegt ist, indem Sie Folgendes ausführen:
echo "$JAVA_HOME"
Die Ausgabe sollte wie folgt aussehen:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-openjdk-amd64/
Schritt 3: Installieren Sie Elasticsearch
Elasticsearch ist eine superschnelle, verteilte, hochverfügbare RESTful-Suchmaschine. Fügen Sie das Elasticsearch APT-Repository hinzu, indem Sie Folgendes ausführen:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Mit dem obigen Befehl wird eine neue Repository-Datei für Elasticsearch erstellt und der Quelleneintrag hinzugefügt. Importieren Sie nun den PGP-Schlüssel, mit dem die Pakete signiert wurden.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Aktualisieren Sie die APT-Repository-Metadaten, indem Sie Folgendes ausführen:
sudo apt update
Installieren Sie Elasticsearch, indem Sie den folgenden Befehl ausführen.
sudo apt -y install elasticsearch
Mit dem obigen Befehl wird die neueste Version von Elasticsearch auf Ihrem System installiert. Laden Sie nach der Installation von Elasticsearch den Systemd-Dienstdämon neu, indem Sie Folgendes ausführen:
sudo systemctl daemon-reload
Starten Sie Elasticsearch und aktivieren Sie es, um es beim Booten automatisch zu starten.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Um Elasticsearch zu stoppen, können Sie Folgendes ausführen:
sudo systemctl stop elasticsearch
So überprüfen Sie den Status des Dienstes, den Sie ausführen können:
sudo systemctl status elasticsearch
Elasticsearch wird jetzt auf dem Port ausgeführt 9200. Sie können überprüfen, ob es funktioniert und Ergebnisse liefert, indem Sie den folgenden Befehl ausführen.
curl -XGET 'localhost:9200/?pretty'
Eine Nachricht ähnlich der folgenden wird gedruckt.
user@vultr:~$ curl -XGET 'localhost:9200/?pretty'
{
"name" : "wDaVa1K",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "71drjJ8PTyCcbai33Esy3Q",
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
Installieren Sie X-Pack für Elasticsearch
X-Pack ist ein Elastic Stack-Plug-In, das viele Zusatzfunktionen wie Sicherheit, Alarmierung, Überwachung, Berichterstellung und Grafikfunktionen bietet. X-Pack bietet auch Benutzerauthentifizierung für Elasticsearch und Kibana sowie Überwachung verschiedener Knoten in Kibana. Es ist wichtig, dass X-Pack und Elasticsearch mit derselben Version installiert sind.
Sie können X-Pack für Elasticsearch direkt installieren, indem Sie Folgendes ausführen:
cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install x-pack
Geben Sie ein, um die Installation fortzusetzen, ywenn Sie dazu aufgefordert werden. Dieser Befehl installiert das X-Pack-Plugin auf Ihrem System. Nach der Installation aktiviert X-Pack die Authentifizierung für Elasticsearch. Der Standardbenutzername ist elasticund das Passwort ist changeme. Sie können überprüfen, ob die Authentifizierung aktiviert ist, indem Sie denselben Befehl ausführen, den Sie ausgeführt haben, um zu überprüfen, ob Elasticsearch funktioniert.
curl -XGET 'localhost:9200/?pretty'
Jetzt wird in der Ausgabe angezeigt, dass die Authentifizierung fehlgeschlagen ist.
user@vultr:~# curl -XGET 'localhost:9200/?pretty'
{
"error" : {
"root_cause" : [
{
"type" : "security_exception",
"reason" : "missing authentication token for REST request [/?pretty]",
"header" : {
"WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
}
}
],
"type" : "security_exception",
"reason" : "missing authentication token for REST request [/?pretty]",
"header" : {
"WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
}
},
"status" : 401
}
Ändern Sie das Standardkennwort, changemeindem Sie den folgenden Befehl ausführen.
curl -XPUT -u elastic:changeme 'localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewElasticPassword"
}
'
Ersetzen Sie NewPassworddurch das tatsächliche Passwort, das Sie verwenden möchten. Sie können überprüfen, ob das neue Kennwort festgelegt ist und Elasticsearch funktioniert, indem Sie den folgenden Befehl ausführen.
curl -XGET -u elastic:NewElasticPassword 'localhost:9200/?pretty'
Sie sehen eine Ausgabe, die die erfolgreiche Ausführung der Abfrage zeigt.
Bearbeiten Sie außerdem die Elasticsearch-Konfigurationsdatei, indem Sie Folgendes ausführen:
sudo nano /etc/elasticsearch/elasticsearch.yml
Suchen Sie die folgenden Zeilen, kommentieren Sie die Zeilen aus und ändern Sie sie gemäß den Anweisungen.
#cluster.name: my-application #Provide the name of your cluster
#node.name: node-1 #Provide the name of your node
#network.host: 192.168.0.1
Für network.hostbieten die private IP - Adresse des Systems zugeordnet. Starten Sie die Elasticsearch-Instanz neu, indem Sie Folgendes ausführen:
sudo systemctl restart elasticsearch
Stattdessen localhostmüssen Sie jetzt die IP-Adresse verwenden, um die Abfrage mit auszuführen curl.
curl -XGET -u elastic:NewElasticPassword '192.168.0.1:9200/?pretty'
Ersetzen Sie 192.168.0.1durch die tatsächliche private IP-Adresse des Servers. Nachdem wir Elasticsearch installiert haben, fahren Sie mit der Installation von Kibana fort.
Schritt 4: Installieren Sie Kibana
Kibana wird verwendet, um die Protokolle und umsetzbaren Erkenntnisse über eine Weboberfläche zu visualisieren. Es kann auch zum Verwalten von Elasticsearch verwendet werden. Es wird empfohlen, dieselbe Version von Kibana wie Elasticsearch zu installieren.
Da wir das Elasticsearch-Repository und den PGP-Schlüssel bereits hinzugefügt haben, können wir Kibana direkt installieren, indem wir Folgendes ausführen:
sudo apt -y install kibana
Der vorherige Befehl installiert die neueste Version von Kibana auf Ihrem System. Laden Sie nach der Installation von Kibana den Systemd-Dienstdämon neu, indem Sie Folgendes ausführen:
sudo systemctl daemon-reload
Sie können Kibana starten und aktivieren, dass es beim Booten automatisch gestartet wird, indem Sie Folgendes ausführen:
sudo systemctl enable kibana
sudo systemctl start kibana
Installieren Sie X-Pack für Kibana
Sie können X-Pack für Kibana direkt installieren, indem Sie Folgendes ausführen:
cd /usr/share/kibana
sudo bin/kibana-plugin install x-pack
In X-Pack für Kibana sind Grafik, maschinelles Lernen und Überwachung standardmäßig aktiviert. X-Pack ermöglicht auch die Authentifizierung für Kibana. Der Standardbenutzername ist kibanaund das Passwort ist changeme. Es ist wichtig, das Standardkennwort des Kibana-Benutzers zu ändern. Führen Sie den folgenden Befehl aus, um das Kennwort zu ändern.
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/kibana/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewKibanaPassword"
}
'
Ersetzen Sie diese 192.168.0.1durch die tatsächliche private IP-Adresse des Servers und NewKibanaPassworddurch das neue Kennwort für den Kibana-Benutzer.
Bearbeiten Sie die Kibana-Konfigurationsdatei, indem Sie Folgendes ausführen:
sudo nano /etc/kibana/kibana.yml
Suchen Sie die folgenden Zeilen und ändern Sie die Werte gemäß den Anweisungen.
#elasticsearch.url: "http://localhost:9200"
#elasticsearch.username: "user"
#elasticsearch.password: "password"
Kommentieren Sie die obigen Zeilen aus und elasticsearch.urlgeben Sie die URL für die Elasticsearch-Instanz an. Die IP-Adresse muss dieselbe IP sein, in der sie verwendet wurde elasticsearch.yml. Stellen Sie außerdem den Benutzernamen von userbis ein elasticund geben Sie auch das Passwort des zuvor festgelegten elastischen Benutzers an.
Starten Sie die Kibana-Instanz neu, indem Sie Folgendes ausführen:
sudo systemctl restart kibana
Installieren Sie Nginx als Reverse-Proxy für Kibana
Da wir Kibana am localhostPort ausführen 5601, wird empfohlen, einen Reverse-Proxy mit Apache oder Nginx einzurichten, um von außerhalb des lokalen Netzwerks auf Kibana zuzugreifen. In diesem Tutorial werden wir Nginx als Reverse-Proxy für Kibana einrichten. Wir werden die Nginx-Instanz auch mit einem kostenlosen SSL-Zertifikat von Let's Encrypt sichern.
Installieren Sie Nginx, indem Sie Folgendes ausführen:
sudo apt -y install nginx
Starten Sie Nginx und aktivieren Sie es, damit es beim Booten automatisch gestartet wird.
sudo systemctl start nginx
sudo systemctl enable nginx
Nachdem der Nginx-Webserver installiert ist und ausgeführt wird, können wir mit der Installation von Certbot fortfahren, dem offiziellen und automatischen Let's Encrypt-Zertifikatclient. Fügen Sie Ihrem System Certbot PPA hinzu, indem Sie Folgendes ausführen:
sudo add-apt-repository ppa:certbot/certbot
Aktualisieren Sie die Repository-Metainformationen.
sudo apt update
Jetzt können Sie die neueste Version von Certbot einfach installieren, indem Sie Folgendes ausführen:
sudo apt -y install python-certbot-nginx
Mit dem vorherigen Befehl werden die erforderlichen Abhängigkeiten zusammen mit dem Certbot-Paket aufgelöst und installiert.
Nachdem wir Certbot installiert haben, generieren Sie die Zertifikate für Ihre Domain, indem Sie Folgendes ausführen:
sudo certbot certonly --webroot -w /var/www/html/ -d kibana.example.com
Vergessen Sie nicht, kibana.example.comIhren tatsächlichen Domainnamen zu ändern . Der vorherige Befehl verwendet den Certbot-Client. Der certonlyParameter weist den Certbot-Client an, nur die Zertifikate zu generieren. Durch die Verwendung dieser Option wird sichergestellt, dass Zertifikate nicht automatisch installiert werden und sich die Nginx-Konfiguration nicht geändert hat. Die Überprüfung erfolgt durch Ablegen der Herausforderungsdateien im angegebenen webrootVerzeichnis.
Certbot fordert Sie auf, Ihre E-Mail-Adresse anzugeben, um die Verlängerungsbenachrichtigung zu senden. Sie müssen auch die Lizenzvereinbarung akzeptieren.
Um Zertifikate von Let's Encrypt CA zu erhalten, müssen Sie sicherstellen, dass die Domäne, für die die zu generierenden Zertifikate erstellt werden, auf den Server verweist. Wenn nicht, nehmen Sie die erforderlichen Änderungen an den DNS-Einträgen Ihrer Domain vor und warten Sie, bis sich der DNS verbreitet hat, bevor Sie die Zertifikatanforderung erneut stellen. Certbot überprüft die Domänenautorität, bevor die Zertifikate bereitgestellt werden.
Die generierten Zertifikate werden wahrscheinlich im /etc/letsencrypt/live/kibana.example.com/Verzeichnis gespeichert . Das SSL-Zertifikat wird als gespeichert fullchain.pemund der private Schlüssel wird als gespeichert privkey.pem.
Lassen Sie uns Zertifikate verschlüsseln, die in 90 Tagen ablaufen. Daher wird empfohlen, die automatische Verlängerung für die Zertifikate mithilfe von Cronjobs einzurichten. Cron ist ein Systemdienst, mit dem regelmäßige Aufgaben ausgeführt werden.
Öffnen Sie die Cron-Jobdatei, indem Sie Folgendes ausführen:
sudo crontab -e
Fügen Sie am Ende der Datei die folgende Zeile hinzu.
30 5 * * 1 /usr/bin/certbot renew -a nginx --quiet
Der oben genannte Cron-Job wird jeden Montag um 5:30 Uhr ausgeführt. Wenn das Zertifikat abläuft, werden sie automatisch erneuert.
Bearbeiten Sie die virtuelle Standardhostdatei für Nginx, indem Sie den folgenden Befehl ausführen.
sudo nano /etc/nginx/sites-available/default
Ersetzen Sie den vorhandenen Inhalt durch den folgenden Inhalt.
server {
listen 80 default_server;
server_name kibana.example.com
return 301 https://$server_name$request_uri;
}
server {
listen 443 default_server ssl http2;
server_name kibana.example.com;
ssl_certificate /etc/letsencrypt/live/kibana.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kibana.example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Stellen Sie sicher, dass Sie kibana.example.commit Ihrem tatsächlichen Domainnamen aktualisieren , und überprüfen Sie auch den Pfad zum SSL-Zertifikat und zum privaten Schlüssel.
Starten Sie den Nginx-Webserver neu, indem Sie Folgendes ausführen:
sudo systemctl restart nginx
Wenn alles richtig konfiguriert wurde, wird der Kibana-Anmeldebildschirm angezeigt. Melden Sie sich mit dem Benutzernamen kibanaund dem von Ihnen festgelegten Passwort an. Sie sollten sich erfolgreich anmelden und das Kibana-Dashboard anzeigen können. Verlassen Sie das Dashboard, wir werden es später konfigurieren.
Installieren Sie Logstash
Logstash kann auch über das offizielle Elasticsearch-Repository installiert werden, das wir zuvor hinzugefügt haben. Installieren Sie Logstash, indem Sie Folgendes ausführen:
sudo apt -y install logstash
Mit dem obigen Befehl wird die neueste Version von Logstash auf Ihrem System installiert. Laden Sie nach der Installation von Logstash den Systemd-Dienstdämon neu, indem Sie Folgendes ausführen:
sudo systemctl daemon-reload
Starten Sie Logstash und aktivieren Sie es, damit es beim Booten automatisch gestartet wird.
sudo systemctl enable logstash
sudo systemctl start logstash
Installieren Sie X-Pack für Logstash
Sie können X-Pack for Logstash direkt installieren, indem Sie Folgendes ausführen:
cd /usr/share/logstash
sudo bin/logstash-plugin install x-pack
X-Pack für Logstash wird mit einem Standardbenutzer geliefert logstash_system. Sie können das Kennwort zurücksetzen, indem Sie Folgendes ausführen:
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewLogstashPassword"
}
'
Ersetzen Sie diese 192.168.0.1durch die tatsächliche private IP-Adresse des Servers und NewLogstashPassworddurch das neue Kennwort für den Logstash-Benutzer.
Starten Sie nun den Logstash-Dienst neu, indem Sie Folgendes ausführen:
sudo systemctl restart logstash
Bearbeiten Sie die Logstash-Konfigurationsdatei, indem Sie Folgendes ausführen:
sudo nano /etc/logstash/logstash.yml
Fügen Sie am Ende der Datei die folgenden Zeilen hinzu, um die Überwachung der Logstash-Instanz zu ermöglichen.
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.url: http://192.168.0.1:9200
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: NewLogstashPassword
Ersetzen Sie die Elasticsearch-URL und das Logstash-Passwort entsprechend Ihrer Einrichtung.
Sie können Logstash jetzt so konfigurieren, dass Daten mit verschiedenen Beats empfangen werden. Es gibt verschiedene Arten von Beats: Packetbeat, Metricbeat, Filebeat, Winlogbeat und Heartbeat. Sie müssen jeden Beat separat installieren.
Fazit
In diesem Tutorial haben wir Elastic Stack mit X-Pack unter Ubuntu 17.04 installiert. Auf Ihrem Server ist jetzt ein grundlegender ELK-Stapel installiert.