Como posso tornar Jenkins inacessível ao mundo exterior?

2

Em um servidor de desenvolvimento, instalei a ferramenta Jenkins para testes automatizados. Isso é executado na porta 8080. Se eu for para www.mysite.com:8080 , posso ver o painel de comando para isso. Eu quero tornar isso inacessível para o mundo exterior por senha protegendo-o usando o Apache. (Meu servidor está executando o Ubuntu 12.04 LTS). Eu li através da seguinte página para conselhos gerais e especificamente sobre o tema da segurança eles sugira as seguintes configurações:

<VirtualHost *:80>
    ServerAdmin [email protected]
    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> 

Meu arquivo Apache atualmente tem as seguintes configurações:

<VirtualHost *:80>
        # Admin email, Server Name (domain name), and any aliases
        ServerAdmin [email protected]
        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>

Eu não consegui fazer com que a abordagem sugerida funcionasse sem um erro (apesar de não haver mensagens no console ou nos logs), então adicionei as seguintes linhas:

<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>

E no meu arquivo .htpasswd , coloco as seguintes linhas:

john:n5MfE
dave:9fluR

Eu reiniciei o Apache, mas a porta 8080 ainda é acessível sem uma senha. Estou seguindo o procedimento correto?

    
por celenius 23.03.2013 / 16:01

2 respostas

2

Você deve usar o programa htpasswd para criar e adicionar usuários ao arquivo .htpasswd, já que as senhas de texto não são suportadas no linux, por exemplo,

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

criará o arquivo e adicionará o usuário john com a senha que você fornecer. Você pode então adicionar outros usuários como este

htpasswd /home/.htpasswd dave
New password:
Re-type new password:
Adding password for user dave
    
por 23.03.2013 / 16:15
2

Não tenho certeza se <Proxy> diretiva processa a autenticação HTTP básica (a documentação sugere apenas restrições por IP / domínio). Eu acho que você deveria usar apenas um método geral como:

<Location />
    AuthType Basic
    AuthName "Dev Server"
    AuthUserFile "/home/.htpasswd"
    Require valid-user
</Location>
    
por 23.03.2013 / 16:56