当前位置:网站首页 >  攻略

从零搭建可落地全流程中小网站实用站点安全运维体系

时间:2026年06月15日 22:29:01 来源:易频IT社区

一、准备阶段:核心防护清单梳理

先做基础梳理,避免漏项,所有防护点围绕中小网站高频漏洞(SQL注入、XSS、CSRF、暴力破解、弱口令)制定,覆盖基础设施层、应用层、数据层、监控层:

  • 基础设施层:服务器端口管控、SSH/远程桌面加固、文件权限控制
  • 应用层:代码静态扫描前置、Web应用防火墙(WAF)基础部署、常见漏洞补丁
  • 数据层:数据库权限隔离、核心数据加密、定期备份验证
  • 监控层:异常登录/访问监控、磁盘/CPU/内存预警、日志留存归档

二、基础设施层:72小时内搞定服务器硬防护

2.1 仅开放必要端口,禁用高危端口

用系统自带防火墙就行,以CentOS 7/8/9通用的firewalld、Ubuntu 20.04+的ufw为例:

CentOS操作

  • 查看当前开放端口:firewall-cmd --list-all
  • 开启核心端口(HTTP80、HTTPS443、自定义SSH端口如22222): ``` firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=22222/tcp ```
  • 关闭SSH默认22端口:firewall-cmd --permanent --remove-port=22/tcp
  • 重启防火墙生效:firewall-cmd --reload

Ubuntu操作

  • 启用防火墙:sudo ufw enable
  • 开启核心端口: ``` sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22222/tcp ```
  • 关闭SSH默认22端口:sudo ufw delete allow 22/tcp

2.2 彻底加固SSH远程登录

两个核心动作:禁用root直接登录、设置密钥对登录+密码二次验证(如果必须保留密码,密码长度≥16位,含大小写、数字、特殊字符):

  • 生成SSH密钥对(本地Windows用Git Bash、Mac/Linux用终端执行): ``` ssh-keygen -t rsa -b 4096 -f ~/.ssh/site_rsa 连续回车跳过密码设置(本地保存好私钥) ```
  • 上传公钥到服务器(替换root@your_server_ip为实际服务器): ``` ssh-copy-id -i ~/.ssh/site_rsa.pub -p 22 your_server_ip 输入旧root密码 ```
  • 修改服务器SSH配置(vim /etc/ssh/sshd_config),找到并修改/新增以下行: ``` Port 22222 Protocol 2 PermitRootLogin no PasswordAuthentication yes 先保留,确保密钥登录成功后再禁用 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ```
  • 重启SSH服务生效: ``` CentOS systemctl restart sshd Ubuntu sudo systemctl restart ssh ```
  • 验证:本地打开新终端测试密钥登录(替换site_admin为后续创建的普通管理员): ``` ssh -i ~/.ssh/site_rsa site_admin@your_server_ip -p 22222 成功后,将sshd_config中的PasswordAuthentication改为no,再次重启SSH ```
  • 创建普通管理员并授予sudo权限: ``` CentOS/Ubuntu通用 useradd site_admin passwd site_admin 设置≥16位强密码 usermod -aG wheel site_admin CentOS usermod -aG sudo site_admin Ubuntu ```

2.3 严格控制文件权限

以Nginx/Apache常见站点目录/var/www/html为例:

  • 目录权限设为750:find /var/www/html -type d -exec chmod 750 {} \;
  • 文件权限设为640:find /var/www/html -type f -exec chmod 640 {} \;
  • 将目录所有者设为Web服务用户(Nginx通常是nginx、Apache通常是apache或www-data): ``` Nginx chown -R nginx:nginx /var/www/html Apache chown -R www-data:www-data /var/www/html ```

三、应用层:部署免费开源轻量防护组件

3.1 部署免费开源WAF:Naxsi(搭配Nginx)

从零搭建可落地全流程中小网站实用站点安全运维体系

以CentOS 8为例,直接用yum安装预编译包,避免编译卡壳:

  • 添加EPEL和Naxsi源: ``` yum install -y epel-release yum install -y https://extras.getpagespeed.com/release-latest.rpm ```
  • 安装Nginx+Naxsi:yum install -y nginx-module-naxsi
  • 加载Naxsi模块:编辑vim /etc/nginx/nginx.conf,在http块开头添加: ``` load_module modules/ngx_http_naxsi_module.so; ```
  • 引入Naxsi核心规则:在http块内添加: ``` include /etc/nginx/naxsi_core.rules; ```
  • 配置站点WAF(以默认站点/etc/nginx/conf.d/default.conf为例): ``` server { listen 80; server_name your_domain.com www.your_domain.com; root /var/www/html; index index.php index.html index.htm; 开启Naxsi,默认拦截模式 SecRulesEnabled; 开启学习模式,3-7天后关闭,避免误拦截 LearningMode; 学习模式生成的白名单规则保存路径 LibInjectionSql; 可选,增强SQL注入检测 LibInjectionXss; 可选,增强XSS检测 DeniedUrl "/RequestDenied"; 检查规则(必须) CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK; location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ```
  • 重启Nginx:systemctl restart nginx

