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

Bloquear acesso de externo através de url

Scheduled Pinned Locked Moved Portuguese
9 Posts 2 Posters 1.3k Views 2 Watching
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 Offline
    alisson.rocha
    last edited by Jan 17, 2021, 12:47 AM

    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 Jan 17, 2021, 2:09 AM Reply Quote 0
    • M Offline
      mcury Rebel Alliance @alisson.rocha
      last edited by mcury Jan 17, 2021, 6:17 PM Jan 17, 2021, 2:09 AM

      @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 Jan 17, 2021, 3:35 PM Reply Quote 0
      • A Offline
        alisson.rocha @mcury
        last edited by Jan 17, 2021, 3:35 PM

        @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 Jan 17, 2021, 3:38 PM Reply Quote 0
        • M Offline
          mcury Rebel Alliance @alisson.rocha
          last edited by Jan 17, 2021, 3:38 PM

          @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 Jan 17, 2021, 3:55 PM Reply Quote 0
          • A Offline
            alisson.rocha @mcury
            last edited by Jan 17, 2021, 3:55 PM

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

            M 1 Reply Last reply Jan 17, 2021, 4:00 PM Reply Quote 0
            • M Offline
              mcury Rebel Alliance @alisson.rocha
              last edited by mcury Jan 17, 2021, 4:01 PM Jan 17, 2021, 4:00 PM

              @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 Jan 17, 2021, 4:07 PM Reply Quote 0
              • M Offline
                mcury Rebel Alliance @mcury
                last edited by Jan 17, 2021, 4:07 PM

                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 Jan 17, 2021, 4:17 PM Reply Quote 0
                • A Offline
                  alisson.rocha @mcury
                  last edited by Jan 17, 2021, 4:17 PM

                  @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 Jan 17, 2021, 4:21 PM Reply Quote 0
                  • M Offline
                    mcury Rebel Alliance @alisson.rocha
                    last edited by Jan 17, 2021, 4:21 PM

                    @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
                    9 out of 9
                    • First post
                      9/9
                      Last post
                    Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                      This community forum collects and processes your personal information.
                      consent.not_received