当前位置:首页>Linux>Linux 服务器裸奔?这 5 个安全加固动作救过我的命

Linux 服务器裸奔?这 5 个安全加固动作救过我的命

  • 2026-09-02 19:16:35
Linux 服务器裸奔?这 5 个安全加固动作救过我的命

Linux 服务器裸奔?这 5 个安全加固动作救过我的命

引言:一次惊心动魄的"被盗"经历

上周,朋友老张找我求助。他在阿里云买的入门级服务器,账单突然显示费用暴涨 10 倍。

"我就放了个个人博客,平时也没几个人访问啊,怎么一个月花了 5000 块?"

我帮他查了一下服务器日志,瞬间就明白了:

他的服务器被人当成了"肉鸡",在疯狂挖矿。

• CPU 一直 100% 运行

• 网络流量异常(外传数据)

• SSH 登录日志显示,每天有上万次暴力破解尝试

• 有人用 root + 123456 成功登录

老张的账号密码,还是第一次建服务器时系统自动生成的,他从来没改过。

这还不是最惨的。

更惨的是,服务器上存着他公司的一些测试数据,虽然不是核心机密,但泄露出去也够麻烦的。

帮他清理完服务器、加固完安全后,我问他:"你为什么不早点做安全配置?"

他说:"我以为云厂商都帮我搞好了啊。"

这是一个巨大的误区。


一、你的 Linux 服务器可能正在"裸奔"

说实话,老张的经历不是个例。

我见过太多人,买了云服务器就像买了辆共享单车:

• 车锁都不锁(SSH 端口敞开)

• 钥匙插车上(密码是 123456)

• 车随便停(防火墙没开)

• 甚至有人把车借给别人(给了陌生人 SSH 权限)

结果是什么?

• 挖矿:你的服务器变成别人的矿机,电费你来付

• DDOS 攻击:你的服务器被用来攻击别人,最后被封 IP

• 数据泄露:你的文件、数据库、密钥全部外泄

• 勒索软件:你的数据被加密,对方要钱才给你恢复

最可怕的是什么?

很多时候,你根本不知道自己被黑了。

直到账单爆炸、客户投诉、或者警察找上门,你才意识到出事了。

今天这篇文章,就是教你如何 5 分钟内,给你的 Linux 服务器穿上一套"防弹衣"。

不需要你是安全专家,不需要懂太多技术,照着做就行。


二、动作一:SSH 密钥登录,禁用密码(最重要!)

这是最最重要的一步,没有之一。

2.1 为什么密码登录不安全?

传统的密码登录,有这些致命弱点:

• 弱密码:123456、password、root123,一猜一个准

• 暴力破解:黑客用字典自动尝试,每天试几万次

• 键盘记录:你的电脑中毒,密码被记录

• 重复使用:你在多个网站用同一个密码,一个网站泄露,全部遭�

2.2 SSH 密钥是什么?

SSH 密钥登录,原理是这样的:

你本地电脑生成一对密钥:

• 私钥:你留着,绝对不能给别人(像家里的钥匙)

• 公钥:放在服务器上(像锁芯)

登录流程:

1. 你用私钥"签名"登录请求

2. 服务器用公钥验证签名

3. 如果匹配,允许登录

关键点:

• 私钥永远不会传输到网络上(只传输签名)

• 即使黑客监听网络,也拿不到私钥

• 私钥可以设置密码,双重保护

安全性提升了无数倍。

2.3 实操步骤(保姆级教程)

Step 1:生成 SSH 密钥对

在你本地电脑(不是服务器)执行:

ssh-keygen -t ed25519 -C "你的邮箱@example.com"

参数说明:

• -t ed25519:使用 Ed25519 算法(推荐,比 RSA 更安全更快)

• -C:备注,方便识别(你的邮箱)

交互过程:

Enter file in which to save the key (/root/.ssh/id_ed25519): [直接回车,使用默认路径] Enter passphrase (empty for no passphrase): [输入密码,推荐设置] Enter same passphrase again: [再次输入密码]

生成的文件:

• ~/.ssh/id_ed25519:私钥(妥善保管)

• ~/.ssh/id_ed25519.pub:公钥(要放到服务器)

Step 2:上传公钥到服务器

方法 1:自动上传(最简单)

ssh-copy-id root@你的服务器IP

输入一次密码,公钥自动上传完成。

方法 2:手动上传

如果 ssh-copy-id 不可用:

cat ~/.ssh/id_ed25519.pub | ssh root@你的服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Step 3:测试密钥登录

ssh root@你的服务器IP

如果成功:直接登录,不再需要密码(或者只需要私钥密码)

Step 4:禁用密码登录

登录服务器后,编辑 SSH 配置:

vim /etc/ssh/sshd_config

找到并修改以下配置:

