N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
Cet article fait suite à l’article suivant : Mise en place d’une plateforme d’intégration continue ( partie 2)
Une fois jenkins installé, celui-ci est disponible pour tout le monde et par défaut via l’ip de votre serveur sur le port 8080
En tapant http://ip-de-votre-serveur:8080 , n’importe qui visualisera donc les projets jenkins.
Pour sécuriser cela, nous allons mettre en place un reverse-proxy apache, qui communiquera avec le serveur jenkins.
Nous pourrons ainsi mettre en place une authentification basique htaccess / htpassword pour limiter les accès.
( Cela nécessite donc l’installation d’apache au préalable)
Dans mon exemple, je souhaite que le sous-domaine http://ci.example.com renvoie vers jenkins.
(Il faut donc au préalable faire pointer ce sous-domaine sur votre serveur )
Configuration du proxy
Pour commencer il faut activer le mode proxy et proxy_http d’apache, en saisissant les commandes suivantes
sudo a2enmod proxy sudo a2enmod proxy_http |
Passons ensuite à la création du fichier de notre vhost dans /etc/apache2/sites-availables/ créons un fichier jenkins.conf
Dans lequel nous allons mettre le contenu suivant
<VirtualHost *:80> ServerName ci.example.com ProxyPass / http://localhost:8080/ nocanon ProxyPassReverse / http://localhost:8080/ ProxyPreserveHost on AllowEncodedSlashes NoDecode <Proxy *> Order deny,allow Allow from all </Proxy> </VirtualHost> |
activer le vhost
sudo a2ensite jenkins |
Pour finir redémarrer apache
sudo service apache2 restart |
Testez l’url http://ci.example.com dans votre navigateur, et celle-ci doit bien renvoyer vers votre serveur jenkins.
Sécurisation des accès.
Notre vhost est à présent en place, mais jenkins est toujours accessible sans restriction via les urls : http://ci.example.com et http://ip-de-votre-serveur:8080
Nous allons donc mettre en place une authentification avant l’affichage du domaine ci.example.com
Notre fichier htacces sera situé dans /home
Créons un utilisateur « jenkins » avec le mot de passe souhaité
sudo htpasswd -c /home/.htpasswd jenkins |
Puis il faut mettre à jour le fichier de configuration apache pour prendre en compte cette restriction.
ServerName ci.example.com ProxyPass / http://localhost:8080/ nocanon ProxyPassReverse / http://localhost:8080/ ProxyPreserveHost on AllowEncodedSlashes NoDecode <Proxy *> AuthType basic AuthName "jenkins" AuthBasicProvider file AuthUserFile "/home/.htpasswd" Require valid-user </Proxy> </VirtualHost> |
Recharger la configuration d’apache pour prendre en compte ces nouveaux paramètres.
sudo service apache2 reload |
Un mot de passe vous sera à présent demandé pour accéder à l’adresse http://ci.example.com
Nous allons maintenant limiter les accès à jenkins uniquement depuis le localhost pour ne plus permettre d’y accéder depuis l’adresse http://ip-de-votre-serveur:8080
Pour cela editer le fichier /etc/default/jenkins/
sudo vim /etc/default/jenkins |
Dans la dernière ligne JENKINS_ARGS rajouter l’option suivante : – -httpListenAddress=127.0.0.1
Ce qui vous donnera par exemple la configuration suivante :
JENKINS_ARGS="--webroot=$JENKINS_RUN/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --httpListenAddress=127.0.0.1" |
Redémarrer jenkins
sudo service jenkins restart |
Vous pouvez à présent constater que jenkins n’est plus accessible depuis l’adresse http://ip-de-votre-serveur:8080 , mais uniquement depuis le sous-domaine.
L’accès à jenkins est donc uniquement possible depuis le sous-domaine précédemment créé et protégé par un mot de passe.