28 de out. de 2019

Habilitando certificado SSL para OTRS 6

Olá, meu caro!

Nest post vou compartilhar uma informação bastante importe, mas com foco em um sistema de ITSM em específico, o OTRS versão 6, última versão lançada pelo grupo OTRS que será disponibilizada gratuitamente.  Dentre implantações nos deparamos com necessidades, uma delas é a de prover a segurança básica aos usuários que trafegam na ferramenta. Esse post segue basicamente duas etapas habilitação do SSL no servior Web com importação dos certificados e habilitação do HTTPS nas configurações do otrs. Abaixo uma lista com os motivos para utilizar o HTTPS com otrs. 



Razões para usar HTTPS com OTRS
… Bem, realmente, não há motivo para NÃO usar!
  • Quando você NÃO está usando HTTPS, está expondo sua senha em texto sem formatação ao fazer login. Mesmo se você estivesse usando apenas OTRS na sua rede corporativa, pode confiar em tudo e em todos na sua rede?
  • Você está tendo dados sobre seus clientes no OTRS. Você deve garantir que esses dados não sejam expostos ou vazem; portanto, você deve usar HTTPS ao acessar o OTRS no seu navegador da web.
  • Além da criptografia; também há o aspecto de ataques MITM no seu servidor da web. Se você possui um certificado em seu servidor da Web, pode ter certeza de que o servidor que está procurando e a senha para digitar a senha são na verdade SEU servidor e não um cara que usa o mesmo DNS envenenamento por wifi do hotel.
  • Mesmo que você não se importe com a segurança, o uso de SSL e HTTPS é um pré-requisito para o uso do mod_spdy com o Apache, que traz muitos dos recursos HTTP / 2.0 futuros para o servidor Apache e para navegadores modernos, como Google Chrome e Mozilla Firefox. Isso torna o OTRS mais rápido!



Vamos lá. 

Etapas 

  1. Instalação do mod_ssl 
  2. Importar certificados
  3. Configuração do apache
  4. Habilitar tráfego https e porta 443 no firewalld e iptables
  5. Habilitação do redirect https no otrs

The mount command options

Hello, my dear. 

Today I'm going talk about the mount options, this topic is very basic but is very important for us remember in some moments when we going work with file system, because case u have that mount the file system, is important you remember the configuring the file system with the best mode and security. I created the table bellow and I share here in my blog with you. 

The mount command supports numerous options. Some  of them are described in table 


22 de out. de 2019

Removendo indices de séries temporais com ElasticSearch Curator

Olá, meu caro.

Irei apresentar o Curator, uma ferramenta desenvolvida em python muito útil para gerenciamento de indices do Elasticsearch. O Curator executa muitas operações nos indices do elasticsearch além de muito útil para remover e gerenciar snapshots.
01 - Remoção de indices com curator

 Quando você trabalha com grandes volumes de dados e logs é extremamente importante ter um planejamento de retenção desses dados nos indices do elasticsearch, no meu caso,  recebo aproximadamente 500GB diário de dados de logs, é uma quantidade razoavelmente grande, se não houver capacidade de armazenamento suficiente, rapidamente perdemos a capacidade de armazenar, é preciso rotacionar.


Recursos do curator 

Veja mais em: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/about-features.html


Instalação

Como mencionado anteriormente o curator foi escrito em python, iremos precisar do pip para instalá-lo. 

# pip install elasticsearch-curator 

 

Configurando


Crie um diretório chamado curator, dentro deste diretório você deve criar o arquivo de configuração curator_cluster_config.yml com o conteudo abaixo que deve ser modificado de acordo com o seu ambiente. 
 
Arquivo de configuração utilizando SSL. 


# Remember, leave a key empty if there is no value.  None will be a string, not a Python "NoneType"
client:
  hosts:
    - "elk-cluster.isweluiz.com"
  port: 9200
  url_prefix:
  use_ssl: True
  # The certificate file is the CA certificate used to sign all ES node certificates.
  # Use same CA certificate to generate and sign the certificate running curator (specified in properties client_cert and client_key)
  certificate: '/work/elk/elasticsearch-6.3.2/config/x-pack/certificate-bundle/ca/ca.crt'
  client_cert: '/work/elk/elasticsearch-6.3.2/config/x-pack/certificate-bundle/myhostname/myhostname.crt'
  client_key: '/work/elk/elasticsearch-6.3.2/config/x-pack/certificate-bundle/myhostname/myhostname.key'
  ssl_no_validate: False
  # Username password to connect to ES using basic auth
  http_auth: "username:password"
  timeout: 30
  master_only: False
 
