温馨提示×

Node.js在CentOS中的安全设置

小樊
46
2025-07-21 02:45:51
栏目: 编程语言

在CentOS系统中配置Node.js应用程序的安全性是至关重要的,以确保数据和系统的安全。以下是一些关键步骤和建议,涵盖了从应用程序的配置到系统级别的安全措施。

账户安全及权限管理

  • 禁用root以外的超级用户:使用 passwd -l 锁定不必要的超级账户,使用 passwd -u 解锁需要恢复的超级账户,或者将用户shell改为 /sbin/nologin
  • 删除不必要的账号:删除所有默认的、不必要的账号,如 adm, lp, sync, shutdown, halt, mail, operator, games, ftp 等用户和组。
  • 用户口令设置:设置复杂且不易被破解的口令,要求包含大写字母、小写字母、数字和特殊字符中的三种,长度大于10位。
  • root账户自动注销时限:修改 /etc/profile 中的 tmout 参数:tmout=300
  • 禁止su切换为root:编辑 /etc/pam.d/su 文件,增加安全策略。

Node.js安装与配置

  • 安装Node.js:推荐使用EPEL(Extra Packages for Enterprise Linux)仓库或NVM(Node Version Manager)来安装Node.js,以确保获取到最新的稳定版本和安全补丁。
    sudo yum install -y epel-release
    sudo yum install -y nodejs npm
    
  • 全局配置Node.js:设置Node.js的安装路径:在安装时选择自定义路径或在 /etc/profile 中配置 NODE_HOME
  • 使用NVM管理Node.js版本
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    source ~/.bashrc
    nvm install <node版本号>
    nvm use <node版本号>
    

防火墙配置

  • 使用firewalld配置防火墙
    sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
    sudo systemctl restart firewalld
    
  • 允许必要的端口
    • 允许HTTP(端口80)和HTTPS(端口443)流量:
      sudo firewall-cmd --add-service=http --permanent
      sudo firewall-cmd --add-service=https --permanent
      sudo firewall-cmd --reload
      
    • 允许SSH访问(端口22):
      sudo firewall-cmd --add-port=22/tcp --permanent
      sudo firewall-cmd --reload
      

SSL证书管理

  • 安装SSL证书:获取SSL证书并解压。将证书的公钥和私钥文件路径指定到Node.js的配置文件中。
  • 测试SSL证书:使用浏览器访问 https://yourdomain.com,查看安全锁标志。

安全更新

  • 升级Node.js版本:使用Node Version Manager(nvm)升级Node.js:
    nvm install latest
    nvm use latest
    
  • 验证新版本node -v

应用程序安全配置

  • 避免使用root权限运行Node.js:始终以非root用户身份启动Node.js应用程序,以减少潜在的安全风险。
  • 保持npm库最新:定期更新Node.js项目的依赖项,使用 npm auditsnyk 等工具检查并修复已知的安全漏洞。
  • 配置HTTP头:设置安全的HTTP头,如 Content-Security-PolicyX-Content-Type-Options 等,以防止常见的Web攻击。
  • 实施速率限制:使用中间件如 express-rate-limit 来限制请求速率,防止DDoS攻击。
  • 验证用户输入:对所有用户输入进行验证,防止SQL注入、XSS等攻击。
  • 使用HTTPS:启用SSL/TLS加密,确保所有通信都是加密的。

系统级安全措施

  • 配置SELinux:配置SELinux来限制进程的权限,提高系统安全性。
  • 定期备份:定期备份重要数据,以防数据丢失或被破坏。
  • 监控系统日志:使用工具如 journalctl 监控系统日志,及时发现异常行为并采取相应措施。

通过上述步骤,可以显著提高基于Node.js的CentOS系统的安全性。重要的是要定期审查和更新安全措施,以应对新出现的威胁。

0