+ Responder ao Tópico



  1. #1

    Padrão site acessivel apenas de dentro da rede interna

    Algém sabe coo eu posso restringir o acesso a um determinado site do meu servidor WEB apenas a usuários que se conectares a partir da rede Interna? Este site não pode ser acessível pelo Internet. Não posso fechar isso via firewall pois há outros sites nesse servidor que deve ser acessados externamente. Há alguma fora de fechar isso via Apache? Uso Apache 2 e Debian 4.0

    Grato,
    Marco

  2. #2

    Padrão

    Boa noite marcoeloy.

    Vamos adotar algumas "variáveis" para nosso exemplo:

    Domínio web da sua rede (site): marco.com.br
    Sub-domínio público: www.marcoeloy.com.br
    Sub-domínio privado: intra.marcoeloy.com.br
    Rede externa: 0/0
    Redes internas: 172.16.0.0/24 e 192.168.0.0/24

    O código IPTables para (se não me engano) tal, é o seguinte:



    # Estabelece o acesso permitido ao intra.marco.com.br para redes internas.
    iptables -A FORWARD -s 172.16.0.0/24 -d intra.marco.com.br -j ACCEPT
    iptables -A FORWARD -s 192.168.0.0/24 -d intra.marco.com.br -j ACCEPT
    # Estabelece que nenhuma outra rede podera acessar intra.marco.com.br.
    iptables -A FORWARD -s 0/0 -d intra.marco.com.br -j DROP
    # Estabelece que qualquer rede pode acessar www.marcoeloy.com.br.
    iptables -A FORWARD -s 0/0 -d www.marcoeloy.com.br -j ACCEPT



    Meu...toma muito cuidado com a ordem dessas regras...
    Da forma como estão, funcionam certinho. Mas se você inverter uma sequer, aí geram erros que você perde horas (e cabelos) pra achar o porque.

    Bom...creio que isso é tudo o que você precise quanto a IPTables.

    Qualquer coisa, é só falar...

    abracos
    Última edição por Frusciante; 26-06-2007 às 19:48.



  3. #3

    Padrão

    mas o servidor web e o gate sao as mesmas maquinas. Eu terminei o firewall a porco e não queria mecher mais nele. Por isso pensei em faer algo usando o proprio Apache. Ele não possue esse recurso de liberar o acesso a um determinado site so a uma faixa de ips ou a uma interface?

    Sds,
    MArco

  4. #4

    Padrão

    Citação Postado originalmente por marcoeloy Ver Post
    mas o servidor web e o gate sao as mesmas maquinas. Eu terminei o firewall a porco e não queria mecher mais nele. Por isso pensei em faer algo usando o proprio Apache. Ele não possue esse recurso de liberar o acesso a um determinado site so a uma faixa de ips ou a uma interface?

    Sds,
    MArco
    Tal recurso ainda não encontrei no Apache.
    Devido a isso, continuo afirmando que, na minha opinião, será mais interessante utilizar as regras de firewall do iptables.

    Se você quiser utilizar as linhas que passei, apenas altere o valor FORWARD por INPUT.

    Qualquer coisa, pode perguntar...

    abracos



  5. #5

    Padrão

    Bom dia Marco.

    Existe uma forma bem simples de fazer o que voce precisa utilizando recursos de controle de acesso do apache.

    No arquivo httpd.conf, adicione as seguintes diretivas:

    <Directory /diretorio/onde/esta/o/site/em/questao>
    Order deny,allow
    Deny from all
    Allow from 192.168.1
    </Directory>

    Nesse exemplo, levei em consideracao que o endereco da sua rede eh 192.168.1.0/24 . Basta alterar para o seu caso.
    Voce pode usar uma configuracao um pouco mais complexa, que ira' permitir acesso ao site de usuarios na LAN sem senha, e acesso externo apenas com senha.

    <Directory /diretorio/onde/esta/o/site/em/questao>
    Order deny,allow
    Deny from all
    Allow from 192.168.1
    AuthName "Acesso apenas para usuarios autenticados"
    AuthType basic
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
    Satisfy any
    </Directory>

    O segredo nesse exemplo esta na diretiva 'Satisfy any' , que diz ao apache que se uma das duas regras de controle de acesso forem satisfeitas, ele deve permitir acesso. Assim, se o acesso for interno, ja fica n a primeira regra, nao solicita autenticacao. Se for externo, esbarra na primeira e vai para a segunda, pedindo autenticacao.

    Abracos.

    Fabio K. Lima
    LPIC