logging:
  loglevel: INFO
  logfile:
  logformat: default
  blacklist: ['elasticsearch', 'urllib3']


Uma configuração de cluster sem a utilização do SSL, o que será muito mais simples, como abaixo:


# Remember, leave a key empty if there is no value.  None will be a string, not a Python "NoneType"
client:
  hosts:
    - "elk-cluster.isweluiz.com"
  port: 9200
  url_prefix:
  use_ssl: False
  certificate:
  client_cert:
  client_key:
  ssl_no_validate: False
  http_auth: "username:password"
 
logging:
  loglevel: WARNING
  logfile:
  logformat: default
  blacklist: ['elasticsearch', 'urllib3']

 
Após criar um arquivo de configuração e incluir a configuração do seu cluster, podemos prosseguir para a próxima etapa, que será a criação de uma ação que será executada em nosso cluster.  Você pode checar a documentação oficial para verificar todas as ações disponíveis com o curator.

Removendo indices com séries temporais  

  O ElasticSearch é uma ótima opção para armazenar dados de séries temporais por vários motivos. As equipes de índices do ElasticSearch criam automaticamente índices e aliases que permitem pesquisar de maneira uniforme vários índices. O ElasticSearch não fornece remoção automática de dados.

Como exemplo, excluiremos todos os índices do filebeat-*,  auditbeat-* e metricbeat-* com mais de 7 dias. Usaremos delete_indices como ação.

Nossos índices são nomeados com o sufixo YYYY.MM.DD, portanto, precisamos informar ao Curator sobre nosso formato e quais índices remover. Abaixo está o arquivo de ação de amostra curator_actions.yml, que excluirá os índices do elastic com mais de 7 dias:


Uma ação para cada: 

actions:
  1:
    action: delete_indices
    description: >-
    options:
      timeout_override: 300
      continue_if_exception: True
      ignore_empty_list: True
      disable_action: False
    filters:
      - filtertype: pattern
        kind: regex
        value: filebeat-*
        exclude:
      - filtertype: age
        source: name
        direction: older
        timestring: '%Y.%m.%d'
        unit: days
        unit_count: 7
  2:
    action: delete_indices
    description: >-
    options:
      timeout_override: 300
      continue_if_exception: True
      ignore_empty_list: True
      disable_action: False
    filters:
      - filtertype: pattern
        kind: regex
        value: auditbeat-*
        exclude:
      - filtertype: age
        source: name
        direction: older
        timestring: '%Y.%m.%d'
        unit: days
        unit_count: 7
  3:
    action: delete_indices
    description: >-
    options:
      timeout_override: 300
      continue_if_exception: True
      ignore_empty_list: True
      disable_action: False
    filters:
      - filtertype: pattern
        kind: regex
        value: metricbeat-*
        exclude:
      - filtertype: age
        source: name
        direction: older
        timestring: '%Y.%m.%d'
        unit: days
        unit_count: 7



Única ação para remover todos os indices mencionados:


# Remember, leave a key empty if there is no value.  None will be a string, not a Python "NoneType"
actions:
  1:
    action: delete_indices
    description: >-
      
      timeout_override: 300
      continue_if_exception: True
      ignore_empty_list: True
      disable_action: False
    filters:
      - filtertype: pattern
        kind: regex
        value: '^\.(metricbeat-|filebeat-|auditbeat-).*$'
        exclude:
      - filtertype: age
        source: name
        direction: older
        timestring: '%Y.%m.%d'
        unit: days
        unit_count: 7


 A partir do diretório criado anteriormente, iremos executar o curator para testar  as configurações, para isso passamos o parâmetro --dry-run ao final da linha de comando.

