Servidor SSH (Secure Shell Hosting)
Venho mostrar como configurar um servidor SSH (tanto no lado servidor SSH, quanto ao lado do cliente SSH), tendo como plataforma de implementação do Debian Lenny.
Instalação
O SSH é dividido em dois módulos, um chamado "sshd", que é o módulo servidor, um serviço que fica residente na máquina que será acessada, enquanto que o "ssh" é o módulo cliente, um utilitário que você utiliza para acessar o servidor ssh.
1) Instalar o pacote openssh-server:
# apt-get update
# apt-get install openssh-server (no Debian e derivados)
# yum update
# yum install openssh-server (no Fedora e derivados)
2) Após instalar o pacote do SSH, ativar o serviço do mesmo. Por padrão na maioria das distribuições ele é configurado para subir no boot automaticamente, mas não custa verificar:
# /etc/init.d/ssh start (no Debian e derivados)
# service sshd start (no Red Hat, Mandriva, Fedora e CentOS)
Obs.: No CentOS, caso você instale o pacote do servidor SSH depois da instalação do sistema, é preciso configurar o serviço do ssh para inicializar junto com o sistema, através do comando:
# chkconfig sshd on (onde "sshd" é o nome do serviço do servidor SSH no CentOS)
3) Por padrão o protocolo SSH escuta na porta 22, onde passa a ser necessário liberá-la no firewall, case utilize um. O pacote do servidor SSH chama-se "openssh-server" e o pacote do cliente SSH chama-se "openssh-client", onde é possível realização da instalação somente de um deles mediante as necessidades.
As configurações do cliente SSH vão no arquivo /etc/ssh/ssh_config.
Exemplo do arquivo de configuração do cliente SSH (/etc/ssh/ssh_config):
Obs.: Como parte da segurança do SSH, ele utiliza um sistema de chaves assimétricas para verificar a identidade do servidor. O servidor possui uma chave pública, que é enviada ao cliente na primeira conexão. As identificações de todos os servidores conhecidos ficam armazenadas no arquivo .ssh/know_hosts, dentro do diretório home do usuário.
Caso ocorra algum problema ao se conectar ao servidor SSH devido a suspeita da chave remota - chave do servidor - ter sido alterada na tentativa de um ataque), basta remover a identificação do servidor no arquivo .ssh/know_hosts através do comando:
# ssh-keygen -R <Endereço IP do Servidor SSH>
# ssh-keygen -R 192.168.1.10
Com isso a identificação é removida e substituída por uma identificação de backup, que é feita antes do primeiro acesso por segurança. Isso pode ser feito excluindo o conteúdo do arquivo manualmente também.
As opções omitidas recebem valores padrões, onde somente é aconselhável inserir no arquivo as opções que conhece, com seus respectivos valores e também mediante a necessidade.
1) Instalar o pacote openssh-server:
# apt-get update
# apt-get install openssh-server (no Debian e derivados)
# yum update
# yum install openssh-server (no Fedora e derivados)
2) Após instalar o pacote do SSH, ativar o serviço do mesmo. Por padrão na maioria das distribuições ele é configurado para subir no boot automaticamente, mas não custa verificar:
# /etc/init.d/ssh start (no Debian e derivados)
# service sshd start (no Red Hat, Mandriva, Fedora e CentOS)
Obs.: No CentOS, caso você instale o pacote do servidor SSH depois da instalação do sistema, é preciso configurar o serviço do ssh para inicializar junto com o sistema, através do comando:
# chkconfig sshd on (onde "sshd" é o nome do serviço do servidor SSH no CentOS)
3) Por padrão o protocolo SSH escuta na porta 22, onde passa a ser necessário liberá-la no firewall, case utilize um. O pacote do servidor SSH chama-se "openssh-server" e o pacote do cliente SSH chama-se "openssh-client", onde é possível realização da instalação somente de um deles mediante as necessidades.
Configuração do cliente SSH
Vamos abordar as principais opções que deve conter o arquivo de configuração do cliente SSH (nesse caso, o acesso será feito através de um cliente Linux a um servidor Linux).As configurações do cliente SSH vão no arquivo /etc/ssh/ssh_config.
Exemplo do arquivo de configuração do cliente SSH (/etc/ssh/ssh_config):
ForwardX11 no
#Opção para "rodar" aplicativos gráficos remotamente via SSH.
#Para funcionar, essa opção deve estar habilitada no cliente - ForwardX11 yes - e
#também no servidor SSH. Vale ressaltar que o uso do modo gráfico no SSH
#é recomendado somente em uma rede local, e não na Internet, pois o
#protocolo do X é otimizado somente para uso local, sendo que para uso na
#Internet o mesmo irá consumir muita banda e apresentará muita lentidão,
#mesmo em conexões rápidas);
Compression = yes
#Essa opção, quando ativada, permite ativar a compressão dos dados através
#do do programa gzip. Com o seu uso há um ganho de performance em servidores
#que estão acessíveis via Internet;
Port 22
#Essa opção indica em qual porta o cliente SSH deve se conectar no servidor SSH.
#Lembrando que para funcionar, essa mesma porta deve estar configurada para
#o protocolo "escutar" no servidor SSH);
ServerAliveInterval 120
#Essa opção permite que a conexão do cliente SSH e o servidor não seja encerrada
#depois de alguns minutos de inatividade. Você pode especificar um tempo em
#segundos para que o cliente ssh envie pacotes periodicamente para o servidor ssh,
#com o objetivo de manter a conexão ativa);
#Opção para "rodar" aplicativos gráficos remotamente via SSH.
#Para funcionar, essa opção deve estar habilitada no cliente - ForwardX11 yes - e
#também no servidor SSH. Vale ressaltar que o uso do modo gráfico no SSH
#é recomendado somente em uma rede local, e não na Internet, pois o
#protocolo do X é otimizado somente para uso local, sendo que para uso na
#Internet o mesmo irá consumir muita banda e apresentará muita lentidão,
#mesmo em conexões rápidas);
Compression = yes
#Essa opção, quando ativada, permite ativar a compressão dos dados através
#do do programa gzip. Com o seu uso há um ganho de performance em servidores
#que estão acessíveis via Internet;
Port 22
#Essa opção indica em qual porta o cliente SSH deve se conectar no servidor SSH.
#Lembrando que para funcionar, essa mesma porta deve estar configurada para
#o protocolo "escutar" no servidor SSH);
ServerAliveInterval 120
#Essa opção permite que a conexão do cliente SSH e o servidor não seja encerrada
#depois de alguns minutos de inatividade. Você pode especificar um tempo em
#segundos para que o cliente ssh envie pacotes periodicamente para o servidor ssh,
#com o objetivo de manter a conexão ativa);
Obs.: Como parte da segurança do SSH, ele utiliza um sistema de chaves assimétricas para verificar a identidade do servidor. O servidor possui uma chave pública, que é enviada ao cliente na primeira conexão. As identificações de todos os servidores conhecidos ficam armazenadas no arquivo .ssh/know_hosts, dentro do diretório home do usuário.
Caso ocorra algum problema ao se conectar ao servidor SSH devido a suspeita da chave remota - chave do servidor - ter sido alterada na tentativa de um ataque), basta remover a identificação do servidor no arquivo .ssh/know_hosts através do comando:
# ssh-keygen -R <Endereço IP do Servidor SSH>
# ssh-keygen -R 192.168.1.10
Com isso a identificação é removida e substituída por uma identificação de backup, que é feita antes do primeiro acesso por segurança. Isso pode ser feito excluindo o conteúdo do arquivo manualmente também.
As opções omitidas recebem valores padrões, onde somente é aconselhável inserir no arquivo as opções que conhece, com seus respectivos valores e também mediante a necessidade.