CentOS环境下Jenkins部署安全策略
/etc/passwd文件,锁定或删除无用的超级账户(如games、ftp等),减少系统潜在风险。/etc/login.defs文件,设置口令最小长度(≥10位)、复杂度要求(包含大小写字母、数字、特殊字符),并定期强制更换口令。chattr +i命令将/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow设为不可修改,防止未授权篡改。/etc/pam.d/su文件,添加auth required pam_wheel.so use_uid,仅允许wheel组用户使用su切换至root,降低提权风险。/etc/profile文件,添加TMOUT=300(5分钟无操作自动注销),避免root账户长期闲置被恶意利用。Manage Jenkins→Configure Global Security,勾选“Enable security”,开启安全防护。Role-based Authorization Strategy插件,定义角色(如Admin、Developer、Viewer),为不同角色分配精细化权限(如项目构建、配置修改、日志查看),避免权限滥用。firewall-cmd命令开放Jenkins默认端口(8080),并限制访问源IP(如仅允许公司内网IP访问):sudo firewall-cmd --permanent --zone=public --add-port=8080/tcpsudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080" accept'sudo firewall-cmd --reloadJenkins.xml或通过Web界面设置),避免数据在传输过程中被窃取或篡改。/etc/ssh/sshd_config文件,设置PubkeyAuthentication yes、PasswordAuthentication no,并添加允许访问的Jenkins用户:AllowUsers jenkins,重启SSH服务使配置生效。Credentials Binding插件,将敏感信息(如API密钥、数据库密码、SSH私钥)存储在Jenkins凭据库中,使用时通过${VAR}语法引用,避免硬编码在脚本或配置文件中。config.xml),可使用Jenkins Cipher Tool进行加密,防止敏感信息泄露。Jenkins Audit to Database插件,将用户操作(如登录、项目配置修改、构建触发)记录到数据库,便于后续追溯异常行为。ELK Stack(Elasticsearch+Logstash+Kibana)或Splunk等工具收集、分析Jenkins日志,设置告警规则(如频繁的失败登录尝试),及时发现潜在攻击。Prometheus+Grafana监控Jenkins服务器的CPU、内存、磁盘使用率及构建队列状态,快速响应资源瓶颈或异常。Manage Jenkins→Manage Plugins→Available),升级至最新稳定版本,及时修补已知安全漏洞。rsync或tar命令定期备份Jenkins核心目录(/var/lib/jenkins、/var/cache/jenkins),将备份文件存储至异地(如云存储),并定期测试备份恢复流程,确保数据可恢复。