系统安全加固
层级 | 措施 | 工具/命令 |
---|---|---|
基础防护 | 修改默认SSH端口(如22→2022),禁用Root远程登录,限制IP访问规则 | /etc/ssh/sshd_config |
防火墙配置 | 启用UFW防火墙,仅开放必要端口(如80/443、22),屏蔽外部ping请求 | ufw allow 80/tcp ufw enable |
入侵检测 | 安装Fail2Ban拦截暴力破解,配置Logwatch监控异常登录 | fail2ban-client status |
操作示例:
# 修改SSH配置
sed -i 's/^Port 22/Port 2022/' /etc/ssh/sshd_config
# 重启SSH服务
systemctl restart sshd
应用层安全优化
-
Web服务安全
- 禁用Apache/Nginx默认服务器标识(
ServerTokens OS off
) - 配置HTTPS强制跳转(HSTS策略)
- 隐藏错误信息,自定义404/500页面
- 禁用Apache/Nginx默认服务器标识(
-
数据库防护
- MySQL/MariaDB仅允许本地访问(
bind-address=127.0.0.1
) - 删除默认测试库(
DROP DATABASE test;
) - 使用
pt-query-digest
分析慢查询日志
- MySQL/MariaDB仅允许本地访问(
性能优化方案
优化方向 | 具体措施 |
---|---|
静态资源加速 | 启用Gzip压缩,设置Expires头缓存CSS/JS,使用CDN分发图片与静态文件 |
数据库优化 | 定期执行ANALYZE TABLE ,拆分读写分离(主库写/从库读) |
缓存配置示例(Nginx):
location ~ .(js|css|png|jpg)$ { expires 30d; add_header Cache-Control "public, no-transform"; }
数据备份策略
类型 | 频率 | 存储位置 | 验证方式 |
---|---|---|---|
全量备份 | 每周1次 | 本地+云存储(如AWS S3) | 定期恢复测试 |
增量备份 | 每日1次 | 异地服务器 | checksum比对 |
数据库备份 | 实时Binlog | 主从复制+Percona XtraBackup | mysqlcheck –check-upgrade |
自动化脚本示例:
#!/bin/bash # 打包网站目录并上传至S3 tar -czf backup_$(date +%F).tar.gz /var/www/html aws s3 cp backup_.tar.gz s3://my-bucket/backups/
资源监控与告警
-
实时监控工具
目录类型 推荐权限 操作命令 /var/www/html 755 chown www-data:www-data -R
上传目录 770 find . -type d -exec chmod 770 {} ;
日志文件 644 chattr +a /var/log/nginx/.log
日志分析与审计
-
错误日志
- 每日分析
/var/log/nginx/error.log
,定位PHP致命错误 - 使用
logrotate
切割日志并保留30天
- 每日分析
-
访问统计
- AWStats生成流量报告(
/etc/awstats/awstats.conf
) - Google Analytics跟踪用户行为热图
- AWStats生成流量报告(
软件更新维护
- 订阅系统更新推送(
do-release-upgrade
) - PHP每2年升级大版本(如7.4→8.0)
- 定期检查Let’s Encrypt证书(
certbot renew
)
灾难恢复计划
-
场景模拟
- 每季度演练一次数据恢复流程
- 准备备用DNS解析记录(如
beta.example.com
)
-
服务商切换
- 保留其他厂商账户(如DigitalOcean+Linode)
- 预存VPS快照至多云平台
FAQs
Q1:虚拟主机备份频率如何设置?
A:全量备份建议每周1次(业务变更频繁可缩短至3天),增量备份每日执行,数据库需启用二进制日志实现实时备份,关键配置文件应纳入版本控制(如Git)。Q2:如何判断是否需要升级CDN服务?
A:当出现以下情况时需考虑升级:- 全球用户访问延迟超过3秒
- 单日静态资源请求量突破10万次
- 源站带宽峰值持续5分钟超过80%
可选用Cloudflare或阿里云OSS加速服务
-