OpenSSH: Como negar o acesso remoto à conta root?
O OpenSSH é um conjunto de ferramentas que nos permite gerir remotamente máquinas, recorrendo ao protocolo SSH. Ao contrário de outras, como o Telnet, rcp, rlogin e ftp, o OpenSSH garante que as comunicações entre máquinas sejam seguras, pois, recorre à criptografia para cifrar todo o tráfego (incluindo passwords).
Por questões de segurança é fundamental que desativem a autenticação remota da conta root. Hoje ensinamos como podem fazer.
O OpenSSH é uma versão gratuita da implementação do SSH. Para quem não sabe, o SSH – Secure Socket Shell é um protocolo que permite, de forma segura, aceder e gerir remotamente máquinas Linux e não só.
O OpenSSH é um conjunto de ferramentas das quais fazem parte o:
- ssh– um substituto para rlogin, rsh e telnet.
- scp– um substituto para rcp
- sftp– um substituto para o ftp
- sshd– daemon da versão server do SSH
- ssh-keygen– uma ferramenta para verificar e gerar chaves RSA, DSA e Elliptic Curve
- ssh-agentessh-add –utilitários para que o utilizador não necessite de introduzir sempre a password – ver aqui
Gerir máquinas remotamente é sempre um processo bastante cómodo, no entanto, é fundamental que se analisem todas as questões relativamente à segurança. Uma das primeiras configurações que devem ser realizadas é desativar o acesso à conta root. Como sabemos, esta conta tem todos os privilégios dentro de um sistema e nesse sentido não a devemos usar para proceder à autenticação por acesso remoto.
Depois de acederem remotamente a uma máquina com uma conta com um nível de privilégios mínimo, podem nesse momento usar a conta root para realizar tarefas que necessitem de outro tipo de permissões.
Como negar o acesso remoto à conta root?
Negar o acesso remoto à conta root é algo bastante simples e pode ser realizado de várias formas. Uma delas já apresentamos aqui. Outra das formas é usando o parametro DenyUsers
Para isso basta abrir o ficheiro /etc/ssh/sshd_config e incluir a seguinte informação:
DenyUsers root |
Caso pretendam bloquear outros utilizadores basta que façam algo do tipo:
DenyUsers ppinto ppinto user1 |
Depois de procederem às alterações devem reiniciar o serviço usando o seguinte comando:
/etc/init.d/sshd restart |
Para testarem se tudo está operacional podem executar no macOS, Linux e até no Windows o seguinte comando:
ssh root@xxx.xxx.xxx.xxx |
Além destas configurações existem outras que podem ser facilmente adotadas. Por exemplo, fazer Logins remotos pela rede “sem password” – ver aqui. Podemos também usar o DenyHosts, um script desenvolvido para sistemas Linux que permite “ajudar” no controlo de ataques indevidos via SSH.
Leia também...
Este artigo tem mais de um ano
Desculpa perguntar Pedro Pinto, mas será que ao contrário funciona melhor? Do tipo…. AllowUsers xpto admindossh…. e do tipo AllowHosts 192.168.x.x, ou AllowHosts 213.13.65.217 ….. por exemplo…. é que nem muitos acedem ao SSH!… pelo menos só os admins que querem alguma coisa dai!… Qual a diretiva que tem maior precedencia, prioridade, mais bloqueante, afinal !?
sei que o /etc/hosts.deny é checked antes de /etc/hosts.allow, assim poderiamos ter:
* hosts.deny
ALL : ALL
ou seja, primeiro, bloqueamos toda a gente de tudo,
* hosts.allow
ALL : localhost
sshd: 192.168.1.24
proftpd: 192.168.1.24
quer quer dizer que só o ip 192.168.1.24 na rede local acederá
e só acede via ssh ou proftp server nessa maquina.
se não bloqeuamos toda a gente podemos utilziar este script… http://denyhosts.sourceforge.net/ conhecido por http://www.denyhosts.net
Sim, também pode ser.
Sou de opinião que a conta de root só pode ser acedida pelo uso de sudo. Assim, fica nos logs, quem fez o quê e quando. Como é evidente, somente alguns utilizadores tem a possibilidade de usar alguns comandos com sudo. Aceder à conta de root, só em casos muito específicos e somente para alguns dos admins. Isto é na minha opinião, como deveriam estar todos os servidores configurados. Outra coisa também muito importante, a password de root ser diferente em todos os servidores. Ter o firewall configurado em todos os servidores de modo a que os acessos sejam efectuados a partir de somente determinadas maquinas. Com esta restrição melhora-se a eficiência e a eficácia da segurança. Acesso aos servidores via ssh , sftp , telnet configurado no firewall de cada servidor, obrigatoriamente. Dá trabalho ? Claro que sim.
Olá, Pedro Pinto.
Tenho um laptop com o Fedora 30 Workstation a rodar para uso simplesmente pessoal. ‘Desinstalei’ o boot splash screen para ver o sistema a subir e observei que surge o seguinte: ‘start openssh server…’. Como bom noob que sou, pergunto: Preciso desse serviço rodando? Se a sua resposta for Não, como o desativo? Se for Sim, porquê preciso dele se não o meu computador não é um servidor?
Cptos, Pedro.