温馨提示×

如何用OpenSSL加强Linux系统安全

小樊
33
2025-11-22 23:36:46
栏目: 云计算

用 OpenSSL 加强 Linux 系统安全的实操清单

一 基础加固与更新

  • 保持系统与 OpenSSL 为最新版本,优先从官方仓库安装,及时修补已知漏洞。
  • 若需自行编译,使用合适的编译选项,**禁用不安全协议(SSLv2/SSLv3)**与过时算法,仅启用必要功能。
  • 生成密钥时确保足够的熵,以获得高质量随机数,保障密钥与 IV 安全。
  • 选择安全的算法与参数:对称加密用AES,哈希用SHA‑256/384,非对称用RSA ≥ 2048 位ECC ≥ 256 位
  • 建立密钥/证书轮换机制,定期更换并撤销泄露风险证书。
  • 对私钥实施口令保护最小权限访问控制,仅授权必要用户/进程读取。

二 证书与 PKI 体系建设

  • 生成服务器私钥与 CSR:
    • 生成私钥:openssl genpkey -algorithm RSA -out server.key -aes256
    • 生成 CSR:openssl req -new -key server.key -out server.csr
  • 生产与部署证书:
    • 测试环境可自签名:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    • 生产环境建议使用 Let’s Encrypt
      • Nginx:sudo certbot --nginx -d yourdomain.com
      • Apache:sudo certbot --apache -d yourdomain.com
  • 证书验证与链路检查:openssl verify -CAfile ca_bundle.crt server.crt
  • 建立内部 CA 与 CRL(可选,用于企业内网):
    • 配置 openssl.cnf 的 [CA_default] 路径与数据库
    • 生成 CRL:openssl ca -config openssl.cnf -gencrl -out crl.pem
    • 吊销证书:openssl ca -config openssl.cnf -revoke badcert.crt
  • 证书打包与分发:
    • 导出 PKCS#12:openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12
    • 提取证书/私钥:openssl pkcs12 -in server.p12 -nocerts -out server.key -nodesopenssl pkcs12 -in server.p12 -clcerts -nokeys -out server.crt
  • 文件落地与权限(示例):
    • sudo cp server.crt /etc/ssl/certs/ && sudo cp server.key /etc/ssl/private/
    • 建议权限:/etc/ssl/private/ 仅 root 可访问(如 600

三 配置安全的 SSL TLS

  • 服务端最低配置建议:
    • 协议:仅启用 TLS 1.2/1.3
    • 套件:优先 ECDHE 前向保密套件,示例(Nginx):
      • ssl_protocols TLSv1.2 TLSv1.3;
      • ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
      • ssl_prefer_server_ciphers on;
    • 启用 DH 参数ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
  • 客户端与连通性测试:
    • 查看握手与套件:openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_2
    • 基线检查:curl -I https://yourdomain.com
  • 配置落地与重启:
    • Nginx/Apache 指定证书与密钥路径后执行 sudo systemctl restart nginx/apache2
    • 防火墙放行 443/TCPsudo ufw allow 443/tcp

四 加密通信与数据保护

  • 保护自定义 TCP 服务:
    • 启动测试 TLS 服务:openssl s_server -www -key server.key -cert server.crt -port 4433
    • 客户端连接测试:openssl s_client -connect localhost:4433
  • 文件与备份加密:
    • 加密:openssl enc -aes-256-cbc -salt -pbkdf2 -in plaintext.txt -out ciphertext.bin -pass pass:YourStrongPass
    • 解密:openssl enc -d -aes-256-cbc -salt -pbkdf2 -in ciphertext.bin -out plaintext.txt -pass pass:YourStrongPass
  • 客户端证书固定(防中间人):在客户端将服务器公钥/证书指纹固定,或在应用层实现证书固定策略。

五 审计监控与持续合规

  • 系统审计:启用 auditd,对证书与私钥等关键文件设置审计规则,使用 ausearch 检索异常访问。
  • 漏洞扫描与服务暴露面检查:定期用 nmap/OpenVAS/Nessus 扫描开放端口与弱配置。
  • 强制访问控制:结合 SELinux/AppArmor 限制服务对证书、密钥与配置文件的访问范围。
  • 日志与告警:集中收集与监控 TLS 握手失败、证书即将过期等事件,结合 Logwatch/Fail2ban 做自动化响应。

0