生产环境(对外网站)
第一阶段:
① 关闭 MySQL 公网访问(最高优先级)
检查:
ss -lntp | grep 3306
如果显示:
0.0.0.0:3306
说明对公网开放 ❌
修改 MySQL 配置:
/etc/my.cnf
或
/etc/mysql/mysql.conf.d/mysqld.cnf
改成:
bind-address = 127.0.0.1
然后:
systemctl restart mysqld
✔ 数据库只允许本机访问
✔ 暴力破解直接失效
② 修改宝塔默认端口 8888
宝塔默认端口被全球扫描。
改端口:
宝塔 → 设置 → 面板端口
改成例如:
24739
然后:
✔ 防火墙只允许你自己的IP访问
✔ 或使用 Cloudflare Tunnel
③ SSH 安全配置(必须)
编辑:
vi /etc/ssh/sshd_config
修改:
PermitRootLogin no
PasswordAuthentication no
ClientAliveInterval 600
ClientAliveCountMax 0
然后:
systemctl restart sshd
说明:
- 禁止root直登
- 禁止密码登录(只允许密钥)
- 10分钟无操作自动断开
⚠ 做之前确认你已经能用密钥登录!
④ 删除 rsh
yum remove rsh -y
# 或
apt remove rsh-client -y
rsh = 明文协议
没必要存在。
⑤ 修复 sudo NOPASSWD
检查:
cat /etc/sudoers.d/90-cloud-init-users
如果有:
NOPASSWD
改为:
ALL=(ALL) ALL
🟠 第二阶段:标准生产加固
这些是 Linux 安全基线。
① 启用 SYN Cookie(防 SYN Flood)
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
sysctl -p
② 禁止 ICMP 重定向
echo "net.ipv4.conf.all.accept_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_redirects=0" >> /etc/sysctl.conf
sysctl -p
③ 禁止 Source Route
echo "net.ipv4.conf.all.accept_source_route=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route=0" >> /etc/sysctl.conf
sysctl -p
④ /tmp 加 nosuid
编辑:
/etc/fstab
改为:
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
然后:
mount -o remount /tmp
⑤ 开启 fail2ban(强烈建议)
yum install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
防爆破神器。
🟢 第三阶段:企业级进阶(建议但不急)
auditd
yum install audit -y
systemctl enable auditd
AIDE 文件完整性检测
yum install aide -y
aide --init
改 GRUB 权限
chmod 600 /boot/grub/grub.cfg
🎯 宝塔生产环境最佳架构(建议你考虑)
你现在做网站,我建议:
公网
↓
Cloudflare
↓
Nginx
↓
PHP
↓
MySQL (127.0.0.1)
加上:
- WAF(Cloudflare)
- 只开放 80/443
- 关闭 3306
- SSH 只允许你IP
📊 真实风险排序(按被黑概率)
| 风险项 | 实际危险 |
|---|---|
| 3306公网开放 | 🔴🔴🔴 |
| SSH密码登录 | 🔴🔴 |
| 面板默认端口 | 🔴🔴 |
| 未启用fail2ban | 🔴 |
| sysctl未加固 | 🟡 |
| audit缺失 | 🟢 |
⚠ 最重要一句话
生产环境服务器:
✔ 不要追求“扫描全绿”
✔ 重点是减少可攻击面
✔ 端口越少越安全
✔ 服务越少越安全