可能重复:
如何审核用户并访问我服务器上的 SSH 尝试?
我最近不得不将我的 Ubuntu 12.10 根密码泄露给我的一个朋友,以便他可以通过 SSH 进入我的系统并向我发送一些文件。现在他是我的朋友,我信任他,所以我毫不犹豫地分享了我的密码。之后我确实更改了密码。
但我突然想到,我如何才能查看其他远程登录我的系统的用户(显然不是我的朋友,我是说一般用户)执行的所有命令?他们在多大程度上可以访问我的数据(尤其是我的密码,例如我使用 Last Pass,那么他们也可以访问我的账户密码吗?)如果他们在登录我的系统后打开任何浏览器,他们是否可以访问我的所有密码,前提是我使用 chrome 提供的“记住密码”选项保存了这些密码
另外,当我允许某人远程登录我的系统时,我应该采取什么预防措施,我如何跟踪他们使用的各种命令或他们在我的系统中所做的更改。除了检查 /var/log/auth.log 文件之外,是否有一些简单的方法可以在有人登录我的系统时收到通知?
答案1
读完这篇文章后,我突然想到了一个类似的问题这我在 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
Please remember that ports below 1024 need special (root) permission.
我不知道这会有什么干扰,但我只是说说而已。
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 中输入的所有内容。
答案2
SSH 在其默认配置下并不完全安全。
如果你提供密码要允许远程用户通过 SSH 连接到您的计算机,需要获得这些权限撤销停止正在进行的访问。
更改密码不是撤销这些权利。