Ubuntu Jenkins安全设置指南
首先在Ubuntu上安装Jenkins及依赖的Java环境(Jenkins需Java 11及以上版本):
sudo apt update
sudo apt install openjdk-11-jdk -y
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins -y
安装完成后,启动Jenkins服务并设置开机自启:
sudo systemctl start jenkins
sudo systemctl enable jenkins
定期通过sudo apt update && sudo apt upgrade jenkins更新Jenkins至最新版本,修复已知安全漏洞。
登录Jenkins管理界面(默认地址http://<服务器IP>:8080),进入Manage Jenkins > Configure Global Security:
进入Manage Jenkins > Manage Plugins > Available,搜索“Role-based Authorization Strategy”,点击“Install without restart”完成安装。
project-*)匹配多个项目;dev-user添加到“Developer”项目角色,将admin-user添加到“Overall Administer”全局角色)。使用ufw(Uncomplicated Firewall)开放Jenkins默认端口(8080),限制访问来源:
sudo ufw allow from <允许的IP段> to any port 8080/tcp
sudo ufw enable
sudo ufw reload
例如,仅允许公司内网(192.168.1.0/24)访问:sudo ufw allow from 192.168.1.0/24 to any port 8080/tcp。
为避免数据传输泄露,配置HTTPS访问:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /var/lib/jenkins/jenkins.key -out /var/lib/jenkins/jenkins.crt
sudo chown jenkins:jenkins /var/lib/jenkins/jenkins.key /var/lib/jenkins/jenkins.crt
sudo chmod 600 /var/lib/jenkins/jenkins.key
/etc/default/jenkins,修改JENKINS_ARGS:JENKINS_ARGS="--httpPort=-1 --httpsPort=8443 --httpsKeyStore=/var/lib/jenkins/jenkins.keystore --httpsKeyStorePassword=yourpassword"
将证书转换为JKS格式(需安装keytool):sudo keytool -importkeystore -srckeystore /var/lib/jenkins/jenkins.key -destkeystore /var/lib/jenkins/jenkins.keystore -deststoretype JKS
重启Jenkins生效:sudo systemctl restart jenkins。在Configure Global Security的“CSRF Protection”部分,保持“Enable proxy compatibility”选项勾选,防止跨站请求伪造攻击。
/var/log/jenkins/jenkins.log),使用tail -f /var/log/jenkins/jenkins.log实时查看异常行为。Java VisualVM或JConsole监控Jenkins内存、CPU使用情况,避免因资源耗尽导致服务中断。/etc/default/jenkins,修改JENKINS_USER为非root用户(如jenkins):JENKINS_USER=jenkins
重启Jenkins:sudo systemctl restart jenkins。/var/lib/jenkins)和作业数据,防止数据丢失。