
Por favor, ajude-me a descobrir qual caminho de implementação seguir para a seguinte tarefa:
Eu tenho um dispositivo blackbox que atua como um servidor web (posso me conectar a ele localmente digitando seu endereço IP no campo de endereço do navegador). A caixa não implementa nenhuma medida de segurança, exceto um simples nome de usuário e uma senha. Certamente isso é bom quando este servidor está em uma rede isolada, mas desejo ter acesso a ele pela Internet - isto é, de qualquer lugar do mundo. Com isso, desejo usar segurança TLS para criptografia de dados.
Tendo um Rasbperry PI disponível (e software openVPN), pensei que caberia nesta aplicação. Existem muitos tutoriais diferentes sobre como implementar VPN, bridge, roteador e firewall usando Raspberry PI, mas não consigo descobrir qual das quatro funcionalidades é adequada para minha aplicação. O diagrama conceitual é mostrado abaixo:
O Raspberry Pi terá duas interfaces de rede para acesso à internet: uma através de ground ethernet (eth0), a outra - usando internet celular (eth1) - que sempre estiver disponível favorecendo a conexão terrestre à internet. Os endereços IP de ambas as interfaces serão conhecidos. A terceira interface Ethernet (eth2) será conectada à rede local através do switch. O servidor também estará conectado ao switch. Não tenho controle sobre o servidor (é uma caixa preta) - só conheço seu endereço IP.
A ideia é fazer com que o Raspberry PI atue como intermediário entre mim e o servidor, para que eu possa me conectar com segurança ao seu aplicativo da web usando meu navegador.Mas qual funcionalidade o Raspberry Pi deve implementar: VPN, roteador, ponte ou firewall?
EDITAR:
A tarefa que afirmei acima era muito difícil para mim (falta de competência) e decidi simplificar a configuração para começar. Eu não queria remover a parte superior da pergunta, caso alguém a considerasse útil e suas respostas correspondentes. Em vez disso, minha nova configuração (simplificada) ficaria assim:
O RP estaria conectado à internet celular através doppp0interface e encaminhar todo o tráfego paraeth0interface que seriadiretamenteconectado ao servidor:
1. dynamic ppp0 IP address (given by cell service provider)
2. static eth0 IP address (assigned by me)
3. non-secure internet connection
4. RP is connected to the server directly (no switch needed)
Encontrei várias soluções comoesseeesse, mas não explicam claramente por que as coisas são feitas dessa maneira. Eles também fornecem diretivas de linha de comando que não saberei comodesfazer. Em vez disso, gostaria que alguém fizesse referência aos arquivos reais do sistema/configuração que eu poderia editar e reverter, se necessário.
Atualmente, quando conecto o RPi ao servidor web, posso navegá-lo no navegador web. O objetivo é poder acessar o servidor web da internet através do RPi. Alguém poderia fornecer um tutorial educacional sobre como configurar corretamente o roteamento, levando em consideração que a interface ppp0 iria ACIMA e ABAIXO dependendo da conectividade do celular, bem como seu endereço IP seria diferente e desconhecido a cada vez.
Responder1
TLDR;
Você precisa de um firewall para proteger seu servidor web, e seu roteador provavelmente já oferece essa funcionalidade.
DETALHES
Tudo que você realmente precisa é de um firewall e SSL para proteger seu servidor web. Se o seu roteador doméstico já oferece isso, o Raspberry Pi não lhe dará mais segurança.
Você deve usar SSL para proteger a comunicação com seu servidor web. Você poderia usar o Raspberry Pi como um proxy reverso para fornecer funcionalidade SSL, mas existem proxies reversos porque a criptografia SSL exige muita computação e o proxy retira a carga SSL do servidor web. O Pi provavelmente tem muito menos computação que o seu servidor web. Mas se você está procurando um projeto Pi, isso pode ser divertido.
Um equívoco comum é que a VPN é “mais segura” do que sem ela. Uma VPN é simplesmente criptografia + tunelamento. O tunelamento é o que permite que ambas as redes acreditem que estão na mesma rede. A menos que você esteja tentando “casar” duas redes, você não precisa de VPN. SSL + firewall deve funcionar.
Responder2
A solução mais simples seria configurar seu Pi como um dispositivo roteador/firewall - ou seja, você desejaria fazer firewall nas solicitações para o servidor web para que elas só atravessassem o PI se viessem através da interface VPN que termina nele, mas não isole o Pi de outros dispositivos em sua LAN. Isso significa que só funcionará se todas as conexões de Internet forem forçadas através do Pi conforme seu diagrama. Se outro dispositivo na LAN estiver comprometido, o acesso ao servidor web poderá ser adquirido através dele.
(Se você procura uma solução simples e moderadamente segura, pode ignorar tudo abaixo)
Existem cenários mais complexos e caros que você pode usar. Em vez de usar um switch normal, você pode usar um switch gerenciado e configurar o servidor web em sua própria VLAN, que só é visível para o Pi (ou seja, o Pi falará em várias VLANs). Você também colocaria o servidor web em seu próprio endereço IP, permitindo que outros dispositivos na LAN se comunicassem com ele, mas apenas através do Pi.
Você pode expandir ainda mais a ideia do switch acima, protegendo a VLAN em que o servidor web está, de modo que apenas os pacotes originados na interface VLAN do PI possam se comunicar na porta 80. Você pode então adicionar um proxy reverso (por exemplo, usando Apache ) para o Pi, que pode responder na porta 443 e, em seguida, buscar solicitações do servidor da web na porta 80. Ao usar um lado do cliente e um certificado regular, você pode garantir que apenas as pessoas que podem obter acesso ao roteador e as pessoas com um certificado de cliente irão ser capaz de se conectar.