Graylog Server – Build – Deploy – AWS

>> Um pouco da teoria

O que esse tal de Graylog2?

O Graylog2 é um software que tem como objetivo centralizar e catalogar todos os tipos log’s ou eventos. Com o Graylog2 se torna mais simples a auditoria e a identificação dentro de uma rede corporativa ou até mesmo de uma aplicação.

Desenvolvimento pela empresa Alemã TORCH, está sob licença da GPLv3 sendo um software software Open Source, mas com a possibilidade da contratação do Enterprise.

Nas versões Enterprise você possuirá mais funcionalidades prontinhas para levar em produção.

Com o Graylog2 é possível realizar a consolidação, analise e gerenciamento dos log’s. Por possuir um processador de mensagens e um gerenciador de alertas, ele torna o gerenciamento muito mais robusto que um simples servidor de log.

Através do Graylog-Web é possível criar e gerenciar os log’s por usuário, tornando mais simples e possível a localização de um determinado log.

O Graylog2 facilita quase todas as áreas de um ambiente de TI. Ele pode ser extramente útil tanto para a Operação quanto para o Desenvolvimento.

GELF | Graylog Extended Log Format

Protocolo desenvolvido pela empresa TORCH. Tem como função o envio de mensagens através do protocolo UDP. Através deste formato é possível obter com detalhes os logs de diversas aplicações. Existem diversos conectores desenvolvidos para esse protocolo, alguns deles: (Java, Ruby e PHP).

Graylog2 Radio

O Graylog2 Radio é um Graylog2 Server reduzido, temo como função recebe as configurações de um Graylog2 Server para servir como uma especie de ‘sensor’ na rede. Ele armazena as mensagens em algum sistema de mensageiria (Kafka, ActiveMQ, RAbbitMQ ou AMQP Compliant) para que posteriormente o Graylog2 Server possa buscar/ler estas mensagens.

Syslog

syslog é um padrão criado pela IETF para a transmissão de mensagens de log em redes IP. O termo é geralmente usado para identificar tanto o protocolo de rede quanto para a aplicação ou biblioteca de envio de mensagens no protocolo syslog.

O protocolo syslog é muito simplista: o remetente envia uma pequena mensagem de texto (com menos de 1024 bytes) para o destinatário (também chamado ‘syslogd’, ‘serviço syslog’ ou ‘servidor syslog’). Tais mensagens podem ser enviadas tanto por UDP quanto por TCP. O conteúdo da mensagem pode ser puro ou codificado por SSL.

O protocolo syslog é tipicamente usado no gerenciamento de computadores e na auditoria de segurança de sistemas. Por ser suportado por uma grande variedade de dispositivos em diversas plataformas, o protocolo pode ser usado para integrar diferentes sistemas em um só repositório de dados.

Graylog Collector Sidecar

Graylog Collector Sidecar é um sistema de gerenciamento de configuração leve para diferentes coletores de log, também chamado Backends. Com o Graylog2 Collector O(s) node(s) atuam como um ‘hub’ centralizando as configurações dos coletores. Em dispositivos/hosts compatíveis com a geração de mensagens, o Sidecar pode ser executado como um serviço (host do Windows) ou (host Linux).

>> Parte técnica – P1 [Deploy do Graylog2 na AWS]

Deploy

Para Deploy do projeto será necessário que tenha o Ansible e o git já configurado no seu ambiente

Ansible: https://churrops.io/2017/06/27/ansible-entendendo-os-comandos-ad-hoc-parte-01/
Git: http://tutoriaisgnulinux.com/2017/01/06/_git-trabalhando-com-branchs-e-brincando-com-seus-comandos/

  • Clone do projeto
$ git clone https://github.com/vandocouto/graylog2.3.0-1.git
  • Acessando o projeto
$ cd graylog2.3.0-1/ansible/graylog/

>> Configurando o arquivos hosts

Elastic IP / Private IP
  • Ajuste o IP Público logo abaixo em – [graylog]
    Exemplo:
    [graylog]
    PUBLIC IP
    [all:ars]
    ipint=PRIVATE IP
    ipext=PUBLIC IP

>> Variávies

Graylog:

  • graylog_pass_secret: Generate one by using for example: pwgen -N 1 -s 96
  • graylog_root_pass: Create one by using for example: echo -n tutoriaisgnulinux | shasum -a 256

AWS:

  • accesskey:
  • secretkeys:
Exemplo:
[graylog]
54.196.66.95

