Apache VirtualHost Blockhole (Come todas as solicitações em todas as portas em um IP)

1

Estou exausto. Eu passei as últimas duas horas correndo atrás de um ganso que eu tenho andado de um lado para o outro no ano passado. Aqui está o objetivo, colocar o mais sucinto possível.

Passo 1: Arquivo HOSTS:

127.0.0.5 NastyAdServer.com
127.0.0.5 xssServer.com
127.0.0.5 SQLInjector.com
127.0.0.5 PornAds.com
127.0.0.5 OtherBadSites.com
…

Etapa 2: Apache httpd.conf

<VirtualHost 127.0.0.5:80>
    ServerName BlackHole
    DocumentRoot "X:\Docs\…\BlackHole"
    RewriteEngine On
    RewriteRule (\.(gif|jpg|png|jpeg)$) /p.png [L]
    RewriteRule (.*) /ad.htm [L]
</VirtualHost>

Então, basicamente, o que acontece é que o arquivo HOSTS redireciona os domínios designados para o host local, mas para um endereço IP de loopback específico. O Apache atende a qualquer solicitação nesse endereço e exibe um gráfico de pixel transparente ou um arquivo HTML vazio. Assim, qualquer página ou gráfico em qualquer um dos sites ruins é substituído por nada (em outras palavras, um anúncio / malware / porn / etc. Bloqueador).


Isso funciona muito bem (e tem sido para mim há anos). O problema é que essas coisas ruins não estão mais limitadas apenas ao tráfego HTTP. Por exemplo:

<script src="http://NastyAdServer.com:99">or<iframesrc="https://PornAds.com/ad.html">
or a Trojan using
ftp://spammaster.com/[email protected];[email protected];[email protected]
or an app “phoning home” with private info in a crafted ICMP packet by pinging
CardStealer.ru:99

O tratamento de HTTPS é um aumento relativamente pequeno. Eu posso criar um VirtualHost separado como o descrito acima, substituindo a porta 80 por 443 e adicionando as diretivas SSL. Isso deixa as outras portas para serem tratadas.

Eu tentei usar * para a porta, mas depois recebi erros de sobreposição. Tentei redirecionar todas as solicitações para o servidor HTTPS e vice-versa, mas não trabalhei; as solicitações de SSL não seriam redirecionadas corretamente, ou as solicitações de HTTP deram o erro Você está falando HTTP simples para uma porta do servidor ativada por SSL ... . Além disso, não consigo descobrir uma maneira de testar se outras portas estão sendo redirecionadas com sucesso (eu poderia tentar usar um navegador, mas e quanto a FTP, ICMP, etc.?)


Percebo que posso usar apenas um bloqueador de porta (por exemplo, ProtoWall, PeerBlock etc.), mas há dois problemas com isso. Primeiro, estou bloqueando domínios com esse método, não endereços IP. Por isso, para usar um bloqueador de porta, eu precisaria obter o IP de cada e todo domínio e atualizar o tema com frequência. Segundo, usando esse método, posso fazer com que o Apache mantenha registros de todos os anúncios / malware / spam / etc. pedidos para análise futura (meus logs atuais do BlackHole já são 466MB agora).

Agradeço qualquer ajuda para configurar com sucesso um blackhole Apache VirtualHost. Obrigado.

    
por Synetech 08.05.2010 / 20:56

2 respostas

1

Solução interessante .. Eu gosto disso! Você deve usar um endereço diferente de localhost, no entanto.

Vincule outro IP ao NIC (ou use um segundo NIC) na caixa e configure o Apache para escutar nesse endereço, para as portas que você quiser. Curinga (*) deve funcionar. Em seguida, o único tráfego para esse endereço é direcionado pelo arquivo "spoof" do HOSTS e esse tráfego não interferirá em outros serviços (legítimos) que possam acessar o host local.

Além disso, você pode optar por fazer isso com o DNS e não com o arquivo HOSTS. Esta é IMHO uma melhor solução a longo prazo. Por fim, é mais provável que a solução mais fácil bloqueie o tráfego no seu firewall para esses domínios.

UPDATE - baseado em comentários. Sugiro que você use DOIS endereços IP diferentes, um para HTTP e outro para HTTPS. Peça a cada um que ouça todas as portas e direcione o tráfego para a porta apropriada. Em seguida, quando você adicionar o domínio para bloqueio ao arquivo HOSTS, defina-o como SSL / baunilha baseado no tipo de solicitação que acionou a adição da entrada.

    
por 08.05.2010 / 21:23
1

Você pode realmente simplificar as coisas redirecionando todos os códigos ErrorDocument e tipos de imagem de wildcaard para as mesmas páginas / imagens em branco como na imagem abaixo. Ele tenta combinar um dead-on primeiro, então permite que o routune do documento de erro seja um fall-through. (você poderia fazer tudo em rotinas de erro, suponho, mas eu acho que é um ácaro mais lento, como uma rotina de erro?) No final do seu http.conf, e em um endereço IP SEPARADO (use Listen 192.168.1.9:80 por exemplo, na minha configuração, que na rede 192.168.1, e o servidor principal está ligado. 10)

<VirtualHost 192.168.1.9:80>

ServerName adware
DocumentRoot /usr/local/httpsd/adware
CustomLog /dev/null common
ErrorLog /dev/null

<Directory "/usr/local/httpsd/adware">
AllowOverride none
Order allow,deny
Allow from all
</Directory>

AliasMatch /*.php /usr/local/httpsd/adware/no.html
AliasMatch /*.sql /usr/local/httpsd/adware/no.html
AliasMatch /*.html /usr/local/httpsd/adware/no.html
AliasMatch /*.htm /usr/local/httpsd/adware/no.html
AliasMatch /*.gif /usr/local/httpsd/adware/no.gif
AliasMatch /*.jpg /usr/local/httpsd/adware/no.jpg
AliasMatch /*.png /usr/local/httpsd/adware/no.png

ErrorDocument  400  /usr/local/httpsd/adware/no.html
ErrorDocument  401  /usr/local/httpsd/adware/no.html
ErrorDocument  403  /usr/local/httpsd/adware/no.html
ErrorDocument  404  /usr/local/httpsd/adware/no.html
ErrorDocument  405  /usr/local/httpsd/adware/no.html
ErrorDocument  414  /usr/local/httpsd/adware/no.html
ErrorDocument  500  /usr/local/httpsd/adware/no.html

</VirtualHost>

- funciona como um deleite para nós. O arquivo no.html é um texto do Figlet:

 _______     __
|   _   |.--|  |.-----.
|       ||  _  ||__ --|__ __
|___|___||_____||_____|__|__|

E as imagens são todas 1x1 respectivas imagens vazias, paleta de cores de 2.

E eu tenho o arquivo de hosts para vincular a lista de sites de blocos de anúncios convertidos em nossos principais dns que pega tudo em um nível de rede. Então, os visitantes do DHCP, os trabalhadores recebem o mesmo proteção cortês.

    
por 24.08.2012 / 13:04