•Using a strong password - Could/Should I be using key files?
Arquivos-chave fornecerão mais proteção que uma senha - SE você protege sua chave privada com senha (a chave que você usa no final do cliente) com uma senha muito boa .
•Using a non-standard port
Você reduzirá substancialmente o número de invasores aleatórios que tentam fazer login fazendo isso. É "segurança por obscuridade", mas pode garantir que seus arquivos de log estejam limpos. Eu faço isso.
•Is there anyway I can 'beef up' the encryption key size e.g. from 1024-bit to 2048, I don't know what SSH uses?
Quando você usa o comando ssh-keygen
para criar suas chaves, você pode especificar qualquer comprimento de tecla que desejar. Teclas mais longas fazem com que o início da conexão seja mais lento. Se você não tem uma conexão rápida com seu servidor, uma chave muito longa pode impedir que você seja conectado devido a tempos limite, ou seja, através de redes celulares.
•Can I implement any kind of anti-brute force protection?
fail2ban
é uma boa ideia, já que o @Darth Android menciona acima.
•Can I/Do I need to implement some kind of mutual authentication?
O sistema principal usado por ssh
já fornece isso. Um cliente SSH deve informar a impressão digital do servidor e compará-lo com a impressão digital real do servidor registrada anteriormente para verificar.
Outras coisas que você deve fazer:
- aplica todas as atualizações do OpenSSH assim que você puder
- define o arquivo de configuração para não permitir o login root. Dessa forma, o acesso root precisa de 2 senhas, uma para entrar em
ssh
e umsu
ou algo assim quando você entrar.