# 禁用密码认证 PasswordAuthentication no # 禁用空密码 PermitEmptyPasswords no # 启用密钥认证(确保是 yes) PubkeyAuthentication yes

重启 SSH 服务:

systemctl restart sshd

⚠️ 注意:

• 修改前务必先测试密钥登录成功

• 确保能登录,再禁用密码

• 否则你可能把自己锁在服务器外面

效果:

• 暴力破解彻底失效(没有密码可破解)

• 只有拥有私钥的人才能登录

• 即使黑客知道服务器 IP 和用户名,也进不来


三、动作二:修改 SSH 默认端口(22)

3.1 为什么要改端口?

SSH 默认端口是 22,全世界的 SSH 都用这个端口。

黑客的扫描脚本,会自动扫描所有 IP 的 22 端口,然后暴力破解。

如果你改成其他端口(比如 22222):

• 扫描脚本会跳过你(默认只扫 22 端口)

• 暴力破解的难度大幅提升

• 日志清爽很多(没有大量失败记录)

3.2 实操步骤

Step 1:选择一个新端口

建议:10000-65535 之间的随机数

比如:22222、38942、51820

避免:常见服务端口(80、443、3306、6379)

Step 2:修改 SSH 配置

vim /etc/ssh/sshd_config

找到这一行:

#Port 22

改成:

Port 22222

Step 3:重启 SSH 服务

systemctl restart sshd

Step 4:更新防火墙规则

如果你的服务器启用了防火墙,记得开放新端口:

# Ubuntu/Debian (ufw) ufw allow 22222/tcp ufw delete allow 22/tcp ufw reload # CentOS/RHEL (firewalld) firewall-cmd --permanent --add-port=22222/tcp firewall-cmd --permanent --remove-service=ssh firewall-cmd --reload

Step 5:测试新端口登录

ssh -p 22222 root@你的服务器IP

⚠️ 注意:

• 云服务商的安全组规则也要同步更新

• 修改前确保你能用新端口登录

• 可以保留 22 端口一段时间,确认没问题再关闭

效果:

• 减少 99% 的自动化扫描

• SSH 日志清爽很多

• 提升一层安全


四、动作三:安装 fail2ban(防暴力破解)

4.1 fail2ban 是什么?

fail2ban 是一个"看门狗"程序:

• 监控系统日志(SSH、Nginx、MySQL 等)

• 发现异常行为(比如同一 IP 10 次密码错误)

• 自动封禁 IP(用防火墙规则)

• 一段时间后自动解封

效果:

• 暴力破解 3 次 → IP 被封 1 小时

• 黑客换个 IP → 再试 3 次 → 再被封

• 成本大幅提升,黑客放弃

4.2 安装步骤

Ubuntu/Debian

apt update apt install fail2ban -y

CentOS/RHEL

yum install epel-release -y yum install fail2ban -y

4.3 配置 fail2ban

创建本地配置文件(不要直接改主配置):

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local vim /etc/fail2ban/jail.local

基本配置:

[DEFAULT] # 封禁时间(秒) bantime = 3600 # 发现时间窗口(秒),10 分钟内失败 5 次 findtime = 600 # 失败次数 maxretry = 5 [sshd] enabled = true port = ssh # 如果改了 SSH 端口,这里改成实际端口 # port = 22222

启动 fail2ban:

systemctl enable fail2ban systemctl start fail2ban

查看状态:

fail2ban-client status sshd

