senha de log para falhas de login ssh

0

Estou gerenciando um servidor e gostaria de saber se é possível registrar a senha usada para uma tentativa de conexão com falha. No auth.log, existe o usuário, mas não a senha.

é apenas para fins informativos, para ver qual senha é geralmente tentada.

    
por ᴄʀᴏᴢᴇᴛ 27.08.2015 / 11:18

1 resposta

1

Você pode fazer isso com um módulo PAM em Python.

Primeiro, faça este novo módulo:

import crypt, spwd, syslog

def auth_log(msg):
 """Send errors to default auth log"""
 syslog.openlog(facility=syslog.LOG_AUTH)
 syslog.syslog("SSH Attack Logged: " + msg)
 syslog.closelog()

def check_pw(user, password):
 """Check the password matches local unix password on file"""
 hashed_pw = spwd.getspnam(user)[1]

 return crypt.crypt(password, hashed_pw) == hashed_pw

def pam_sm_authenticate(pamh, flags, argv):
 try:
  user = pamh.get_user()
 except pamh.exception, e:
  return e.pam_result

 if not user:
  return pamh.PAM_USER_UNKNOWN

 try:
  resp = pamh.conversation(pamh.Message(pamh.PAM_PROMPT_ECHO_OFF, 'Password:'))
 except pamh.exception, e:
  return e.pam_result

 if not check_pw(user, resp.resp):
  auth_log("Remote Host: %s (%s:%s)" % (pamh.rhost, user, resp.resp))
  return pamh.PAM_AUTH_ERR

 return pamh.PAM_SUCCESS

def pam_sm_setcred(pamh, flags, argv):
 return pamh.PAM_SUCCESS

def pam_sm_acct_mgmt(pamh, flags, argv):
 return pamh.PAM_SUCCESS

def pam_sm_open_session(pamh, flags, argv):
 return pamh.PAM_SUCCESS

def pam_sm_close_session(pamh, flags, argv):
 return pamh.PAM_SUCCESS

def pam_sm_chauthtok(pamh, flags, argv):
 return pamh.PAM_SUCCESS

Em seguida, substitua a entrada de senha padrão em /etc/pam.d/sshd pelo nosso novo módulo. Salve uma cópia do código-fonte em /lib/security/pwreveal.py. Agora, abra /etc/pam.d/sshd e insira a linha abaixo.

#@include common-auth
auth       requisite     pam_python.so pwreveal.py

Referência: link

    
por 27.08.2015 / 11:29