Como posso auditar usuários e acessar tentativas de SSH no meu servidor?

24

Eu tive alguns problemas de segurança com um servidor meu, alguns usuários do SSH estão configurando incêndios, também conhecidos como problemas.

Eu gostaria de:

  • Acompanhar logins de usuários e logouts
  • Acompanhe a atividade desses SSH para descobrir qualquer atividade maliciosa
  • Impedir que os usuários excluam registros

Eu não sou muito administrador de sistemas e sou bastante inexperiente nesse assunto, então qualquer tipo de conselho seria muito bem-vindo e muito útil. :)

    
por RadiantHex 08.09.2010 / 12:29

5 respostas

23

Falando sobre servidores SSH, darei soluções de linha de comando.

  • Rastreie logins e logouts de usuários. Isso é fácil, o arquivo /var/log/auth.log deve ter essa informação.

  • Rastreie a atividade desses usuários: se eles forem um pouco inocentes, você poderá verificar o arquivo .bash_history no diretório inicial. Você verá uma lista dos comandos que eles executaram. O problema é claro que eles podem excluir ou editar este arquivo.

  • Impedir que os usuários excluam registros: os usuários não devem conseguir tocar em auth.log. Para impedi-los de jogar com bas_history, você precisa fazer alguns truques .

  • E se o usuário conseguir obter acesso root? : Você está ferrado. A menos que ele cometa um erro, ele será capaz de esconder todos os seus passos.

por Javier Rivera 08.09.2010 / 12:52
6

[AVISO LEGAL] Eu percebo que estou atrasado para a festa, mas gostaria de colar uma resposta que eu dei para outra pergunta , porque eu sinto que pode oferecer uma boa visão para os leitores, e essa questão parece ser o lugar para informações básicas do ssh.

Houve um problema semelhante que me surpreendeu depois de ler esta pergunta aqui no AskUbuntu e checagem do meu VPS, apenas para ver um bazillion de tentativas de força bruta. Foi quando decidi agir.

Agora, de acordo com a pergunta a que me vinculei, se você quiser ver tentativas de login com falha em sua máquina por ssh (pode ser uma tentativa de força bruta ou qualquer outra coisa), tente digitá-la:

grep sshd.\*Failed /var/log/auth.log | less

Se a saída consistir em várias linhas, ou seja, muitas tentativas de força bruta, especialmente se tiverem ocorrido entre intervalos curtos, convém executar as seguintes ações:

Altere o arquivo de configuração do ssh

Para fazer isso, abra o arquivo localizado em / etc / ssh / sshd_config com seu editor favorito, como este vim /etc/ssh/sshd_config .

1. Tente mover o ssh da porta 22 : Agora localize a linha que diz:

# What ports, IPs and protocols we listen for
Port 22

e comente a Port 22, e use qualquer um que você goste. Exemplo:

# What ports, IPs and protocols we listen for
# Port 22
Port 28934

Lembre-se de que as portas abaixo de 1024 precisam de permissão especial (raiz). Não sei como isso pode interferir, mas estou apenas dizendo.

2. Desativar logins da raiz via ssh : Como o nome de usuário root é previsível e fornece acesso completo ao sistema, fornecer acesso irrestrito a essa conta pelo SSH é insensato. Localize a linha que lê PermitRootLogin e defina como no .

PermitRootLogin no

3. Desative a autenticação por senha : Gere e use chaves SSH para efetuar login no sistema. Sem senhas ativadas, os invasores precisarão adivinhar (ou roubar) sua chave privada SSH para obter acesso ao seu servidor. Algo que é muito muito difícil. Continue para encontrar a linha que lê PasswordAuthentication e defina como não

PasswordAuthentication no

! ATENÇÃO! Antes de fazer isso, consulte este guia aqui sobre como configurar a autenticação de certificado.

OBSERVAÇÃO: Depois de fazer as alterações, use sudo /etc/init.d/ssh restart . Para se conectar a outra porta por meio do uso de ssh: ssh [email protected] -p <port_number> .

Configurar um firewall

Por favor, confira este guia sobre como configurar o firewall extremamente poderoso e eficaz, que é integrado ao Linux, IPTables .

Configurar scripts para ajudá-lo com segurança

Um que eu uso pessoalmente e rapidamente me vem à mente é Fail2Ban . O Fail2ban irá monitorar seus arquivos de log por tentativas de login com falha. Depois que um endereço IP excedeu o número máximo de tentativas de autenticação, ele será bloqueado no nível da rede e o evento será registrado em /var/log/fail2ban.log . Para instalá-lo: sudo apt-get install fail2ban

Verifique o histórico de comandos via ssh

Existe um comando linux, chamado history , que permite ver quais comandos foram inseridos até esse ponto. Tente digitar history em um terminal para ver todos os comandos até esse ponto. Poderia ajudar se você fosse root .

Para pesquisar por um comando em particular , tente: history | grep command-name

Para listar todos os comandos após ssh : fc -l ssh

Você também pode editar comandos usando o vi (não tentei usar o vim, embora eu assuma que ele também funciona): fc -e vi

Você também pode excluir o histórico : history -c

NOTA: Se você não é fã do comando history , há também um arquivo no seu diretório pessoal ( cd ~ ), chamado .bash_history ( se você estiver usando o bash), você pode cat ver tudo o que foi digitado no bash shell.

    
por NlightNFotis 28.08.2012 / 23:23
4

Um pouco exagerado, mas você pode ver tudo o que é executado em seu sistema usando o "conector do evento de processo":

link

    
por Kees Cook 21.09.2010 / 20:12
3
  1. Javier já respondeu a esta: /var/log/auth.log
  2. Encontrei um ótimo artigo sobre este aqui .
  3. Se seus usuários não tiverem acesso ao root, seus arquivos de log deverão estar seguros. Você pode tentar criar algumas regras personalizadas no arquivo sudoers para restringir o que seus usuários podem acessar e como. Além disso, você pode aumentar o nível de log para o daemon sshd.
por Radu Cotescu 09.09.2010 / 10:11
3

Além do login em si, não há maneira segura de rastrear / registrar as ações dos usuários após o login, supondo que eles tenham conhecimento básico do Linux, eles poderão desabilitar o log shell ou simplesmente executar comandos de outros shells (por exemplo, python).

Em vez disso, você deve ser conservador sobre o fornecimento de acesso ssh, eles realmente precisam dele? Não é muito comum conceder acesso ao ssh, a menos que você esteja no negócio de shell.

    
por João Pinto 09.09.2010 / 19:38