[all:vars]

# EC2
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=../../keys/graylog.pem
ipint=10.0.0.223
ipext=54.196.66.95

# GRAYLOG
graylog_pass_secret=TxLguExNjEhpvq5UXXZrN3fuJP9f9uMRXTvHwMnfeyinguB83MSzOYWWvRIjiIIH4PujzQqHgSn9I2TqUslLmAaTFCNqA5qx
graylog_root_pass=2617493f1cba71cb06f35c04ca148edffbb8316b2ae63dfd60fad268618f68b6

# AWS ACCESS
accesskey=AKIAJC5LNZ2E
secretkeys=uL34EnVvNGS7u3tM8FNVyJ0
  • Faça o download da chave .pem para o diretório keys
  • Ajuste a permissão para 400
$ chmod 400 keys/graylog.pem
  • Ajustando a instância – Install python-simplejson (informe o Public IP da instância)
$ cd graylog2.3.0-1/ansible/graylog/
$ ansible 54.196.66.95 -i hosts -m 'raw apt-get -y install python-simplejson' -b
  • Deploy – Playbook
$ ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i hosts ./tasks/main.yml

Error!

  • Em caso de erro no docker-compose pelo Ansible, basta entrar na instância e executado o comando manualmente:
$ sudo su
# docker-compose -f /docker-compose/graylog/docker-compose.yml up -d logspout

Login!!!

http://54.196.66.95
user: admin
pass: tutoriaisgnulinux

>> Input’s – Filter’s – Output’s – Grok…  – Quanta coisa, vou ficar a noite toda estudando!

inputs, ou entradas, que são as fontes dos eventos que serão analisados. Tais fontes devem ser arquivos alcançáveis pelo sistema operacional onde o Logstash está instalado.

filters, ou filtros, que são transformações e operações que podem ser realizadas sobre os dados presentes nos eventos. Geralmente são escritos na linguagem de scripts Grok, mas existem também outros tipos de filtros também.

outputs, ou saída, que definem onde e como os eventos serão escritos.

Leia mais em: Elasticsearch:

Como gerenciar logs com Logstash

http://www.devmedia.com.br/elasticsearch-como-gerenciar-logs-com-logstash/32939#ixzz3pnhVqTuO

Para que server o GROK?

O Grok tem como função analisar o texto filtrado e estruturá-lo para o Logstash

Veja o desenho abaixo… eu quem fiz! rs

Os logs chegam pelos input’s, os filter’s tratam esses logs que na sequência vão para os output’s

>> Primeiro login

Após o primeiro login, a primeiro coisa será definir o primeiro input.

Este primeiro input será o GELF

Criando o input GELF

Após criado, já basta dar o start para iniciar o input

Opa, já temos alguma coisa sendo processada? Exato, temos!

>> Vamos falar um pouco sobre o Logspout

O Logspout é um roteador de log para recipientes dos containers Docker, que são executados dentro de um ambiente Docker (Swarm, Kubernetes, Rancher e etc). Ele se conecta a todos os containers em um host e, em seguida, encaminha seus logs para onde quer que você deseja.

No projeto que disponibilizei no github, já tem um container do logspout que já esta olhando para os contianers do projeto Graylog2.  Por isso a imagem abaixo mostra que já tem logs sendo tratados

Criando o segundo input Syslog UDP

Agora basta configurar o rsyslog para enviar os logs para o Graylog2.

E como configuro?

Para enviarmos os eventos no formato padrão Syslog, será necessário realizar uma pequena alteração no rsylog.d. Basta criar o arquivo 10-graylog2.conf dentro do diretório /etc/rsyslog.d.

Neste arquivo deverá conter o formato (template) padrão do Syslog, para envio dos eventos.
Também deverá conter no arquivo a regex (*.*) @IP:PORTA;NOME-DO-TEMPLATE que receberá os eventos enviados.

Obs: Esta alteração deverá ocorrer em todos os servidores que queiram enviar os eventos para o Graylog2.

# # cd /etc/rsyslog.d/
# vim 10-graylog2.conf
# Format input Syslog UDP - Graylog2.
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @10.0.0.223:1514;GRAYLOGRFC5424

Após o ajuste, basta reiniciar o serviço do Rsylog.

# systemctl restart rsyslog

Enfim… acho que para o meu primeiro tutorial é isso!

Até.

Graylog Server – Build – Deploy – AWS
Tagged on:     

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: