速卖通素材
奋斗

在腾讯云上部署Web服务,CentOS镜像需要做哪些初始安全配置?

服务器

在腾讯云上部署 CentOS 系统的 Web 服务时,初始安全配置是防止服务器被入侵、数据泄露或资源滥用的关键步骤。以下是针对 CentOS(以 CentOS 7/8 为例)的详细初始安全配置清单,按优先级和逻辑顺序排列:


一、基础系统加固

1. 创建非 root 用户并禁用 root 远程登录

  • 原因:直接暴露 root 账户极易遭受暴力破解攻击。
  • 操作:

    # 创建新用户(例如 webadmin)
    useradd -m -s /bin/bash webadmin
    passwd webadmin
    
    # 将用户加入 sudoers 组
    visudo
    # 添加行:webadmin ALL=(ALL) NOPASSWD:ALL (根据需求设置密码验证)
    
    # 编辑 SSH 配置文件
    vi /etc/ssh/sshd_config
    # 修改或添加:
    PermitRootLogin no       # 禁止 root 远程登录
    PasswordAuthentication yes  # 建议启用密钥登录,禁用密码登录更安全
    PubkeyAuthentication yes  # 启用公钥认证
    ChallengeResponseAuthentication no
    
    # 重启 SSH 服务
    systemctl restart sshd

2. 配置防火墙(firewalld 或 iptables)

  • 腾讯云特有建议:优先使用腾讯云控制台的安全组规则,而非仅依赖主机内部防火墙。
    • 在腾讯云控制台 → 云服务器 → 安全组中,只开放必要端口(如 80, 443, 以及自定义 SSH 端口)。
    • 默认策略设为“拒绝所有入站”,明确允许所需 IP 和端口。
  • 主机内防火墙(可选但推荐):
    systemctl enable firewalld
    systemctl start firewalld
    firewall-cmd --permanent --add-service=http
    firewall-cmd --permanent --add-service=https
    firewall-cmd --reload

3. 更新系统与内核

yum update -y && yum upgrade -y
# 检查是否有安全补丁
yum check-update | grep security

二、SSH 安全强化

1. 使用密钥登录替代密码登录

  • 生成密钥对(本地机器):ssh-keygen -t rsa -b 4096
  • 上传公钥到服务器:ssh-copy-id webadmin@your_server_ip
  • 禁用密码登录(见上文 sshd_config 中的 PasswordAuthentication no)

2. 更改 SSH 默认端口(可选)

  • 避免自动化扫描工具探测标准 22 端口。
  • 修改 /etc/ssh/sshd_config 中的 Port 2222,并在腾讯云安全组中开放新端口。

3. 安装 Fail2Ban 防止暴力破解

yum install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
# 配置 /etc/fail2ban/jail.local,监控 sshd

三、Web 服务安全配置

1. 最小化安装 Web 软件

  • 只安装必要的组件(如 Nginx/Apache + PHP/Node.js),避免多余服务。
  • 定期更新 Web 服务器及其模块。

2. 隐藏版本信息

  • Nginx:
    server_tokens off;
  • Apache:
    ServerTokens Prod
    ServerSignature Off

3. 配置 HTTPS(强制 HTTP → HTTPS)

  • 使用 Let’s Encrypt 免费证书:
    yum install certbot python2-certbot-nginx -y
    certbot --nginx
  • 强制重定向 HTTP 到 HTTPS,并启用 HSTS。

4. 文件权限与所有权

  • Web 目录不应由 root 拥有。
    chown -R www-data:www-data /var/www/html   # Debian/Ubuntu 示例
    chown -R nginx:nginx /var/www/html        # CentOS Nginx 常见用户
    chmod -R 755 /var/www/html
    find /var/www/html -type f -exec chmod 644 {} ;

5. 禁用危险函数(PHP 环境)

  • 在 php.ini 中禁用高风险函数:
    disable_functions = passthru, exec, system, chroot, scandir, chgrp, chown, proc_open, proc_get_status, popen, ini_alter, ini_restore, dl, pfsockopen, openlog, syslog, readlink, symlink, leak, ftp_exec, escapeshellcmd, php_uname, proc_nice, proc_terminate, shell_exec, show_source, highlight_file, pclose, stream_socket_server, pcntl_exec

四、系统级安全加固

1. 关闭不必要的服务

systemctl list-unit-files --type=service --state=enabled
# 关闭如 bluetooth, cups, postfix 等非必需服务
systemctl disable <service_name>

2. 配置 SELinux(CentOS 默认开启)

  • 不要直接关闭 SELinux,而是学习其策略。
  • 若确需临时调试,可设置为 permissive 模式:
    setenforce 0
    getenforce
  • 生产环境建议保持 Enforcing,并通过 audit2allow 调整策略。

3. 限制核心转储(Core Dump)

echo "* soft core 0" >> /etc/security/limits.conf
echo "* hard core 0" >> /etc/security/limits.conf

4. 时间同步

yum install chrony -y
systemctl enable chronyd
systemctl start chronyd

五、日志监控与审计

1. 启用系统日志集中管理

  • 查看关键日志:
    journalctl -u sshd -f
    journalctl -u nginx -f
    tail -f /var/log/messages

2. 安装 auditd 进行安全审计

yum install audit -y
systemctl enable auditd
systemctl start auditd

3. 配置日志轮转(logrotate)

  • 确保 /etc/logrotate.d/ 中有适当配置,避免磁盘占满。

六、备份与恢复策略

  1. 定期快照:利用腾讯云云盘快照功能,每日自动备份系统盘和数据盘。
  2. 代码与数据库备份:
    • 使用脚本定时备份网站文件和数据库。
    • 将备份上传至 COS(腾讯云对象存储)或其他异地存储。
  3. 测试恢复流程:至少每季度进行一次恢复演练。

七、其他建议

  • 启用腾讯云云镜(主机安全):提供入侵检测、漏洞扫描、基线检查等功能。
  • DDoS 防护:如果业务重要,考虑启用腾讯云 DDoS 基础防护或高防 IP。
  • 最小权限原则:每个应用服务使用独立的用户运行,避免共用 root 或同一用户。

✅ 总结 checklist: 项目 状态
[ ] 创建非 root 用户并禁用 root 登录 ✅
[ ] 配置腾讯云安全组(仅开放必要端口) ✅
[ ] 启用 SSH 密钥登录 ✅
[ ] 安装 Fail2Ban ✅
[ ] 配置 HTTPS 证书 ✅
[ ] 隐藏 Web 服务器版本信息 ✅
[ ] 设置正确的文件权限 ✅
[ ] 禁用 PHP 危险函数 ✅
[ ] 关闭非必要服务 ✅
[ ] 启用 SELinux(Enforcing 模式) ✅
[ ] 配置自动快照与备份 ✅
[ ] 安装云镜(主机安全Agent) ✅

完成以上配置后,你的 CentOS Web 服务器将具备较高的基础安全防护能力。

未经允许不得转载:轻量云Cloud » 在腾讯云上部署Web服务,CentOS镜像需要做哪些初始安全配置?