Estou pensando em configurar um servidor web modesto usando algum hardware antigo e Ubuntu 12.04 ou Debian 6. Estou ciente de que, ao expor uma máquina em minha LAN ao mundo exterior, fico vulnerável a violações e ataques de segurança. Dito isto, e como quase não tenho experiência em proteger computadores usando Linux, gostaria de pedir algumas recomendações sobre o que devo fazer para proteger este servidor web, especialmente porque existem outros computadores na minha LAN doméstica que contêm informações confidenciais ( sobre contas bancárias domiciliares e afins). Muito obrigado.
Responder1
Primeiro, você provavelmente está ciente disso, mas se tiver IP dinâmico, precisará de um DNS dinâmico como DynDNS ouDNSexit.
Na parte de segurança, acho que usar iptables
(ou uma GUI de firewall comoincendiáriose preferir) abrir apenas a porta 80 para conexão de entrada é suficiente para um servidor doméstico se você não precisar abrir a porta ssh (porta 22) ou ftp (21) e não instalar um servidor de email.
Se o seu site tiver uma página de login ou se você precisar abrir ssh, ftp ou smtp, recomendo instalar pelo menos algo comofail2banbanir IP que tentam conexões sem sucesso para que não tentem para sempre.
Uma coisa importante a notar é que você deve dar uma olhada em seus registros, para ficar de olho neles, instale facilmentelogwatch
(deve estar em seus repositórios padrão no Debian e Ubuntu) para alertá-lo por e-mail diariamente ou semanalmente. Você aprenderá rapidamente a descobrir o que há de errado lendo-os com frequência.
Se precisar se conectar de fora para administrar o servidor, use VPN e de qualquer forma, mantenha o SO sempre atualizado!
Atualização: Para SSH e sftp, acho que fail2ban + apenas chaves ssh (ou chaves + senha, mas não apenas senha) é o mínimo que você precisa (e não permite acesso root).
Se as máquinas que você usa para conectar possuem IP fixo, abra o firewall apenas para esses IP de entrada.
Uma VPN criptografada (eu usoopenvpn) também ajuda muito a proteger seu acesso.
Dê uma olhada aqui paratutorial oficial 'rápido', em 15 a 30 minutos você terá um servidor VPN funcionando para um cliente - um servidor. Para uma melhor configuraçãocom autenticação de certificado de cliente e uma CA(sua própria CA gratuita), você precisará de mais alguns minutos: D
Se seus sites exigem MySQL ou por qualquer outro motivo você precisa administrar MySQL (ou outro banco de dados) da internet, se você não usa VPN, use um túnel ssh para se conectar a uma porta local em sua máquina e o túnel criptografar a conexão com o servidor para que você não precise abrir a porta do banco de dados, dê uma olhada nos argumentos -L
e -D
em man ssh
.
Eu não instalaria o phpmyadmin para escutar em um IP público, pois isso abre seu banco de dados para o mundo. Se precisar posso colocar um script de exemplo para um túnel aqui.