我如何设置monit来通知我有关源自一个特定子网之外的新的远程SSH会话?
我已经将连接尝试logging为~/.bashrc
脚本的一部分,但我不确定这是否可行,因为我不确定一些实现细节。
具体来说,我需要知道如何在~/bashrc
脚本中执行以下操作:
我想像脚本可能看起来像这样psudocode:
#检查这是一个SSH连接 #检查SSH连接是否源自选定的子网 echo“从$ SSH_CLIENT的新连接”> /var/log/_ssh.log
Monit食谱:
检查path为/var/log/_ssh.log的文件_ssh 如果失败的校验和然后警报
你不能从~/.bashrc
或类似的地方进行这种日志logging,因为它只是针对一些交互式会话执行的,而不是如果某人不ssh yourserver mycommand
sftp yourserver
你的服务器等等。
所有sshlogin尝试失败或成功,都通过系统日志与auth
设施进行logging。 日志信息包括源IP地址,authentication方法和authentication是否成功。 我认为你最好的select是使用一些日志监控软件。
我不知道monit,但是看起来它的工作就是看sshd,如果它死了就重启它,这是一个不同的问题。
与$ SSH_CLIENT一起,还有$ SSH_CONNECTION。 要查看可用variables,请在命令提示符处运行“env”(不带引号)。 -Tim
我不知道monit,但你可以通过防火墙轻松地做到这一点。 用一个特殊的标签logging所有的外部连接,并保持内部不被logging。 如果你在Linux上,iptables是你的朋友。
你也可以通过hosts.allow / hosts.deny来阻止所有的ssh连接。 您将在ssh日志中看到日志。
环境variables$ SSH_CLIENT是当前用户的SSH会话的IP,远程端口和本地端口。
这就是说,为什么你不放弃从安全的其他子网的一切? 为您节省很多麻烦。
另外:请花一些时间来正确地制定你的问题。 ServerFault应该是一个人们可以find答案的地方,不仅在他们自己,而且在其他人的问题。 如果你不介意我说的话,你有点混乱。