Como fornecer atraso de login no ssh


11

Eu queria fornecer atraso de login durante o login através do ssh. Tentei duas maneiras de fazer o mesmo, mas não consegui encontrar o resultado desejado.

Eu tentei as etapas fornecidas pelo link fornecido.

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

Não tenho o módulo pam instalado na minha máquina, portanto, não posso fazer nenhuma modificação relacionada aos arquivos pam

Então, qualquer corpo, deixe-me sugerir outra maneira de fazer o mesmo?

Eu tenho o kernel linux vazio executando na plataforma incorporada.


Por que você deseja introduzir um atraso? Qual é o seu objetivo final?
um CVn

Eu queria impedir a possibilidade de ataque de força bruta.
Ram

3
A simples introdução de um atraso em novas conexões não impedirá um ataque de força bruta. Você precisa examinar as ferramentas projetadas para resolver seu problema real. Eu sugiro começar analisando fail2ban, que é projetado especificamente para reagir a entradas de log repetidas executando determinados comandos, e geralmente é usado especificamente para impedir tentativas de força bruta de obter acesso não autorizado.
um CVn

Tudo bem, Michael, mas eu tenho que fazer isso com a infraestrutura existente que tenho comigo. Como posso introduzir um atraso cada vez que me conecto através do ssh.
Ram

2
Cara, fail2banusa a infraestrutura exata que você já possui - regras ssh logs e iptables.
Shadur

Respostas:


11

Método # 1 - desativar logins de senha

Se você não precisar permitir logins de senhas, simplesmente desabilitá-los dará o efeito desejado. Basta adicionar esta linha a /etc/ssh/sshd_config:

PasswordAuthentication     no

Além disso, você pode limitar o uso de senha para determinados usuários usando o Matchoperador em sshd_config:

Match User root,foo,bar
    PasswordAuthentication no
Match User user1,user2
    PasswordAuthentication yes

Método # 2 - iptables

Você também pode usar iptablespara rastrear tentativas de login com falha e descartá-las após um certo limite. Isso é semelhante ao seu exemplo de hostingfu, mas é mais fácil de entender.

$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

NOTA: A primeira linha basicamente cria uma regra que se aplica apenas aos pacotes usados ​​para novas tentativas de conexão na porta ssh. A segunda linha diz que, se houver mais de 4 tentativas de um IP em 60 segundos, qualquer tráfego desse IP deverá ser trocado. Esta solução não se importa se as tentativas em diferentes contas de usuário ou não.

Método # 3 - use PAM

Sei que você disse que não possui o PAM disponível, mas, se o tiver, é assim que você poderá atrasar as tentativas de login com falha. Se sua intenção é simplesmente atrasar falhas de login ssh, você poderá usar o módulo PAM pam_faildelay. Esse módulo PAM geralmente é incluído no mix padrão.

No meu sistema Fedora 19, faz parte da instalação padrão.

Exemplo

Procure por arquivos relacionados a pam_faildelay.

$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz

Veja por qual RPM eles são fornecidos:

$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686

Uso

Para criar um atraso na falha, basta adicionar uma linha como esta ao seu sshdarquivo de configuração do pam. Novamente nos sistemas Fedora / CentOS / RHEL, este arquivo está localizado aqui:/etc/pam.d/sshd .

Para criar um atraso de 10 segundos:

       auth  optional  pam_faildelay.so  delay=10000000

Um atraso de 60 segundos:

       auth  optional  pam_faildelay.so  delay=60000000

Exemplo

Com um atraso de 20 segundos usando o método acima, alterei meu sshdarquivo de configuração do PAM da seguinte forma:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_faildelay.so  delay=20000000
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

Agora, quando eu faço o login:

$ date
Tue Dec 17 09:16:30 EST 2013

$ ssh blah@localhost
blah@localhost's password: 
Permission denied, please try again.
blah@localhost's password: 

...Control + C....

$ date
Tue Dec 17 09:16:50 EST 2013

Referências


Graças @slm mas novamente eu não posso instalar o módulo pam e meu autenticação sshd não é de pam.Would Você gostaria de sugerir alguma outra maneira de contornar
Ram

@AmitSinghTomar - desculpe, eu expandi minha resposta. Eu estava tentando criar uma resposta canônica para sua pergunta que cobria todos os métodos, não apenas os seus.
slm

Obrigado novamente @slm pela sua resposta detalhada, estou interessado em seguir o segundo método que você sugeriu. Dará uma chance e informará o resultado, além de me dar um atraso com a primeira tentativa de login através do ssh?
Ram

@AmitSinghTomar - não, só deve atrasar após 4 tentativas. Quando o valor --hitcount 4é excedido, a regra bloqueia o endereço IP incorreto por 60 segundos.
slm

Um ponto que eu queria saber de você, para o seu terceiro método para trabalhar (PAM), é necessário que a autenticação ssh ocorra através do pam?
Ram

3

Desabilitar senhas. Sem senhas, sem ataques de força bruta.

Você pode usar ssh-keys para efetuar login - o que deve ser muito mais seguro e mais difícil de invadir.


0

Em uma instalação limpa do Ubuntu 16.04 com openssh-server, já existe um atraso para uma tentativa incorreta de senha com mais de zero caracteres. O atraso parece ser superior a 1 segundo .

Para uma tentativa incorreta de senha com zero caracteres, não há atraso, portanto o invasor determinará imediatamente que sua senha não é a sequência vazia, se na verdade não for a sequência vazia. Como a sequência vazia provavelmente não é permitida como senha, eles já sabem disso e, portanto, não tentarão a sequência vazia.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.