1. 系统基础安全加固
sudo yum update -y(CentOS)或sudo apt update && sudo apt upgrade -y(Debian)更新系统;通过sudo apt update && sudo apt upgrade jenkins(Debian)或sudo yum update jenkins(CentOS)更新Jenkins至最新版本,修复已知安全漏洞。firewall-cmd开放Jenkins默认端口(8080)和Agent通信端口(50000),并限制仅允许信任IP访问。例如:sudo firewall-cmd --permanent --add-port=8080/tcp --add-port=50000/tcp,然后sudo firewall-cmd --reload。若使用ufw,可执行sudo ufw allow 8080/tcp。2. 认证与访问控制
Manage Jenkins→Configure Global Security,勾选“Enable security”,禁止匿名访问(避免未授权查看或操作)。LDAP Plugin)或Active Directory(通过Active Directory Plugin),实现统一身份认证。Overall Administer)、普通用户(仅Overall Read+Job Read/Build);project-.*),分配特定用户或组对项目的Build、Cancel、View等权限,实现项目级隔离。3. 用户权限精细化管理
Manage Jenkins→Manage Users,添加用户(设置强密码,包含大小写字母、数字、特殊字符,长度≥10位);通过Manage and Assign Roles→Manage Groups创建组(如dev-team、ops-team),将用户添加至对应组。Manage and Assign Roles→Assign Roles中,为组分配角色。例如:dev-team组赋予Overall Read、Job Build、Job Cancel权限(允许构建和取消自己的项目);ops-team组赋予Overall Read、Job View权限(仅能查看项目)。4. 敏感信息与通信安全
withCredentials绑定凭据,避免硬编码在脚本中。/etc/sysconfig/jenkins)修改JENKINS_PORT为8443,添加--httpsPort=8443 --httpsCertificate=/path/to/cert.pem --httpsPrivateKey=/path/to/key.pem参数,重启Jenkins生效。Manage Jenkins→Configure Global Security,将“TCP port for JNLP agents”设置为“Fixed”(如50000),避免随机端口带来的安全风险。5. 日志与监控
Manage Jenkins→Manage Audit Logs查看日志,重点关注异常操作(如非工作时间的大规模构建、未授权的配置修改),及时响应安全事件。6. 备份与恢复
/var/lib/jenkins(Linux)目录,使用rsync、tar或专业备份工具(如Veeam)定期备份至异地或云存储。例如:sudo tar -czvf /backups/jenkins_$(date +%F).tar.gz /var/lib/jenkins,并通过cron设置每日凌晨2点自动备份。7. 其他安全优化
/etc/sysconfig/jenkins(CentOS)或/etc/default/jenkins(Debian),修改JENKINS_PORT为非标准端口(如8081),减少扫描攻击风险。修改后重启Jenkins:sudo systemctl restart jenkins。root改为普通用户(如jenkins)。编辑/etc/sysconfig/jenkins,修改JENKINS_USER=jenkins,然后执行sudo chown -R jenkins:jenkins /var/lib/jenkins /var/cache/jenkins /var/log/jenkins,重启Jenkins。Manage Jenkins→Manage Plugins,移除未使用的插件(如旧版插件、功能重复的插件),减少攻击面。定期审查插件更新,及时安装安全补丁。