9 Verificações SSH

Visão geral

Verificações SSH são executadas como monitoramento sem agente. O Zabbix Agent não é necessário para verificações SSH.

Para realizar verificações SSH, o Zabbix Server deve ser inicialmente configurado com suporte a SSH2 (libssh2 ou libssh). Veja também: Requisitos.

A partir do RHEL 8, apenas o libssh é suportado. Para outras distribuições, o uso do libssh é sugerido em vez do libssh2.

Configuração

Autenticação com frase secreta (Passphrase)

As verificações SSH oferecem dois métodos de autenticação: um par de usuário/senha e a autenticação baseada em arquivo de chave.

Se você não pretende usar chaves, nenhuma configuração adicional é necessária, além de vincular libssh ou libssh2 ao Zabbix, se você estiver compilando a partir do código-fonte.

Autenticação de arquivo de chave

Para usar a autenticação baseada em chave para itens SSH, é necessário fazer algumas alterações na configuração do servidor.

Abra o arquivo de configuração do servidor Zabbix (zabbix_server.conf) comoroot e procure a seguinte linha:

# SSHKeyLocation=

Descomente-a e defina o caminho completo para a pasta onde as chaves pública e privada estarão localizadas:

SSHKeyLocation=/home/zabbix/.ssh

Salve o arquivo e reinicie o servidor Zabbix em seguida.

O camimho /home/zabbix aqui é o diretório inicial da conta de usuário zabbix, e .ssh é o diretório onde, por padrão, as chaves pública e privada serão geradas pelo comando ssh-keygen dentro do diretório inicial.

Normalmente, os pacotes de instalação do servidor Zabbix de diferentes distribuições de OS criam a conta de usuário zabbix com um diretório inicial em outro local, por exemplo, /var/lib/zabbix (como para contas de sistema).

Antes de gerar as chaves, você pode realocar o diretório inicial para /home/zabbix, de modo que corresponda ao parâmetro de configuração SSHKeyLocation do servidor Zabbix mencionado acima.

As seguintes etapas podem ser puladas se a conta zabbix foi adicionada manualmente conforme a installation section. Nesse caso, o diretório inicial para a conta zabbix provavelmente já é /home/zabbix.

Para alterar o diretório inicial da conta de usuário zabbix, todos os processos de trabalho que o utilizam devem ser interrompidos:

systemctl stop zabbix-agent
       systemctl stop zabbix-server

Para alterar a localização do diretório inicial com uma tentativa de movê-lo (se existir), execute o seguinte comando:

usermod -m -d /home/zabbix zabbix

Também é possível que um diretório inicial não existisse na localização antiga, portanto, ele deve ser criado na nova localização. Para isso, execute:

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

Para garantir a segurança, comandos adicionais podem ser executados para definir permissões para o diretório inicial:

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

Agora, os processos interrompidos anteriormente podem ser iniciados novamente:

systemctl start zabbix-agent
       systemctl start zabbix-server

Agora, os passos para gerar as chaves pública e privada podem ser realizados com os seguintes comandos (para maior legibilidade, os prompts de comando estão comentados):

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):
       /home/zabbix/.ssh/id_rsa
       # Enter passphrase (empty for no passphrase):
       <Leave empty>
       # Enter same passphrase again: 
       <Leave empty>
       # 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+        |
       # +-----------------+

As chaves pública e privada (id_rsa.pub and id_rsa) foram geradas por padrão no diretório /home/zabbix/.ssh, que corresponde ao parâmetro de configuração SSHKeyLocation do servidor Zabbix.

Outros tipos de chave além de "rsa" podem ser suportados pela ferramenta ssh-keygen e servidores SSH, mas podem não ser suportados pelo libssh2 usado pelo Zabbix.

Formulário de configuração do Shell

Este passo deve ser realizado apenas uma vez para cada host que será monitorado por verificações SSH.

Usando os seguintes comandos, o arquivo da chave pública pode ser instalado em um host remoto 10.10.10.10, para que as verificações SSH possam ser realizadas com uma conta root (para melhor legibilidade, os prompts dos comandos estão comentados):

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:
       <Enter root password>
       # Now try logging into the machine, with "ssh '[email protected]'",
       # and check to make sure that only the key(s) you wanted were added.

Agora é possível verificar o login SSH usando a chave privada padrão (/home/zabbix/.ssh/id_rsa) para a conta do usuário zabbix:

sudo -u zabbix ssh [email protected]

Se o login for bem-sucedido, a configuração no shell estará concluída e a sessão SSH remota poderá ser encerrada.

Configuração do item

O(s) comando(s) atuais a ser(em) executado(s) devem ser inseridos no campo Script executado na configuração do item. Vários comandos podem ser executados um após o outro, colocando-os em uma nova linha. Nesse caso, os valores retornados também serão formatados em várias linhas.

Todos os campos de entrada obrigatórios estão marcados com um asterisco vermelho.

Os campos que exigem informações específicas para itens SSH são:

Parâmetro Descrição Comentários
Tipo Selecione agente SSH aqui.
Chave Chave do item única (por host) no formato ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>] descrição curta exclusiva é necessária e deve ser única para cada item SSH por host.

A porta padrão é 22, não a porta especificada na interface à qual este item está atribuído.

opções ssh (suportadas desde a versão 6.0.25; requer libssh versão 0.9.0 ou superior ou libssh2) permitem passar opções SSH adicionais no formato chave1=valor1;chave2=valor2,valor3. Vários valores para uma chave podem ser separados por vírgula (neste caso, o parâmetro deve ser entre aspas quoted); várias chaves de opções podem ser separadas por ponto e vírgula.

As seguintes chaves de opções são suportadas: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs. O suporte à chave de opção e ao valor depende da biblioteca SSH; se uma opção não for suportada, um erro será retornado e o item ficará como não suportado.

Observe que o sinal "+" para adicionar configurações de cifra e "!" para desabilitar configurações de cifra específicas (como no GnuTLS e OpenSSL) não são suportados.

Exemplos:
=> ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]
=> ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]
Método de autenticação Um dos métodos "Senha" ou "Chave pública".
Nome do usuário Nome de usuário para autenticação no host remoto. Obrigatório.
Arquivo da chave pública Nome do arquivo da chave pública se o Método de autenticação for "Chave pública". Obrigatório. Exemplo: id_rsa.pub - nome de arquivo padrão da chave pública gerado por um comando ssh-keygen.
Arquivo da chave privada Nome do arquivo da chave privada se o Método de autenticação for "Chave pública". Obrigatório. Exemplo: id_rsa - nome de arquivo padrão da chave privada.
Senha ou
Key passphrase
Senha para autenticação ou frase secreta se usada para a chave privada. Deixe o campo Frase secreta da chave em branco se não foi usada uma frase secreta.
Veja também known issues sobre o uso de frases secretas.
Script executado Comando(s) de shell executado(s) usando a sessão SSH remota. O valor de retorno do(s) comando(s) de shell executado(s) é limitado a 16MB (incluindo espaços em branco à direita, que são truncados); database limits também se aplicam.

Observe que a biblioteca libssh2 pode truncar scripts executáveis em aproximadamente ~32kB.

Exemplos:
date +%s
systemctl status mysql-server
ps auxww | grep httpd | wc -l