Gostaria de poder fazer o SSH para o meu PC do escritório Ubuntu 10.04 de fora. Assim, estou pensando em iniciar um daemon SSH no PC. Quais são os problemas de segurança, possíveis falhas, configurações específicas, etc. Devo estar ciente?
Caso isso importe: isso é essencialmente apenas para meu próprio uso, acho que não haverá outras pessoas usando; é um PC Ubuntu 10.04 em um ambiente predominantemente Windows 7 / Vista / XP.
Respostas:
A maior preocupação seria as pessoas que efetuam login como administrador do computador através do SSH. Isso pode ser feito com força bruta, se você tiver uma senha fácil de adivinhar.
Existem várias medidas de segurança que você pode adotar. Abaixo estão algumas que eu sempre tomo ao configurar um servidor SSH e outras extras.
Use uma senha forte, composta por pelo menos (digamos) 10 letras maiúsculas e minúsculas, números e outros caracteres.
Prenda os usuários ao diretório inicial. Usuários presos não poderão acessar / editar arquivos que estão fora do diretório inicial. Portanto, seu usuário não poderá acessar / editar os principais arquivos do sistema. Muitos tutoriais podem ser encontrados on-line sobre como prender um usuário. A maioria deles usa o JailKit . Um exemplo desse tutorial pode ser encontrado aqui . Como alternativa, você também pode usar a
ChrootDirectory
diretiva nativa do servidor OpenSSH . Um exemplo de um tutorial sobre isso pode ser encontrado aqui .Instale o Fail2Ban . Fail2Ban é um programa que verifica os logs de autenticação quanto a entradas incorretas. Quando um determinado limite é atingido, ele adiciona um bloco de firewall para esse determinado IP por um período predefinido. Também existem vários tutoriais on-line encontrados sobre como configurar o Fail2Ban com SSH, um exemplo seria este . A página inicial do Fail2Ban contém alguns HOWTOs legais e completos também.
Desative o logon raiz através do SSH. Este é o usuário que tem acesso a praticamente todos os arquivos do seu sistema, portanto, é recomendável desativar o login do shell. Nas versões mais recentes do Ubuntu, o usuário root é automaticamente desabilitado, mas não custa desativar o acesso SSH de qualquer maneira. Isso é feito editando o arquivo
/etc/ssh/sshd_config
. ✝ Procure a seguinte linha e verifique se não há # na frente dela.Use uma porta não padrão (por exemplo, não 22). Isso é feito através do encaminhamento de porta no seu roteador (por exemplo, 16121 -> 22 em vez de 22 -> 22) ou fazendo o daemon SSH escutar em uma porta diferente. Isso tornará seu serviço SSH menos facilmente detectável por usuários mal-intencionados. Isso é feito editando o arquivo
/etc/ssh/sshd_config
. ✝ Procure a seguinte linha e mude 22 para a porta que desejar. Não esqueça de encaminhar a porta correta no seu roteador posteriormente.Não use senhas para efetuar login. Além de senhas, o SSH também permite o login usando chaves privadas. Isso significa que uma chave está armazenada no seu computador, na qual você acessa o SSH da máquina SSH. Quando uma conexão é tentada, o cliente SSH usa a chave para efetuar login no servidor em vez da autenticação por senha. As chaves de autenticação são muito mais criptografadas do que as senhas e, portanto, não são tão fáceis de decifrar. Existem também vários tutoriais online encontrados sobre como configurar a autenticação baseada em chave com SSH; um exemplo seria esse . (Se você fizer o SSH a partir do Windows com o PuTTY, verifique este link para um tutorial do PuTTY.) Depois de configurar a autenticação baseada em chave, você pode desativar a autenticação de senha editando o arquivo
/etc/ssh/sshd_config
. ✝ Procure a seguinte linha e verifique se não há # na frente dela.Opcionalmente, como o @ Linker3000 mencionado em seu comentário, você pode configurar um túnel VPN para o PC que deseja acessar através do SSH e, em seguida, proibir o acesso à rede não local no servidor SSH. Dessa forma, nenhum dispositivo externo sem uma conexão VPN poderá acessar seu servidor SSH. Isso pode ser feito negando TODOS os hosts e permitindo apenas o login dos IPs da rede local. Isso é feito editando
/etc/hosts.deny
e adicione o seguinte:e para
/etc/hosts.allow
adicionar o seguinte:onde o IP corresponde ao da sua rede local.
*
é um curinga, portanto, todos os endereços IP iniciados por192.168.1.
serão aceitos. Se isso não funcionar, sua distribuição poderá ser usada emssh
vez desshd
. Nesse caso, você deve tentarssh: 192.168.1.*
essh: ALL
em vez disso.Você só pode permitir hosts específicos, fazer o mesmo com
/etc/hosts.allow
e/etc/hosts.deny
conforme descrito em 6, mas/etc/hosts.allow
adicionar a seguinte linha e cada host para permitir separados por espaços:Permita que apenas usuários específicos acessem seu servidor SSH. Isso é feito editando o arquivo
/etc/ssh/sshd_config
. ✝ Procure a seguinte linha e verifique se não há # na frente dela. Se não existir, crie-o. Por exemplo, se você deseja permitir apenas john, tom e mary, adicione / edite esta linha:Você também pode negar usuários específicos, por exemplo, se quiser negar acesso a john, tom e mary, adicione / edite esta linha:
Permitir apenas o protocolo SSH2 para conexões de entrada. Existem duas versões do protocolo SSH. O SSH1 está sujeito a problemas de segurança, portanto, é recomendável usar o SSH 2. Isso pode ser forçado editando o arquivo
/etc/ssh/sshd_config
. ✝ Procure a seguinte linha e verifique se não há # na frente dela. Se não existir, crie-o.remova o, 1 para que a linha seja
Não permita que usuários façam login sem senha definida. Isso pode ser forçado editando o arquivo
/etc/ssh/sshd_config
. ✝ Procure a seguinte linha e verifique se não há # na frente dela. Se não existir, crie-o.E, embora simples e talvez desnecessário dizer, mas tenha se mostrado crucial em vários casos, mantenha seu software atualizado. Atualize regularmente seus pacotes / software instalados.
✝ = depois de editar o arquivo de configuração SSH, não se esqueça de reiniciar o daemon para aplicar as alterações. Reinicie o daemon executando:
ou
dependendo de qual distribuição do Linux você está usando.
fonte
sudo service ssh restart
no Ubuntu.sudo restart ssh
,.Algumas dicas:
fonte
O principal risco é esquecer que você está executando um servidor ssh e colocando uma senha fraca em uma conta. Existem invasores que tentam sistematicamente nomes de contas comuns (como
webmaster
ebob
) e senhas fracas. Você pode eliminar esse risco, proibindo logins de senha (colocarPasswordAuthentication no
emsshd_config
, e quer também colocarUsePAM No
ou autenticação de senha desativar nas configurações do PAM para o ssh). Uma medida intermediária é restringir os logins ssh a uma lista de permissões de usuários comAllowUsers
ouAllowGroups
dentrosshd_config
.Observe que permitir logins de senha não é, por si só, um problema de segurança. Senhas fracas e senhas snooped são os problemas, e permitir a autenticação de senha no servidor ssh é um facilitador. Para se proteger contra a espionagem de senha, nunca digite sua senha em uma máquina em que você não confia totalmente (mas, se você confiar em uma máquina, poderá instalar uma chave privada nela e não precisar de autenticação por senha).
O requisito mínimo para usar um cliente ssh em uma máquina é que você confie que não haverá um seqüestro ativo da comunicação ssh (um ataque do tipo intermediário é possível se estiver sendo executado na máquina cliente - você acha você está digitando comandos em um cliente ssh primitivo, mas o cliente está transmitindo seus dados de autenticação fielmente, mas também inserindo um cavalo de tróia na comunicação posteriormente). Esse é um requisito mais fraco do que confiar que não haverá uma invasão de senha (geralmente executada por meio de um keylogger, mas existem outros métodos menos automatizados, como navegação no ombro). Se você tem a confiança mínima, mas ainda tem medo de bisbilhoteiros, pode usar senhas únicas (o OpenSSH as suporta por meio do suporte ao PAM).
Obviamente, como qualquer outro programa que interaja com máquinas fora do seu controle (não apenas servidores de rede, mas também clientes), você deve acompanhar as atualizações de segurança.
fonte
Três coisas vieram à minha mente:
Se você abrir a porta padrão 22, em breve ela será detectada e seu PC será atacado por ataques de força bruta. Sugiro que você configure o sshd para escutar alguma outra porta ou faça o mapeamento de portas no seu firewall. Embora isso não seja uma bala mágica, você certamente salvará os mesmos ciclos de CPU pelo menos.
Porta 12345
Desative explicitamente a autenticação por senha e use apenas chaves. Qualquer chave será melhor que a senha mais complexa que você consegue lembrar.
PasswordAuthentication no
Mesmo que o Ubuntu tenha o usuário root desativado por padrão, desabilite explicitamente o login root
PermitRootLogin no
fonte