Como habilitar dois fatores para logins SSH
Shutterstock / TATSIANAMA
Se você realmente deseja bloquear seu servidor em nuvem, pode ativar a autenticação de dois fatores para SSH da mesma maneira que a adicionaria à sua conta do Gmail, impedindo que alguém obtenha acesso se eles roubarem seu SSH chave privada.
Isso é realmente necessário?
Comparado a ter dois fatores em um email ou em uma conta baseada na Web, dois fatores no SSH não são tão úteis. Para algo como e-mail, o ponto de falha geralmente é esquemas de redefinição de senha, senhas facilmente quebráveis ou violações de dados. Realmente, qualquer coisa que envolva senhas ruins ou gerenciamento inadequado de senhas.
Para SSH, isso não é um problema. O SSH usa criptografia muito boa para as chaves públicas e privadas usadas para fazer conexões. Se o seu servidor SSH estiver bloqueado e não permitir acesso por senha, ninguém entrará, a menos que tenha o dispositivo físico em que a chave está localizada e não é muito provável que alguém faça bruteforce sua chave SSH a qualquer momento deste século. Então, de certa forma, é quase como se você já tivesse dois fatores, porque sua chave permanecerá no seu laptop.
Mas, em alguns casos adicionais, dois fatores podem ser uma boa escolha. Se algum hacker lunático decide roubar seu laptop com a intenção de pegar suas chaves SSH junto com ele (e não apenas vendê-lo no Craigslist quando eles não podem decifrar a senha do seu dispositivo), ter dois fatores o colocaria um passo à frente .
Um problema mais real é o encaminhamento de agentes SSH; Com o encaminhamento de agente ativado, as principais solicitações para entrar em servidores adicionais são encaminhadas de volta ao seu dispositivo. Isso permite que você faça o SSH em um servidor público e, a partir desse servidor público, faça o SSH novamente em outro servidor privado na mesma rede, fornecendo acesso semelhante ao funcionamento de uma VPN.
O problema, porém, é que, se o servidor público estiver comprometido, se você tiver o encaminhamento de agente ativado, um invasor poderá agir como você enquanto você estiver conectado ao servidor público. Essa é uma possível escalação de privilégios, dependendo de como você configurou sua rede. O SSH de dois fatores resolveria esse problema.
Novamente, esta é uma solução de caso muito superficial e provavelmente causará mais problemas do que previne, mas se você estiver falando sério sobre bloquear tudo, mostraremos como.
Como habilitar dois fatores para SSH
Para lidar com solicitações de dois fatores, usaremos o Módulo de autenticação plugável (PAM) do Google, que funciona com Authy e Google Authenticator. Instale-o a partir do gerenciador de pacotes da sua distribuição:
sudo apt-get install libpam-google-authenticator
Em seguida, execute este comando de inicialização:
google-autenticador
Responda sim à primeira pergunta sobre como ter tokens de autenticação baseados em tempo. Isso é mais seguro. Seu terminal será inundado com um código QR gigantesco e você provavelmente terá que diminuir um pouco o zoom.
Abra seu aplicativo autenticador e verifique seu código (não a captura de tela). Seu aplicativo deve sincronizar e começar a emitir códigos de seis dígitos que mudam a cada 30 segundos.
Você também desejará anotar toda a saída adicional, incluindo a chave secreta e os códigos de risco de emergência. Eles são usados para obter acesso novamente ao seu servidor se você estiver bloqueado por algum motivo, embora você deva ser avisado de que quaisquer problemas relacionados à configuração incorreta ainda podem deixá-lo bloqueado permanentemente. Vamos ativar dois fatores opcionalmente para teste antes de torná-lo obrigatório.
Para as próximas perguntas, responda o seguinte:
- Responda sim para atualizar sua configuração, caso contrário nada funcionará.
- Responda sim para não permitir vários usos de cada token. Eles devem expirar assim que forem usados.
- Responda não para estender a janela de código válida, pois não há realmente nenhum ponto para isso.
- Responda sim para permitir a limitação da taxa , que bloqueará os atacantes após três tentativas. Seus últimos três códigos serão válidos por um minuto e meio; portanto, você não precisará se preocupar em se trancar, sendo muito lento.
Toda a sua configuração é salva em ~ / . google-authenticator. Você pode copiar esse arquivo para um servidor adicional para aplicar a mesma configuração; não execute novamente a ferramenta de inicialização, ou você precisará vincular dois dispositivos separados.
Configure o SSH para funcionar com o Google PAM
Abra o arquivo de configuração do PAM em /etc/pam.d/sshd no seu editor de texto favorito e adicione a seguinte linha na parte inferior:
autenticação necessária pam_google_authenticator. so nullok
A diretiva nullok significa que isso é temporário; portanto, dois fatores serão opcionais até você alterar isso. Deixe assim para testes. Você também desejará encontrar a linha que contém @include common-auth e comente-a com um #:
# Autenticação padrão Un * x. # @ inclui autenticação comum
Isso desativa a autenticação baseada em senha, que você não deseja.
Em seguida, abra as configurações do SSH em / etc / ssh / sshd_config. Encontre a opção ChallengeResponseAuthentication e ative-a:
# Altere para yes para ativar senhas de resposta a desafios (cuidado com problemas com # alguns módulos e threads de PAM) ChallengeResponseAuthentication yes
Isso habilita o 2FA, no entanto, as chaves SSH substituem o 2FA por padrão, para que você precise corrigir isso adicionando a seguinte linha ao final do sshd_config:
Chave pública AuthenticationMethods, interativa por teclado
Isso requer uma chave pública e um teclado interativo, ” que é o prompt que solicita seu código de dois fatores.
O SSH está agora configurado, para que você possa reiniciar o sshd para ativá-lo nessas novas configurações:
sudo systemctl restart sshd. service
Isso não fechará sua conexão aberta; portanto, você deve fazer qualquer teste de conexão em uma guia de terminal separada. Abra uma nova guia e tente conectar-se ao seu servidor. Você deve receber uma solicitação solicitando um código de verificação. Digite um do seu telefone e, se tudo estiver vinculado corretamente, ele deverá funcionar. Se isso não acontecer, você ainda poderá acessar a conta, deixando-a em branco.
Se tudo funcionar corretamente, e você verificou duas vezes se não há problemas com o login, é possível remover o “ nullok ” diretiva no /etc/pam.d/sshd para tornar obrigatório o 2FA.
Se você perder o acesso, ainda poderá fazer login usando os códigos de emergência fornecidos quando configurou o PAM, e a chave secreta permitirá que você vincule novamente um aplicativo TOTP, caso o seu se desvincule por qualquer motivo.
Adicionar acesso a contas de serviço
Se você possui uma conta de serviço que precisa acessar seu servidor (por exemplo, rsync), desabilite o 2FA para essa conta. Isso é bem fácil de fazer; primeiro, queremos criar um novo grupo para adicionar contas de serviço para:
sudo groupadd service
Em seguida, adicione o usuário a esse grupo:
sudo useradd < nome de usuário > sudo usermod -a -G service < nome de usuário >
Em seguida, abra a configuração do PAM em /etc/pam.d/sshd e adicione a seguinte linha:
auth [sucesso = concluído padrão = ignorar] pam_succeed_if. so serviço de ingresso de usuário
Observe que isso permite acesso ao seu servidor sem o 2FA, mas se o usuário não estiver root, pode não ser um grande problema.
Via: How to Geek
Nenhum comentário