How to Protect Your Server From Hackers Keep your software up to date

2025-05-28

如何保护您的服务器免受黑客攻击

保持软件为最新版本

这篇文章最初发表在我的个人博客上。

确保服务器安全并非难事,但当例程繁琐时,很容易忘记这一点。就我而言,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 向您的电子邮件发送报告。

文章来源:https://dev.to/vkolesov/how-to-protect-your-server-from-hackers-4j6l
PREV
为什么每个软件工程师都应该学习计算机架构。
NEXT
使用 Go 构建简单的负载均衡器