Preduvjeti
Korak 1: Izvršite ažuriranje sustava
Korak 2: Instalirajte Javu
Korak 3: Instalirajte Elasticsearch
Korak 4: Instalirajte Kibana
Instalirajte Logstash
Zaključak
Kako IT infrastruktura prelazi u oblak, a Internet stvari postaje popularan, organizacije i IT profesionalci sve više koriste javne usluge u oblaku. Kako se povećavaju poslužitelji i usluge koje se na njima pokreću, tako se povećava i količina zapisnika koje generira sustav. Analiza ovih dnevnika vrlo je važna u infrastrukturi iz nekoliko razloga. To uključuje usklađenost sa sigurnosnim politikama i propisima, rješavanje problema sa sustavom, reagiranje na sigurnosni incident ili razumijevanje ponašanja korisnika.
Tri vrlo popularne aplikacije otvorenog koda pod nazivom Elasticsearch, Logstash i Kibana kombiniraju se kako bi stvorili Elastic Stack ili ELK Stack. Elastic Stack je vrlo moćan alat za pretraživanje, analizu i vizualizaciju dnevnika i podataka. Elasticsearch je distribuirana, skalabilna i vrlo dostupna aplikacija u stvarnom vremenu za pohranu zapisnika i pretraživanje kroz njih. Logstash prikuplja zapise koje šalje Beats, poboljšava ih i zatim ih šalje u Elasticsearch. Kibana je web korisničko sučelje koje se koristi za vizualizaciju dnevnika i djelotvornih uvida.
U ovom vodiču instalirat ćemo najnoviju verziju Elasticsearch, Logstash i Kibana s X-Packom na Ubuntu 17.04.
Preduvjeti
Da biste slijedili ovaj vodič, trebat će vam Vultr 64-bitna instanca poslužitelja Ubuntu 17.04 s najmanje 4 GB RAM-a . Za proizvodno okruženje, hardverski zahtjevi rastu s brojem korisnika i dnevnika.
Ovaj vodič je napisan iz sudoperspektive korisnika. Za postavljanje sudo korisnika slijedite vodič Kako koristiti Sudo na Debianu .
Također će vam trebati domena usmjerena prema vašem poslužitelju za dobivanje certifikata od Let's Encrypt CA.
Prije instaliranja bilo kojeg paketa na instancu Ubuntu poslužitelja, preporučuje se ažuriranje sustava. Prijavite se pomoću sudo korisnika i pokrenite sljedeće naredbe za ažuriranje sustava.
sudo apt update
sudo apt -y upgrade
Nakon što je sustav završio nadogradnju, prijeđite na sljedeći korak.
Korak 2: Instalirajte Javu
Elasticsearch zahtijeva Java 8 za rad. Podržava i Oracle Java i OpenJDK. Ovaj dio vodiča pokazuje instalaciju Oracle Java i OpenJDK.
Make sure that you install any one of the following Java versions. Installation of Oracle Java is recommended for Elasticsearch. However, you may also choose to install OpenJDK according to your preference.
Instalacija Oracle Java
Da biste instalirali Oracle Java na svoj Ubuntu sustav, morat ćete dodati Oracle Java PPA tako što ćete pokrenuti:
sudo add-apt-repository ppa:webupd8team/java
Sada ažurirajte podatke o spremištu tako što ćete pokrenuti:
sudo apt update
Sada možete jednostavno instalirati najnoviju stabilnu verziju Jave 8 tako što ćete pokrenuti:
sudo apt -y install oracle-java8-installer
Prihvatite licencni ugovor kada se to od vas zatraži. Nakon što je instalacija gotova, možete provjeriti verziju Jave tako što ćete pokrenuti:
java -version
Trebali biste vidjeti izlaz sličan:
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)
Također možete postaviti JAVA_HOMEi druge zadane postavke instaliranjem oracle-java8-set-default. Trčanje:
sudo apt -y install oracle-java8-set-default
Sada možete provjeriti je li JAVA_HOMEvarijabla postavljena tako da pokrenete:
echo "$JAVA_HOME"
Izlaz bi trebao izgledati:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-oracle
Ako ne dobijete gore prikazani izlaz, možda ćete se morati odjaviti i ponovno prijaviti na shell. Oracle Java je sada instalirana na vašem poslužitelju. Sada možete nastaviti na korak 3 vodiča preskačući instalaciju OpenJDK.
Instalacija OpenJDK
Instalacija OpenJDK je prilično jednostavna. Jednostavno pokrenite sljedeću naredbu da instalirate OpenJDK.
sudo apt -y install default-jdk
Nakon što je instalacija gotova, možete provjeriti verziju Jave tako što ćete pokrenuti:
java -version
Trebali biste vidjeti izlaz sličan:
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)
Da biste postavili JAVA_HOMEvarijablu, pokrenite sljedeću naredbu:
sudo echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/environment
Ponovno učitajte datoteku okruženja pokretanjem:
sudo source /etc/environment
Sada možete provjeriti je li JAVA_HOMEvarijabla postavljena tako da pokrenete:
echo "$JAVA_HOME"
Izlaz bi trebao izgledati:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-openjdk-amd64/
Korak 3: Instalirajte Elasticsearch
Elasticsearch je super-brza, distribuirana, vrlo dostupna, RESTful tražilica. Dodajte spremište Elasticsearch APT pokretanjem:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Gornja naredba stvara novu datoteku spremišta za Elasticsearch i dodaje izvorni unos u nju. Sada uvezite PGP ključ koji se koristi za potpisivanje paketa.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Ažurirajte metapodatke APT spremišta pokretanjem:
sudo apt update
Instalirajte Elasticsearch pokretanjem sljedeće naredbe.
sudo apt -y install elasticsearch
Gornja naredba instalirat će najnoviju verziju Elasticsearcha na vaš sustav. Nakon što je Elasticsearch instaliran, ponovno učitajte Systemd servisni demon tako što ćete pokrenuti:
sudo systemctl daemon-reload
Pokrenite Elasticsearch i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Da zaustavite Elasticsearch, možete pokrenuti:
sudo systemctl stop elasticsearch
Za provjeru statusa usluge možete pokrenuti:
sudo systemctl status elasticsearch
Elasticsearch sada radi na portu 9200. Možete provjeriti radi li i daje li rezultate tako da pokrenete sljedeću naredbu.
curl -XGET 'localhost:9200/?pretty'
Ispisat će se poruka slična sljedećoj.
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"
}
Instalirajte X-Pack za Elasticsearch
X-Pack je dodatak Elastic Stack koji nudi mnoge dodatne značajke kao što su sigurnost, upozorenje, nadzor, izvješćivanje i mogućnosti grafiranja. X-Pack također pruža autentifikaciju korisnika za Elasticsearch i Kibana, kao i praćenje različitih čvorova u Kibani. Važno je da su X-Pack i Elasticsearch instalirani s istom verzijom.
Možete instalirati X-Pack za Elasticsearch izravno pokretanjem:
cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install x-pack
Za nastavak instalacije unesite ykada se to od vas zatraži. Ova naredba će instalirati dodatak X-Pack na vaš sustav. Kada je instaliran, X-Pack omogućuje provjeru autentičnosti za Elasticsearch. Zadano korisničko ime je, elastica lozinka je changeme. Možete provjeriti je li provjera autentičnosti omogućena pokretanjem iste naredbe koju ste pokrenuli da provjerite radi li Elasticsearch.
curl -XGET 'localhost:9200/?pretty'
Sada će izlaz reći da autentifikacija nije uspjela.
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
}
Change the default password changeme by running the following command.
curl -XPUT -u elastic:changeme 'localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewElasticPassword"
}
'
Replace NewPassword with the actual password you want to use. You can check if the new password is set and Elasticsearch is working by running the following command.
curl -XGET -u elastic:NewElasticPassword 'localhost:9200/?pretty'
You will see output showing the successful execution of the query.
Further, edit Elasticsearch configuration file by running:
sudo nano /etc/elasticsearch/elasticsearch.yml
Find the following lines, uncomment the lines and change them according to instructions provided.
#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
For network.host, provide the private IP address assigned to the system. Restart the Elasticsearch instance by running:
sudo systemctl restart elasticsearch
Now, instead of localhost, you will need to use the IP address to run the query using curl.
curl -XGET -u elastic:NewElasticPassword '192.168.0.1:9200/?pretty'
Replace 192.168.0.1 with the actual private IP address of the server. Now that we have installed Elasticsearch, proceed further to install Kibana.
Step 4: Install Kibana
Kibana is used to visualize the logs and actionable insights using a web interface. It can also be used to manage Elasticsearch. It is recommended to install the same version of Kibana as Elasticsearch.
As we have already added the Elasticsearch repository and PGP key, we can install Kibana directly by running:
sudo apt -y install kibana
The previous command will install the latest version of Kibana on your system. Once Kibana has been installed, reload the Systemd service daemon by running:
sudo systemctl daemon-reload
You can start Kibana and enable it to automatically start at boot time by running:
sudo systemctl enable kibana
sudo systemctl start kibana
Install X-Pack for Kibana
You can install X-Pack for Kibana directly by running:
cd /usr/share/kibana
sudo bin/kibana-plugin install x-pack
X-Pack for Kibana has Graph, Machine Learning and Monitoring enabled by default. X-Pack also enables authentication for Kibana. The default username is kibana and password is changeme. It is important to change the default password of Kibana user. Run the following command to change the password.
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/kibana/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewKibanaPassword"
}
'
Replace 192.168.0.1 with the actual private IP address of the server and NewKibanaPassword with the new password for Kibana user.
Edit the Kibana configuration file by running:
sudo nano /etc/kibana/kibana.yml
Find the following lines and change the values according to instructions provided.
#elasticsearch.url: "http://localhost:9200"
#elasticsearch.username: "user"
#elasticsearch.password: "password"
Uncomment the lines above and, in elasticsearch.url provide the URL for Elasticsearch instance. The IP address must be the same IP that was used in elasticsearch.yml. Further, set the username from user to elastic and also provide the password of the elastic user which you have set earlier.
Restart the Kibana instance by running:
sudo systemctl restart kibana
Install Nginx as reverse proxy for Kibana
Since we are running Kibana on localhost at port 5601, it is recommended to setup a reverse proxy with Apache or Nginx to access Kibana from outside the local network. In this tutorial, we will setup Nginx as a reverse proxy for Kibana. We will also secure the Nginx instance with a Let's Encrypt free SSL certificate.
Install Nginx by running:
sudo apt -y install nginx
Start and enable Nginx to automatically start at boot time.
sudo systemctl start nginx
sudo systemctl enable nginx
Now that the Nginx web server is installed and running, we can proceed to install Certbot, which is the official and automatic Let's Encrypt certificate client. Add Certbot PPA to your system by running:
sudo add-apt-repository ppa:certbot/certbot
Update the repository meta information.
sudo apt update
Now you can easily install the latest version of Certbot by running:
sudo apt -y install python-certbot-nginx
The previous command will resolve and install the required dependencies along with the Certbot package.
Now that we have Certbot installed, generate the certificates for your domain by running:
sudo certbot certonly --webroot -w /var/www/html/ -d kibana.example.com
Do not forget to change kibana.example.com with your actual domain name. The previous command will use the Certbot client. The certonly parameter tells the Certbot client to generate the certificates only. Using this option ensures that certificates are not automatically installed, and that Nginx configuration has not changed. Verification will be done by placing the challenge files in the specified webroot directory.
Certbot will ask you to provide your email address to send the renewal notice. You will also need to accept the license agreement.
To obtain certificates from Let's Encrypt CA, you must ensure that the domain for which the certificates you wish to generate are pointed towards the server. If not, then make the necessary changes to the DNS records of your domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.
The generated certificates are likely to be stored in the /etc/letsencrypt/live/kibana.example.com/ directory. The SSL certificate will be stored as fullchain.pem and the private key will be stored as privkey.pem.
Let's Encrypt certifikati istječu za 90 dana, stoga je preporučljivo postaviti automatsku obnovu za certifikate koristeći cronjobs. Cron je sistemska usluga koja se koristi za izvršavanje periodičnih zadataka.
Otvorite datoteku zadatka cron tako što ćete pokrenuti:
sudo crontab -e
Dodajte sljedeći redak na kraj datoteke.
30 5 * * 1 /usr/bin/certbot renew -a nginx --quiet
Gornji cron posao će se izvoditi svakog ponedjeljka u 5:30 ujutro. Ako potvrda istekne, automatski će se obnoviti.
Uredite zadanu datoteku virtualnog hosta za Nginx pokretanjem sljedeće naredbe.
sudo nano /etc/nginx/sites-available/default
Zamijenite postojeći sadržaj sljedećim sadržajem.
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;
}
}
Provjerite jeste li ažurirali kibana.example.comstvarnim imenom domene, također provjerite put do SSL certifikata i privatnog ključa.
Ponovno pokrenite Nginx web poslužitelj tako što ćete pokrenuti:
sudo systemctl restart nginx
Ako je sve ispravno konfigurirano, vidjet ćete ekran za prijavu Kibana. Prijavite se koristeći korisničko ime kibanai lozinku koje ste postavili. Trebali biste se moći uspješno prijaviti i vidjeti nadzornu ploču Kibana. Ostavite nadzornu ploču, za sada ćemo je konfigurirati kasnije.
Instalirajte Logstash
Logstash se također može instalirati putem službenog spremišta Elasticsearch koje smo dodali ranije. Instalirajte Logstash pokretanjem:
sudo apt -y install logstash
Gornja naredba instalirat će najnoviju verziju Logstasha na vaš sustav. Nakon što se Logstash instalira, ponovno učitajte Systemd servisni demon tako što ćete pokrenuti:
sudo systemctl daemon-reload
Pokrenite Logstash i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl enable logstash
sudo systemctl start logstash
Instalirajte X-Pack za Logstash
Možete instalirati X-Pack za Logstash izravno pokretanjem:
cd /usr/share/logstash
sudo bin/logstash-plugin install x-pack
X-Pack za Logstash dolazi sa zadanim korisnikom logstash_system. Zaporku možete poništiti pokretanjem:
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewLogstashPassword"
}
'
Zamijenite 192.168.0.1stvarnom privatnom IP adresom poslužitelja i NewLogstashPasswordnovom lozinkom za Logstash korisnika.
Sada ponovno pokrenite Logstash uslugu tako što ćete pokrenuti:
sudo systemctl restart logstash
Uredite konfiguracijsku datoteku Logstash pokretanjem:
sudo nano /etc/logstash/logstash.yml
Dodajte sljedeće retke na kraj datoteke kako biste omogućili praćenje instance Logstash.
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
Zamijenite Elasticsearch URL i Logstash lozinku prema vašim postavkama.
Sada možete konfigurirati Logstash da prima podatke koristeći različite Beats. Dostupno je nekoliko vrsta otkucaja: Packetbeat, Metricbeat, Filebeat, Winlogbeat i Heartbeat. Morat ćete instalirati svaki Beat zasebno.
Zaključak
U ovom vodiču smo instalirali Elastic Stack s X-Packom na Ubuntu 17.04. Osnovni ELK Stack je sada instaliran na vašem poslužitelju.