宝塔面板的安全加固:能关的都关掉

米阳 2024-8-10 4 8/10

宝塔装起来方便,但默认配置是「能用」而不是「安全」。这两年出过几次面板漏洞被批量扫描的事件,该做的加固还是得做。

面板本身

改端口。默认 8888,扫描器第一个试的就是它。改成一个不常用的高位端口。

开面板 SSL。不让密码明文传输。

限制访问 IP。只允许自己的固定 IP 访问面板端口,出差在外用手机热点时临时放开:

# 或者在防火墙里限制
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port port="12345" protocol="tcp" accept'

开二次验证。面板设置里有 Google Authenticator 绑定,多一步但值。

关掉「面板 SSL」之外的对外服务。面板里的 phpMyAdmin、数据库管理这些,用完就关。

SSH

# /etc/ssh/sshd_config
Port 22222
PermitRootLogin prohibit-password
PasswordAuthentication no
MaxAuthTries 3

改端口能挡掉 90% 的暴力破解扫描。禁用密码登录、改用密钥,剩下的也挡了。改之前先确认密钥能登,否则会把自己锁在外面——我第一次改就锁了,靠服务商的控制台 VNC 才救回来。

数据库

-- 只监听本地
-- my.cnf: bind-address = 127.0.0.1

-- 删掉匿名用户和远程 root
DELETE FROM mysql.user WHERE User='';
DROP USER IF EXISTS 'root'@'%';
FLUSH PRIVILEGES;

应用连接用单独的账号,只给需要的库和权限:

CREATE USER 'app'@'127.0.0.1' IDENTIFIED BY '强密码';
GRANT SELECT, INSERT, UPDATE, DELETE ON app.* TO 'app'@'127.0.0.1';

绝对不要给应用账号 DROP 或 FILE 权限。

网站层

上传目录禁执行:

location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
    deny all;
}

关掉不用的 PHP 函数:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source

注意有些框架依赖这些函数(比如 Composer 需要 proc_open),关之前先测。

目录禁止列出:autoindex off;

计划任务与日志

宝塔的计划任务里如果有「备份到云存储」,确认凭据是受限的。日志至少保留 30 天,出事时是唯一的线索来源。

定期做的事

  • 每周看面板首页的「安全」提示,该更新的更新
  • 每月看一下 last、lastb,有没有异常登录
  • 每季度改一次面板和数据库密码

心态

加固不是一次性的,是持续的。面板、插件、系统都要跟着升级,但升级前先在测试环境验证——生产环境直接升,风险不比不升小。

- THE END -

米阳

8月10日20:35

最后修改:2024年8月10日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论