当前位置:首页 > 互联网 > 正文

如何设置服务器安全规则?服务器配置安全规则详解

服务器安全配置是防止网络攻破和数据泄露的关键防线,下面是一套多层次的安全规则最佳实践,涵盖网络、系统、服务、账户等多个层面:


网络层安全

  1. 防火墙策略 (iptables/firewalld/nftables)

    • 默认拒绝所有:默认策略设为 DROP,仅放行必要端口。
    • 最小化开放端口
      • SSH (建议修改默认端口,如 2222)
      • HTTP/HTTPS (80, 443)
      • 特定服务端口 (如数据库端口不应直接暴露给公网)
    • 限制来源IP:仅允许管理IP访问SSH等管理端口。
    • 示例 (iptables): iptables -P INPUT DROP iptables -A INPUT -p tcp --dport 2222 -s 192.168.1.0/24 -j ACCEPT # 仅允许内网访问SSH iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT # 开放Web iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许已建立连接
  2. 云平台安全组

    在AWS/Azure/GCP等平台配置安全组规则,原理与防火墙相同,优先级更高。

  3. 关闭IPv6(如未使用)

    sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1


系统层加固

  1. 及时更新系统

  2. 禁用无用服务

    systemctl list-unit-files --type=service | grep enabled # 查看已启动服务 systemctl disable <service_name> # 禁用非必要服务(如蓝牙、打印服务)
  3. 内核参数调优 (/etc/sysctl.conf)

    # 禁止ICMP重定向 net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # 开启SYN Cookie防洪水攻破 net.ipv4.tcp_syncookies = 1 # 禁用IP转发(非路由器) net.ipv4.ip_forward = 0

    生效:sysctl -p

    如何设置服务器安全规则?服务器配置安全规则详解 第1张

  4. 文件系统权限

    • 关键目录权限:
      • /etc/:755(root:root)
      • /etc/shadow:600(root:root)
      • Web根目录:避免777,推荐755(用户):644(文件)
      • 账户与认证安全

        1. 禁用Root直接登录 & 使用SSH密钥

          # /etc/ssh/sshd_config PermitRootLogin no # 禁止root登录 PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 启用密钥登录

          重启SSH:systemctl restart sshd

        2. 创建低权限管理账户

          如何设置服务器安全规则?服务器配置安全规则详解 第2张

          adduser adminuser usermod -aG sudo adminuser # 赋予sudo权限
        3. 配置sudo日志审计

          # /etc/sudoers 或 /etc/sudoers.d/audit Defaults logfile="/var/log/sudo.log"
        4. 强密码策略 (/etc/login.defs & pam)

          # /etc/login.defs PASS_MAX_DAYS 90 PASS_MIN_LEN 10


        服务专项安全

        Web服务器 (Nginx/Apache)

        1. 隐藏版本信息

          # Nginx server_tokens off; # Apache ServerTokens Prod ServerSignature Off
        2. 禁用不必要HTTP方法

          location / { limit_except GET POST { deny all; } }
        3. HTTPS强制跳转 & HSTS

          如何设置服务器安全规则?服务器配置安全规则详解 第3张

          server { listen 80; return 301 https://$host$request_uri; }

        数据库安全 (MySQL/PostgreSQL)

        1. 禁止远程root登录: DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost'); FLUSH PRIVILEGES;
        2. 删除测试数据库:DROP DATABASE test;
        3. 绑定本地地址:bind-address = 127.0.0.1


        入侵检测与监控

        1. 日志集中管理 (Rsyslog/Syslog-ng)

          • 将/var/log/auth.log、/var/log/syslog等发送至远程日志服务器。
        2. 文件完整性监控 (AIDE/Tripwire)

        3. 入侵检测系统 (Fail2ban)

          • 自动屏蔽暴力免费IP: # /etc/fail2ban/jail.local [sshd] enabled = true port = 2222 # 修改为你的SSH端口 maxretry = 3
          • 备份与灾难恢复

            1. 定期备份策略

              • 数据库:mysqldump 或 pg_dump
              • 配置文件:备份/etc/和关键应用配置
              • 使用rsync或rclone同步至异地存储(如S3、OSS)
            2. 测试恢复流程:定期验证备份文件可恢复性。


            进阶防护建议

            1. SELinux/AppArmor:启用强制访问控制(MAC)。
            2. 文件系统挂载选项:/tmp使用noexec,nosuid。
            3. 容器安全:如果使用Docker,启用用户命名空间隔离,限制容器能力。
            4. WAF(Web应用防火墙):部署Cloudflare/Naxsi/ModSecurity防御SQL载入/XSS。


            安全配置检查工具

            1. Lynis:开源安全审计工具 lynis audit system
            2. OpenSCAP:自动化合规扫描
            3. Cloud Provider 工具
              • AWS Trusted Advisor
              • Azure Security Center
              • GCP Security Command Center

            重要原则:遵循最小权限原则,定期审计规则,保持“零信任”心态,新的漏洞不断出现,安全是一个持续的过程而非一次性任务。

            根据你的具体服务(如WordPress、数据库服务器、API服务器),还需定制细化规则,如果需要某部分的详细配置示例,请告诉我你的具体场景!

0