Skip to content

#ToolTip - ELK Stack

Descrição: ELK é um pack de ferramentas utilizadas largamente em vários cenários, que podem variar desde um simples syslog, passando por SIEM (Correlacionador de Logs e Eventos) e podendo chegar correlação de bancos de dados, BigData e servindo com seus Dashboards para as áreas de negócio e Marketing.

Workflow das Informações de LOG: - Logstash: É uma solução para gerenciamento e agregação de logs. Você consegue agregar logs de máquinas, sistemas operacionais e aplicações distintas em um único lugar. O Logstash permite pegar dados ou qualquer outro registro baseado em tempo, de onde quiser, processar e analisar exatamente como você quiser. O formato estruturado do JSON é o padrão, e também é a forma como o ElasticSearch vai tratá-lo. Existem diversas opções de filtros e funcionalidades similares. - Elasticsearch: É uma engine de busca com foco na análise de dados em tempo real. Ele possui compatibilidade com a funcionalidade de pesquisa de texto completo padrão, mas também diversas opções poderosas de realização de queries. O ElasticSearch é baseado em documentos orientados e você pode armazenar tudo o que quiser no formato JSON. - Kibana: É o frontend do nosso stack, que irá apresentar os dados armazenados pelo Logstash no ElasticSearch, em uma interface altamente customizável com histograma e outros painéis. Ele permite transformar os logs em informações úteis, pois permite realizar correlação de eventos, filtrar logs por origem, hosts, e N outras combinações.

Após a exemplicação acima, escolhemos o cenário de Syslog centralizado para: * Acesso a rede: Switches(tráfego) * Aplicações/Sistemas (Tomcat) * Monitoramento de comandos (Linux) * Auditoria Windows (AD, FileServer) (exemplificação dos arquivos de configuração nas outras partes)

Instalação e Configuração Básica do ELK:

Criar VM Linux CentOS básica: Template CentOS 7

Realizar as seguintes instalações:

[root@elk ~]# yum -y install epel-release  wget
[root@elk ~]# yum -y update

Após essas ações os servidor deve ser rebootado e instalado o java na última versão.

[root@elk ~]# cd /opt/
[root@elk ~]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-[root@elk ~]# pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz"
[root@elk ~]# tar xzf jdk-8u151-linux-x64.tar.gz
[root@elk ~]#
[root@elk ~]# cd /opt/jdk1.8.0_151/
[root@elk ~]# alternatives --install /usr/bin/java java /opt/jdk1.8.0_151/bin/java 2
[root@elk ~]# alternatives --config java
[root@elk ~]#  
[root@elk ~]# alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_151/bin/jar 2
[root@elk ~]# alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_151/bin/javac 2
[root@elk ~]# alternatives --set jar /opt/jdk1.8.0_151/bin/jar
[root@elk ~]# alternatives --set javac /opt/jdk1.8.0_151/bin/javac
[root@elk ~]#
[root@elk ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b09)
OpenJDK 64-Bit Server VM (build 25.151-b09, mixed mode)
[root@elk ~]# export JAVA_HOME=/opt/jdk1.8.0_151
[root@elk ~]# export JRE_HOME=/opt/jdk1.8.0_151/jre
[root@elk ~]# export PATH=$PATH:/opt/jdk1.8.0_151/bin:/opt/jdk1.8.0_151/jre/bin

Criar o arquivo com informações de repositório de todas as features instalada no serviço ELK.

[root@elk ~]# cat /etc/yum.repos.d/elasticsearch.repo
[elk-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Instalaremos as features do ELK.

[root@elk ~]# yum -y install elasticsearch logstash kibana
[root@elk ~]# firewall-cmd --permanent --add-port 9200/tcp # ElasticSearch
[root@elk ~]# firewall-cmd --permanent --add-port 5044/tcp # Logstash
[root@elk ~]# firewall-cmd --permanent --add-port 5601/tcp # Kibana
[root@elk ~]# firewall-cmd --permanent --add-port 80/tcp # Nginx
[root@elk ~]# firewall-cmd --reload

Efetuar a alteração abaixo e os seguintes comandos para o Logstash:

[root@elk ~]# cat /etc/logstash/logstash.yml | grep -v "#"
path.data: /var/lib/logstash
path.logs: /var/log/logstash
[root@elk ~]# systemctl enable logstash
[root@elk ~]# systemctl start logstash

Efetuar a alteração abaixo e os seguintes comandos para o ElasticSearch.

[root@elk ~]# cat  /etc/elasticsearch/elasticsearch.yml|grep -v "#"
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: <IP da VM>
http.port: 9200
[root@elk ~]# systemctl enable elasticsearch
[root@elk ~]# systemctl start elasticsearch

Efetuar a alteração abaixo e os seguintes comandos para o Kibana.

[root@elk ~]# cat /etc/kibana/kibana.yml |grep -v "#"
elasticsearch.url: "http://<IP DO ELASTICSEARCH>:9200"
logging.dest: /var/log/kibana.log
[root@elk ~]# systemctl enable kibana
[root@elk ~]# systemctl start kibana

Realizar a instalação do NGinx e configuração conformes abaixo:

[root@elk ~]# yum -y install nginx
[root@elk ~]# vim /etc/nginx/conf.d/kibana.conf
server {
        listen 80;
        server_name elk;
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd.users;
        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;
        }
}
[root@elk ~]# htpasswd -m /etc/nginx/htpasswd.users <USER.NAME>
[root@elk ~]# systemctl enable nginx
[root@elk ~]# systemctl start nginx

Essa é a instalação base do ELK, nas outras partes teremos mais exemplificações de como utilizar.