So far I have disabled PermitRootLogin on SSH and switched the port.
Não sou muito fã de executar serviços em portas não padrão; você torna a interoperabilidade mais difícil para você e para os outros, sem nenhum ganho real. Com uma senha decente (ou melhor: chave), as verificações SSH aleatórias não têm chance de sucesso de qualquer maneira, e os ataques direcionados não são desativados por uma porta diferente.
But working as root isn't the best thing to do I've heard... So I thought about just granting my unprivileged user sudo rights.
Esta é uma preferência pessoal; existem razões válidas para escolher uma das abordagens.
Pessoalmente, prefiro evitar o sudo, principalmente porque é muito mais complexo que o su. E essa complexidade carrega um risco de segurança maior, tanto na configuração do sudo, quanto no próprio sudo (tem havido vários avisos de segurança ). O sudo pode ser muito útil para permitir que um usuário sem privilégios execute comandos muito específicos sem senha.
Dito isto, mudar para o root e usar o sudo da maneira que você descreve é praticamente intercambiável, exceto por algumas coisas:
-
O Sudo pode registrar cada comando executado através dele. Ao usar o su, você precisa confiar no histórico do shell do root para registrar. (No entanto, um invasor pode contornar isso, por exemplo, simplesmente fazendo
sudo su
) -
Com o sudo, você normalmente precisa da senha do seu usuário, com su você precisa do root.
-
Com o sudo, é mais fácil intercalar comandos privilegiados e não privilegiados.
No entanto, eu geralmente me encontro fazendo tarefas administrativas para as quais preciso de muito root, ou algo não administrativo para o qual não preciso de root. E, para evitar confusão, colore meus prompts do shell para distinguir entre raiz (vermelho) e usuário (azul).
-
Por padrão, o sudo é limitado a determinadas contas.
Para su, uma coisa semelhante pode ser obtida usando
pam_wheel.so
para limitar su-to-root a membros de um determinado grupo. (addgroup --system wheel
,adduser YOU wheel
, descomente a linha pam_wheel em/etc/pam.d/su
)
Should I disable SSH Authentication via password and just use keys? Then it would be difficult for me to access the server if I'm not on my own laptop.
Sim, esse é provavelmente um dos maiores ganhos em segurança.
Você pode conceder acesso para as chaves SSH de suas contas em várias máquinas (confiáveis).
Se as máquinas não forem confiáveis, você deve considerar não fazer login a partir delas; eles poderiam injetar comandos ou ter um keylogger farejando suas senhas.
Algumas dicas adicionais:
-
Considere limitar o acesso SSH às contas de usuários que precisam de acesso SSH.
Eu gosto de fazer isso por
addgroup --system allowssh
e, em seguida, em/etc/ssh/sshd_config
settingPubkeyAuthentication no
e adicionando uma sub-rotinaMatch Group allowssh\n PubkeyAuthentication yes
.Tenho certeza de que isso também pode ser feito por meio do PAM, usando algo como
auth required pam_succeed_if.so quiet_success user ingroup allowssh
in/etc/pam.d/sshd
. -
Considere a instalação de um logchecker que relate anomalias. Para reduzir o volume de e-mails, você pode considerar ter as tentativas de login bem-sucedidas enviadas, em vez das tentativas mal-sucedidas.