Segurança: servidores e bancos de dados na LAN doméstica

0

Como alguém com um conhecimento bastante limitado sobre segurança de rede, gostaria de saber: É «seguro» executar (1) um servidor MySQL, (2) alguns contêineres com serviços arbitrários e (3) um apache ou nginx como DNS reverso, em uma LAN doméstica padrão, e expô-los à internet? Minha configuração de rede é bastante simples: um roteador, se conecta à internet, todos os dispositivos da casa se conectam diretamente a esse roteador. Eu posso usar o encaminhamento de porta e DDNS para permitir que qualquer dispositivo na LAN se torne um servidor. Atualmente, não há DMZ configurada e não estou usando um firewall físico.

É seguro encaminhar portas como 80 para dispositivos em tal LAN, ou devo até mesmo evitar registrar o IP público do roteador em um DDNS? Em outras palavras: A configuração descrita (1) torna os dispositivos vulneráveis, para os quais as portas são encaminhadas (injeção de malware, roubo de dados,…) ou até mesmo (2) tornam vulneráveis outros dispositivos na LAN, que não têm nada a fazer com os servidores?

Claro, isso não é um ambiente de produção. Eu costumo trabalhar em vários projetos de uma só vez, o que eu quero alcançar fora da minha casa, e eu não quero pagar grandes quantias de dinheiro para AWS, GCP, etc. Então, eu queria ter servidores para MySQL, Mongo , Neo4J, etc., sempre em funcionamento, e também implantar alguns dos meus aplicativos da web para fins de demonstração e teste pessoal.

    
por Silas 24.09.2017 / 11:52

1 resposta

0

[...]Can the described setup (1) make the devices vulnerable, to which ports are forwarded (malware injection, data theft, …) or even (2) make other devices on the LAN vulnerable, that don’t have anything to do with the servers?

Sim e sim.

Is it safe[?]

Esta é provavelmente uma opinião pessoal, dependendo do que você chama de "seguro". Em termos práticos, no entanto, provavelmente há duas coisas a serem consideradas:

  • Os servidores modernos estão constantemente sob uma barragem de scripts de exploração automatizados (que geralmente é o modo como a maioria dos invasores tem como alvo as vítimas).

  • A maioria dessas ameaças pode ser mitigada com atualizações regulares de software, uma quantidade mínima de precaução e algumas configurações de segurança adequadas (que você pode pesquisar razoavelmente).

Resumindo, se você seguir esse caminho, você estará jogando sysadmin amadores para a sua rede (provavelmente lendo logs, verificando se há atualizações de software, etc.). Se você não se importa em assumir esse papel, pode estar relativamente seguro com uma configuração inicial. Caso contrário, os serviços tradicionais de terceiros podem ser mais sua velocidade.

My network setup is quite simple: one router, connects to the internet, all devices in the house directly connect to that router.

Isso pode ser relativamente seguro com as configurações de firewall corretas no lugar. Dito isso, você pode querer dedicar um PC barato (um antigo ou talvez até mesmo um Raspberry Pi) a um serviço de firewall com algo como pfsense .

Is it safe to forward ports like 80 to devices in such a LAN, or should I even refrain from registering the router’s public IP at a DDNS?

Isto é reconhecidamente anedótico, mas tendo tido uma configuração extremamente semelhante por anos para testes e uso pessoal, nunca tive um problema com a segurança.

Em relação ao Apache / Nginx e MySQL especificamente, assim como alguns pequenos detalhes:

  • Certifique-se de que o Apache / Nginx não esteja atuando como um proxy aberto (que está pronto para o abuso e faz do seu servidor um alvo). Esse perigo geralmente é mitigado com alguns comandos de configuração simples ( como os detalhados aqui para o Apache ).

  • Para o Apache, eu recomendaria a desabilitação de arquivos .htaccess.

  • Para o MySQL, um grande problema é usar ferramentas de administração baseadas em navegador, como o phpMyAdmin. Junto com o WordPress, ao revisar logs, este é um dos softwares mais atacados que já vi (provavelmente porque a injeção de SQL pode ser potencialmente tão poderosa). Qualquer aplicativo da web que se conecte a um banco de dados deve ser protegido adequadamente, mas executar ferramentas como essas está (potencialmente) pedindo problemas.

  • Observe que o acima mencionado anda de mãos dadas com a limitação do acesso ao servidor de banco de dados somente a computadores locais selecionados e permissões de banco de dados limitadas.

  • Os ataques de injeção de SQL podem ajudar a serem atenuados pelos WAF (Web Application Firewalls). Os serviços de terceiros, como o CloudFlare, oferecem esses tipos de serviços ( atualmente US $ 20 / mês com outros recursos também ) para um "set e esqueça "solução. No entanto, é bem fácil adicionar esse tipo de recurso por meio do Apache ou do Nginx com módulos como o ModSecurity .

Como última palavra, os princípios básicos para proteger seu servidor web e MySQL são bem documentados e geralmente bastante simples de pesquisar, por exemplo, "Como eu seguro o Apache no Linux" ou "Como eu evito ataques de injeção de SQL". Ambos trazem dicas comuns que impedirão a maioria dos usuários maliciosos de mexer com seus sistemas.

Você pode ter uma fantasia, é claro, e tentar adicionar segurança extra (como uma DMZ verdadeira), mas isso é potencialmente muito mais trabalhoso.

    
por 26.09.2017 / 17:00