Senhas e 2FA
Políticas de senha fortes e autenticação de dois fatores (2FA) são duas linhas de defesa críticas para proteger contas de usuários. Este artigo explica como configurar políticas de senha e habilitar a autenticação de dois fatores no Ubuntu 26.04.
Políticas de senhas fortes
Instalando ferramentas de verificação de qualidade de senha
sudo apt install libpam-pwqualityConfigurando políticas de senha
Edite o arquivo de configuração de qualidade de senha:
sudo nano /etc/security/pwquality.confOpções de configuração comuns:
# Minimum password length
minlen = 12
# Minimum number of character classes (uppercase, lowercase, digits, special characters)
minclass = 3
# Minimum number of uppercase letters
ucredit = -1
# Minimum number of lowercase letters
lcredit = -1
# Minimum number of digits
dcredit = -1
# Minimum number of special characters
ocredit = -1
# Number of characters that must differ from the old password
difok = 5
# Prevent using the username as part of the password
usercheck = 1
# Limit consecutive identical characters
maxrepeat = 3
# Limit consecutive characters of the same class
maxclassrepeat = 4
# Reject palindrome passwords
palindrome = 1
# Reject common dictionary words
dictcheck = 1Configurando políticas de expiração de senha
# Edit global settings
sudo nano /etc/login.defs# Maximum password age (days)
PASS_MAX_DAYS 90
# Minimum password age (days)
PASS_MIN_DAYS 7
# Password expiration warning days
PASS_WARN_AGE 14
# Minimum password length
PASS_MIN_LEN 12Configurando políticas de senha para usuários específicos
# Set maximum password age to 90 days
sudo chage -M 90 username
# Set minimum password age to 7 days
sudo chage -m 7 username
# Set 14-day expiration warning
sudo chage -W 14 username
# Immediately require password change
sudo chage -d 0 username
# View user password policy
sudo chage -l usernameHistórico de senhas (evitando a reutilização de senhas antigas)
Edite a configuração do PAM:
sudo nano /etc/pam.d/common-passwordEncontre a linha que contém pam_unix.so e adicione o parâmetro remember:
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=12Isso evita que os usuários reutilizem qualquer uma das últimas 12 senhas.
Ferramentas de gerenciamento de senhas
Gerenciador de senhas de linha de comando: passar
# Install
sudo apt install pass
# Initialize (requires a GPG key)
gpg --gen-key
pass init "your-gpg-id"
# Add a password
pass insert email/gmail
pass insert -m server/production # multi-line mode
# View a password
pass email/gmail
# Generate a random password
pass generate web/newsite 20
# List all passwords
pass ls
# Search
pass find gmailUsando KeePassXC
# Install
sudo apt install keepassxc
# Or use snap
sudo snap install keepassxcKeePassXC é um gerenciador de senhas gráfico rico em recursos que oferece suporte a:
- Armazenamento de banco de dados de senha criptografada
- Preencher senhas automaticamente
- Autenticação de dois fatores TOTP
- Integração do navegador
- SSH Integração do agente
Autenticador Google (TOTP 2FA)
Instalação e inicialização
# Install the PAM module
sudo apt install libpam-google-authenticator
# Run initialization as a regular user
google-authenticatorOpções recomendadas durante a inicialização:
Do you want authentication tokens to be time-based (y/n) y
# Choose y for time-based tokens (TOTP)
# A QR code will be displayed -- scan it with an authenticator app
# Recommended apps: Google Authenticator, Authy, Microsoft Authenticator, FreeOTP
Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
# Choose y to prevent token replay
By default, a new token is generated every 30 seconds.
Do you want to change the size of the time skew window? (y/n) n
Do you want to enable rate-limiting? (y/n) y
# Choose y to limit attempt frequencyCertifique-se de salvar os códigos de backup de emergência exibidos.
Habilitando 2FA para login local
sudo nano /etc/pam.d/common-authAdicione no final do arquivo:
auth required pam_google_authenticator.so nullokO parâmetro nullok permite que usuários que não configuraram 2FA façam login normalmente. Remova-o assim que todos os usuários estiverem configurados.
Habilitando 2FA para login SSH
# Edit PAM SSH configuration
sudo nano /etc/pam.d/sshdAdicionar:
auth required pam_google_authenticator.soEdite a configuração do servidor SSH:
sudo nano /etc/ssh/sshd_config# Enable keyboard-interactive authentication
KbdInteractiveAuthentication yes
# Require key + TOTP dual authentication
AuthenticationMethods publickey,keyboard-interactiveReinicie SSH:
sudo systemctl restart sshHabilitando 2FA para sudo
sudo nano /etc/pam.d/sudoAdicione após @include common-auth:
auth required pam_google_authenticator.soIsso requer um código de verificação sempre que o sudo for usado.
Chaves de segurança de hardware (FIDO2/U2F)
Dispositivos Suportados
Ubuntu 26.04 suporta chaves de segurança FIDO2/U2F, como:
- Série YubiKey 5
- Chave de segurança Titan do Google
- Feitian ePass FIDO
- SoloKeys
Instalação e configuração
# Install the PAM U2F module
sudo apt install libpam-u2f
# Install management tools
sudo apt install pamu2fcfgRegistrando uma chave de segurança
# Create configuration directory
mkdir -p ~/.config/Yubico
# Register the first key (insert the security key and touch it)
pamu2fcfg > ~/.config/Yubico/u2f_keys
# Register a backup key (append mode)
pamu2fcfg -n >> ~/.config/Yubico/u2f_keysHabilitando chave de segurança para sudo
sudo nano /etc/pam.d/sudoAdicione antes de @include common-auth:
auth sufficient pam_u2f.soHabilitando chave de segurança para login
sudo nano /etc/pam.d/gdm-passwordAdicionar:
auth required pam_u2f.soHabilitando chave de segurança para SSH
OpenSSH 8.2+ suporta nativamente chaves FIDO2:
# Generate a FIDO2 SSH key
ssh-keygen -t ed25519-sk -C "your_email@example.com"
# Or use a resident key (does not require the corresponding hardware key for the public key in .ssh/authorized_keys on the server)
ssh-keygen -t ed25519-sk -O resident -C "your_email@example.com"
# Deploy the public key to the server
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@serverConfiguração do fluxo de autenticação PAM
Compreendendo os sinalizadores de controle PAM
| Bandeira | Descrição |
|---|---|
required | Deve ter sucesso; continua verificando outros módulos em caso de falha |
requisite | Deve ter sucesso; retorna imediatamente em caso de falha |
sufficient | Passa imediatamente em caso de sucesso; continua verificando falhas |
optional | Sucesso ou fracasso não afeta o resultado final |
Exemplos de combinação de autenticação multifator
Senha + TOTP:
# /etc/pam.d/common-auth
auth required pam_unix.so
auth required pam_google_authenticator.soSenha + Chave de segurança (chave de segurança opcional):
auth required pam_unix.so
auth sufficient pam_u2f.so
auth required pam_google_authenticator.soPolítica de bloqueio de conta
Configurando bloqueio de login com falha
sudo nano /etc/pam.d/common-authAdicione no início do arquivo:
auth required pam_faillock.so preauth silent deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900sudo nano /etc/pam.d/common-accountAdicionar:
account required pam_faillock.soDescrições dos parâmetros:
deny=5: Bloqueio após 5 falhasunlock_time=900: Bloqueio por 900 segundos (15 minutos)
Gerenciando status de bloqueio
# View a user's failed attempts
sudo faillock --user username
# Unlock a user
sudo faillock --user username --reset
# View all locked users
sudo faillockMelhores práticas
- Use senhas de 12 caracteres ou mais, incluindo letras maiúsculas, minúsculas, dígitos e caracteres especiais.
- Use uma senha diferente para cada serviço e use um gerenciador de senhas.
- Ative 2FA em todos os serviços que o suportam.
- Salve códigos de backup e chaves de recuperação com segurança.
- Registre várias chaves de segurança como backups.
- Altere as senhas periodicamente, mas não com muita frequência (a cada 90 dias é suficiente).
- Monitore registros de login com falha para detectar ataques de força bruta antecipadamente.