Como faço para bloquear solicitações para o Apache em uma interface de rede?

1

O problema: Eu tenho uma instância local do Apache no meu Macbook Pro. Eu preciso disso para ouvir em todas as interfaces de rede, exceto en0 e en1 (basicamente, ouça lo e vnicX da Parallels).

Eu sei sobre "Listen *: 80", mas isso não é uma solução neste caso específico. A única coisa que eu poderia imaginar é usar o firewall do OS X para bloquear as solicitações recebidas para o Apache nessas interfaces. Mas eu não encontrei nenhum exemplo de trabalho e não pude fazer tais regras eu mesmo.

Alguém poderia ajudar, por favor?

    
por Dmitry Dulepov 10.09.2012 / 11:01

3 respostas

1

O Apache pode ser configurado para ouvir em todos os endereços ( Listen *:80 ) ou em particular endereços ( Listen 192.168.23.42:80 ). Não pode ser configurado para não escutar endereços específicos (ou interfaces). Se você quiser, use um firewall para bloquear conexões nessas interfaces. Algo como isso pode fazer o truque:

ipfw add deny any to dst-port 80 in via en0
ipfw add deny any to dst-port 80 in via en1
    
por 10.09.2012 / 13:06
1

Eu usaria as configurações do Firewall. Eles estão em Configurações - > Segurança & Privacidade - > Firewall

    
por 10.09.2012 / 12:24
1

Depois de ler o guia de segurança do OS X, usei o ipfw. Funciona bem no Leão da Montanha. Aqui está o que eu fiz:

Crie um arquivo chamado /etc/ipfw.conf com o seguinte conteúdo:

 add 1000 deny tcp from any to any dst-port 80 via en0
 add 2000 deny tcp from any to any dst-port 80 via en1

Você pode optar por um conjunto de regras um pouco diferente (como bloquear todos, mas permitir a interface "lo0"), se você usar um modem USB.

Crie um arquivo chamado /Library/LaunchDaemons/ipfw.plist com o seguinte conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://
     www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
    <string>ipfw</string>
  <key>Program</key>
    <string>/sbin/ipfw</string>
  <key>ProgramArguments</key>
    <array>
      <string>/sbin/ipfw</string>
      <string>/etc/ipfw.conf</string>
    </array>
  <key>RunAtLoad</key>
    <true />
</dict>
</plist>

Registre-se com o launchd:

 launchctl load -w /Library/LaunchDaemons/ipfw.plist

Verifique se as regras estão registradas:

ipfw print

Você deve receber:

01000 deny tcp from any to any dst-port 80 via en0
02000 deny tcp from any to any dst-port 80 via en1
65535 allow ip from any to any

A última regra é necessária!

Agora você pode tentar se conectar de outro computador ao seu e verificar se a conexão está bloqueada. Observe que você sempre pode se conectar do seu próprio computador ao seu próprio computador. Experimente o smartphone ou o computador do seu amigo.

    
por 19.09.2012 / 11:54