bk2*_*201 2 login ssh monitoring
所以我有一个脚本,如果登录名来自除以“10.1.”开头的 IP 地址之外的任何内容,它会向我发送电子邮件:
#!/usr/bin/python
import smtplib, os
server = "10.10.10.10"
From = "address1@example.com"
to = ["address2@example.com"] # must be a list
subject = "SSH Login from outside network"
ip = os.environ['SSH_CONNECTION'].split()[0]
user = os.environ['USER']
if '10.1.' in ip:
print "---SSH IP Check---"
print 'Inside address, no alert will be sent.'
exit(0)
text = user + " just logged in from " + ip
# Prepare actual message
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (From, ", ".join(to), subject, text)
# Send the mail
server = smtplib.SMTP(server)
server.sendmail(From, to, message)
server.quit()
Run Code Online (Sandbox Code Playgroud)
我已将它添加到 .bashrc 的 /root/.bashrc 中,当我以 root 身份登录到此远程服务器时,它会运行,检查 $SSH_CONNECTION 变量和电子邮件(如果它不是以 10.1 开头)。
但是如果有人以用户身份登录怎么办?或其他用户名?我最初有一个文件 /etc/ssh/sshrc,我认为它是一个 bash 脚本(尽管第一行没有 #!/bin/sh)并且它工作正常,但我想检查 ip 所以这就是我这样做的原因在 python 中,在 bash 中它不喜欢双 [[ 括号,我只是将它输出到 sendmail。
所以问题是我怎样才能让这个脚本在任何 ssh 登录时运行?我应该继续尝试使用 sshrc 文件吗?
我已经尝试用这个 python 脚本替换 sshrc 文件,但是当我登录时我得到了这个:
/etc/ssh/sshrc: 3: /etc/ssh/sshrc: import: not found
/etc/ssh/sshrc: 5: /etc/ssh/sshrc: server: not found
/etc/ssh/sshrc: 6: /etc/ssh/sshrc: From: not found
/etc/ssh/sshrc: 7: /etc/ssh/sshrc: to: not found
/etc/ssh/sshrc: 8: /etc/ssh/sshrc: subject: not found
/etc/ssh/sshrc: 10: /etc/ssh/sshrc: Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)
您可以在打开登录会话时触发脚本。
pam-script是一个 PAM 模块,允许您在授权、密码更改以及会话打开或关闭期间在 PAM 堆栈中执行脚本。
在基于 Debian 的 Linux 发行版中,它由libpam-script
包提供。在 Fedora 中,这个包被简单地称为pam-script
.
以下脚本可以由 pam-script 触发:
pam_script_auth
- 在身份验证期间执行pam_script_acct
- 在帐户管理期间调用pam_script_passwd
- 更改密码时调用pam_script_ses_open
- 在会话打开时调用pam_script_ses_close
- 会话关闭时调用要在会话打开时运行脚本,请将其添加到/etc/pam.d/common-session
:
# Attempt to run pam_script_ses_open and pam_script_ses_close.
# Report success even if script is not found.
session optional pam_script.so onerr=success
Run Code Online (Sandbox Code Playgroud)
在 Debian 中,默认情况下,pam-script 将执行/usr/share/libpam-script/pam_script_ses_open
. 可以使用该dir=/path/to/scripts/
选项配置脚本的位置。
使用 pam-script 还可以方便地在 bash 脚本中访问远程主机的 IP 地址。每个脚本都将传递以下环境变量(都将存在,但如果不适用,有些可能为空):
PAM_SERVICE
- 调用 PAM 堆栈的应用程序 PAM_TYPE
- 模块类型(例如身份验证、帐户、会话、密码) PAM_USER
- 被认证的用户 PAM_RUSER
- 远程用户,调用应用程序的用户 PAM_RHOST
- 远程主机 PAM_TTY
- 控制 tty PAM_AUTHTOK
- 可读文本中的密码 归档时间: |
|
查看次数: |
2047 次 |
最近记录: |