verificar a configuração sshd

19

Como posso verificar a configuração de sshd?

Por exemplo, quero garantir que essas configurações sejam definidas e aplicadas:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

É a única maneira de verificar manualmente o conteúdo do arquivo sshd_configou posso investigar sshdpara ter certeza?

Juan Pablo
fonte
2
O que você quer dizer com verificar? Você está perguntando como ter certeza de que uma alteração feita na configuração é válida? Você está perguntando se existe alguma ferramenta como o lint que verifique se há uma configuração válida?
Zoredache
2
Eu não acho que a pergunta não esteja clara: na verdade, não há como verificar qual é o valor de uma opção de configuração. Se você #UseLogin novir no seu arquivo ssd_config, significa que UseLogin é yes ou UseLogin não. Você tem que consultar o manual para encontrar o valor padrão, que pode ter sido alterado durante a compilação. Portanto, longe de ser uma questão inútil ...
Xorax

Respostas:

27

Há um modo de teste estendido, chamado com a opção de linha de comando -T, que faz isso. Por exemplo:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

A opção existe no Portable OpenSSH desde 2008, cf. confirme e7140f2 . Este foi lançado com o 5.1p1, feito em julho de 2008, cf. notas de versão para 5.1 , portanto ele existe em praticamente todas as instalações de servidor OpenSSH suportadas hoje.

Josip Rodin
fonte
3
Observe, no entanto, que isso mostrará as configurações padrão + configurações do /etc/ssh/sshd_configarquivo. As configurações do arquivo podem ainda não estar ativas, até serem sshdrecarregadas com algo parecido /etc/init.d/ssh reloadou equivalente em seu sistema.
Mvk # 30/16
2
@mivk bom ponto, mas isso é praticamente o par para o curso, porque é típico que usamos esses tipos de comandos exatamente depois de fazer alterações, mas antes de aplicá-los, porque queremos verificar o que vai acontecer. Por exemplo, apache2ctl -Sse comporta da mesma maneira.
Josip Rodin
4

Enquanto isso não vai despejar todas as definições de seu servidor, você pode tentar se conectar ao servidor com um sinalizador de depuração detalhado: ssh -v user@server. Isso fornecerá muitas informações que refletirão as opções ativadas na configuração do sshd.

Por exemplo, dê uma olhada na saída dessa conexão com a opção -v (assinaturas de chaves, domínio e endereços IP propositadamente disfarçados):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.

A partir disso, é possível ver os métodos de autenticação permitidos: publickey, senha, teclado interativo. Você também pode ver que o roaming não é permitido por este servidor e que o usuário claudio pode se conectar usando sua chave pública.

Você pode aumentar o nível de saída de informações especificando mais letras "v", mas poderá obter muito mais informações de baixo nível do que provavelmente deseja.

Claudio
fonte
3

configuração do sshd é normalmente encontrado no seguinte arquivo: /etc/ssh/sshd_config.

Para consultar a configuração do tempo de execução, você pode usar o modo de teste estendido, sshd -Tque também permite testar a correspondência de configurações do cliente.

gparent
fonte
1
Não acho que isso responda à pergunta que ele está fazendo, mas sua pergunta não é totalmente clara.
Zoredache
1
Parece que ele está perguntando como verificar a configuração. Tanto quanto sei, não há como consultar a configuração do sshd em tempo de execução. Assim, a configuração pode ser encontrada apenas no arquivo que mencionei.
gparent 18/05/12
Como você disse, a pergunta não faz sentido, então imaginei que talvez o OP não soubesse onde estava o arquivo ou seu nome exato.
gparent 18/05/12
Se você vai me rebaixar por absolutamente nenhuma razão válida após 4 anos, use seu bom senso e verifique o histórico de perguntas e sugira uma edição.
gparent
@gparent a pergunta original era um tanto vaga e tinha um erro de digitação no caminho do arquivo de configuração; portanto, você deveria ter usado a função de edição para corrigir essa sequência na pergunta; e de qualquer forma, a resposta para a pergunta de verificação é agora mostrado acima
Josip Rodin
2

não existe uma maneira conhecida de consultar a configuração de uma instância sshd em execução, eu acho, se você estiver se referindo ao servidor openssh. dependendo do que você deseja fazer, você pode usar o sinalizador -t para testar um arquivo de configuração para garantir que ele seja válido antes de reiniciar o servidor, para que você não seja expulso, esp. se você não tiver acesso fora de banda ao servidor.

johnshen64
fonte
2

O problema de examinar o arquivo / etc / ssh / sshd_config, conforme sugerido por outras respostas, é que ele não contém necessariamente toda a configuração. Este arquivo contém os valores de quaisquer variáveis ​​de configuração que você deseja definir para substituir os padrões e, como enviado, contém como comentários os padrões incorporados ao sshd.

Se um arquivo de configuração personalizado estiver instalado no lugar da versão fornecida, você perderá de vista os padrões compilados no sshd e, se for uma compilação personalizada, os padrões poderão não corresponder aos comentários no sshd_config visíveis.

Além disso, é perfeitamente possível executar o sshd com um arquivo de configuração alternativo com a opção -f, portanto o arquivo armazenado em / etc / ssh / sshd_config pode não refletir as configurações atuais.

Isso torna a pergunta bastante válida e, até onde eu sei, incapaz de ser respondida com certeza.

Peter Gathercole
fonte
Tudo isso é verdade, mas não se aplica a 99% dos servidores que serão executados sshd instalado a partir de um pacote que tem a configuração padrão compilado.
Andrew Schulman
Sua resposta é útil, mas é possível responder com certeza à pergunta, já faz um bom tempo, veja minha resposta abaixo.
21816 Josip Rodin