Typecho博客被黑过一次后,我才明白这些安全配置有多重要
说实话,我以前对博客安全真的不上心。直到去年我的Typecho博客被挂马,首页被跳转到菠菜网站,我才意识到安全配置的重要性。
那次被黑折腾了我整整两天,备份数据库、重装系统、改密码、排查漏洞...从那以后,我成了安全配置的狂热分子。今天就把我的血泪经验分享出来,希望你们不用再走我的弯路。
为什么Typecho容易被黑?
先说说Typecho的特点。这货轻量、简洁,但也意味着很多安全功能需要自己配置。默认安装的Typecho就像一个没锁门的房子,谁都能进来逛逛。
常见的被黑方式:
1. 弱密码爆破 - 密码设成123456的,活该被黑
2. SQL注入 - 插件或主题有漏洞,黑客直接注入恶意代码
3. 文件上传漏洞 - 上传目录权限太大,被传了webshell
4. 目录遍历 - 敏感目录没做限制,配置文件被下载
我那次被黑,就是因为装了个来路不明的免费主题,里面藏了后门代码...
一、后台路径隐藏
这是最简单也最有效的一招。Typecho默认的后台地址是`/admin/`,黑客都知道。改掉它,能挡掉90%的自动化攻击。
操作步骤:
1. 修改`config.inc.php`,找到这一行:
```php
define('__TYPECHO_ADMIN_DIR__', '/admin/');
```
2. 改成你想要的路径,比如:
```php
define('__TYPECHO_ADMIN_DIR__', '/myadmin/');
```
3. 重命名`admin`目录为`myadmin`
就这么简单,但很多人都不做。改完之后,黑客再访问`/admin/`就是404,大大降低了被扫描到的概率。
二、登录保护措施
后台路径隐藏只是第一步,还要加强登录环节的防护。
我用的方法:
| 措施 | 实现方式 | 难度 |
|---|---|---|
| 登录验证码 | 安装LoginCheck插件 | 简单 |
| 登录失败次数限制 | 安装BruteForce防护插件 | 简单 |
| 双重验证 | Google Authenticator | 中等 |
| 白名单IP | 宝塔面板设置 | 简单 |
我现在用的是宝塔面板的IP白名单功能,只有我的IP能访问后台。虽然有点麻烦(换了网络要重新加IP),但安全第一嘛。
如果你没有固定IP,也可以用验证码插件:
我推荐`LoginCheck`插件,轻量、好用。在GitHub上搜一下就能找到,安装后在后台启用,配置好验证码样式就行。
三、文件权限设置
权限设置不当,是很多被黑案例的根源。
正确的权限配置:
```
根目录:755
config.inc.php:600(重要!)
usr/:755
usr/uploads/:755
其他目录:755
文件:644
```
重点说一下`config.inc.php`:
这个文件里有数据库密码,权限一定要设成600,也就是只有所有者能读写。我见过太多人把所有文件都设成777,简直是在裸奔。
在宝塔面板里设置:
1. 文件管理器里右键点击`config.inc.php`
2. 选择"权限"
3. 设置为600,所有者读写,其他人都没权限
四、敏感目录保护
有些目录是绝对不能让外人访问的。
必须保护的目录:
1. `/usr/` - 用户数据目录,包含上传文件、主题、插件
2. `/var/` - 缓存和日志目录
3. `/config.inc.php` - 配置文件
用.htaccess保护(Apache):
在`usr/`目录下创建`.htaccess`文件:
```apache
Order Allow,Deny
Deny from all
Order Allow,Deny
Deny from all
```
这样就算有人上传了PHP文件到uploads目录,也无法执行。
Nginx配置:
在站点配置里添加:
```nginx
location ~* ^/(usr|var)/.*\.(php|php5|phtml)$ {
deny all;
}
location ~* ^/(usr|var)/.*\.(txt|md|log)$ {
deny all;
}
```
五、定期备份机制
被黑之后我才知道,备份有多重要。现在我每天自动备份,再也不怕了。
我的备份策略:
1. 数据库每天备份 - 宝塔计划任务,每天凌晨3点
2. 整站每周备份 - 包括所有文件和数据库
3. 备份保留30天 - 太旧的也没用
4. 异地备份 - 备份文件同步到另一台服务器
宝塔面板设置方法:
1. 进入"计划任务"
2. 添加"备份网站"任务
3. 选择备份周期(我设的每天)
4. 设置保留份数(我设的30份)
5. 勾选"备份到远程服务器"(可选)
六、主题和插件安全
这是最容易被忽视的点。很多被黑都是因为装了来路不明的主题或插件。
我的原则:
1. 只从官方渠道下载主题和插件
2. 安装前检查代码,搜索`eval`、`base64_decode`、`exec`等敏感函数
3. 定期更新主题和插件到最新版
4. 不用的插件直接删除,不要禁用就算了
检查主题/插件是否有后门:
我写了个简单的检查脚本,会扫描PHP文件里的敏感函数:
```bash
grep -rn "eval\|base64_decode\|exec\|shell_exec\|passthru" /path/to/theme/
```
如果有输出,就要仔细看看代码了。
七、HTTPS强制跳转
HTTP网站的数据传输是明文的,密码都能被抓包看到。HTTPS现在已经不是可选项,而是必选项。
宝塔面板开启HTTPS:
1. 申请Let's Encrypt免费证书
2. 开启"强制HTTPS"
3. 在站点配置里添加:
```nginx
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
```
Typecho配置:
在`config.inc.php`里添加:
```php
define('__TYPECHO_SECURE__', true);
```
常见问题FAQ
Q1:Typecho需要安装安全插件吗?
建议装一个LoginCheck验证码插件,其他看需要。装太多插件反而增加安全风险。
Q2:如何判断网站是否被黑?
几个迹象:访问速度变慢、首页被跳转、搜索结果显示异常内容、数据库里有奇怪的表。
Q3:被黑了怎么办?
1. 立即关站(宝塔暂停站点)
2. 备份当前状态(作为证据)
3. 用备份恢复网站
4. 修改所有密码
5. 排查漏洞(查日志、查文件)
6. 加固安全配置后再上线
Q4:宝塔面板安全吗?
宝塔本身是安全的,但要记得:
- 改掉默认端口
- 设置面板登录验证码
- 定期更新宝塔版本
- 开启面板IP白名单
Q5:免费SSL证书安全吗?
Let's Encrypt免费证书和付费证书在安全性上是一样的,区别在于:
- 免费证书有效期短(3个月)
- 没有赔付保障
- 不支持通配符域名(但Let's Encrypt现在支持了)
博客安全问题想交流?加我微信:15207283116,备注"博客安全",我看到都会回复。
需要了解更多使用技巧?
扫码加我微信,我来给你详细解答!
微信号:15207283116
(博客来的朋友优先通过!)
—— 本文仅供参考,具体以实际情况为准 ——
还木有评论哦,快来抢沙发吧~