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