CentOS Jenkins安全设置要点
adm、lp等),仅保留必需的管理员账户,降低系统被非法提权的风险。/etc/login.defs文件,强制要求用户设置复杂口令(包含大写字母、小写字母、数字和特殊字符,长度≥10位),并定期更换。chattr +i命令锁定/etc/passwd、/etc/shadow、/etc/group等口令文件,防止未授权修改;设置root账户自动注销时限(通过/etc/profile中的TMOUT参数,如设置为300秒),避免长时间未操作导致的安全隐患。/etc/pam.d/su文件,添加auth required pam_wheel.so use_uid,仅允许wheel组的用户使用su切换至root,缩小root权限的使用范围。/etc/inittab文件,注释或删除ca::ctrlaltdel:/sbin/shutdown -t3 -r now行,防止物理接触或远程误操作导致系统重启。firewalld开放Jenkins默认端口(8080),并限制访问源IP(如仅允许公司内网IP段),减少外部非法访问的风险。命令示例:sudo firewall-cmd --permanent --add-port=8080/tcp --add-source=192.168.1.0/24;sudo firewall-cmd --reload。/etc/sysconfig/jenkins文件,将JENKINS_USER设置为专用用户(如jenkins),并更改Jenkins数据目录(/var/lib/jenkins、/var/cache/jenkins、/var/log/jenkins)的所有权至该用户,避免以root身份运行Jenkins带来的权限过高风险。命令示例:sudo chown -R jenkins:jenkins /var/lib/jenkins。admin、developer、viewer),并为每个角色分配权限(如admin拥有Overall Administer权限,developer拥有Item Build、Item Read权限);② 创建项目角色(如project1-developer),通过正则表达式匹配项目名称(如project1.*),分配给对应开发人员;③ 将用户添加至相应角色,实现细粒度的访问控制。admin账户,创建新的管理员账户(如jenkins-admin),并设置强密码,避免默认账户被恶意利用。sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/jenkins.key -out /etc/ssl/certs/jenkins.crt;编辑Jenkins配置文件(/etc/sysconfig/jenkins),修改JENKINS_PORT为443,添加--httpsPort=443 --sslCertificate=/etc/ssl/certs/jenkins.crt --sslPrivateKey=/etc/ssl/private/jenkins.key参数,重启Jenkins服务。${credentialsId}引用,确保敏感信息不泄露。/var/backup/jenkins),使用cron定时任务每天凌晨2点备份Jenkins数据(包括配置、构建日志、工件)。命令示例:0 2 * * * /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot /var/cache/jenkins/war --httpPort=8080 save all;备份文件需异地存储(如云存储),防止本地磁盘损坏导致数据丢失。pipeline { agent any stages { stage('Dependency Check') { steps { dependencyCheck additionalArguments: '--format ALL', odcInstallation: 'OWASP_DC' } } } };扫描结果将生成报告,提示高风险漏洞及修复建议。/var/log/jenkins/audit.log)和保留期限(如30天)。journalctl命令实时查看Jenkins服务日志(journalctl -u jenkins -f),或通过ELK(Elasticsearch+Logstash+Kibana)堆栈集中收集和分析系统日志,及时发现异常行为(如频繁的登录失败、未经授权的访问尝试)。pipeline { agent { docker { image 'maven:3.8.6-openjdk-11' } } stages { stage('Build') { steps { sh 'mvn clean package' } } } };确保Docker镜像来自可信仓库(如Docker Hub官方镜像),并定期扫描镜像漏洞。