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

7 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,