我的服务器出现了一些安全问题,一些 SSH 用户造成了一些问题。
我想:
- 跟踪用户登录和注销
- 跟踪这些 SSH 的活动,以便发现任何恶意活动
- 防止用户删除日志
我不是一名系统管理员,而且在这方面也缺乏经验,所以任何建议都会受到欢迎,并且非常有帮助。:)
答案1
因为我们正在讨论 SSH 服务器,所以我将为您提供命令行解决方案。
跟踪用户登录和注销。这很简单,文件
/var/log/auth.log
应该有这些信息。跟踪这些用户的活动:如果他们是无辜的,您可以检查他们主目录中的文件
.bash_history
。您将看到他们执行的命令列表。问题当然是他们可以删除或编辑此文件。防止用户删除日志:用户不应该能够触摸
auth.log
。为了阻止他们玩.bash_history
你需要做几件事技巧。如果用户成功获得 root 访问权限怎么办?:你就完蛋了。除非他们犯了错误,否则他们将能够隐藏所有行踪。
答案2
[免责声明]我知道我迟到了,但我想粘贴一下我给出的答案另一个问题,因为我觉得它可以为读者提供一些很好的见解,而且这个问题似乎是获取基本 ssh 信息的首选之地。
读完这篇文章后,我突然想到了一个类似的问题这我在 AskUbuntu 上提问并检查我的 VPS,结果发现有无数次暴力破解尝试。就在那时,我决定采取行动。
现在根据我链接的问题,如果您想查看通过 ssh 在您的机器上登录失败的尝试(可能是暴力破解尝试或其他什么),请尝试输入以下内容:
grep sshd.\*Failed /var/log/auth.log | less
如果输出包含多行,即存在多次暴力破解尝试,尤其是如果它们发生在短时间间隔内,您可能需要执行以下操作:
更改 ssh 配置文件
为此,请打开位于的文件/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 以下的端口需要特殊(root)权限。我不知道这会有什么干扰,但我只是说说而已。
2. 禁用通过 ssh 的 Root 登录:由于 root 用户名是可预测的,并且提供对系统的完全访问权限,因此通过 SSH 提供对此帐户的不受限制的访问权限是不明智的。找到以下行允许Root登录并将其设置为不。
PermitRootLogin no
3. 禁用密码验证:生成并使用 SSH 密钥登录到您的系统。如果不启用密码,攻击者需要猜测(或窃取)您的 SSH 私钥才能访问您的服务器。这是非常非常困难的事情。继续查找以下行密码验证并将其设置为不
PasswordAuthentication no
!警告!在执行此操作之前,请查阅本指南在这里关于如何设置证书认证。
笔记:完成更改后,使用sudo /etc/init.d/ssh restart
。要通过 ssh 连接到另一个端口,请使用:。ssh [email protected] -p <port_number>
设置防火墙
请查看本指南关于如何设置 Linux 中集成的极其强大和有效的防火墙,IP表。
设置脚本来帮助你保证安全
我个人使用的一个并且很快想到的是失败禁止。Fail2ban 将监控您的日志文件,以查找失败的登录尝试。当 IP 地址超过最大身份验证尝试次数后,它将在网络级别被阻止,并且事件将被记录下来/var/log/fail2ban.log
。安装方法:sudo apt-get install fail2ban
通过 ssh 检查命令历史记录
有一个名为 的 Linux 命令history
,它允许您查看到目前为止输入了哪些命令。尝试history
在终端中输入以查看到目前为止的所有命令。如果您根。
到搜索特定命令尝试:history | grep command-name
到列出 ssh 之后的所有命令:fc -l ssh
你也可以使用 vi 编辑命令(还没有尝试过 vim,不过我认为它也能很好地工作):fc -e vi
你也可以删除历史记录:history -c
笔记:如果你不喜欢这个命令,那么在你的主目录 ( )history
中还有一个名为cd ~
.bash_history(如果您使用 bash)您可以cat
看到在 bash shell 中输入的所有内容。
答案3
有点过头了,但您可以使用“进程事件连接器”查看系统上运行的所有内容:
http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/
答案4
除了登录本身之外,没有安全的方法来跟踪/记录用户登录后的操作,假设他们具有基本的 Linux 知识,他们将能够禁用 shell 日志记录或只是从其他 shell(例如 python)运行命令。
相反,您应该谨慎提供 ssh 访问权限,他们真的需要它吗?除非您是提供业务的 shell,否则授予 ssh 访问权限并不常见。