Negar pedidos para outros domínios no Apache 2

4

Digamos que eu tenha o xy.com rodando em um servidor desenvolvido pelo Apache. É o host virtual padrão.
Agora alguém reescreveu seu arquivo hosts para redirecionar o yz.com para o IP do meu servidor. Como o meu servidor não sabe nada sobre o yz.com, ele apenas o resolve para o host virtual padrão. Então, neste caso, yz.com/hello get's foi resolvido para xy.com/hello e ele tenta servir a página do meu site / hello. Existe uma maneira (talvez com um RewriteRule ou algo assim) para desativar solicitações solicitando yz.com do meu servidor? Dê a eles um 403 por exemplo ou qualquer coisa, apenas não deixe nada através do Apache, a menos que esteja solicitando xy.com.
Estou usando a versão mais recente do Apache no Ubuntu LTS.

    
por Rickye 08.05.2014 / 14:28

3 respostas

5

Por que não simplesmente alterar o VHost padrão para negar um?

<VirtualHost *:80>
    ServerName lol.no
    DocumentRoot /var/empty/httpd
    <Location />
        Deny from all
        Allow from none
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ...your VHost goes here...
</VirtualHost>
    
por 08.05.2014 / 15:36
5

Por que xy.com é o padrão se você não quer que seja?

Adicione um novo host virtual padrão que não faça nada, mas retorne um 404.

Em seguida, adicione xy.com como uma entrada de host virtual. Ele só será usado se solicitado.

    
por 08.05.2014 / 15:00
2

Um RewriteRule seria algo assim:

RewriteCond %{HTTP_HOST} !^your\.site\.com$ [NC]
RewriteRule .* - [F]

Outra solução seria adicionar um novo host virtual padrão que responda com 403 a qualquer solicitação.
Apenas solicitações correspondentes iriam para o seu Virtual Host real.

    
por 08.05.2014 / 14:42