Primeira vez que abre um servidor SSH na Internet, o que verificar

9

Estou executando alguns servidores há um tempo relativamente longo, mas sempre os aluguei, portanto não tenho muita experiência em proteger o servidor real (em oposição ao aplicativo em que estou executando).

Agora estou com vontade de abrir meu pequeno servidor SSH doméstico para a Internet.

Eu serei o único a usá-lo, minhas senhas são complicadas o suficiente, mudei a porta SSH padrão para algo em torno de 4000, a única porta acessível é essa porta SSH através do encaminhamento de porta no meu roteador / firewall e é atualizada automaticamente todas as noites (ele roda o Arch Linux, uma distribuição de lançamentos contínuos).

Quais são, se houver, outras coisas que devo fazer para mantê-lo seguro?

Obrigado!

houbysoft
fonte

Respostas:

22

Verifique se os logins raiz estão desabilitados PermitRootLogin no. Também consideraria desabilitar completamente as senhas PasswordAuthentication noe usar chaves públicas PubkeyAuthentication yes.

chx
fonte
+1 me venceu ... #
409 gravyface
1
Se você estiver usando senhas, tente procurar em um sistema de autenticação de dois fatores. Caso contrário, recomendo não digitar sua senha em um sistema aleatório de cibercafé / biblioteca.
Mark Wagner
4
Se você permitir que a senha de autenticação, considere a instalação fail2ban para evitar ataques de força bruta e usar senhas fortes para qualquer conta permitido o login via ssh
uSlackr
@embobo - por que isso? As senhas enviadas pelo fio são criptografadas no ssh. Sim, a autenticação de chave é muito superior em muitos aspectos, mas desde que as senhas sejam suficientemente fortes e você tenha verificado que ninguém está navegando no ombro, não será um grande problema.
EEAA
3
@ Erika Eu acho que o embobo está aludindo à desconfiança geral de qualquer sistema estrangeiro. Mesmo que o SSH esteja criptografado, uma máquina estrangeira ainda pode dizer, registre as teclas digitadas. Assim senha = comprometida.
Rthomson #
9

Verifique se apenas o SSH-2 é permitido (já que o SSH-1 levantou algumas preocupações de segurança no passado):

Protocol 2

Especifique quais são os únicos usuários com permissão para efetuar login via SSH:

AllowUsers bob, john

Para aumentar a segurança, desautorize a autenticação por senha e use a autenticação por chave pública:

PasswordAuthentication no
PubkeyAuthentication yes

Nota: este tutorial contém instruções para criar chaves e configurar a autenticação de chave pública.

bambam
fonte
5

Além dos pontos sobre a desativação do login raiz ou o uso apenas da autenticação de chave pública, também verifiquei se não há contas de usuário no sistema que tenham senhas triviais ou vazias. Você disse que suas senhas pessoais estão corretas, mas isso não exclui que uma conta com uma senha ruim tenha sido criada por algum outro motivo.

Como exemplo: eu tive que consertar uma rede em que o administrador anterior instalou o nagios em todos os seus sistemas a partir da fonte e criei um usuário do nagios sem senha ou a senha "nagios" e, em seguida, passei a obter três máquinas diferentes comprometida.

Daniel Lawson
fonte
4

Você pode querer olhar para algum tipo de ferramenta de lista negra de IP, como http://denyhosts.sourceforge.net/ . Ele bloqueia todos os IPs que tentam efetuar login sem êxito muitas vezes e é altamente configurável.

Escudos de Lynden
fonte
Provavelmente um desperdício de tempo se você tiver os logins raiz desabilitados. Na minha experiência (2 anos ish de um servidor SSH na internet), apenas alguns conseguiram meu nome de usuário (óbvio) correto. Os bots estão apenas verificando senhas óbvias em nomes de usuário comuns (99% das falhas de logon no meu servidor são de raiz, que é desativada, é claro).
Brendan Long
4
Definitivamente não um desperdício de tempo -, mas ter um olhar para fail2ban
symcbean
+1 para fail2ban.
JamesBarnett 27/05
1
root não é a única conta óbvia que os bots procuram, veja nagios, como mencionado acima. Também existem contas de banco de dados como mysql e postgres. Além de outras contas de aplicativos.
JamesBarnett 27/05
Sim, na verdade, tive minha máquina SSH voltada para a rede assumida por um bot que adivinha uma senha não raiz, então definitivamente não é uma perda de tempo. Além disso, como obter uma lista negra como esta, verificando os logs, uma porcentagem muito pequena de tentativas é realmente raiz.
Lynden Shields
3

Eu sugiro que você instale o Fail2ban! http://www.fail2ban.org

Ele proíbe um IP após x falhas em tentativas por y minutos, ajudando a manter o scriptkiddies sob controle;)

Lutador de gravata
fonte
0

Revisões recorrentes de logs nas partes / componentes pertinentes de seus sistemas (dependendo da configuração real / específica) ...

user48838
fonte