Como configurar a autenticação de dois fatores em um Raspberry Pi

O Raspberry Pi está em toda parte agora, e é por isso que chamou a atenção de agentes de ameaças e cibercriminosos. Mostraremos como proteger seu Pi com autenticação de dois fatores.

O incrível Raspberry Pi

O Raspberry Pi é um computador de placa única. Foi lançado no Reino Unido em 2012 com a intenção de levar as crianças a mexer, criar e aprender código. O formato original era uma placa do tamanho de um cartão de crédito, alimentada por um carregador de telefone.

Ele fornece saída HDMI, portas USB, conectividade de rede e roda Linux. Adições posteriores à linha incluíram versões ainda menores projetadas para serem incorporadas em produtos ou executadas como sistemas headless. Os preços variam de $ 5 para o minimalista Pi Zero, para US$ 75 para o Pi 4B/8GB.

Seu sucesso foi incrível; mais de 30 milhões desses minúsculos computadores foram vendidos em todo o mundo. Hobbyists fizeram coisas incríveis e inspiradoras com eles, incluindo flutuando um para a borda do espaço e de volta em um balão.

Infelizmente, uma vez que uma plataforma de computação se torna suficientemente difundida, inevitavelmente atrai a atenção dos cibercriminosos. É terrível pensar em quantos Pi estão usando a conta de usuário e a senha padrão. Se o seu Pi estiver voltado para o público e acessível pela Internet por Capsula segura (SSH), ele deve ser seguro.

Mesmo que você não tenha nenhum dado ou software valioso em seu Pi, você precisa protegê-lo porque seu Pi não é o alvo real – é apenas uma maneira de entrar em sua rede. Uma vez que um agente de ameaça tenha um ponto de apoio em uma rede, ele irá girar para os outros dispositivos nos quais ele está realmente interessado.

Autenticação de dois fatores

Autenticação — ou acesso a um sistema — requer um ou mais fatores. Os fatores são classificados da seguinte forma:

Algo que você sabe: como uma senha ou frase.
Algo que você tem: como um telefone celular, token físico ou dongle.
Algo que você é: uma leitura biométrica, como uma impressão digital ou um exame de retina.

A autenticação multifator (MFA) requer uma senha e um ou mais itens das outras categorias. Para o nosso exemplo, vamos usar uma senha e um telefone celular. O celular executará um aplicativo autenticador do Google e o Pi executará um módulo de autenticação do Google.

Um aplicativo de telefone celular é vinculado ao seu Pi digitalizando um código QR. Isso passa algumas informações de semente para o seu celular a partir do Pi, garantindo que seus algoritmos de geração de números produzam os mesmos códigos simultaneamente. Os códigos são chamados de senhas de uso único baseadas em tempo (TOTP).

Quando recebe uma solicitação de conexão, seu Pi gera um código. Você usa o aplicativo autenticador em seu telefone para ver o código atual e, em seguida, seu Pi solicitará sua senha e código de autenticação. Tanto sua senha quanto o TOTP devem estar corretos antes que você possa se conectar.

Configurando o Pi

Se você costuma usar SSH no seu Pi, é provável que seja um sistema sem cabeça, então vamos configurá-lo por meio de uma conexão SSH.

É mais seguro fazer duas conexões SSH: uma para configurar e testar e outra para atuar como uma rede de segurança. Dessa forma, se você se bloquear do seu Pi, ainda terá a segunda conexão SSH ativa ativa. Alterar as configurações de SSH não afetará uma conexão em andamento, portanto, você pode usar a segunda para reverter quaisquer alterações e remediar a situação.

Se o pior acontecer e você estiver completamente bloqueado via SSH, ainda poderá conectar seu Pi a um monitor, teclado e mouse e, em seguida, fazer login em uma sessão normal. Ou seja, você ainda pode entrar, desde que seu Pi possa acionar um monitor. Se não puder, no entanto, você realmente precisa manter a conexão SSH da rede de segurança aberta até verificar se a autenticação de dois fatores está funcionando.

A sanção final, é claro, é refazer o sistema operacional no cartão micro SD do Pi, mas vamos tentar evitar isso.

Primeiro, precisamos fazer nossas duas conexões com o Pi. Ambos os comandos assumem o seguinte formato:

ssh [email protected]

O nome deste Pi é “cão de guarda”, mas você digitará o nome seu. Se você alterou o nome de usuário padrão, use-o também; o nosso é “pi”.

Lembre-se, por segurança, digite este comando duas vezes em diferentes janelas de terminal para que você tenha duas conexões com seu Pi. Em seguida, minimize um deles, para que fique fora do caminho e não seja fechado acidentalmente.

Depois de se conectar, você verá a mensagem de saudação. O prompt mostrará o nome de usuário (neste caso, “pi”) e o nome do Pi (neste caso, “watchdog”).

Você precisa editar o arquivo “sshd_config”. Faremos isso no editor de texto nano:

sudo nano /etc/ssh/sshd_config

Percorra o arquivo até ver a seguinte linha:

ChallengeResponseAuthentication no

Substitua o “não” por “sim”.

