Você pretende permitir o serviço 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 qualquer um dos casos, uma coisa que você deve fazer é garantir que o servidor SSH não permita logins de senha para o usuário root.
- No arquivo / etc / ssh / sshd_config, nunca permita 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", acho que significa que essa nova palavra "proibir senha" significa a mesma coisa e certamente tem um significado mais óbvio. Isso NÃO é o padrão em alguns sistemas Linux, mas provavelmente deveria ser.
Agora, sobre o seu problema. O servidor do sistema apenas alguns usuários em locais específicos? Fazem isto!
edite /etc/hosts.deny e insira
TUDO TUDO
Em seguida, edite o /etc/hosts.allow e liste os números de IP ou um intervalo que deseja permitir o uso do SSH. A notação é um pouco confusa porque, se você deseja permitir que todos os sistemas com números IP como 111.222.65.101 a 111.222.65.255, insira uma entrada como essa em hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Essa é uma solução poderosa e poderosa. Se seus usuários puderem ser enumerados por faixa de IP, faça-o!
Essa solução existia antes da criação de tabelas IP, é (acho) 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 identificarão inimigos mais cedo do que os programas conduzidos por hosts.allow e hosts .negar. Mas este é um caminho certo, uma maneira simples de resolver muitos problemas, não apenas do SSH.
Observe o problema que você cria para si mesmo. Se você deseja abrir um servidor FTP, servidor Web ou outros enfeites, precisará permitir entradas nos hosts.
Você pode atingir o mesmo objetivo básico, mexendo no iptables e no firewall. Em certo sentido, essa é uma solução preferida porque você está bloqueando os inimigos no limite externo. O Ubuntu tem "ufw" (firewall não complicado) e "man ufw" tem muitos exemplos. Prefiro ter uma boa interface gráfica para percorrer isso, não preciso fazer isso o tempo todo. Talvez outros possam nos dizer se existe um agora.
- Outras postagens aqui sugeridas usando 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. Exigir autenticação de chave SSH causaria um grande aborrecimento, pois as pessoas passam 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 criação de uma entrada no arquivo .ssh / config. É uma PITA)
- Se você deve deixar o servidor aberto para SSH do grande mundo, definitivamente você deve usar uma rotina de rejeição para bloquear locais que frequentemente tentam efetuar login. Existem 2 bons programas para isso, os que usamos são denyhosts e fail2ban . Esses programas têm configurações que permitem banir os infratores pela duração que você desejar.
Nos nossos sistemas Centos Linux, notei que eles abandonaram o pacote denyhosts e apenas oferecem fail2ban. Eu gostei de denyhosts porque criou uma lista de usuários problemáticos / intervalos de IP e, em seguida, no host.deny, essa lista foi anotada. Em vez disso, instalamos o fail2ban e está OK. Meu entendimento é que você prefere bloquear esses usuários ruins na borda externa do servidor; portanto, os bloqueadores baseados em tabelas IP, como fail2ban, são realmente melhores. Denyhosts funciona no nível secundário, depois que os inimigos passam pelo iptables, eles são rejeitados pelo daemon sshd.
Nos dois programas, é um pouco tedioso tirar os usuários da prisão se eles esquecerem sua senha e tentarem fazer login algumas vezes. É um pouco difícil recuperar as pessoas quando cometem erros de login. Você imaginaria que haveria uma GUI de apontar e clicar em que você poderia simplesmente apontar e deixar as pessoas entrarem novamente, mas não é assim. Eu só tenho que fazer isso a cada poucos meses e esquecer o que acontece entre os horários, então escrevi instruções para mim na minha página da web http://pj.freefaculty.org/blog/?p=301