Назад | Перейти на главную страницу

Как сделать Дженкинса недоступным для внешнего мира?

На сервере разработки я установил инструмент Jenkins для автоматического тестирования. Это работает на порту 8080. Если я перейду на www.mysite.com:8080 Я вижу для этого командную панель. Я хочу сделать это недоступным для внешнего мира, защитив паролем с помощью Apache. (Мой сервер работает под управлением Ubuntu 12.04 LTS). Я прочитал следующее страница за общие советы и особенно по теме безопасности они предлагать следующие настройки:

<VirtualHost *:80>
    ServerAdmin your@email.address.com
    DocumentRoot "/opt/apache/httpd/htdocs"
    ServerName jenkins.yourdomain.com
    ErrorLog "logs/jenkins-error_log"

    ProxyPass /jenkins/ ajp://127.0.0.1:8102/jenkins/
    ProxyPassReverse /jenkins/ ajp://127.0.0.1:8102/jenkins/
    <Location />
        Order allow,deny
        Allow from all
    </Location>
    <Location /jenkins/>
         AuthType basic
         AuthName "jenkins"
         AuthUserFile "/opt/apache/httpd/conf/.htpasswd"
    </Location>
</VirtualHost> 

Мой файл Apache в настоящее время имеет следующие настройки:

<VirtualHost *:80>
        # Admin email, Server Name (domain name), and any aliases
        ServerAdmin tech@mysite.com
        ServerName www.mysite.com
        ServerAlias mysite.com

        # Index file and Document Root (where the public files are located)
        DirectoryIndex index.html index.php
        DocumentRoot /var/www

        # Log file locations
        LogLevel warn
        ErrorLog /var/log/apache/error.log
        CustomLog /var/log/apache/access.log combined

</VirtualHost>

Мне не удалось заставить предложенный подход работать без ошибок (хотя сообщений в консоли или в журналах нет), поэтому я добавил следующие строки:

<VirtualHost *:8080>
    ServerName www.mysite.com
    ProxyPass / http://www.dev.mysite.com:8080/
    ProxyPassReverse / www.dev.mysite.com:8080/
    ProxyPreserveHost on
    <Proxy *>
        AuthType Basic
        AuthName "Dev Server"
        AuthUserFile "/home/.htpasswd"
        Require valid-user
    </Proxy>
</VirtualHost>

И в моем .htpasswd файл я помещаю следующие строки:

john:n5MfE
dave:9fluR

Затем я перезапустил Apache, но порт 8080 по-прежнему доступен без пароля. Я следую правильной процедуре?

Я не уверен <Proxy> указатель директивы HTTP Basic auth (в документации предлагается только ограничение по IP / домену). Я думаю, вам следует просто использовать общий метод, например:

<Location />
    AuthType Basic
    AuthName "Dev Server"
    AuthUserFile "/home/.htpasswd"
    Require valid-user
</Location>

Вы должны использовать программу htpasswd для создания и добавления пользователей в файл .htpasswd, так как пароли в виде открытого текста не поддерживаются в Linux, например.

htpasswd -c /home/.htpasswd john
New password:
Re-type new password:
Adding password for user john

создаст файл и добавит пользователя john с указанным вами паролем. Затем вы можете добавить других таких пользователей

htpasswd /home/.htpasswd dave
New password:
Re-type new password:
Adding password for user dave