9 Verificações SSH

9.1 Visão geral

As verificações SSH são executadas sem necessitar de agente de monitoração. O Zabbix Agent não é necessário para este tipo de verificação.

Para executar verificações SSH o Zabbix Server deverá ter sido configurado incialmente com o supote ao SSH2.

A versão mínima da biblioteca libssh2 é a 1.0.0.

9.2 Configuração

9.2.1 Senha

A autenticação para uma verificação SSH pode ser feita de duas formas: um conjunto de usuário/senha ou um através de um arquivo de chave pública.

Se você não deseja utilizar os arquivos de chave pública, não será necessária nenhuma configuração adicional, além de associar o binário do Zabbix à biblioteca libssh2 duarante sua compilação e configuração.

9.2.2 Autenticação por arquivo de chave pública

Para utilizar a autenticação baseada em arquivo de chave públic em itens SSH, serão necessárias algumas modificações no arquivo de configuração do Zabbix Server.

Abra o arquivo de configuração do Zabbix Server (zabbix_server.conf) com o usuário root e procure pela linha a seguir:

# SSHKeyLocation=

Descomente a linha e adicione o caminho para o diretório onde você irá armazenar as chaves públicas e privadas, conforme exemplo a seguir:

SSHKeyLocation=/home/zabbix/.ssh

Salve o arquivo e reinicie o zabbix_server.

O caminho apresentado no exemplo "/home/zabbix" é o caminho para o diretório "home" do usuário zabbix no UNIX e o diretório .ssh é o diretório padrão para armazenamento das chaves públicas e privadas (ssh-keygen).

A instalação padrão do Zabbix Server através de pacotes varia entre as distribuições e o diretório "home" do usuário zabbix poderá estar em outros locais (ou ser uma conta de sistema). Por exemplo, no CentOS seria em /var/lib/zabbix, no Debian seria em /var/run/zabbix.

Antes de começar a gerar as chaves, considere a opção de realocar o diretório "home" para um local mais intuitivo. A chave SSHKeyLocation na configuração do Zabbix Server deverá corresponder com esta definição.

Estes passos poderão ser ignorados se a conta do usuário zabbix tiver sido adicionada manualmente de acordo com o definido na seção de instalação pois o diretório "home" já estará no caminho desejado.

Para modificar configurações da conta do usuário zabbix, todos os processos deste usuário deverão ser parados:

# service zabbix-agent stop
       # service zabbix-server stop

Para modificar a localização do diretório "home", junto com a tentativa de mover os arquivos (se existirem) pode ser feita através do comando a seguir:

# usermod -m -d /home/zabbix zabbix

É possível que o diretório "home" não exista no caminho anterior (no CentOS por exemplo), então ele será criado na nova localização. Um teste pode ser feito com o comando a seguir:

# test -d /home/zabbix || mkdir /home/zabbix

Para garantir que está tudo correto, comandos adicionais poderão ser executados para definir as permissões do novo diretório "home":

# chown zabbix:zabbix /home/zabbix
       # chmod 700 /home/zabbix

Os processos parados anteriormente agora poderão ser iniciados:

# service zabbix-agent start
       # service zabbix-server start

Agora podemos gerar as chaves públicas e privadas conforme exemplo a seguir:

# sudo -u zabbix ssh-keygen -t rsa
       Generating public/private rsa key pair.
       Enter file in which to save the key (/home/zabbix/.ssh/id_rsa): 
       Created directory '/home/zabbix/.ssh'.
       Enter passphrase (empty for no passphrase): 
       Enter same passphrase again: 
       Your identification has been saved in /home/zabbix/.ssh/id_rsa.
       Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
       The key fingerprint is:
       90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
       The key's randomart image is:
       +--[ RSA 2048]----+
       |                 |
       |       .         |
       |      o          |
       | .     o         |
       |+     . S        |
       |.+   o =         |
       |E .   * =        |
       |=o . ..* .       |
       |... oo.o+        |
       +-----------------+

Nota: as respectivas chaves pública e privada (id_rsa.pub e id_rsa) foram criadas por padrão no diretório /home/zabbix/.ssh que corresponde ao valor configurado no parâmetro SSHKeyLocation do arquivo de configuração do Zabbix Server.

9.2.3 Configuração do Shell

Este passo só precisa ser executado uma vez por host a ser monitorado através de verificações SSH.

Utilizando o comando a seguir, a chave pública será instalada no host remoto 10.10.10.10 e as verificações SSH poderão ser executadas através do usuário root:

# sudo -u zabbix ssh-copy-id [email protected]
       The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established.
       RSA key fingerprint is 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
       Are you sure you want to continue connecting (yes/no)? yes
       Warning: Permanently added '10.10.10.10' (RSA) to the list of known hosts.
       [email protected]'s password: 
       Now try logging into the machine, with "ssh '[email protected]'", and check in:
         .ssh/authorized_keys
       to make sure we haven't added extra keys that you weren't expecting.

Através do comando a seguir é possível validar se o login SSH está disponível para o usuário zabbix através de suas chaves (/home/zabbix/.ssh/id_rsa):

# sudo -u zabbix ssh [email protected]

Se o login for bem sucedido, a parte de configuração do shell foi finalizada e esta sessão SSH remota pode ser fechada.

9.2.4 Configuração do item

O comando a ser executado deverá ser colocado no campo Script executado da configuração do item.
Múltiplos comandos podem ser executados ao separa-los por uma nova linha. Neste caso as respostas também serão devolvidas em múltiplas linhas

Os campos específicos de configuração de itens SSH estão descritos na tabela a seguir:

Parâmetro Descrição Comentários
Tipo Selecione Agente SSH aqui.
Chave Identificador único (no host) seguindo o formato ssh.run[<unique short description>,<ip>,<port>,<encoding>] A porta padrão é a 22, a porta padrão da interface definida no host não será utilizada neste caso.
Método de autenticação Selecionar "Senha" ou "Chave pública"
Nome do usuário Nome de usuário para autenticação no host remoto.
Obrigatório
Arquivo de chave pública Nome do arquivo de chave pública se o Método de autenticação para "Chave pública". Obrigatório Exemplo: id_rsa.pub - arquivo padrão de chave pública criado pelo comando ssh-keygen
Arquivo de chave privada Nome do arquivo de chave privada se o Método de autenticação para "Chave privada". Obrigatório Exemplo: id_rsa - nome padrão do arquivo de chave privada
Senha ou
Chave de acesso
Senha para autenticar, ou
frase de autenticação se for usado arquivo de chave privada
Deixe o campo Chave de acesso vazio se a frase de autenticação não for utilizada
Veja mais em problemas conhecidos sobre as verificações SSH com frase de autenticação
Script executado Comando(s) do shell script que deverão ser executados durante a sessão SSH remota Exemplos:
date +%s
service mysql-server status
ps aux | grep httpd | wc -l

A bibliotecaa libssh2 poderá truncar scripts superiores a ~32kB.