Na minha rede doméstica atrás do roteador NAT, tenho um servidor owncloud, com o nome bem criativo "owncloud". Ele deve permanecer privado e inacessível da internet. Está tudo bem, se a sincronização só funcionar quando eu estiver em casa.
Pergunta: Quando estou fora de casa e meu telefone tenta se conectar ao "ownloud", por exemplo, em um Wi-Fi estrangeiro, pode acontecer de algum bandido no Wi-Fi criar um servidor com o mesmo nome, farejar meu nome de usuário/senha (ele pode fazer isso???) e até mesmo manipular os dados falsificando um servidor próprio na nuvem?
Para poder criar uma conexão SSL e me livrar dos avisos do navegador (o letsencrypt normal só funciona em servidores públicos), li sobre o uso de um provedor de DNS dinâmico e aponto para o IP INTERNO, como 192.168.2.xxx - e faço a autenticação do letsencrypt por meio do registro DNS. https://dev.to/ietxaniz/how-to-implement-https-in-local-networks-using-lets-encrypt-4eh
Pergunta: Também aqui, fora de casa, o telefone tentará se conectar a um IP que não existe. Ou pode existir, mas apontar para um servidor diferente. Há alguma preocupação com a segurança ao fazer isso?
E o mais importante - se sim, existe alguma maneira de superar isso em vez de hospedar publicamente o servidor inteiro em um domínio que na verdade é meu?
Bem, esse é o propósito dos certificados LetsEncrypt TLS que você está configurando. O objetivo deles é vincular um nome de host a um servidor específico que possui uma chave privada específica. Então, se o seu servidor OwnCloud exigir TLS, e você se conectar a um nome DNS específico com validação de certificado, o telefone se recusará a se conectar ao servidor "errado", mesmo que ele tenha o mesmo endereço IP interno. (Ele ainda tentará , pois, caso contrário, não poderá ver o certificado até que comece a se conectar.)
Embora, é claro, ele dependa de todos os seus aplicativos de telefone realmente validando os certificados... alguns aplicativos não. Eu vi alguns que assumem que, mesmo que o usuário tenha um certificado configurado, ele será falso, então a caixa de seleção "[✔] SSL" não vale muito.
Um método um pouco mais seguro pode ser uma combinação de:
IPv6 na sua LAN doméstica. Não precisa necessariamente ser endereços globais fornecidos pelo ISP – seria o suficiente configurar
fdXX:XXXX:...
endereços "ULA" privados (o equivalente IPv6 de 192.168), e contanto que você escolha o prefixo de sub-rede aleatoriamente, ele terá uma chance incrivelmente baixa de colidir acidentalmente com endereços privados de outra LAN.(Ainda é fácil para alguém ver quais endereços seu telefone está tentando acessar e, então, configurar deliberadamente um servidor falso com o mesmo endereço, mas pelo menos isso aumenta o nível de exigência de intenção real.)
VPN auto-hospedada always-on, por exemplo, Tailscale/WireGuard/ZeroTier, quando você estiver em qualquer lugar fora da sua rede doméstica. Configure-a para rotear apenas o prefixo do seu endereço LAN, e o sistema operacional do telefone garantirá que todo o tráfego para esses endereços passe pelo túnel VPN seguro para sua rede doméstica e para nenhum outro lugar.
(Isso depende um pouco do prefixo do endereço LAN ser razoavelmente único; talvez não necessariamente IPv6, mas pelo menos escolha um que você não espera encontrar na LAN de outra pessoa.)
Uma vantagem adicional de ter uma VPN em sua casa é que ela funcionará até mesmo para protocolos que não usam TLS/SSL, por exemplo, acesso a arquivos via SMB2.