Como hospedar um site de intranet inacessível fora da LAN?

3

Eu tenho um servidor (Debian Squeeze) em uma LAN. Eu instalei o servidor web Nginx nele. O servidor tem acesso à Internet para baixar e instalar pacotes.

Minha pergunta:

Posso hospedar um site para que, quando usuários do tipo LAN:

http://abcd (no .com, .net, etc.) 

em seu navegador, o site é aberto? Tenha em atenção que também têm acesso total à Internet, pelo que não deve ir directamente para o Google ou para outro motor de pesquisa predefinido.

Ao mesmo tempo, qualquer pessoa fora da LAN não poderá acessá-la, independentemente da URL que digitar.

Isso é possível?

    
por Spartanblogger 15.10.2012 / 08:35

3 respostas

1

O que controla se outros computadores têm acesso a um servidor em execução no seu computador não é o nome: isso é apenas uma questão de conveniência. Se você deseja tornar seu computador, ou pelo menos seu servidor da Web, inacessível fora da LAN, é necessário tomar medidas para bloqueá-lo no nível IP ou HTTP.

É possível que seu administrador de rede local já esteja bloqueando conexões de entrada para servidores da web dentro da rede local, caso em que você não tem nada para fazer. Mas você pode querer configurar um filtro em sua máquina de qualquer maneira, apenas no caso.

Se você não quiser veicular nenhum tráfego da web fora da LAN, bloqueie o tráfego da Web de entrada no nível de IP. Use iptables para isso, ou alguma ferramenta de nível superior que configura Regras do iptables, como ufw . Para bloquear todo o tráfego HTTP e HTTPS de entrada, bloqueie as portas TCP 80 e 443, supondo que sua LAN corresponda ao intervalo de endereços 203.0.113.0/24 (isto é, 203.0.113. *):

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 80,443 -s \!203.0.113.0/24 -j REJECT

Você também pode bloquear todas as portas de entrada, exceto aquelas que você sabe que precisa. Por exemplo, para permitir somente solicitações SSH de entrada, bem como tráfego de entrada da LAN e excluir todo o tráfego de entrada:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport http,https -s 203.0.113.0/24 -j ACCEPT
iptables -A INPUT -j REJECT

Veja também Existe uma maneira padrão de configurar qual política o iptables carrega na inicialização sob o Debian? , iptables: permite determinados ips e bloqueia todas as outras conexões e Defina algumas portas de firewall para aceitar apenas conexões de rede local? .

Se você quiser permitir conexões da web com a sua máquina de qualquer lugar, mas permitir que um determinado host virtual seja alcançado somente a partir da LAN, você precisará fazer a filtragem no nível do servidor Apache (suponho que você ' usando o Apache). Isso é feito no arquivo de configuração virtualhost ou em um arquivo .htaccess , com o Permitir e Negar diretivas.

Order deny,allow
Deny from all
Allow from 203.0.113.0/24

Mudando para o nome, se você quiser dar um nome sem ponto ao seu servidor, isso precisa da cooperação das máquinas clientes. Mas você pode dar um nome globalmente válido ao seu servidor. Isso é totalmente independente de se o seu servidor pode ser acessado de qualquer lugar. O que você precisa é de uma entrada de DNS para sua máquina. Você pode comprar um nome de domínio e um serviço DNS básico por cerca de US $ 10 / ano, para que o endereço IP da sua máquina seja registrado em um nome como www.spartanblogger.net . Não importa se o seu endereço IP está em um intervalo privado, como 10.x.y.z ou 192.168.x.y. Se o endereço IP da sua máquina variar, você precisará de um provedor que ofereça suporte a DNS dinâmico . Para um único endereço para uso pessoal, se você não se importa em não ter seu próprio nome de domínio, você pode usar um serviço gratuito como DynDNS (se seu endereço IP é de fato dinâmico ou não); você pode escolher um nome como spartanblogger.dyndns.org .

    
por 15.10.2012 / 23:33
3

Se você não tem controle sobre a rede e também não tem controle sobre os computadores clientes e seu servidor não é acessível de fora, eu tenho medo que não seja possível. Imagine que seria, o que impediria você de redirecionar o google ou stackexchange para o seu servidor?

O que você pode fazer é perguntar ao administrador para criar uma entrada DNS para abcd para apontar para o seu endereço IP. Então, tudo que você precisa é um servidor da Web ouvindo nas portas padrão. Se ele recusar tudo que você pode fazer é acessar o seu servidor web via endereço IP em vez de host nome.

    
por 15.10.2012 / 13:40
0

Na sua pergunta, você não mencionou diretamente que deseja usar o nome de domínio ou apenas o acesso ip. Porque com o acesso ip direto é possível fazer o que você quer, caso contrário não é tão trivial (ver nos comentários).

Basta verificar o seu ip com: ifconfig , então sua faculdade (se eles estiverem na mesma rede) pode ver o que você está renderizando através do nginx digitando seu endereço IP no navegador. No entanto, de fora isso não será acessível porque o roteador não encaminhará solicitações de fora da rede para o seu computador. (Se você quiser, pode adicionar uma regra de encaminhamento na configuração do seu roteador)

Não tenho certeza do que está no arquivo de configuração nginx padrão, mas de uma configuração tão simples que insiro aqui, que você pode adicionar ao arquivo de configuração ( /etc/nginx/nginx.conf ):

server {
  listen       80;
  server_name  _;
  # path to your folder what you want to render
  root   /usr/share/nginx/html;
  index index.php index.htm index.html;
}

No entanto, é importante que o usuário que executa o nginx tenha permissão para ler essa pasta raiz. Você pode verificar com qual usuário o nginx está usando: ps aux | egrep nginx e configurá-lo na sua configuração com a diretiva: user nginx;

No site de configuração oficial você pode ler mais!

Quando você acessa o computador de suas faculdades, pode inserir um domínio personalizado para apontar em sua máquina editando o arquivo de hosts em sua máquina sob /etc/hosts :

<your_ip> something.com
    
por 15.10.2012 / 10:10