Configurando
Para acessar um dispositivo via ssh usando par de chaves
- Criar um par de chaves
ssh-keygen -t rsa -b 4096 -C "your_key_name"
- Copiar a chave pública para o dispositivo remoto
ssh-copy-id -i identity_file user@machine
- editar o
~/.ssh/config
da máquina cliente para facilitar o acessoHost [nome] HostName [IP] User [nome] IdentityFile [~/.ssh/chave]
- Conectar
ssh nome
Melhorando e endurecendo as configurações
-
Abrir
/etc/ssh/sshd_config
na máquina remota -
Não permitir chaves sem senha
PermitEmptyPasswords no
- Desabilitar conexão apenas com senha
PasswordAuthentication no
-
Desabilitar conexão de usuários root
PermitRootLogin no
para não permitirPermitRootLogin prohibit-password
para permitir, mas apenas usando chaves criptográficas
-
Timeout automático da sessão
ClientAliveInterval 1200
ClientAliveCountMax 3
ClientAliveInterval
é o número de segundos máximo de inatividade. ClientAliveCountMax
é o numero de checagens de inatividade antes de desconectar a sessão. Na prática, aqui defini uma hora ( checagens)
- Permitir apenas um ou dois usuários a fazerem autenticação
AllowUsers jeco [segundo user]
- Mudar a porta padrão. Os bots e scanners que fazem a varredura dos serviços SSH na porta 22 não encontrarão o servidor e não lançarão ataques automatizados contra o servidor.
Port 2048
(2048,por exemplo)
- Desconexão automática em caso de login incorreto
MaxAuthTries 2
- Desativar funções não utilizadas
Para evitar que funções não utilizadas sejam exploradas, elas devem ser desligadas. Para aplicar a configuração, são necessárias as seguintes mudanças no arquivo de configuração SSH:
AllowTcpForwarding no # Disables port forwarding.
X11Forwarding no # Disables remote GUI view.
AllowAgentForwarding no # Disables the forwarding of the SSH login.
AuthorizedKeysFile .ssh/authorized_keys # The ".ssh/authorized_keys2" file should be removed.
-
PubkeyAuthentication yes
-
Checar se o arquivo de configuração não contém erros
[sudo] ssh -t
Caso nenhum erro apareça,
- Aplicar as alterações reiniciando o serviço
[sudo] systemctl restart sshd
Configurando Fail2Ban
Este software oferece proteção contra os chamados ataques de força bruta.
O endereço IP do usuário é bloqueado por um certo período de tempo após vários logins incorretos. Isto é para evitar que o atacante tente uma grande lista de senhas em um curto espaço de tempo.
- Instalar (
pacman -Sy fail2ban
ouapt install fail2ban
, por exemplo) - Criar uma configuração baseado em um modelo
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Na seção
[ssh]
deste arquivo, habilitar e setar a porta conforme definida antes
enabled = true
port = 2048
-
Opcionalmente, os valores para:
bantime
O tempo em que não são possíveis mais logins.findtime
O tempo em que as tentativas de login incorretas devem ser contadas. Começa a partir do primeiro log-in falho.maxretry
O número máximo possível de tentativas falhas antes que ocorra um bloqueio.