使用pam和bash监控失败的sshlogin?

我修改了/etc/pam.d/common-auth以在login失败或login成功时运行bash脚本,它在login尝试成功时用于成功login,但login尝试失败。 一旦我已经在服务器上,并尝试使用sudo这两个脚本将运行失败的身份validation和成功。 为什么login尝试失败时login-failed-notify.sh不会执行? 我将以下内容添加到默认的/etc/pam.d/common-auth文件中。

# here are the per-package modules (the "Primary" block) auth [success=2 default=ignore] pam_unix.so nullok_secure # here's the fallback if no module succeeds auth optional pam_exec.so seteuid /etc/ssh/failed-login-notify.sh auth requisite pam_deny.so auth optional pam_exec.so seteuid /etc/ssh/login-notify.sh # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so # end of pam-auth-update config 

我的bash脚本没有逻辑,只是在运行时发送get请求。

这是我的login-notify.sh,failed-login-notify.sh是完全一样的,但在文中说失败了。

 #!/bin/sh CURL='/usr/bin/curl' RVMHTTP="http://192.168.1.100/update.php?ip=$PAM_HOST&server=192.168.1.101&status=success" CURLARGS="-f -s -S -k" raw="$($CURL $CURLARGS $RVMHTTP)" 

这是/etc/pam.d/sshd

 # PAM configuration for the Secure Shell service # Standard Un*x authentication. @include common-auth # Disallow non-root logins when /etc/nologin exists. account required pam_nologin.so # Uncomment and edit /etc/security/access.conf if you need to set complex # access limits that are hard to express in sshd_config. # account required pam_access.so # Standard Un*x authorization. @include common-account # SELinux needs to be the first session rule. This ensures that any # lingering context has been cleared. Without this it is possible that a # module could execute code in the wrong domain. session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close # Set the loginuid process attribute. session required pam_loginuid.so # Create a new session keyring. session optional pam_keyinit.so force revoke # Standard Un*x session setup and teardown. @include common-session # Print the message of the day upon successful login. # This includes a dynamically generated part from /run/motd.dynamic # and a static (admin-editable) part from /etc/motd. session optional pam_motd.so motd=/run/motd.dynamic noupdate session optional pam_motd.so # [1] # Print the status of the user's mailbox upon successful login. session optional pam_mail.so standard noenv # [1] # Set up user limits from /etc/security/limits.conf. session required pam_limits.so # Read environment variables from /etc/environment and # /etc/security/pam_env.conf. session required pam_env.so # In Debian 4.0 (etch), locale-related environment variables were moved to # /etc/default/locale, so read that as well. session required pam_env.so user_readenv=1 envfile=/etc/default/locale # SELinux needs to intervene at login time to ensure that the process starts # in the proper default security context. Only sessions which are intended # to run in the user's context should be run after this. session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open # Standard Un*x password updating. @include common-password