输出示例:

Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 15 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 2 |- Total banned: 8 `- Banned IP list: 192.168.1.100 10.0.0.50

4.4 手动解封 IP

如果你误封了自己:

fail2ban-client set sshd unbanip 你的IP

效果:

• 自动封禁暴力破解 IP

• 日志清爽,服务器负载降低

• 让黑客知难而退


五、动作四:配置防火墙(ufw/firewalld)

5.1 为什么需要防火墙?

防火墙的作用:决定哪些流量能进入服务器

默认策略:拒绝所有,只允许必要的

比喻:

• 服务器 = 你的房子

• 防火墙 = 大门和门锁

• 开放端口 = 开窗户(只开需要的)

5.2 ufw(Ubuntu/Debian 推荐)

ufw(Uncomplicated Firewall)是最简单的防火墙工具。

安装

apt install ufw -y

基本配置

# 1. 设置默认策略(拒绝所有入站,允许所有出站) ufw default deny incoming ufw default allow outgoing # 2. 允许 SSH(如果改了端口,这里要对应) ufw allow 22/tcp # ufw allow 22222/tcp # 3. 允许 HTTP/HTTPS(如果你有 Web 服务) ufw allow 80/tcp ufw allow 443/tcp # 4. 启用防火墙 ufw enable # 5. 查看状态 ufw status verbose

输出示例:

Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere

删除规则

ufw delete allow 80/tcp

5.3 firewalld(CentOS/RHEL 默认)

firewalld 是更强大的防火墙工具,支持区域(zone)概念。

基本配置

# 1. 启动 firewalld systemctl start firewalld systemctl enable firewalld # 2. 查看当前区域 firewall-cmd --get-active-zones # 3. 允许 SSH firewall-cmd --permanent --add-service=ssh # firewall-cmd --permanent --add-port=22222/tcp # 4. 允许 HTTP/HTTPS firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https # 5. 重载配置 firewall-cmd --reload # 6. 查看规则 firewall-cmd --list-all

效果:

• 只开放必要的端口

• 阻止未授权的访问

• 降低被攻击面


六、动作五:开启自动安全更新

6.1 为什么需要自动更新?

Linux 系统和软件经常发布安全补丁:

• 修复漏洞(比如 OpenSSH 远程代码执行)

• 修复 bug(比如 Nginx 内存泄漏)

• 提升性能(比如新版内核)

手动更新的问题:

• 经常忘记

• 怕更新出问题不敢更新

• 不知道有安全更新

自动更新的好处:

• 及时修补已知漏洞

• 降低被攻击风险

• 省心省力

6.2 Ubuntu/Debian 配置

安装无人值守更新包

apt install unattended-upgrades -y

配置自动更新

vim /etc/apt/apt.conf.d/50unattended-upgrades

基本配置:

Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; // "${distro_id}:${distro_codename}-updates"; // "${distro_id}:${distro_codename}-proposed"; // "${distro_id}:${distro_codename}-backports"; }; # 自动删除旧内核 Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; # 自动清理依赖包 Unattended-Upgrade::Remove-Unused-Dependencies "true"; # 自动重启(如果需要,谨慎开启) Unattended-Upgrade::Automatic-Reboot "false"; Unattended-Upgrade::Automatic-Reboot-Time "02:00";

启用自动更新

vim /etc/apt/apt.conf.d/20auto-upgrades

内容:

APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "7"; APT::Periodic::Unattended-Upgrade "1";

启动服务:

systemctl restart unattended-upgrades

查看日志

cat /var/log/unattended-upgrades/unattended-upgrades.log

6.3 CentOS/RHEL 配置

安装 dnf-automatic

yum install dnf-automatic -y

启用自动更新

systemctl enable --now dnf-automatic.timer

查看状态:

systemctl status dnf-automatic.timer

6.4 注意事项

⚠️ 自动更新有风险:

• 可能导致服务不兼容

• 可能需要重启

• 建议先在测试环境验证

✅ 推荐做法:

• 只自动安装安全更新(security)

• 稳定版更新(updates)手动安装

• 定期检查更新日志

• 重要服务器更新前做备份

效果:

• 及时修补安全漏洞

• 降低被攻击风险

• 省心省力


七、额外推荐:安全体检工具

做完以上 5 个动作,你的服务器已经比 90% 的服务器安全了。

如果你想更进一步,可以用这些工具做深度体检:

7.1 Lynis(安全审计)

功能:全面扫描系统安全配置

安装:

apt install lynis -y # yum install lynis -y

使用:

lynis audit system

输出:详细的安全建议和评分

7.2 rkhunter(Rootkit 检测)

功能:检测系统是否被植入 Rootkit

安装:

apt install rkhunter -y

使用:

rkhunter --check

7.3 ssh-audit(SSH 配置检测)

功能:检测 SSH 配置的安全性

使用(在线工具):

访问 https://www.ssh-audit.com/

使用(命令行):

pip install ssh-audit ssh-audit localhost

八、总结:安全不是一次性的事

今天讲的这 5 个动作:

1. SSH 密钥登录 → 防止暴力破解

2. 修改默认端口 → 减少自动化扫描

3. 安装 fail2ban → 自动封禁攻击者

4. 配置防火墙 → 关闭不必要的门

5. 开启自动更新 → 及时修补漏洞

只需要 30 分钟,你的服务器安全等级就能提升 10 倍。

但记住:

安全不是一次性的工作,而是持续的过程。

建议:

• 每月检查一次日志(/var/log/auth.log)

• 每季度做一次安全审计(lynis)

• 定期备份重要数据

• 关注安全新闻(比如 OpenSSH 重大漏洞)

最后说一句:

服务器被黑不是"会不会"的问题,而是"什么时候"的问题。

与其等着出事,不如现在就动手加固。


【下期预告】

下一篇文章,我会详细拆解"Linux 服务器被黑后的应急响应流程",教你如何:

• 发现被黑的迹象

• 隔离受损服务器

• 分析攻击路径

• 清理后门和木马

• 恢复服务和数据

如果觉得这篇文章有帮助,记得点赞、收藏、转发~

【互动话题】

你的服务器被黑过吗?在评论区分享你的经历,或者问问题,我会逐一回复~

最新文章

随机文章