宝塔面板服务器安全加固实操笔记:从防火墙到定时备份

Aexing 发布于 1 天前 15 次阅读


前阵子给服务器做了一次安全体检,扫描结果不太好看——防火墙没开、数据库端口裸奔、也没做定时备份。花了一个下午把这些问题挨个补齐,顺手把过程和命令整理成这份笔记,方便以后新服务器照抄。

一、先摸清底数

动手之前先跑一遍面板自带的「安全」→「安全扫描」,它会列出风险项、等级和修复建议。重点看三类:

  • 网络暴露类:防火墙是否开启、哪些端口对外可访问
  • 服务配置类:SSH、MySQL、PHP 的安全基线
  • 数据安全类:是否配置了自动备份

拿到清单后别急着「一键修复」,先做快照或备份,再逐项处理,避免误操作把正在跑的业务搞挂。

二、防火墙:把暴露面压到最小

很多新服务器默认防火墙是关的,等于所有端口都裸奔在公网。先在「安全」→「系统防火墙」里开启,然后只放行真正需要的端口:

80     # HTTP
443    # HTTPS
22     # SSH(建议改成非默认端口)
8888   # 面板端口(务必改成自定义端口)

其余端口一律不放行。像 3306(MySQL)、6379(Redis)、2375(Docker)这类,除非有明确的外部访问需求,否则永远不要让它们对外可达。

三、数据库:别让 3306 裸奔

安全扫描里最常见的一条风险就是「MySQL 端口 3306 可被任意服务器访问」。两个层面收紧:

1. 网络层——防火墙不对外放行 3306,只在确有需要时按来源 IP 白名单放行。

2. 服务层——如果数据库只给本机程序用,直接让 MySQL 只监听本机:

# 编辑 /etc/my.cnf,在 [mysqld] 段加一行
bind-address = 127.0.0.1

# 然后重启 MySQL
systemctl restart mysqld

同时检查业务账号的 host:能用 localhost 就不要用 %;能不用 root 跑业务,就单独建账号并做最小授权。

四、定时备份:给自己留条后路

数据没了才是最疼的。面板的「计划任务」可以很方便地做自动备份:

  • 备份数据库:任务类型选「备份数据库」,设置每天或每周执行一次,保留最近 N 份
  • 备份网站:任务类型选「备份网站」,把站点文件和数据库一起打包
  • 异地容灾:把备份存储切到对象存储(阿里云 OSS / 腾讯云 COS 等),别只存在本机同一块盘上

配好后手动执行一次,确认备份文件能正常生成、能正常恢复,再让它定时跑。

五、SSH 加固

SSH 是黑客最爱爆破的入口,几个低成本改动能挡掉大部分攻击:

# 编辑 /etc/ssh/sshd_config
Port 2222                 # 改掉默认 22
PermitRootLogin no        # 禁止 root 直接登录,改用普通用户 + sudo
PasswordAuthentication no # 能用密钥登录就关掉密码登录
MaxAuthTries 3            # 限制单次连接尝试次数
LoginGraceTime 60         # 登录超时
ClientAliveInterval 300   # 空闲超时

改完 systemctl restart sshd 生效。更省心的是再装个 fail2ban,自动封禁暴力破解的 IP。

六、PHP 安全配置

生产环境记得关掉调试和版本泄露相关的开关,去「软件商店」→ 对应 PHP 版本 →「配置修改」:

display_errors = Off     # 关闭错误回显,避免泄露路径
expose_php = Off         # 隐藏 PHP 版本
allow_url_include = Off  # 关闭远程文件包含

还可以在「禁用函数」里按需禁用 exec、system、shell_exec 等高危函数,WordPress 等常规站点一般用不到。

七、面板自身的小设置

面板本身也是攻击面,顺手做这几件事:

  • 修改默认端口 + 开启安全入口
  • 开启面板 SSL(自签即可)
  • 设置登录告警,登录成功或失败都能收到通知
  • 有条件的话绑定域名 + 限制访问 IP

八、收尾检查清单

  1. 防火墙已开启,只放行必要端口
  2. MySQL 不对公网开放,业务账号最小授权
  3. 数据库和网站都配了定时备份,且验证过可恢复
  4. SSH 改了端口、关了 root 直登、限制了尝试次数
  5. PHP 关闭了错误回显和版本泄露
  6. 面板端口已改、安全入口已开、登录告警已配

全部做完再跑一遍安全扫描,分数应该能上一个台阶。安全没有一劳永逸,建议每月抽几分钟复查一次扫描结果,有新风险及时处理。