1. 系统基础安全加固
sudo yum update -y
(CentOS)或sudo apt update && sudo apt upgrade -y
(Ubuntu),修复系统内核及软件包漏洞,降低被攻击风险。firewall-cmd
(CentOS)或ufw
(Ubuntu)开放Jenkins必要端口(默认8080管理界面、50000 Agent通信端口),关闭无关端口;例如CentOS下执行sudo firewall-cmd --permanent --add-port=8080/tcp --add-port=50000/tcp && sudo firewall-cmd --reload
。sudo yum install -y openssh-server
),修改/etc/ssh/sshd_config
限制访问:AllowUsers jenkins
(仅允许jenkins用户登录)、Port 2222
(修改默认端口),禁用root远程登录(PermitRootLogin no
),启用公钥认证(PubkeyAuthentication yes
),重启SSH服务(sudo systemctl restart sshd
)。2. Jenkins自身配置强化
Manage Jenkins
→Configure Global Security
,勾选“Enable security”,避免匿名访问;建议选择“Role-Based Strategy”(基于角色的访问控制)或“Matrix Authorization Strategy”(矩阵授权),细化用户对项目、节点、插件的操作权限(如管理员拥有全部权限,开发人员仅能触发构建)。/etc/sysconfig/jenkins
(CentOS)或/etc/default/jenkins
(Ubuntu),修改JENKINS_PORT
为非标准端口(如8081),减少自动化扫描攻击。Manage Jenkins
→Manage Plugins
,禁用未使用的插件(如不用的SCM插件、第三方集成插件),降低插件漏洞带来的风险;定期审查插件列表,移除过期或不安全的插件。3. 授权与访问控制
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept' && sudo firewall-cmd --reload
。4. 数据传输与存储安全
/etc/sysconfig/jenkins
中的JENKINS_PREFIX
为/jenkins
,并在Web服务器(如Nginx)中配置反向代理,强制用户通过https://
访问Jenkins,防止数据(如密码、构建日志)在传输过程中被窃取。chattr +i
命令锁定Jenkins敏感文件(如/var/lib/jenkins/secrets/initialAdminPassword
、/var/lib/jenkins/config.xml
),防止未经授权的修改;例如执行sudo chattr +i /var/lib/jenkins/secrets/initialAdminPassword
。5. 日志与监控
Manage Jenkins
→Configure System
,启用“Audit Trail”功能,记录用户的关键操作(如登录、修改配置、触发构建),日志保存路径为/var/log/jenkins/audit.log
(需手动创建目录并赋予权限);定期审查日志,发现异常操作(如频繁登录失败、非工作时间触发构建)及时响应。6. 备份与恢复
/var/backup/jenkins
),使用cron
定时任务每天凌晨2点备份Jenkins配置和工作目录(/var/lib/jenkins
),例如执行sudo crontab -e
添加0 2 * * * tar -czvf /var/backup/jenkins/$(date +\%F).tar.gz /var/lib/jenkins
;备份文件需存储在异地(如云存储),防止本地磁盘损坏导致数据丢失。7. 定期更新与补丁管理
Manage Jenkins
→Manage Plugins
→Available
查看),升级至最新稳定版本,修复已知安全漏洞(如远程代码执行、SQL注入漏洞)。