宝塔装起来方便,但默认配置是「能用」而不是「安全」。这两年出过几次面板漏洞被批量扫描的事件,该做的加固还是得做。
面板本身
改端口。默认 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 -
最后修改:2024年8月10日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://mi-blog.cn/archives/686
共有 0 条评论