3.2 代码静态扫描前置:安装免费开源工具SonarQube社区版的Docker简化版

中小网站用Docker部署,不用配置Java、数据库:

  • 先安装Docker(官方一键脚本): ``` curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker ```
  • 启动SonarQube: ``` docker run -d --name sonarqube -p 9000:9000 \ -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true \ sonarqube:lts-community ```
  • 访问http://your_server_ip:9000,默认账号密码admin/admin,登录后修改密码,创建项目获取token,按提示安装本地扫描器(下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856.zip,解压到本地C盘或/usr/local/bin),在项目根目录创建sonar-project.properties文件: ``` sonar.projectKey=your_site_key sonar.projectName=your_site_name sonar.projectVersion=1.0 sonar.sources=. sonar.host.url=http://your_server_ip:9000 sonar.login=your_token ```
  • 本地执行扫描: ``` Windows C:\sonar-scanner-cli-4.8.0.2856\bin\sonar-scanner.bat Mac/Linux sonar-scanner ```

四、数据层:最简单但最核心的防护

  • 数据库权限隔离:新建数据库用户,仅授予对应库的增删改查权限,禁止授予ALL PRIVILEGES,以MySQL为例: ``` CREATE USER 'site_db_user'@'localhost' IDENTIFIED BY '≥16位强密码'; GRANT SELECT,INSERT,UPDATE,DELETE ON site_db. TO 'site_db_user'@'localhost'; FLUSH PRIVILEGES; ```
  • 核心数据加密:用户密码用PHP的password_hash()/password_verify(),Java的BCrypt,不要用MD5/SHA1;手机号/身份证等敏感数据用AES-256-CBC加密,PHP示例: ```php // 加密 function encrypt($data, $key, $iv) { return openssl_encrypt($data, 'AES-256-CBC', $key, 0, $iv); } // 解密 function decrypt($data, $key, $iv) { return openssl_decrypt($data, 'AES-256-CBC', $key, 0, $iv); } // 生成随机密钥和IV(保存到服务器环境变量,不要写在代码里) $key = bin2hex(random_bytes(32)); $iv = random_bytes(openssl_cipher_iv_length('AES-256-CBC')); ```
  • 定期备份验证:用crontab每天凌晨3点备份MySQL数据库和站点文件,保存到本地+阿里云OSS免费额度(验证时每周随机下载1个备份解压/导入测试): ``` 编辑crontab crontab -e 添加以下内容 备份数据库(替换site_db_user、site_db、强密码、备份路径) 0 3 mysqldump -usite_db_user -p≥16位强密码 site_db | gzip > /home/site_backup/db_$(date +\%Y\%m\%d).sql.gz 备份站点文件 1 3 tar -zcvf /home/site_backup/html_$(date +\%Y\%m\%d).tar.gz /var/www/html 删除7天前的本地备份 2 3 find /home/site_backup -mtime +7 -name ".gz" -delete ```

五、监控层:用免费云监控+本地日志分析工具Fail2Ban

5.1 免费云监控覆盖基础资源

直接用阿里云、腾讯云、华为云的免费云监控额度,配置CPU≥80%、内存≥90%、磁盘≥95%、SSH暴力破解≥5次/分钟的短信/邮件预警。

5.2 Fail2Ban拦截SSH/HTTP暴力破解

以CentOS 8为例:

  • 安装Fail2Ban:yum install -y fail2ban
  • 复制配置模板: ``` cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ```
  • 编辑vim /etc/fail2ban/jail.local,修改[DEFAULT]和[sshd]块: ``` [DEFAULT] bantime = 3600 封禁1小时 findtime = 600 10分钟内 maxretry = 5 尝试5次失败就封禁 banaction = firewallcmd-ipset CentOS用这个 Ubuntu用banaction = ufw [sshd] enabled = true port = 22222 自定义SSH端口 logpath = %(sshd_log)s [nginx-http-auth] enabled = true port = http,https logpath = %(nginx_access_log)s ```
  • 重启Fail2Ban:systemctl restart fail2ban

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图