Como fornecer o atraso de login no ssh

9

Eu queria fornecer um atraso no login enquanto fazia o login no ssh. Tentei algumas maneiras de fazer o mesmo, mas não consegui encontrar o resultado desejado.

Eu tentei as etapas fornecidas pelo link fornecido.

link

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

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

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

Eu tenho o kernel Linux nulo rodando na plataforma embarcada.

    
por Ram 17.12.2013 / 14:49

3 respostas

8

Método 1 - desabilitar logins de senha

Se você não precisa permitir logins de senha, simplesmente não permitir que eles lhe dêem o efeito desejado. Basta adicionar esta linha a /etc/ssh/sshd_config :

PasswordAuthentication     no

Além disso, você pode limitar o uso de senhas a determinados usuários usando o operador Match 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 iptables para rastrear tentativas de login com falha e soltá-las após um determinado 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 dentro de 60 segundos, qualquer tráfego desse IP deve ser blackholed. Esta solução não se importa se as tentativas de diferentes contas de usuários são ou não.

Método 3 - use o PAM

Sei que você disse que não tem o PAM disponível, mas se o fizer, será possível atrasar tentativas de login malsucedidas. Se sua intenção é simplesmente atrasar as falhas de login do ssh, então você pode usar o módulo PAM pam_faildelay . Este módulo PAM é geralmente incluído com o mix padrão.

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

Exemplo

Procure 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 a que 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 essa ao arquivo de configuração sshd 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 arquivo de configuração sshd 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 fizer 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

por 17.12.2013 / 15:18
1

Desativar senhas. Nenhuma senha, nenhum ataque de força bruta.

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

    
por 17.12.2013 / 15:17
0

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

Para uma tentativa incorreta de senha com zero caracteres, não há atraso, então o atacante determinará imediatamente que sua senha não é a sequência vazia, se não for realmente a string vazia. Já que a string vazia provavelmente não é permitida como senha, eles já sabem que não vão tentar a string vazia.

    
por 27.01.2017 / 07:13