如何审核用户并访问服务器上的SSH尝试?
我的服务器有一些安全问题,一些SSH用户已经设置火灾,也就是提出问题。
我想要:
- 跟踪用户登录和注销
- 跟踪这些SSH的活动,以发现任何恶意活动
- 阻止用户删除日志
我不是一个系统管理员,我对这个问题很缺乏经验,所以任何建议都会非常受欢迎,非常有帮助。 🙂
由于我们谈论的是SSH服务器,我将为您提供命令行解决方案。
-
跟踪用户登录和注销。 这很简单,文件
/var/log/auth.log
应该有这些信息。 -
跟踪这些用户的活动:如果他们是相当无辜的,您可以在他们的家庭目录中检查文件
.bash_history
。 您将看到他们执行的命令列表。 问题当然是他们可以删除或编辑这个文件。 -
阻止用户删除日志:用户不应该触摸
auth.log
。 为了阻止他们玩.bash_history
你需要做几个技巧 。 -
如果用户设法获得root访问权限怎么办? : 你完蛋了。 除非他们犯了错误,否则他们将能够隐藏他们所有的脚步。
[免责声明]我意识到我迟到了,但我想贴上我给另一个问题的答案,因为我觉得它可以为读者提供一些好的见解,这个问题似乎是最好的。基本ssh信息的地方。
在AskUbuntu上阅读这个问题并查看我的VPS之后,有一个类似的问题让我震惊,只看到了无数次的暴力尝试。 那是我决定采取行动的时候。
现在根据我链接的问题,如果您希望通过ssh看到您的计算机上的登录尝试失败(可能是powershell尝试或任何事情),请尝试键入:
grep sshd.\*Failed /var/log/auth.log | less
如果输出由多行组成,那就是许多powershell尝试,特别是如果它们发生在短时间间隔内,您可能需要执行以下操作:
更改ssh配置文件
要执行此操作,请使用您喜欢的编辑器打开位于/ etc / ssh / sshd_config的文件,例如此vim /etc/ssh/sshd_config
。
1.尝试从端口22移动ssh :现在找到读取的行:
# What ports, IPs and protocols we listen for Port 22
并注释掉22号港口,并使用你可能喜欢的任何人。 例:
# What ports, IPs and protocols we listen for # Port 22 Port 28934
请记住1024以下的端口需要特殊(root)权限。 我不知道这会如何干扰它,但我只是说。
2.通过ssh禁用Root登录 :由于root用户名是可预测的并提供对系统的完全访问权限,因此通过SSH提供对此帐户的不受限制的访问是不明智的。 找到读取PermitRootLogin的行并将其设置为no 。
PermitRootLogin no
3.禁用密码validation : 生成并使用SSH密钥登录系统。 如果未启用密码,攻击者将需要猜测(或窃取)您的SSH私钥才能访问您的服务器。 一些非常困难的事情。 继续查找读取PasswordAuthentication的行并将其设置为no
PasswordAuthentication no
!警告! 在此之前,请参阅此指南,了解如何设置证书身份validation。
注意:完成更改后,请使用sudo /etc/init.d/ssh restart
。 要通过ssh连接到另一个端口,请使用: ssh username@hostname.com -p
。
设置防火墙
请查看本指南 ,了解如何设置极其强大且有效的防火墙,该防火墙已集成到Linux, IPTables中 。
设置脚本以帮助您提高安全性
我个人而且很快就会想到的就是Fail2Ban 。 Fail2ban将监视您的日志文件以查找失败的登录尝试。 在IP地址超过最大validation尝试次数后,它将在网络级别被阻止,并且该事件将记录在/var/log/fail2ban.log
。 安装它: sudo apt-get install fail2ban
通过ssh检查命令历史记录
有一个名为history
的linux命令,它允许您查看在此之前已输入的命令。 尝试在终端中键入history
以查看到此为止的所有命令。 如果你是root用户,它会有所帮助。
要搜索特定命令,请尝试: history | grep command-name
history | grep command-name
列出ssh之后的所有命令 : fc -l ssh
你也可以使用vi编辑命令 (没有尝试过vim,虽然我认为它也能正常工作): fc -e vi
您还可以删除历史记录 : history -c
注意:如果您不是命令history
的粉丝,您的主目录( cd ~
)中也有一个文件,名为.bash_history (如果您使用的是bash),您可以看到所有已在bash中输入的内容贝壳。
有点矫枉过正,但您可以使用“进程事件连接器”查看系统上运行的所有内容:
http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/
- 哈维尔已经回答了这个问题:/var/log/auth.log
- 我在这里找到了一篇很棒的文章。
- 如果您的用户无权访问root,那么您的日志文件应该是安全的。 您可以尝试在sudoers文件中构建一些自定义规则,以限制用户可以访问的内容以及方式。 您还可以增加sshd守护程序的日志级别。
除了登录本身之外,没有安全的方法来跟踪/记录用户登录后的操作,假设他们具有基本的Linux知识,他们将能够禁用shell日志记录或只是从其他shell运行命令(例如python)。
相反,你应该保守提供ssh访问,他们真的需要吗? 除非您在提供业务的shell上,否则授予ssh访问权限并不常见。