如何保护您的服务器免受黑客攻击
保持软件为最新版本
这篇文章最初发表在我的个人博客上。
确保服务器安全并非难事,但当例程繁琐时,很容易忘记这一点。就我而言,SSH 服务器在购买两周后就被黑客入侵了。一天早上,我收到了几封来自第三方的邮件,说我的服务器上有“什么东西”试图入侵他们的服务器。所以,我应该尽快解决这个问题。
如何找到漏洞
对我来说很简单。我执行了下面的命令cat /var/log/auth.log | grep Accepted
它返回了服务器成功授权的列表。从所有返回的行中,我发现一个IP地址不是我自己的。所以,对我来说,SSH是一个漏洞源。
如何保护服务器
简单介绍一下购买服务器后我立即需要做的事情。
- 更新&&升级服务器上的所有包;
- 安装ufw - 普通防火墙;
- 关闭除 SSH、HTTP(s) 端口之外的所有服务器端口;
- 安装并配置fail2ban实用程序。它有助于分析 /var/log/auth.log 文件,并在 IP 地址出现错误时禁止其访问;
- 更改 sshd 配置以仅接受私钥授权。
该怎么办?
如果您的服务器被黑客入侵,感染了病毒,您需要知道如何研究和清理它。最好的方法是重建 VPS。我的情况就是这样。我的服务器在 Hetzner。在他们的控制面板上,只需单击一下即可使用相同的 IP 地址重建(删除并创建新的)VPS。所以我照做了。之后,在我的本地电脑上,使用 ssh-keygen 实用程序(它是标准 OpenSSH 软件包的一部分)生成了 SSH 密钥。以下命令适用于 Linux 和 MacOS。
ssh-keygen
它会在 ~/.ssh 目录中创建密钥对。之后运行
ssh-copy-id you_user@your_server_id
这会将你刚刚创建的公钥上传到服务器。下一步,登录服务器并编辑 sshd 的配置文件:
nano /etc/ssh/sshd_config
在配置中对 PasswordAuthentication 变量进行更改
PasswordAuthentication no
此指令关闭使用密码连接的可能性(仅接受使用私钥的连接)
安装和调整 ufw 和 fail2ban
我在服务器上使用了 ubuntu,因此安装是
apt install ufw fail2ban
下一步仅在服务器上打开 ssh、https 端口:
ufw allow ssh
ufw allow 80
ufw allow 443
并启用 ufw:
ufw enable
下一步是配置 fail2ban 实用程序
# make a copy of default config (this copy will overload default params according to manual)
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
在其中找到“banaction = ”并将ufw设置为值。之后重新加载 fail2ban
fail2ban-client reload
根据这个简单的配置,任何来自特定 IP 的 SSH 端口访问尝试错误三次,都会将该 IP 封禁 10 分钟。我个人将封禁时间改为 7 天。
如何查看状态:
fail2ban-client status sshd
在我的情况下会回来
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 6
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 2
`- Banned IP list: 187.109.168.150
您可以看到,该 IP 已被防火墙阻止。使用 ufw 报告也可以看到相同的情况:
ufw status
Status: active
To Action From
-- ------ ----
Anywhere REJECT 187.109.168.150
80/tcp ALLOW Anywhere
22 ALLOW Anywhere
443 ALLOW Anywhere
如果某些 IP 被禁止,可以配置 fail2ban 向您的电子邮件发送报告。