1. 保持Jenkins及插件更新
定期更新Jenkins至最新稳定版本及所有插件,及时修补已知安全漏洞。可通过sudo apt update && sudo apt upgrade jenkins命令完成更新。
2. 启用并配置访问控制
- 启用安全功能:进入Jenkins“管理Jenkins”→“全局安全配置”,勾选“启用安全性”。
- 选择身份验证方式:优先使用LDAP、Unix用户/组数据库或Jenkins内置用户数据库(小型团队适用),避免匿名访问。
- 基于角色的权限管理:安装“Role-based Authorization Strategy”插件,按角色(如管理员、开发者、观察者)分配权限(如构建、取消构建、配置Jenkins),实现精细化管控。
3. 安全存储敏感凭据
使用“Credentials Binding Plugin”或“Secrets Management”功能,将用户名、密码、SSH密钥等敏感信息加密存储,避免硬编码在脚本或配置文件中。
4. 配置网络与防火墙
- 限制端口访问:使用
ufw或iptables配置防火墙,仅开放Jenkins Web界面端口(默认8080)和Agent通信端口(默认50000),拒绝其他未授权入站连接。
- 启用SSL加密:通过Let’s Encrypt获取免费证书或使用自签名证书,配置Jenkins HTTPS访问,防止中间人攻击。
5. 强化系统级安全
- 禁用root远程登录:修改
/etc/ssh/sshd_config文件,设置PermitRootLogin no,并重启SSH服务。
- 使用SSH密钥认证:为SSH服务配置密钥对认证,替代密码登录,提升系统访问安全性。
- 强化密码策略:通过PAM模块要求密码包含字母、数字和特殊字符组合,设置密码有效期(如90天),避免弱密码风险。
6. 隔离构建环境
避免在Jenkins控制器(主节点)上运行敏感构建任务,推荐使用“代理”(Agent)节点执行任务。控制器仅负责调度,代理节点隔离运行构建脚本,减少对操作系统和文件的访问权限。
7. 定期审计与监控
- 检查审计日志:定期查看Jenkins“管理Jenkins”→“系统日志”,监控用户登录、构建操作、配置变更等关键事件,及时发现异常行为。
- 设置监控告警:使用Prometheus+Granafa或Zabbix等工具监控Jenkins服务器资源使用情况(CPU、内存、磁盘),设置阈值告警,提前预警潜在风险。
8. 管理插件安全
- 仅安装必要插件:避免安装未使用的插件,减少攻击面。
- 定期更新插件:通过“管理Jenkins”→“管理插件”检查插件更新,优先更新安全补丁。
- 移除废弃插件:删除不再维护或存在已知漏洞的插件,防止被恶意利用。