Protegendo o SSH no Linux Ubuntu

5

Como posso proteger o acesso SSH a uma caixa Linux executando o Ubuntu k para vários usuários?

Este servidor será para um aplicativo da web, mas não tenho certeza de como avaliar as ferramentas para executar essa tarefa. Eu tentei algumas ferramentas no passado, mas não tenho certeza de como elas se comparam umas com as outras. Como posso avaliar minha segurança SSH e as ferramentas e utilitários que eu usaria para executar essa proteção?

    
por Kevin 11.12.2009 / 16:49

6 respostas

17

Quais objetivos você tem em mente para sua segurança? Para quem você está protegendo isso?

De amplo espectro, use iptables para a porta de firewall 22 contra qualquer IP indesejado, permitindo especificamente os IPs que você deseja, bloqueando todo o resto.

Você também pode especificar se os usuários podem usar senhas para fazer login ou se precisam ter certificados, o que pode ser uma boa ideia se você suspeitar que as pessoas tentarão invadir as contas de outras pessoas.

Mas, para detalhes, precisamos saber o que você está fazendo.

EDITAR

OK, tendo em conta o que você disse abaixo nos comentários, você deseja impedir o acesso não autorizado à máquina. A segunda parte, garantindo que seus usuários não façam nada de mal, está além do escopo desta questão em particular, mas é um tópico valioso também. Amplo, mas vale a pena perguntar.

O arquivo principal que você precisa editar é / etc / ssh / sshd_config e após cada mudança de configuração, você precisa executar o /etc/init.d/sshd restart (ou /etc/init.d/ssh se for um sistema debian / ubuntu). Quando você estiver aprendendo a configurar o ssh, é uma boa ideia estar logado no console local, já que um erro de configuração cortará seu acesso.

Etapa 1: certifique-se de que o root não possa fazer login via ssh.

PermitRootLogin no

Se você absolutamente precisa ter logins de root, você pode configurá-lo para "sem senha", o que requer que o usuário conectado apresente um certificado e seja autenticado assim.

Passo 2: Permitir (ou negar) qualquer usuário específico que deve (ou não) ter acesso

Existem várias diretivas de configuração para isso, como DenyUsers, AllowUsers, DenyGroups e AllowGroups. Estes levam listas de usuários ou grupos separados por espaços.

Uma das coisas mais legais é que você pode especificar user @ host, então se você quiser que o Bob possa se conectar à sua máquina doméstica, você pode dizer

AllowUsers [email protected] 

Etapa 3: permitir explicitamente a autenticação de chave pública

PubkeyAuthentication yes

Este é o padrão, mas queremos garantir que ele tenha efeito, pois desativamos a capacidade de os usuários digitarem senhas em ...

Etapa 4: desativar a autenticação por senha

As senhas podem ser roubadas, ouvidas ou copiadas da nota sob o teclado. Certificados são mais difíceis de fazer. Certifique-se de que as pessoas não possam usar senhas dessa maneira:

PasswordAuthentication no

Etapa 5: verifique se os clientes usam protocolos modernos

Protocol 2

O OpenSSH suporta dois protocolos, chamados criativamente, "1" e "2". "1" é antigo, permite coisas como criptografia DES e outras coisas inseguras.

Você precisará obter certificados de massa para seus usuários para se conectar agora. A maneira mais fácil é usar o PuttyGEN, que está disponível no site do Putty ( link ).

Espero que ajude!

    
por 11.12.2009 / 16:54
2

você pode tentar impingir o uso de chaves ssh ou introduzir um hardtoken (como o yubikey) mover o ssh para longe da porta 22 ajuda contra as crianças do script, mas certamente não irá defendê-lo de alguém que o tenha como vítima.

    
por 11.12.2009 / 18:27
2

Além de tudo o que o principal anunciante disse, há um script chamado "Denyhosts" que negará acesso a qualquer coisa que autentique mal três vezes ou, para um modo mais de tabelas IP, fazer a mesma coisa:

link

    
por 11.12.2009 / 22:38
2

Além de tudo que o @MattSimmons sugere em sua excelente resposta , eu diria que em vez de gerenciar o iptables você mesmo, você pode quer considerar usar:

fwknop - Autorização de pacote único e batida de porta :

fwknop stands for the "FireWall KNock OPerator", and implements an authorization scheme called Single Packet Authorization (SPA). This method of authorization is based around a default-drop packet filter (fwknop supports both iptables on Linux systems and ipfw on FreeBSD and Mac OS X systems) and libpcap. SPA is essentially next generation port knocking.

Dessa forma, você não precisa se preocupar com coisas como fail2ban ou outras ferramentas de lista negra do ssh; em vez disso, você pode evitar permitir que qualquer pessoa se conecte à sua porta ssh sem antes fazer o SPA.

    
por 22.01.2012 / 07:34
2

Para saber mais sobre a segurança do linux, consulte o guia da NSA em:

Guia para a configuração segura do Red Hat Enterprise Linux 5

Tem algumas boas seções sobre SSH, reforçando o tamanho das senhas, etc.

    
por 11.12.2009 / 20:19
1

Você pode realizar ações diferentes, como instalar os hosts de negação. Isso bloqueará o ssh de um endereço IP após três tentativas com falha. O endereço IP bloqueado será listado no arquivo /ets/hosts.deny e você pode listar manualmente usando /etc/hosts.allow

Também informe as contas de usuários apenas para ssh no host. Você pode fazer isso usando o módulo pam.d. Você pode adicionar a regra ao arquivo /etc/pam.d/sshd da seguinte maneira, e o arquivo / root / allow-users contém a lista de usuários que autorizam a ssh.

auth required pam_listfile.so item = usuário sense = permitir arquivo = / root / allow-users onerr = fail

    
por 22.01.2012 / 04:36