Desde que você perguntou, aqui estão meus conselhos gerais sobre como abordar o problema sudo
.
O Sudo não foi projetado para fornecer mais segurança (embora possa ser de alguma forma) ... mas sim fornecer uma boa trilha de auditoria de quem está fazendo o que, no seu sistema, com quais privilégios.
Um Sudo configurado corretamente não usará a configuração ALL=(ALL) ALL
, mas sim algo mais limitado ao que é especificamente que o usuário precisa. Por exemplo, se você precisar que um usuário possa fazer o login e reiniciar um serviço emperrado, provavelmente ele não precisará instalar um novo software ou encerrar o servidor, alterar as regras do firewall, etc.
Às vezes, é comum as pessoas usarem o sudo para se elevarem para a conta root, ou seja, %código%. Depois de fazer isso, você para de ver quem está fazendo o quê a partir da conta raiz (a raiz pode ser conectada várias vezes ao mesmo tempo). Então, às vezes, as pessoas também querem desabilitar o comando sudo su -
. Mas, por razões práticas, se você precisa de uma conta totalmente privilegiada para a administração, no mínimo ter alguém emitindo o comando sudo su -
registraria quem passava a raiz e quando.
Como posso proteger minhas caixas:
Altere a porta SSH para algo diferente do padrão. Isso é para evitar os dumb-bots que procuram por números de porta e então liberam até entrarem (ou não).
Proibir o login raiz através do SSH usando a configuração sudo su -
no seu sshd_config. Isso impede que alguém faça brute na sua conta root. Em geral, é recomendável nunca permitir que alguém faça login diretamente na conta raiz / administrador por motivos de auditoria e segurança. Se você permitir login root diretamente, você não sabe quem está logado, de quem ele tirou a senha, etc. Mas, se alguém entrar na conta de Jimmy, então eleva suas permissões para root, você tem uma idéia melhor de onde começar pesquisa de auditoria (e quem é a conta para redefinir).
Permitir somente usuários que precisam de SSH Use a configuração AllowRootLogin no
e especifique explicitamente quais contas precisam de acesso SSH. Por padrão, isso bloqueará todas as outras contas do SSH.
Edite Sudoers via visudo e permita somente os comandos que o usuário precisa. Há muitos guias detalhados sobre como fazer isso, então não detalharei aqui. Aqui está uma entrada: link
A essência disso é evitar que uma conta comprometida coloque em risco sua máquina. ie. se a conta de Sally for invadida, e Sally só puder usar sudo para reiniciar o servidor web, o invasor pode se divertir reiniciando seu servidor web em um loop, mas pelo menos eles não podem AllowUsers
ou abrir todas as suas portas de firewall, etc.
Configure boas regras de firewall que permitam apenas as portas necessárias para o funcionamento da sua caixa. Geralmente, você quer largar tudo e permitir explicitamente o que precisa. Há uma abundância de iptables decentes e outros firewalls são iniciados online, aqui está um que eu uso (é um bom começo):
# Generated by iptables-save v1.4.7 on Mon Mar 3 17:55:02 2014
*filter
:INPUT DROP [4528:192078]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [39845:27914520]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4254 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -m state --state NEW -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Mon Mar 3 17:55:02 2014
Também é uma senha strong. Mesmo se você usar as chaves SSH para o seu acesso remoto, você ainda deve exigir uma senha para o uso do Sudo. Este é um caso em que o sudo pode oferecer mais segurança. Se alguém roubasse suas chaves ssh, elas ainda seriam impedidas de fazer algo significativo em sua caixa se ainda tivessem que usar a senha da sua conta para usar o sudo. As senhas não devem ser uma palavra, mas sim uma frase secreta. Pense em uma frase e use isso. Isso geralmente lhe dará algo com mais de 8 caracteres, fornecendo muita entropia, mas também é mais fácil de lembrar do que uma senha aleatória. É claro que boas práticas de senha dizem usar uma senha aleatória gerada por uma máquina para enganar ferramentas como o John the Ripper, que vai passar pela maioria das senhas e senhas. Não, mudar E com 3 não funciona, John recebe essas permutações também.