Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Bloquear acesso de externo através de url

    Portuguese
    2
    9
    1.1k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      alisson.rocha
      last edited by

      Em um NAT de entrada podemos restringir através de uma lista de IPs, por exemplo, que podem ter acesso a um serviço publicado em um IP e porta da rede local.

      Um servidor web tem a capacidade de traduzir o a url digitada e apresentar o site correto quando utilizamos o Virtual Host, assim um único servidor pode hospedar múltiplos sites de diversos domínios.

      Citei esse exemplo pois acredito ser possível então usar a URL utilizada na requisição a ser direcionada para o servidor publicado através de NAT de entrada para permitir ou não o acesso a uma parte do sistema.

      Ex.: Preciso que acessem um sistema através de www.meusistema.com.br/clientes, mas não exista acesso a www.meusistema.com.br/interno

      Como consigo fazer esse bloqueio?

      M 1 Reply Last reply Reply Quote 0
      • M
        mcury @alisson.rocha
        last edited by mcury

        @alisson-rocha Pelo pfsense eu não acho que isso seja possível, pois a nível de Firewall, seria encaminhamento de porta e regras apenas.
        Algumas pessoas usam o proxy reverso, eu nunca usei, de repente lá você tenha mais granularidade para fazer esse tipo de configuração, mas eu desconheço, vale a pena verificar.

        A nível do servidor web, pela configuração do apache por exemplo, existe uma possibilidade de permitir apenas usuários autenticados, no qual o usuário precisaria digitar usuário e senha para ter acesso ao site interno.
        Nesse caso, é primordial usar conexão HTTPS para que a senha não seja transmitida sem criptografia pela internet. Você vai precisar de certificados SSL válidos caso prossiga dessa forma.

        Segue um exemplo funcional de como seria uma configuração no apache com autenticação de usuário no AD, pertencentes ao grupo services criado no AD.

        <Directory /var/www/html/diretorio>
        	AuthType Basic
        	AuthName "Acesso restrito"
        	AuthBasicProvider ldap
        	AuthLDAPBindDN "CN=svc_apache,CN=Users,DC=local,DC=lan"
        	Include ldap
        	AuthLDAPUrl "ldap://IP_DO_ACTIVE_DIRECTORY:389/cn=Users,dc=local,dc=lan?sAMAccountName?sub?(objectClass=*)"
        	AuthLDAPGroupAttribute member
        	Require ldap-group CN=services,CN=Users,DC=local,DC=lan
        	 <LimitExcept GET POST HEAD>
        	 deny from all
        	 </LimitExcept>
        </Directory>
        

        Em relação ao virtual host, você pode permitir apenas alguns endereços IPs com a diretiva require ip conforme abaixo:

        <VirtualHost *:80>
            <Location />
              Require ip 192.168.0.0/24
            </Location>
            ...
        </VirtualHost>
        

        Uma outra observação, é fazer o direcionamento da porta 80 para a porta 443, e impedir o acesso direto por IP, que seria feito dessa forma, exemplos também funcionais:

        /etc/apache2/sites-enabled $ cat 000-default.conf

        <VirtualHost *:80>
        ServerName IP_INTERNO_SERVIDOR_WEB
        Redirect 403 /
        UseCanonicalName Off
        </VirtualHost>
        
        <VirtualHost *:80>
        ServerName example.domain.org
        Redirect permanent / https://example.domain.org/
        DocumentRoot /var/www/html
        </VirtualHost>
        

        /etc/apache2/sites-enabled $ cat 000-default-ssl.conf

        <IfModule mod_ssl.c>
        	<VirtualHost _default_:443>
        		ServerAdmin webmaster@localhost
                        ServerName example.domain.org
        		DocumentRoot /var/www/html
        

        dead on arrival, nowhere to be found.

        A 1 Reply Last reply Reply Quote 0
        • A
          alisson.rocha @mcury
          last edited by

          @mcury O detalhe é que deve ser possível que usuários internos acessem a url /interna pois há um NAT Reflection mas externamente essa url não pode ser acessada. já a url /cliente deve ser possível acessá-la externamente. Vou pesquisar sobre proxy reverso para ver se tem algo que me ajude.

          M 1 Reply Last reply Reply Quote 0
          • M
            mcury @alisson.rocha
            last edited by

            @alisson-rocha NAT Reflection é considerado um "hack" e não é a maneira recomendada de se fazer esse acesso, eu teria desabilitado esse NAT, e feito com que o pessoal de dentro, acessasse o servidor diretamente, com SPLIT DNS.

            dead on arrival, nowhere to be found.

            A 1 Reply Last reply Reply Quote 0
            • A
              alisson.rocha @mcury
              last edited by

              @mcury Ok, mas quanto a necessidade de acesso externo a url /externo ?

              M 1 Reply Last reply Reply Quote 0
              • M
                mcury @alisson.rocha
                last edited by mcury

                @alisson-rocha Eu teria feito dessa maneira:

                Acesso externo:
                Encaminhamento de porta normal.
                Usuários acessariam pelo IP externo e seriam encaminhados para o servidor diretamente na porta do servidor WEB.
                Pode publicar seu IP externo no DNS público com o nome do site em questão.

                Acesso interno:
                Sem encaminhamento de porta.
                Usuários internos, utilizando o DNS interno (do pfsense ou qualquer outro servidor DNS que você possua), ao acessarem o endereço do site, receberiam o endereço do servidor WEB diretamente, nesse caso endereço interno do servidor como por exemplo, 192.168.10.25.
                Seria necessário criar uma entrada no DNS interno com o nome do site, e o endereço do site para que isto seja possível, ou seja, SPLIT DNS.

                dead on arrival, nowhere to be found.

                M 1 Reply Last reply Reply Quote 0
                • M
                  mcury @mcury
                  last edited by

                  Nesse caso, você poderia utilizar o modo de autenticação como citei anteriormente.

                  Ou seja, apenas usuários autenticados poderiam acessar o site interno, não haveria diferença se viessem da Internet, ou internamente. Eles precisariam de usuário e senha.

                  dead on arrival, nowhere to be found.

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    alisson.rocha @mcury
                    last edited by

                    @mcury Ok, mas se externamente o usuário acessasse a url /interno ela iria ter acesso ao sistema, e é justamente isso que desejo bloquear.

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      mcury @alisson.rocha
                      last edited by

                      @alisson-rocha

                      www.meusistema.com.br/clientes - Acesso livre.
                      www.meusistema.com.br/interno - Solicitar autenticação

                      dead on arrival, nowhere to be found.

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post
                      Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.