博客VPS被黑过一次才明白:服务器安全得这么配

标签:服务器安全,VPS配置,博客搭建,技术教程

记一次被黑经历

说出来不怕你们笑话,我的博客去年被黑了。

那天打开网站发现不对劲,后台进不去,首页被篡改成菠菜页面。整个人都傻了,大半夜的开始排查,最后发现是SSH密码太弱被人爆破了。

数据全丢了,备份是两周前的。两周的文章、评论全部归零,那一刻真想把自己的手剁了。

从那以后我开始认真对待服务器安全,花了一周时间把安全配置全部重新做了一遍。现在把经验分享出来,不希望你们重蹈覆辙。

SSH安全配置:改端口、禁用密码

SSH是服务器的大门,这道门守不住,其他都是白搭。

1. 改SSH默认端口

默认22端口全世界的黑客都在扫,太危险了。改成个冷门端口,比如22998之类的。

```bash

编辑SSH配置文件

sudo vi /etc/ssh/sshd_config

找到 Port 22,把22改成其他数字

Port 22998

重启SSH服务

sudo systemctl restart sshd

```

改完记得先测试新端口能不能连上,确认没问题再关掉22端口!

2. 禁用密码登录,改用密钥

这是最关键的一步。密码登录太容易被爆破了,密钥登录安全得多。

```bash

在本地生成密钥对

ssh-keygen -t ed25519

把公钥上传到服务器

ssh-copy-id -p 22998 -i ~/.ssh/id_ed25519.pub user@your_server_ip

编辑SSH配置禁用密码登录

sudo vi /etc/ssh/sshd_config

确保以下配置

PasswordAuthentication no

PermitRootLogin no

PubkeyAuthentication yes

重启SSH

sudo systemctl restart sshd

```

生成密钥的时候记得设个强密码,别偷懒用空密码。

3. 安装fail2ban自动封IP

这个软件会自动检测SSH登录失败次数,超过阈值就封IP,非常好用。

```bash

安装

sudo apt install fail2ban -y

启动

sudo systemctl enable fail2ban

sudo systemctl start fail2ban

查看状态

sudo systemctl status fail2ban

```

fail2ban默认配置就够用,有兴趣的可以改配置文件调参数。

防火墙配置:用UFW还是iptables?

推荐用UFW,简单易用。

```bash

安装UFW

sudo apt install ufw -y

设置默认规则

sudo ufw default deny incoming # 拒绝所有入站

sudo ufw default allow outgoing # 允许所有出站

开放必要端口

sudo ufw allow 22998/tcp # SSH

sudo ufw allow 80/tcp # HTTP

sudo ufw allow 443/tcp # HTTPS

开启防火墙

sudo ufw enable

查看状态

sudo ufw status verbose

```

操作的时候一定要小心!一旦配置错误把自己锁在外面就麻烦了。操作前先开多个SSH连接确认可以连上,配置错了还有个退路。

系统安全:定期更新和最小化安装

自动安全更新

服务器不可能天天手动登录去更新,得靠自动化。

```bash

安装unattended-upgrades

sudo apt install unattended-upgrades -y

启用自动更新

博客VPS被黑过一次才明白:服务器安全得这么配-第1张图片-无双博客

sudo dpkg-reconfigure -plow unattended-upgrades

```

选择"是"就可以了。以后有安全补丁系统会自动安装,不用操心。

最小化安装原则

服务器上只装必要的软件。每个运行的软件都是潜在的入口点,能不装就不装。

比如你用Nginx,就不用装Apache;用MySQL就不装PostgreSQL。选一个就行,别贪多。

数据库安全:别裸奔

MySQL/MariaDB安装完默认配置挺松的,需要加固一下。

```bash

运行安全配置向导

sudo mysql_secure_installation

交互式问答这样回答

设置root密码:选Y,设个强密码

禁止root远程登录:选Y

删除匿名用户:选Y

删除测试数据库:选Y

重载权限表:选Y

```

另外给每个应用创建独立的数据库用户,权限最小化。博客用WordPress就创建wp_user,只给blogdb的读写权限就行,别给ALL PRIVILEGES。

文件权限:配置不当是重灾区

服务器上文件权限配置错误很容易被利用。

Web目录权限

```bash

网站文件目录

chown -R www-data:www-data /var/www/html

find /var/www/html -type f -exec chmod 644 {} \;

find /var/www/html -type d -exec chmod 755 {} \;

上传目录要给写权限

chmod 775 /var/www/html/wp-content/uploads

chown www-data:www-data /var/www/html/wp-content/uploads

```

禁止执行PHP上传文件

上传目录一般不需要执行PHP能力,关掉更安全。

```nginx

Nginx配置

location /wp-content/uploads/ {

location ~ \.php$ {

deny all;

}

}

```

这样即使有人上传了PHP木马,也没法执行。

备份策略:最后的防线

再完善的安全措施也不能保证100%不出问题,备份是最后的防线。

我的备份策略是这样的:

备份类型频率保留份数存储位置
整站文件每天7份本地+云端
数据库每天14份本地+云端
配置快照每次改配置后3份云端

数据库和文件分开备份,这样恢复的时候可以灵活选择。

推荐用rclone把备份传到云存储(阿里云OSS、腾讯云COS都行),本地只留最近两份就够了。

监控报警:第一时间知道出事

配置再完善,也得有监控。我用两个东西:

1. Uptime Kuma

一个开源的监控工具,可以监控网站、服务是否在线。挂了会发邮件、微信通知你。

2. 服务器基础监控

CPU、内存、磁盘使用率这些基础指标要监控起来。我用的Prometheus + Grafana,配置一次以后心里有数。

总结

安全这事吧,说一千道一万不如实际行动:

1. SSH改端口、禁用密码、用密钥登录

2. 防火墙只开放必要端口

3. 自动化安全更新

4. 数据库独立用户、最小权限

5. 文件权限配置正确

6. 定期异地备份

7. 监控报警不能少

配置完这套组合拳,被黑的概率会低很多。但说实话,再怎么配置也没有100%的安全,关键是出问题了能快速恢复。

记住:备份永远是最好的安全措施。


有服务器配置问题可以加我微信:15207283116,看到会回复。

标签:服务器安全,VPS配置,博客搭建,技术教程