Você pretende permitir o serviço de SSH para o mundo? Ou apenas para membros da equipe em lugares específicos? Minha resposta depende um pouco da gravidade do seu desafio.
Em ambos os casos, uma coisa que você deve fazer é garantir que o servidor SSH não permita logins de senha para o usuário root.
- Em / etc / ssh / sshd_config, certifique-se de nunca permitir um login raiz, exceto com uma chave SSH.
Nos meus sistemas, eu tenho essa configuração
PermitRootLogin without-password
mas noto que no Ubuntu mais recente eles têm
PermitRootLogin prohibit-password
Se você ler "man sshd_config", eu acho que significa que esta nova "senha proibida" significa a mesma coisa e é certamente mais óbvia no significado. Isso NÃO é padrão em alguns sistemas Linux, mas provavelmente deveria ser.
Agora, sobre o seu problema. O seu servidor do sistema apenas alguns usuários em lugares específicos? Faça isso!
-
edite o /etc/hosts.deny e insira
ALL: ALL
Em seguida, edite /etc/hosts.allow e liste os números IP ou um intervalo que deseja permitir o uso do SSH. A notação é um pouco confusa, porque se você quiser permitir todos os sistemas com números IP como 111.222.65.101 até 111.222.65.255, coloque uma entrada como essa em hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Essa é uma força bruta, uma solução poderosa. Se seus usuários puderem ser enumerados por faixa de IP, faça isso!
Esta solução existia antes das tabelas IP serem criadas, é muito mais fácil de administrar, mas não é tão boa quanto uma solução de tabelas IP porque as rotinas de tabelas IP detectam os inimigos antes dos programas controlados pelos hosts. allow e hosts.deny. Mas este é um fogo seguro, uma maneira simples de fechar muitos problemas, não apenas do SSH.
Observe o problema que você criou para você mesmo. Se você deseja abrir um servidor FTP, um servidor da Web ou algo assim, será necessário permitir que as entradas nos hosts sejam permitidas.
Você pode alcançar o mesmo propósito básico mexendo com o iptables e o firewall. De certo modo, esta é uma solução preferida porque você está bloqueando inimigos no limite externo. O Ubuntu tem o "ufw" (firewall descomplicado) e o "man ufw" tem muitos exemplos.
Eu prefiro ter um bom GUI para percorrer isso, eu não tenho que fazer isso o tempo todo. Talvez outros possam nos dizer se existe um agora.
- Outros posts aqui sugeriram usar a chave pública SSH apenas para seus usuários. Isso certamente ajudará, ao preço de complexidade e frustração para seus usuários. Em nosso laboratório, existem 15 computadores. Os usuários vão entre computadores. Requerer autenticação de chave SSH causaria um grande incômodo porque as pessoas vão de um computador para o outro.
Outra fonte de frustração acontecerá quando alguns usuários acumularem chaves ssh diferentes para vários servidores. Como tenho chaves SSH para cerca de 12 projetos diferentes, agora o ssh falha porque tenho muitas chaves públicas (Exigindo "ssh -o PubkeyAuthentication = false" ou a criação de uma entrada no arquivo .ssh / config. É um PITA)
- Se você deve deixar o servidor aberto para o SSH do mundo grande, então definitivamente você deve usar uma rotina de rejeição para bloquear locais que freqüentemente tentam se logar. Existem 2 programas bacanas para isso, os que usamos são denyhosts e fail2ban. Esses programas têm configurações que permitem proibir os infratores por um tempo que você goste.
Em nossos sistemas Centos Linux, notei que eles abandonaram o pacote denyhosts e só oferecem o fail2ban. Eu gostei denyhosts porque construiu uma lista de usuários problemáticos / intervalos de ip e, em seguida, em hosts.deny, essa lista foi anotada. Instalamos o fail2ban em vez disso e está tudo bem. Meu entendimento é que você prefere bloquear esses usuários ruins na borda externa do servidor, portanto, os bloqueadores baseados em tabelas ip, como o fail2ban, são realmente melhores. Denyhosts trabalha no nível secundário, depois que os inimigos passaram do iptables eles são rejeitados pelo daemon sshd.
Em ambos os programas, é um pouco entediante tirar os usuários da prisão se eles esquecerem suas senhas e tentar algumas vezes fazer o login. É um pouco difícil levar as pessoas de volta quando cometem erros de login. Você teria adivinhado que haveria uma GUI de apontar e clicar onde você poderia apenas apontar e deixar as pessoas de volta, mas não é assim. Eu só tenho que fazer isso a cada poucos meses e esquecer como entre os tempos, então eu escrevi instruções para mim na minha página web link