Existe uma boa maneira de proteger o acesso a um servidor de temporariedade inteiro?

3

Eu tenho um servidor de teste e de produção que hospeda vários sites (usando o Apache2.2). Atualmente, tenho o DNS apontando stage.domainX.com para o servidor de temporariedade e *.domainX.com apontando para o servidor de produção.

Tudo parece estar funcionando muito bem, mas eu gostaria de poder proteger o acesso ao servidor de teste. Portanto, a menos que seja a pessoa certa, alguém que tente inserir stage.domainX.com deve ser proibido (e, se possível, ir para o servidor de produção).

E eu queria usar um nome de domínio em vez de um IP porque quero que os clientes possam visualizar melhor o site de teste (em vez de memorizar um endereço IP).

Existe uma boa maneira de lidar com isso? Ou, estou lidando com o processo de nome de domínio de preparação de uma maneira incomum?

P.S. Eu realmente queria gerenciar isso através de portas, mas eu não descobri uma maneira de fazer isso. Como, domainX.com:80 (padrão) vai para produção e domainX.com:9000 vai para a preparação. No entanto, não encontrei uma maneira de fazer isso no DNS (usando os nameservers / zones do GoDaddy).

    
por Stephen Watkins 31.03.2011 / 16:44

2 respostas

2

Usando o Apache, você pode simplesmente configurar as diretivas Allow e Deny do servidor de armazenamento temporário para restringir o acesso a endereços IP autorizados. Alternativamente, você pode colocar a coisa toda por trás da Autenticação HTTP (nome de usuário / senha ou certificados de cliente, se quiser ficar realmente chique). Pontos de bônus por usar uma página de erro "não autorizada" personalizada para redirecionar as pessoas para o site de produção.

Configurar o Apache para servir o site de teste em uma porta diferente também é uma opção, mas isso é apenas "segurança através da obscuridade", como usar o domínio stage.domainX.com - não impede que alguém encontre o site de teste se vá procurar.

< rant >
Note que mudar a porta NÃO É algo que você faz com DNS - é uma coisa de configuração do servidor web (Veja o manual do Apache para detalhes). DNS tem NENHUM CONCEITO de números de porta, é apenas um mapeamento de nome para IP (ou IP para nome) * - pet peeve.
* Existem algumas exceções limitadas, como registros SRV, mas estamos falando dos registros A ddress e CNAME
< / rant >

    
por 31.03.2011 / 17:22
2

Eu usei uma configuração do Apache como a seguinte com sucesso no passado; permite que certos endereços IP listados acessem livremente o site de teste sem fornecer credenciais de Autenticação Básica (por exemplo, você pode adicionar os endereços IP do seu escritório e do seu cliente), mas ainda permite o acesso baseado em senha se cliente está fora do escritório, por exemplo.

# Set NOAUTH environment-variable for certain IPs that are allowed without credentials
SetEnvIf Remote_Addr 11.22.33.44 NOAUTH=1

# Staging
<VirtualHost *:80>
    ServerName    stage.domainX.com
    DocumentRoot  /var/www/stage.domainX.com

    # Access restrictions
    <Location />
        Order allow,deny
        # Anyone with the NOAUTH environment variable is allowed
        Allow from env=NOAUTH

        # Anyone that has valid credentials is allowed
        AuthType      Basic
        AuthName      "DomainX Staging"
        AuthUserFile  /etc/apache2/staging.domainX.com.passwd
        Require valid-user

        # Either of the above is fine
        Satisfy Any
    </Location>

    # ... other directives ...
</VirtualHost>

# Production
<VirtualHost *:80>
    ServerName    domainX.com
    DocumentRoot  /var/www/domainX.com

    # ... other directives ...
</VirtualHost>
    
por 31.03.2011 / 19:56