sexta-feira, 28 de fevereiro de 2014

Verificando a data de expiração do Certificado do SSL no Linux com Zabbix


Introdução

Independentemente de o certificado ter sido adquirido junto a uma empresa certificadora, ou gerado internamente, ele tem uma validade e quando ela expirar os serviços que fazem uso desse certificado, vão apresentar problemas, para evitar isso iremos colher os dados do certificado via Shell Script e monitorar essa informação com o Zabbix.



Obtendo informações do Certificado

Digite o comando abaixo para visualizar as datas de validade do seu certificado

# echo | openssl s_client -connect localhost:443 2>/dev/null | openssl x509 -noout -dates

A sequencia de comandos abaixo é usada para cortar apenas o pedaço da informação que nos interessa, a data, a opção tr -s " " é utilizada para remover espaços duplicados, pois isso causaria problema em datas com um (Aug 6) ou dois (Aug 26) dígitos, de resto você pode ir executando o comando parte por parte e acompanhar o que acontece ;-)
#  echo | openssl s_client -connect localhost:443 2>/dev/null | openssl x509 -noout -dates | tail -1 | tr -s " " |cut -d "=" -f2 | cut -d " " -f1,2,4

Automatizando a leitura da Informação

certificado.sh

Vamos criar um script em bash para executar os comandos, nomeei-o de certificado.sh

 Alterar as permissões de execução e proprietário
# chown zabbix:zabbix /usr/local/etc/certificado.sh
# chmod 500 /usr/local/etc/certificado.sh


Configurando a informação no Zabbix

Configuração do agente

Vamos utilizar o recurso de UserParameter para que o Zabbix execute o script certificado.sh, após alterar o arquivo de configuração é necessário reiniciar o serviço.

Testando a leitura da informação

Vamos utilizar o comando zabbix_get para testar a leitura da informação. A sintaxe é zabbix_get -s IP_do_Servidor_Monitorado -k chave.

Criando o item no Zabbix

Acesse a interface do Zabbix // Configuração -> Hosts // Na linha do servidor clique em Itens // Clique no botão Criar item. Configure o item conforme imagem abaixo.

Observe que vamos monitorar o item a cada 24 horas (86400 segundos).

Download dos scripts

O script pode ser baixado aqui.

Referências

Blog do Vicente

11 comentários:

Santhiago Alves disse...

Muito bom o post.

Para levar em consideração o ano bissexto poderíamos usar cálculos com Unix Epoch, que são os segundos passados desde a data de referência 01/01/1970.

$ date -d +%s
$ date +"%s" -d "Mar 18 01:46:37 BRT 2014"

Sds.
Santhiago Alves

André Déo disse...

Santhiago poderíamos sim, mas nesse caso 1 ou 2 dias de diferença é irrelevante, porque vamos querer ser avisados com no mínimo uns 30 dias de antecedência né ;-)

Abraços,

Santhiago Alves disse...

André, você chegou a fazer com SSL no Windows ?

William Fahham disse...

Boa Tarde.

Fiquei com a seguinte duvida.

1 - o arquivo certificado.sh deve ser copiado para cada servidor a ser monitorado e informado o endereço da localização local do script ?

Ou apenas deve ficar no diretorio de scripts do servidor zabbix e no arquivo de cada servidor informar este caminho ?

2- estou encontrando o seguinte erro:

ZBX_NOTSUPPORTED: Unsupported item key.

André Déo disse...

Santhiago,

Fiz para o Exchange:
http://andredeo.blogspot.com.br/2014/02/verificando-data-de-expiracao-do.html

Alterar para o PowerShell do Windows não deve ser complicado.

Abraços,

André Déo disse...

William,

1 - Nesse exemplo eu estou deixando o certificado.sh em cada servidor, para ser um só no Zabbix Server é preciso adaptar.

2 - Verifique se o nome que você colocou no UserParameter é o mesmo da Key do item.

Abraços,

André Déo disse...

William,

1 - Nesse exemplo eu estou deixando o certificado.sh em cada servidor, para ser um só no Zabbix Server é preciso adaptar.

2 - Verifique se o nome que você colocou no UserParameter é o mesmo da Key do item.

Abraços,

Thiago Franco disse...

Boa tarde andre, parabens pelo post. Eu estava com essa necessidade e me atendeu perfeitamente porem eu tento realizar o mesmo no proprio servidor do Zabbix e tenho erro ao executar, ja verifiquei os dados do script e estão exatamente iguais aos outros servidores que funcionam.
Se possivel eu gostaria de uma luz do que verificar. Abraços

root@ip-10-1-2-50:/home/admin# zabbix_get -s 127.0.0.1 -k certificado
/usr/local/etc/certificado.sh: line 13: bc: command not found
root@ip-10-1-2-50:/home/admin#
root@ip-10-1-2-50:/home/admin# cat /usr/local/etc/certificado.sh
#!/bin/bash

# Armazena a data de expiração do certificado na variável A
A=`echo | openssl s_client -connect localhost:443 2>/dev/null | openssl x509 -noout -dates | tail -1 | tr -s " " |cut -d "=" -f2 | cut -d " " -f1,2,4`

# Converte a data de expiração do certificado para o padrão Ano-mês-dia e armazena o valor na variável B
B=`date -d "$A" +%Y-%m-%d`

# Exibe a data atual no padrão Ano-mês-dia e armazena o valor na variável C
C=`date +%Y-%m-%d`

# Realiza o cálculo simples (Sem levar em consideração ano bissexto, fusos horários diferentes, etc) e retorna o resultado em dias
echo "scale=0;("`date -d "$B" +%s`-`date -d "$C" +%s`")"/24/60/60|bc
root@ip-10-1-2-50:/home/admin#

Ribamar disse...

INFO CC CARTÃO DE CREDITO
WhatsApp: 098 98 10 51 543

Somos correspondentes bancários das seguintes instituições: BANCO BRADESCO S.A. – (CNPJ 60.746.948.0001-12), BANCO SANTANDER BRASIL S.A. – (CNPJ 90.400.888/0001-42), CAIXA ECONÔMICA FEDERAL. – (CNPJ: 00.360.305/0001-04).

CNH

Dentre disso confeccionamos cartões e informações de várias instituições financeiras, caso você trabalha com esse tipo de material nos procure pelo WhatsApp. Estaremos aqui para tirar todas as suas dúvidas, lembrando quê nós não trabalhamos com Clone.

Obs: só nos procure pessoas realmente interessados.

Trabalhamos também com emissão de CNH ( carteira nacional de habilitação). Avisamos que dentro disso emitimos todas as categorias exemplo: AB, AC,AD e AE. Fazemos também a renovação da sua CNH e transferimos o seu prontuário para qualquer Estado Nacional.

WhatsApp: 088981051543

Fábio G. Novais disse...

Parabéns, muito bom o post funcionou perfeitamente.
Único problema que peguei foi que no meu S.O não estava reconhecendo a função "bc" no script, mas após executar a instalação com o "apt-get install bc" funcionou perfeitamente.

Fernando disse...

Pessoal,

Coloquei o script tanto no servidor zabbix na pasta /home/fernando/certificado.sh ip 10.10.10.11 quanto no servidor da minha rede que tem o certificado com debian + zabbix agente no mesmo caminho.

Quando testo o comando dentro do proprio servidor retorna tudo certinho mas, quando vou para o servidor zabbix e aponto pra o ip do servidor, dá o erro:

ZBX_NOTSUPPORTED: Unsupported item key

dentro do zabbix agente, coloquei no user parameter o nome certificado,/home/fernando/certificado.sh

o que pode ser?