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注入漏洞)。