零基础搭建数据泄露全方位防护方案,运维必备

数据泄露事件频发,很多站长或新手运维买来服务器后只装个面板就上线,结果网站被拖库、数据库被删,甚至服务器被拿去挖矿。
其实只要花半小时做好基础防护,就能挡住绝大多数攻击。
这篇教程我从零开始,带你在 Linux 服务器上搭建一套完整的数据泄露防护方案,每一步都给出命令和操作路径,你照着做就行。

准备工作:你需要一台干净的服务器

首先确认你有一台 Linux 服务器(CentOS 7/8、Ubuntu 20.04 或 Debian 11 都可以),并且用 root 账号登录。
如果装了宝塔面板,先通过 SSH 连接服务器,因为很多安全操作在面板里也能做,但命令行更彻底。
另外准备一个非 root 的普通用户,用于日常操作。

防火墙与端口控制:只开该开的门

服务器默认可能开放了大量端口,首先要做的是关闭所有不必要的端口,只保留 SSH(22)、HTTP(80)、HTTPS(443)以及你用的面板端口。
推荐使用 firewalld 或 iptables,这里用 firewalld 举例:

# 启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld
# 移除默认的 public 区所有服务,再添加需要的
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-port=8888/tcp   # 宝塔面板默认端口,按实际改
# 重新加载
firewall-cmd --reload
# 查看已经开放的端口和服务
firewall-cmd --zone=public --list-all

操作后,其他端口默认全部拒绝。
如果你的业务需要额外端口,再单独添加。

SSH 与文件权限:堵住最容易突破的口子

SSH 是服务器入口,很多攻击都从弱密码或默认端口入手。
先做三件事:禁止 root 直接登录更换 SSH 端口启用密钥登录
编辑配置文件 /etc/ssh/sshd_config,修改或添加以下行:

Port 22022                 # 把默认22换成其他端口
PermitRootLogin no         # 禁止root直接登录
PasswordAuthentication no  # 关闭密码登录(前提是已配置好密钥)
AllowUsers youruser        # 只允许特定用户通过SSH

保存后重启 SSH 服务:systemctl restart sshd
接着处理文件权限:网站目录和配置文件不能随意读写。
例如对于 Nginx 站点,执行:

chown -R www:www /var/www/html
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
# 数据库配置文件(如 wp-config.php)权限设为 600
chmod 600 /var/www/html/wp-config.php

数据库与自动防御:防拖库、防暴力破解

数据库是数据泄露的重灾区。
先修改 MySQL/MariaDB 默认端口和远程访问限制:

# 修改 MySQL 配置文件 /etc/my.cnf
[mysqld]
port=3307                 # 避开默认端口
skip-networking           # 如果不需要远程连接则启用
bind-address=127.0.0.1    # 只允许本地连接

重启数据库后,设置强密码并删除默认的 test 库。
然后部署 Fail2ban 自动封锁攻击 IP:

yum install -y epel-release  # CentOS 要先装 EPEL
apt install -y fail2ban      # Ubuntu/Debian 直接
systemctl start fail2ban
systemctl enable fail2ban
# 创建本地配置文件
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local
# 在 [sshd] 区域启用,并设置 bantime=3600, maxretry=5

避坑指南:新手常犯的错误

  1. 防火墙配置后忘了放行自己:如果你远程修改 SSH 端口,一定要确保新端口已经在防火墙里放行,否则断开连接后就进不去了。建议先开第二个 SSH 会话测试。
  2. 文件权限改得太严导致网站无法写入:比如 644 对于某些需要写的目录(如上传目录)不够,可以单独给 uploads 目录 755。
  3. Fail2ban 误封自己:启动前先把本地 IP 加入白名单,在 /etc/fail2ban/jail.local[DEFAULT] 段添加 ignoreip = 127.0.0.1/8 你的公网IP
  4. 数据库连接池配置未更新:改端口后要更新网站配置文件中的数据库连接信息,否则网站会报错。
  5. 只防护不备份:数据泄露防护方案还要搭配自动备份到异地,否则被勒索后也没法恢复。

效果验证:怎么确认防护生效了?

做完所有步骤后,用下面方法验证防护是否到位:

  • 端口扫描:在另一台机器上执行 nmap -p 1-65535 你的服务器IP,应该只看到你开放的端口,其余全是 filtered。
  • SSH 暴力破解测试:故意用一个错误的密码连续登录 SSH 6 次,然后再次尝试,应该被 Fail2ban 拒绝连接。查看 Fail2ban 日志:fail2ban-client status sshd
  • 数据库安全检查:尝试从外网连接 MySQL 新端口,应该被拒绝。本机连接本地端口正常。
  • 文件权限验证:用普通用户尝试修改 /etc/shadow 或站点配置文件,应该被禁止。

以上操作完成后,你的服务器已经具备了基础的防数据泄露能力。
当然,安全是个持续过程,建议每周检查一次日志,每月更新系统补丁。
如果遇到本文没覆盖的问题,欢迎留言交流。

分享到:
上一篇
服务器入侵检测系统搭建:零基础搭建服务器入侵检测系统(
下一篇
隐私安全合规配置服务器指南:零基础实操步骤详解
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意