1. 保持Jenkins及插件更新
定期更新Jenkins至最新稳定版本及所有插件,及时修补已知安全漏洞。可通过sudo apt update && sudo apt upgrade jenkins命令更新Jenkins,插件管理中筛选“可更新”项并逐一升级。
2. 强化访问控制与权限管理
- 启用全局安全:进入“Manage Jenkins”→“Configure Global Security”,勾选“Enable security”,避免未授权访问。
- 配置身份验证:选择合适的认证方式(如“Jenkins’ own user database”“LDAP”或“Unix user/group database”),推荐使用LDAP集成企业级身份体系。
- 基于角色的权限分配:安装“Role-Based Strategy”插件,创建角色(如管理员、开发人员、运维人员),按角色分配权限(如开发人员仅能触发构建,管理员可配置系统)。
- 禁用匿名访问:在安全配置中取消“Anonymous user”权限,确保所有操作需登录验证。
3. 安全存储与管理凭据
使用“Credentials Binding”插件加密存储敏感信息(如API Tokens、SSH密钥、数据库密码),避免明文暴露。通过“Manage Jenkins”→“Manage Credentials”统一管理凭据,按需分配给用户或节点。
4. 配置网络与防火墙防护
- 限制端口访问:使用
ufw工具仅开放必要端口(Jenkins默认8080、Agent通信50000),执行sudo ufw allow 8080/tcp && sudo ufw enable开启防火墙。
- 使用SSL加密通信:配置SSL证书(如Let’s Encrypt或自签名证书),在Jenkins配置文件中指定证书路径(
/etc/ssl/certs/jenkins.crt、/etc/ssl/private/jenkins.key),强制HTTPS访问。
5. 系统级安全加固
- 强化SSH登录:编辑
/etc/ssh/sshd_config,设置PermitRootLogin no(禁用root远程登录)、PermitEmptyPasswords no(禁止空密码),使用密钥对认证替代密码登录。
- 隔离构建环境:避免在Jenkins控制器上直接构建敏感代码,通过“Manage Jenkins”→“Manage Nodes”添加代理节点(Agent),将构建任务分发至代理执行,限制控制器对操作系统文件的访问。
6. 监控与审计
- 启用审计日志:在Jenkins配置中开启审计日志(“Manage Jenkins”→“Configure System”→“Audit Log”),记录用户操作(如登录、构建触发、配置修改),便于追溯异常行为。
- 定期安全审计:检查Jenkins日志(
/var/log/jenkins/jenkins.log)及系统日志,监控未授权访问、构建失败等异常事件,及时响应安全威胁。
7. 插件安全管理
- 精简插件安装:仅安装业务必需的插件(如Pipeline、GitHub Integration),移除未使用的插件,减少攻击面。
- 定期更新插件:通过“Manage Jenkins”→“Plugin Manager”检查插件更新,优先升级存在安全漏洞的插件(如标记为“Vulnerable”的插件)。