terça-feira, 23 de março de 2010

SSH - Secure Shell Protocol ...

O SSH é um protocolo para comunicação em rede de forma segura, projetado para ser simples e de fácil implementação. A versão inicial, SSH1, foi focada no provimento de uma forma segura de acesso remoto a hosts em substituição a protocolos não-seguros, principalmente o Telnet. Além do acesso remoto, o SSH provê o recurso de tunelamento o qual permite os uso de protocolos não-seguros por meio de uma conexão segura. A nova versão do SSH, SSH2, provê melhorias em relação a versão 1 e está em processo de padronização no IETF por meio das RFCs 4250 a 4256.
Clientes e servidores de SSH existem para a maioria dos sistemas operacionais, inclusive no Windows (SSH Windows e Moba SSH ). É o metodo mais utilizado para acesso remoto em sistemas Unix/Linux e tunelamento de servidores X (servidor gráfico de janelas no Linux/Unix).
 O SSH é organizado por meio de três protocolos rodando sobre TCP que são:
  - Protocolo da camada de transporte: provê autenticação no servidor, confidencialidade e integridade dos dados. Opcionalmente, esta camada pode prover compressão dos dados.
  - Protocolo de autenticação de usuário: autentica o usuário ao servidor.
  - Protocolo de conexão: possibilita a utilização de vários canais lógicos de comunicação sobre uma única conexão SSH.
Basicamente, a autenticação se dá ou por usuário e senha, ou usuário e chave privada/pública. Com o usuário e senha, ao se tentar a conexão a um servidor deverá ser digitado o usuário e a senha.  No caso de uso com chaves, a autenticação deverá ser feita configurando o lado servidor previamente com a chave pública do cliente. Quando houver a tentativa de acesso, o servidor SSH buscará a chave pública do host do cliente em um arquivo localizado em .ssh/authorized_keys no diretório home do usuário requisitado para o login. Caso a chave estiver armazenada no arquivo, o acesso se dará sem a necessidade de digitar a senha. Este método tem duas vantagens básicas. A primeira é a segurança, porque não existirá a possibilidade de ataques de força bruta tentando adivinhar a senha do usuário. Simplesmente, não existe a senha! A outra vantagem é a possibilidade de automatizar scripts para executar comandos em servidores remotos. Desta forma, a administração de múltiplos servidores fica muito mais fácil e ágil.
Ao acessar um servidor remoto por meio de SSH, a interação do usuário será por meio de um interpretador de comandos em modo texto. Portanto, conhecer os comandos e os parâmetros  do Linux ou do Windows é extremamente útil.
 A porta padrão do serviço de SSH é a 22. Devido ao grande número de varreduras nesta porta, é interessante trocar esta porta em servidores que estejam visíveis com IP públicos. Existem formas de minimizar as tentativas de adivinhações de usuários/senhas. Um delas é o uso de chaves ao invés de senhas. A outra é usar alguma ferramenta de detecção de tentativas e bloqueio da origem. A ferramenta DenyHosts (http://denyhosts.sourceforge.net/) possibilita que a origem das tentativas de acesso mal sucedidas sejam bloqueadas por um tempo configurado.
Abaixo, um exemplo de conexão SSH usando o cliente código-fonte aberto de SSH Putty para Windows. No Linux, o nome do cliente de SSH é "ssh".



Vale a pena dar uma olhada neste tutorial sobre a configuração do SSH para funcionar com certificados.
O SSH é a ferramenta mais utilizada no gerenciamento de servidor Linux e FreeBSD. Portanto, dominá-la é muito importante para o profissional de redes!

Referências:

The Secure Shell (SSH) Protocol Architecture
Introduction to SSH Secure Shell
Criando tuneis criptografados com ssh 
Usando o SSH no Windows

Nenhum comentário:

Postar um comentário