保持系统和OpenSSL更新
定期运行sudo apt update && sudo apt upgrade更新Ubuntu系统和所有相关软件包,确保OpenSSL及依赖库的安全补丁及时应用。优先使用Ubuntu官方仓库的最新稳定版OpenSSL,若需更高级的安全特性,可编译安装最新版本(需谨慎操作以避免系统稳定性问题)。
配置安全的SSL/TLS协议与密码套件
编辑OpenSSL主配置文件(通常位于/etc/ssl/openssl.cnf),在[system_default_sect]部分明确禁用不安全的SSLv2、SSLv3协议,限制仅使用TLSv1.2及以上版本,并指定高强度密码套件。例如:
MinProtocol = TLSv1.2
CipherString = HIGH:!aNULL:!MD5:!RC4:!3DES
对于Ubuntu 22.04及以上版本,可通过CipherString = DEFAULT:@SECLEVEL=2启用系统默认的安全级别(自动禁用弱算法)。
使用强密钥与证书
生成密钥时,采用足够长的位数(如RSA 4096位)并设置强密码。例如:
openssl req -x509 -newkey rsa:4096 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt -days 365 -nodes -config /etc/ssl/openssl.cnf
配置中通过default_md = sha256(或更高强度的sha512)设置默认消息摘要算法,避免使用MD5、SHA1等弱哈希算法。
严格限制访问权限
通过chmod和chown命令限制OpenSSL配置文件与密钥的访问权限。例如:
sudo chmod 600 /etc/ssl/private/server.key /etc/ssl/openssl.cnf
sudo chown root:root /etc/ssl/private/server.key /etc/ssl/openssl.cnf
确保仅root用户可读取私钥文件,防止未授权访问。
启用日志与监控
在OpenSSL配置文件的[log]部分指定日志文件路径(如file = /var/log/openssl.log),启用详细日志记录(包括错误、警告信息)。定期检查日志文件,结合fail2ban等工具监控异常访问行为(如频繁的证书验证失败)。
定期审计与测试
使用sslscan、nmap等工具定期扫描OpenSSL服务,验证配置的安全性。例如:
sudo apt install sslscan
sslscan --tls-version all yourdomain.com
检查是否禁用了弱协议(如SSLv2)、弱密码套件(如RC4),并确保TLS版本符合安全标准。同时,定期审计openssl.cnf配置文件的变更,避免未经授权的修改。
强化密码策略
在openssl.cnf中调整密码策略参数,提升密钥生成的安全性。例如:
default_md = sha256
min_length = 12
char_class = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()
上述配置要求密码长度至少为12位,包含大小写字母、数字和特殊字符,增强密钥的抗破解能力。
使用防火墙限制访问
通过ufw(Uncomplicated Firewall)限制对OpenSSL服务(如HTTPS的443端口)的访问,仅允许可信IP地址连接。例如:
sudo ufw allow from trusted_ip to any port 443/tcp
sudo ufw enable
减少暴露面,降低被恶意扫描或攻击的风险。