Requisits previs
Pas 1: realitzeu una actualització del sistema
Pas 2: instal·leu Java
Pas 3: instal·leu Elasticsearch
Pas 4: instal·leu Kibana
Instal·leu Logstash
Conclusió
A mesura que la infraestructura de TI s'està traslladant al núvol i l'Internet de les coses s'està popularitzant, les organitzacions i els professionals de TI estan utilitzant els serveis públics en núvol en major mesura. A mesura que augmenten els servidors i serveis que s'hi executen, també augmenta la quantitat de registres generats pel sistema. L'anàlisi d'aquests registres és molt important en una infraestructura per diversos motius. Això inclou el compliment de les polítiques i les normatives de seguretat, la resolució de problemes del sistema, la resposta a un incident relacionat amb la seguretat o la comprensió del comportament de l'usuari.
Tres aplicacions de codi obert molt populars anomenades Elasticsearch, Logstash i Kibana es combinen per crear Elastic Stack o ELK Stack. Elastic Stack és una eina molt potent per cercar, analitzar i visualitzar registres i dades. Elasticsearch és una aplicació distribuïda, en temps real, escalable i d'alta disponibilitat per emmagatzemar registres i cercar-hi. Logstash recull els registres enviats per Beats, els millora i després els envia a Elasticsearch. Kibana és la interfície d'usuari web que s'utilitza per visualitzar els registres i la informació útil.
En aquest tutorial, instal·larem la darrera versió d'Elasticsearch, Logstash i Kibana amb X-Pack a Ubuntu 17.04.
Requisits previs
Per seguir aquest tutorial, necessitareu una instància de servidor Vultr Ubuntu 17.04 de 64 bits amb almenys 4 GB de RAM . Per a un entorn de producció, els requisits de maquinari augmenten amb el nombre d'usuaris i registres.
Aquest tutorial està escrit des de sudola perspectiva de l'usuari. Per configurar un usuari de sudo, seguiu la guia Com utilitzar Sudo a Debian .
També necessitareu un domini dirigit al vostre servidor per obtenir certificats de Let's Encrypt CA.
Abans d'instal·lar qualsevol paquet a la instància del servidor Ubuntu, es recomana actualitzar el sistema. Inicieu sessió amb l'usuari sudo i executeu les ordres següents per actualitzar el sistema.
sudo apt update
sudo apt -y upgrade
Un cop el sistema hagi acabat d'actualitzar, aneu al pas següent.
Pas 2: instal·leu Java
Elasticsearch requereix Java 8 per funcionar. És compatible amb Oracle Java i OpenJDK. Aquesta secció del tutorial mostra la instal·lació d'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.
Instal·lació d'Oracle Java
Per instal·lar Oracle Java al vostre sistema Ubuntu, haureu d'afegir l'Oracle Java PPA executant:
sudo add-apt-repository ppa:webupd8team/java
Ara actualitzeu la informació del repositori executant:
sudo apt update
Ara podeu instal·lar fàcilment la darrera versió estable de Java 8 executant:
sudo apt -y install oracle-java8-installer
Accepteu l'acord de llicència quan se us demani. Un cop finalitzada la instal·lació, podeu verificar la versió de Java executant:
java -version
Hauríeu de veure una sortida semblant a:
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)
També podeu establir els JAVA_HOMEvalors predeterminats i altres instal·lant oracle-java8-set-default. Correr:
sudo apt -y install oracle-java8-set-default
Ara podeu verificar si la JAVA_HOMEvariable està establerta executant:
echo "$JAVA_HOME"
La sortida hauria de semblar-se a:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-oracle
Si no obteniu la sortida que es mostra més amunt, és possible que hàgiu de tancar la sessió i tornar a iniciar sessió al shell. Oracle Java està instal·lat al vostre servidor. Ara podeu passar al pas 3 del tutorial saltant la instal·lació d'OpenJDK.
Instal·lant OpenJDK
La instal·lació d'OpenJDK és bastant senzilla. Simplement executeu l'ordre següent per instal·lar OpenJDK.
sudo apt -y install default-jdk
Un cop finalitzada la instal·lació, podeu verificar la versió de Java executant:
java -version
Hauríeu de veure una sortida semblant a:
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)
Per establir la JAVA_HOMEvariable, executeu l'ordre següent:
sudo echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/environment
Torneu a carregar el fitxer d'entorn executant:
sudo source /etc/environment
Ara podeu verificar si la JAVA_HOMEvariable està establerta executant:
echo "$JAVA_HOME"
La sortida hauria de semblar-se a:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-openjdk-amd64/
Pas 3: instal·leu Elasticsearch
Elasticsearch és un motor de cerca REST súper ràpid, distribuït, d'alta disponibilitat. Afegiu el dipòsit d'Elasticsearch APT executant:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
L'ordre anterior crea un fitxer de repositori nou per a Elasticsearch i hi afegeix l'entrada d'origen. Ara importeu la clau PGP utilitzada per signar els paquets.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Actualitzeu les metadades del repositori APT executant:
sudo apt update
Instal·leu Elasticsearch executant l'ordre següent.
sudo apt -y install elasticsearch
L'ordre anterior instal·larà la darrera versió d'Elasticsearch al vostre sistema. Un cop instal·lat Elasticsearch, torneu a carregar el dimoni de servei Systemd executant:
sudo systemctl daemon-reload
Inicieu Elasticsearch i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Per aturar Elasticsearch, podeu executar:
sudo systemctl stop elasticsearch
Per comprovar l'estat del servei podeu executar:
sudo systemctl status elasticsearch
Elasticsearch ara s'està executant al port 9200. Podeu verificar si funciona i produeix resultats executant l'ordre següent.
curl -XGET 'localhost:9200/?pretty'
S'imprimirà un missatge semblant al següent.
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"
}
Instal·leu X-Pack per a Elasticsearch
X-Pack és un connector Elastic Stack que ofereix moltes funcions addicionals com ara funcions de seguretat, alertes, monitorització, informes i gràfics. X-Pack també proporciona autenticació d'usuaris per a Elasticsearch i Kibana, així com el seguiment de diferents nodes a Kibana. És important que X-Pack i Elasticsearch estiguin instal·lats amb la mateixa versió.
Podeu instal·lar X-Pack for Elasticsearch directament executant:
cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install x-pack
Per continuar la instal·lació, introduïu yquan se us demani. Aquesta ordre instal·larà el connector X-Pack al vostre sistema. Quan s'instal·la, X-Pack permet l'autenticació per a Elasticsearch. El nom d'usuari elastici la contrasenya per defecte són changeme. Podeu comprovar si l'autenticació està activada executant la mateixa ordre que vau executar per comprovar si Elasticsearch funciona.
curl -XGET 'localhost:9200/?pretty'
Ara la sortida dirà que l'autenticació ha fallat.
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.
Els certificats de Let's Encrypt caduquen en 90 dies, per tant, es recomana configurar la renovació automàtica dels certificats mitjançant cronjobs. Cron és un servei del sistema que s'utilitza per executar tasques periòdiques.
Obriu el fitxer de treball cron executant:
sudo crontab -e
Afegiu la línia següent al final del fitxer.
30 5 * * 1 /usr/bin/certbot renew -a nginx --quiet
El treball cron anterior s'executarà tots els dilluns a les 5:30 del matí. Si el certificat ha de caducar, el renovarà automàticament.
Editeu el fitxer d'amfitrió virtual predeterminat per a Nginx executant l'ordre següent.
sudo nano /etc/nginx/sites-available/default
Substituïu el contingut existent pel contingut següent.
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;
}
}
Assegureu-vos que actualitzeu kibana.example.comamb el vostre nom de domini real, també verifiqueu el camí al certificat SSL i la clau privada.
Reinicieu el servidor web Nginx executant:
sudo systemctl restart nginx
Si tot s'ha configurat correctament, veureu la pantalla d'inici de sessió de Kibana. Inicieu sessió amb el nom d'usuari kibanai la contrasenya que hàgiu establert. Hauríeu de poder iniciar sessió correctament i veure el tauler de control de Kibana. Deixeu el tauler, de moment, el configurarem més endavant.
Instal·leu Logstash
Logstash també es pot instal·lar a través del dipòsit oficial d'Elasticsearch que hem afegit anteriorment. Instal·leu Logstash executant:
sudo apt -y install logstash
L'ordre anterior instal·larà la darrera versió de Logstash al vostre sistema. Un cop instal·lat Logstash, torneu a carregar el dimoni de servei Systemd executant:
sudo systemctl daemon-reload
Inicieu Logstash i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl enable logstash
sudo systemctl start logstash
Instal·leu X-Pack per a Logstash
Podeu instal·lar X-Pack for Logstash directament executant:
cd /usr/share/logstash
sudo bin/logstash-plugin install x-pack
X-Pack for Logstash ve amb un usuari predeterminat logstash_system. Podeu restablir la contrasenya executant:
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewLogstashPassword"
}
'
Substituïu 192.168.0.1-la per l'adreça IP privada real del servidor i NewLogstashPasswordper la nova contrasenya per a l'usuari de Logstash.
Ara reinicieu el servei Logstash executant:
sudo systemctl restart logstash
Editeu el fitxer de configuració de Logstash executant:
sudo nano /etc/logstash/logstash.yml
Afegiu les línies següents al final del fitxer per habilitar la supervisió de la instància de 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
Substituïu l'URL d'Elasticsearch i la contrasenya de Logstash segons la vostra configuració.
Ara podeu configurar Logstash per rebre dades amb diferents Beats. Hi ha diversos tipus de Beats disponibles: Packetbeat, Metricbeat, Filebeat, Winlogbeat i Heartbeat. Haureu d'instal·lar cada Beat per separat.
Conclusió
En aquest tutorial, hem instal·lat Elastic Stack amb X-Pack a Ubuntu 17.04. Ara s'ha instal·lat una pila ELK bàsica al vostre servidor.