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.
Índice
The Amazing Raspberry Pi
O Raspberry Pi é um computador de placa única. Foi lançado no Reino Unido em 2012 com a intenção de fazer as crianças mexerem, criarem e aprenderem códigos. 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 executa Linux. Adições posteriores à linha incluíram versões ainda menores, projetadas para serem incorporadas em produtos ou funcionarem como sistemas sem cabeça. Os preços variam de US $ 5 para o Pi Zero minimalista a US $ 75 para o Pi 4 B / 8 GB .
Seu sucesso foi incrível; mais de 30 milhões desses minúsculos computadores foram vendidos em todo o mundo. Os entusiastas têm feito coisas incríveis e inspiradoras com eles, incluindo flutuar um até a borda do espaço e voltar em um balão .
Infelizmente, uma vez que uma plataforma de computação se torna suficientemente difundida, ela inevitavelmente atrai a atenção dos cibercriminosos. É terrível pensar em quantos Pi’s estão usando a conta de usuário e senha padrão. Se o seu Pi for público e acessível pela Internet por Secure Shell (SSH), ele deve ser seguro.
Mesmo se você não tiver nenhum dado valioso ou software 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 ator de ameaça tenha um ponto de apoio em uma rede, ele passará para os outros dispositivos nos quais está realmente interessado.
Autenticação de dois fatores
A autenticação – ou obtenção de acesso a um sistema – requer um ou mais fatores. Os fatores são categorizados da seguinte forma:
- Algo que você conhece: 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 varredura de retina.
A autenticação multifator (MFA) requer uma senha e um ou mais itens de outras categorias. Para nosso exemplo, usaremos uma senha e um telefone celular. O telefone 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 sementes para o seu telefone celular 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 temporárias de uso único (TOTP).
Ao receber 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 pedirá sua senha e código de autenticação. Tanto sua senha quanto o TOTP devem estar corretos antes de você ter permissão para se conectar.
Configurando o Pi
Se você costuma usar SSH em seu Pi, provavelmente é um sistema sem comando, então vamos configurá-lo por meio de uma conexão SSH.
É mais seguro fazer duas conexões SSH: uma para fazer a configuração e o teste e outra para funcionar como uma rede de segurança. Dessa forma, se você bloquear 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 será capaz de 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 dirigir 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, é atualizar 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 a seguinte forma:
ssh pi@watchdog.local
O nome desse Pi é “watchdog”, mas você digitará o seu nome. 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 janelas de terminal diferentes para que você tenha duas conexões com o 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 não
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 é uma biblioteca Pluggable Authentication Module (PAM). O aplicativo (SSH) chamará a interface PAM do Linux e a interface encontrará o módulo PAM apropriado para atender ao tipo de autenticação solicitada.
Digite o seguinte:
sudo apt-get install libpam-google-authenticator
Instalando o aplicativo
O aplicativo Google Authenticator está disponível para iPhone e Android , basta instalar a versão apropriada para o seu celular. Você também pode usar o Authy e outros aplicativos que suportam 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 sudo
prefixo):
google-autenticador
Você será perguntado se deseja que os tokens de autenticação sejam baseados em tempo; pressione Y e, em seguida, pressione Enter.
Um código de resposta rápida (QR) é gerado, mas é embaralhado porque é mais largo do que a janela do terminal de 80 colunas. Arraste mais 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 você pode querer fazer uma cópia deles agora. Se você perder a capacidade de obter um TOTP (se perder seu telefone celular, por exemplo), poderá usar esses códigos para se autenticar.
Você deve responder a quatro perguntas, a primeira das quais é:
Quer que eu atualize seu arquivo "/home/pi/.google_authenticator"? (s / n)
Pressione Y e, em seguida, pressione Enter.
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 pressione Enter.
A última pergunta é: “Você deseja habilitar a limitação de taxa?”
Digite Y e pressione Enter.
Você retornou ao prompt de comando. Se necessário, arraste a janela do terminal para mais longe e / ou role para cima na janela do terminal para ver todo o código QR.
No celular, abra o aplicativo autenticador e pressione o sinal de mais (+) no canto inferior direito da tela. Selecione “Ler um código QR” 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 dela. É 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.
Conectando tudo junto
Temos mais um arquivo para editar. Precisamos 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 sua senha ser solicitada: 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 apt-get
comando 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 então terminar:
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 a próxima etapa.
Certifique-se de que o aplicativo autenticador esteja aberto e pronto em seu telefone celular e, em seguida, abra uma nova conexão SSH com o Pi:
ssh pi@watchdog.local
Deve ser solicitada sua senha e, em seguida, o código. Digite o código no seu celular sem espaços entre os números. Assim como sua senha, ela não é exibida na tela.
Se tudo correr conforme o planejado, você deve ter permissão para se conectar ao Pi; caso contrário, use a conexão SSH da rede de segurança para revisar as etapas anteriores.
Melhor seguro do que arrependido
Você notou o “r” em “mais seguro” acima?
Na verdade, agora você está mais seguro do que antes ao se conectar a um Raspberry Pi, mas nada é 100 por cento 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 iremos descrever aqui.
Então, por que se preocupar com tudo isso se não é perfeito? Bem, pelo mesmo motivo que você tranca a porta da frente quando sai, embora haja pessoas que podem abrir fechaduras – a maioria não.