[root@isweluiz]# curator --config curator_cluster_config.yml  curator_actions.yml --dry-run
2019-10-22 13:53:36,422 INFO      Preparing Action ID: 1, "delete_indices"
2019-10-22 13:53:36,422 INFO      Creating client object and testing connection
2019-10-22 13:53:36,469 INFO      Instantiating client object
2019-10-22 13:53:36,471 INFO      Testing client connectivity
2019-10-22 13:53:36,481 INFO      Successfully created Elasticsearch client object with provided settings
2019-10-22 13:53:36,484 INFO      Trying Action ID: 1, "delete_indices":
2019-10-22 13:53:38,023 INFO      DRY-RUN MODE.  No changes will be made.
2019-10-22 13:53:38,023 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2019-10-22 13:53:38,025 INFO      Action ID: 1, "delete_indices" completed.
2019-10-22 13:53:38,026 INFO      Preparing Action ID: 2, "delete_indices"
2019-10-22 13:53:38,026 INFO      Creating client object and testing connection
2019-10-22 13:53:38,026 INFO      Instantiating client object
2019-10-22 13:53:38,027 INFO      Testing client connectivity
2019-10-22 13:53:38,032 INFO      Successfully created Elasticsearch client object with provided settings
2019-10-22 13:53:38,035 INFO      Trying Action ID: 2, "delete_indices":
2019-10-22 13:53:39,695 INFO      DRY-RUN MODE.  No changes will be made.
2019-10-22 13:53:39,695 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2019-10-22 13:53:39,697 INFO      Action ID: 2, "delete_indices" completed.
2019-10-22 13:53:39,697 INFO      Preparing Action ID: 3, "delete_indices"
2019-10-22 13:53:39,697 INFO      Creating client object and testing connection
2019-10-22 13:53:39,697 INFO      Instantiating client object
2019-10-22 13:53:39,698 INFO      Testing client connectivity
2019-10-22 13:53:39,703 INFO      Successfully created Elasticsearch client object with provided settings
2019-10-22 13:53:39,706 INFO      Trying Action ID: 3, "delete_indices":
2019-10-22 13:53:43,995 INFO      DRY-RUN MODE.  No changes will be made.
2019-10-22 13:53:43,996 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2019-10-22 13:53:43,998 INFO      Action ID: 3, "delete_indices" completed.
2019-10-22 13:53:43,998 INFO      Preparing Action ID: 4, "delete_indices"
2019-10-22 13:53:43,998 INFO      Creating client object and testing connection
2019-10-22 13:53:43,999 INFO      Instantiating client object
2019-10-22 13:53:43,999 INFO      Testing client connectivity
2019-10-22 13:53:44,006 INFO      Successfully created Elasticsearch client object with provided settings
2019-10-22 13:53:44,009 INFO      Trying Action ID: 4, "delete_indices":
2019-10-22 13:53:45,888 INFO      DRY-RUN MODE.  No changes will be made.
2019-10-22 13:53:45,889 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2019-10-22 13:53:45,891 INFO      Action ID: 4, "delete_indices" completed.
2019-10-22 13:53:45,891 INFO      Preparing Action ID: 5, "delete_indices"
2019-10-22 13:53:45,891 INFO      Creating client object and testing connection
2019-10-22 13:53:45,892 INFO      Instantiating client object
2019-10-22 13:53:45,892 INFO      Testing client connectivity
2019-10-22 13:53:45,897 INFO      Successfully created Elasticsearch client object with provided settings
2019-10-22 13:53:45,900 INFO      Trying Action ID: 5, "delete_indices":
2019-10-22 13:53:47,530 INFO      DRY-RUN MODE.  No changes will be made.
2019-10-22 13:53:47,531 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2019-10-22 13:53:47,533 INFO      Action ID: 5, "delete_indices" completed.
2019-10-22 13:53:47,533 INFO      Job completed.


Com a opção --dry-run o curator habilita o modulo de verificação e não executa as ações nos indices.

Agendando a execução diária do Curator

Para colocar na cron, você pode utilizar o comando; crontab -e para manipulação da crontab do usuário logado no momento. A cron abaixo irá executar todos os dias às 00:59h, ao final da linha acrescentei o redirecionamento para um aquivo chamado curator_delete.out, para armazenar a saída da execução do curator.

59 00 * * *  curator --config /opt/curator/curator_cluster_config.yml  /opt/curator/curator_actions.yml >> /tmp/curator_delete.out


Para opções de agendamento na cron você pode utilizar o site https://crontab.guru/.

 Leitura recomendada