Pressione Ctrl+O para salvar suas alterações no nano e, em seguida, pressione Ctrl+X para fechar o arquivo. Use o seguinte comando para reiniciar o daemon SSH:

sudo systemctl restart ssh

Você precisa instalar o autenticador do Google, que é um Módulo de autenticação plugável (PAM) biblioteca. O aplicativo (SSH) chamará a interface Linux PAM e a interface localizará o módulo PAM apropriado para atender ao tipo de autenticação solicitado.

Digite o seguinte:

sudo apt-get install libpam-google-authenticator

Instalando o aplicativo

O aplicativo Google Authenticator está disponível para Iphone e Android, então basta instalar a versão apropriada para o seu celular. Você também pode usar o Authy e outros aplicativos compatíveis com esse tipo de código de autenticação.

Configurando a autenticação de dois fatores

Na conta que você usará ao se conectar ao Pi via SSH, execute o seguinte comando (não inclua o prefixo sudo):

google-authenticator

Você será perguntado se deseja que os tokens de autenticação sejam baseados em tempo; pressione Y e, em seguida, pressione Enter.

UMA Resposta rápida O código (QR) é gerado, mas é embaralhado porque é mais largo que a janela do terminal de 80 colunas. Arraste a janela para ver o código.

Você também verá alguns códigos de segurança abaixo do código QR. Eles são gravados em um arquivo chamado “.google_authenticator”, mas talvez você queira fazer uma cópia deles agora. Se você perder a capacidade de obter um TOTP (se perder seu celular, por exemplo), poderá usar esses códigos para autenticar.

Você deve responder a quatro perguntas, sendo a primeira:

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Pressione Y e, em seguida, pressione Enter.

Você quer que eu atualize seu

A próxima pergunta pergunta se você deseja evitar vários usos do mesmo código em uma janela de 30 segundos.

Pressione Y e, em seguida, pressione Enter.

A terceira pergunta pergunta se você deseja ampliar a janela de aceitação dos tokens TOTP.

Pressione N em resposta a isso e, em seguida, pressione Enter.

A última pergunta é: “Deseja habilitar a limitação de taxa?”

Digite Y e, em seguida, pressione Enter.

Você retornará ao prompt de comando. Se necessário, arraste mais a janela do terminal e/ou role para cima na janela do terminal para que você possa ver todo o código QR.

No seu celular, abra o aplicativo autenticador e pressione o sinal de mais (+) no canto inferior direito da tela. Selecione “Scan a QR Code” e, em seguida, digitalize o código QR na janela do terminal.

Uma nova entrada aparecerá no aplicativo autenticador com o nome do host do Pi e um código TOTP de seis dígitos será listado abaixo dele. Ele é exibido como dois grupos de três dígitos para facilitar a leitura, mas você deve digitá-lo como um número de seis dígitos.

Um círculo animado ao lado do código indica por quanto tempo o código será válido: um círculo completo significa 30 segundos, um semicírculo significa 15 segundos e assim por diante.

Ligando tudo junto

Temos mais um arquivo para editar. Temos que informar ao SSH qual módulo de autenticação PAM usar:

sudo nano /etc/pam.d/sshd

Digite as seguintes linhas perto do topo do arquivo:

#2FA

auth required pam_google_authenticator.so

Você também pode escolher quando deseja que o TOTP seja solicitado:

Depois de inserir sua senha: Digite as linhas anteriores abaixo de “@include common-auth”, conforme mostrado na imagem acima.
Antes de solicitar sua senha: digite as linhas anteriores acima de “@include common-auth”.

Observe os sublinhados (_) usados ​​em “pam_google_authenticator.so”, em vez dos hifens (-) que usamos anteriormente com o comando apt-get para instalar o módulo.

Pressione Ctrl+O para gravar as alterações no arquivo e, em seguida, pressione Ctrl+X para fechar o editor. Precisamos reiniciar o SSH uma última vez e terminamos:

sudo systemctl restart ssh

Feche esta conexão SSH, mas deixe a outra conexão SSH da rede de segurança em execução até verificarmos esta próxima etapa.

Verifique se o aplicativo autenticador está aberto e pronto no seu celular e, em seguida, abra uma nova conexão SSH com o Pi:

ssh [email protected]

Você deve ser solicitado para sua senha e, em seguida, para o código. Digite o código do seu celular sem espaços entre os números. Assim como sua senha, ela não ecoa na tela.

Se tudo correr conforme o planejado, você deve ter permissão para se conectar ao Pi; caso contrário, use sua conexão SSH de rede de segurança para revisar as etapas anteriores.

Melhor prevenir do que remediar

Você notou o “r” em “mais seguro” acima?

De fato, agora você está mais seguro do que estava anteriormente ao se conectar a um Raspberry Pi, mas nada é 100% seguro. Existem maneiras de contornar a autenticação de dois fatores. Eles contam com engenharia social, ataques man-in-the-middle e man-at-the-endpoint, troca de SIM e outras técnicas avançadas que, obviamente, não vamos descrever aqui.

Então, por que se preocupar com tudo isso se não é perfeito? Bem, pela mesma razão que você tranca a porta da frente quando sai, mesmo que haja pessoas que podem arrombar fechaduras – a maioria não pode.