Segurança do servidor inicial: por onde eu começo? [fechadas]

3

Um amigo meu e eu estamos pensando em iniciar nosso próprio negócio envolvendo código e algum IP bastante avançado (pelo menos, nós gostamos de pensar que o IP está avançado). Eu quero configurar um repositório de código (provavelmente subversão) e um servidor de rastreamento de bugs (provavelmente fogbugz) em um sistema de servidor doméstico que nós dois poderíamos usar em VPN de locais remotos via laptops. Eu também gostaria que este servidor fosse um sistema de compilação remota executando algum tipo de scripts hudson, talvez via formiga, para fazer testes automáticos e construir verificação.

Minha pergunta é: qual é a maneira mais segura de configurar esse sistema? Eu tenho um orçamento de US $ 1k para hardware e software. Eu tenho uma rede doméstica sem fio existente usando uma estação base Apple Wireless, um macbook pro rodando tanto o 10.5 quanto o windows 7, e uma máquina doméstica rodando o windows 7 que eu realmente uso para jogos e brincar.

Especificamente:

  • Devo estar usando o Linux? Qual distro? Como posso bloqueá-lo? Percebo que esta questão pode começar uma miríade de guerras, mas eu só quero algumas indicações sobre como configurar um servidor seguro com esses serviços em execução (e nada mais, sob a suposição de que mais serviços = mais falhas de segurança).
  • Onde posso obter boas informações sobre como configurar uma VPN por meio desse roteador? Eu deveria estar passando por esse roteador de maçã, ou há algum roteador 'padrão-ouro seguro' que eu deveria estar olhando?
  • IP estático (o que significa mudar meu ISP) ou um IP dinâmico? É possível fazer esse tipo de coisa com um IP dinâmico e, se for, como faço para configurar o servidor para ser acessado de forma segura e remota por meio de um IP dinâmico?
  • Que tipo de hardware devo estar olhando? Eu estava pensando em algo como simplesmente um processador core2 duo (talvez i7?), Disco rígido comum, 4 GB de RAM, e é isso, conectado a alguma outra unidade de backup, como um disco rígido conectado ao USB conectado ao disco rígido. sistema com tarefas cron para fazer backups noturnos para a segunda unidade. Isso é razoável?

Eu percebo que esta é uma questão enorme, e não necessariamente direta. Quando faço buscas nas respostas a essas perguntas, recebo muita informação, mas nada disso é totalmente direto. Então, se alguém souber de um guia ou de alguns posts do blog que eu perdi, eu realmente aprecio isso.

    
por mmr 09.06.2009 / 19:20

7 respostas

11

O Linux não tem poeira mágica de segurança. As instalações do Linux também podem ser mal configuradas. Independentemente do sistema operacional do servidor que você usa, é necessário:

  • Desativar serviços / daemons desnecessários.
  • Verifique se você realmente desativou serviços / daemons desnecessários.
  • Altere as senhas padrão ou desabilite as contas padrão.
  • Entenda como manipular permissões para arquivos e diretórios.
  • Crie e use contas de usuário que tenham menos privilégios.
  • Acompanhe os patches de segurança para o sistema operacional e os aplicativos.

Dê uma olhada no site Linux Documentation Project ( link , há alguns guias de segurança decentes por lá. Você também deve procurar documentos de segurança para cada aplicativo que será hospedado.

Sua rede sem fio deve ser tratada como uma rede não confiável, e você deve usar uma VPN sobre ela ou criptografar tudo o que está sendo executado nela. Não use algoritmos de criptografia quebrados (WEP, WPA).

Você deve usar uma VPN, como você disse, para mover todo o tráfego pela Internet. Existem caixas de hardware baratas que você pode usar, embora algumas delas tenham problemas de estabilidade. Você pode executar o OpenVPN em um host e expô-lo à Internet como uma maneira "barata" de fazer as coisas com o software. Você pode usar túneis SSH para realizar isso também. Você também pode usar uma VPN IPec baseada em padrões. É uma questão do tempo / energia que você deseja gastar configurando. Você absolutamente pode usar tanto com endereços IP dinâmicos. Como diz nik , o DNS dinâmico é seu amigo.

É bom ver que você está pensando em backup. Tenho dúvidas sobre os "backups para a segunda unidade" como um cenário muito tolerante a desastres físicos, mas talvez seja porque tive um bom amigo passando por um incêndio na casa. Eu definitivamente recomendo usar algum tipo de replicação de dados criptografados fora do local, ou girar manualmente vários discos rígidos externos (esperançosamente criptografados) para fora do local. Se os dados couberem, você pode considerar o uso de um grupo de dispositivos de armazenamento de estado sólido para rotação externa, em vez de unidades de disco rígido (pen drives, etc.).

O RAID foi mencionado em alguns comentários, por isso vou mencioná-lo na minha edição. Eu consideraria seriamente o software RAID-1 para esse aplicativo. Você obtém muitos benefícios sem muita complexidade ou potencial para problemas causados pelo próprio sistema RAID. O RAID não é backup, por isso não o considere como tal.

A UPS também foi mencionada e é uma boa ideia. Você não precisa gastar muito dinheiro com isso, mas eu recomendaria comprar um que tenha uma conexão de dados para permitir o desligamento normal do computador servidor em caso de falha de energia.

Eu não vejo particularmente o processador em um computador servidor como tendo muito a ver com segurança. O processador específico que você precisa deve estar baseado na carga de trabalho.

Eu não quero dizer que estou corrigindo você, mas vale a pena mencionar que você não quer realmente a "maneira mais segura". Você já mencionou um orçamento, por exemplo. O que você realmente quer é uma configuração que ofereça um grau de segurança com o qual você se sinta à vontade, minimize o maior número possível de riscos, se adapte ao seu orçamento e não seja muito complicado de usar.

Mesmo se você não usar túneis SSH neste aplicativo, uma vez que foi mencionado nos comentários, eu darei meu apoio por trás dele. Você deve saber usar túneis SSH porque eles são muito úteis para não saber como usar.

    
por 09.06.2009 / 19:47
3
  • Você poderia usar IPs dinâmicos e algo como DynDNS ou talvez EasyDNS .
  • O Linux é bom. E, se você não quiser se aprofundar muito, pode considerar a edição do servidor Ubuntu ; Referência do livro: Iniciando a administração do servidor Ubuntu
  • Para o hardware, se você estiver configurando em casa, considere um no-break, a menos que esteja localizado em algum lugar que nunca tenha interrupções de energia de qualquer tipo.
  • Você pode querer considerar um sistema de disco redundante configurado para RAID.
  • Uma vez que você tenha alguma estabilidade, considere um patch de proteção do kernel como grsecurity . Existem outros patches de endurecimento que você pode pesquisar também (não há guerras de chamas, por favor).
por 09.06.2009 / 19:37
2

Primeiro, desde que você esteja falando sobre um servidor doméstico e tenha strongs restrições orçamentárias (quase) esqueça a segurança física. Coloque a caixa em algum lugar onde seu cônjuge / criança / animais de estimação não possam alcançá-la para não ter problemas quando alguém desconectar essa coisa apenas para conseguir um lugar para conectar o aspirador de pó.

Etiquete esse plugue para que fique absolutamente claro!

Should I be using Linux? Which distro? How do I lock it down? I realize that this question can start myriad flame wars, but I just want some pointers on how to set up a secure server with those services running (and nothing else, under the assumption that more services = more security holes).

Use o sistema operacional que você sabe como proteger. Não adianta ir com o OpenBSD (que tem uma boa reputação de segurança) se você não sabe como mantê-lo seguro . O sistema operacional com o qual eu estou mais confiante é o Debian, então eu usaria isso, seu conhecimento pode estar no Windows, no Plan9, no Solaris. Use o SO que você conhece melhor!

Defina seus requisitos (você já parece ter feito isso - isso é excelente), e pense se você precisa absolutamente de um hardware de servidor super legal [/ em>. Eu não acho que você realmente faça, e sim gastar o dinheiro em um dispositivo de backup para backups offline ou marketing (ou pornografia).

Where can I get good information on setting up a VPN through that router? Should I be going through that apple router, or is there some 'gold standard secure' router I should be looking at?

Eu iria com o OpenVPN, é relativamente fácil configurar e encaminhar essa (e somente essa) porta do seu roteador para a caixa que você usa. Possivelmente adicionar algum bater de porta (eu só sei de soluções linux) - os gritadores virão agora e dirão segurança pela obscuridade e eles estão certos, mas dado que você tem um orçamento eu consideraria qualquer camada barata de segurança vale a pena - hower com essa rota, você precisaria de portas adicionais encaminhadas para o servidor.

Faça com que os serviços necessários escutem somente os IPs / interfaces que são não alcançáveis sem estarem conectados por uma VPN . Eu acho que os únicos serviços que você precisa serão HTTPS (subversion e um bugtracker).

Configure o OpenVPN para usar certificados protegidos com senha e senhas para os usuários (Sim, isso é possível).

Static IP (which means changing my ISP) or a dynamic IP? Is it possible to do these sorts of things with a dynamic IP, and if it is, how do I go about setting up the server to be securely, remotely accessible via a dynamic IP?

Não, não jogue fora seu dinheiro, use serviços gratuitos como dyndns (ou seja lá o que for o único que vem à minha mente). Como você disse, você é uma startup e pagar mensalmente por um IP estático não fará nenhum bem se você realmente não precisar - isto é, a menos que você queira executar o Email-Services em seu servidor, então você não apenas precisa de um IP estático, mas verifique se você tem controle sobre seu DNS reverso também. E também se mudando para outro ISP que fornece IP estático mais barato que o seu atual: Vá em frente!

Você pode ter interrupções curtas enquanto o serviço IP está fazendo a transição para o novo IP, mas isso deve ser factível, se for demais, você ainda poderá alternar para um IP estático.

What kind of hardware should I be looking at? I was thinking about something along the lines of just a core2 duo processor (maybe i7?), regular hard drive, 4 gb RAM, and that's about it, connected to some other backup drive, like a USB-attached hard drive attached to the system with cron jobs to do nightly backups to the second drive. Is that reasonable?

Eu escolheria hardware relativamente barato para um dos Dells Tower Servers (o mais barato que você pode encontrar para ser exato), o dinheiro que você economizou deve ser gasto em um bom contrato de suporte em caso de falha de hardware e um backup dedicado sistema e provavelmente um no-break que terá pelo menos energia suficiente para permitir que o servidor desligue de uma maneira sã.

Se você deseja executar um repositório de código-fonte e um rastreador de bugs, concluo que está desenvolvendo localmente e fazendo checkins. Comunique-se formalmente sobre o bugtracker para que você e seu parceiro de negócios tenham algo a culpar um pelo outro :). 99% por cento do tempo seu servidor não fará nada.

Se você quiser adicionar alguns testes automatizados em alguma RAM, você não se importa se a compilação leva 5 minutos ou 15 minutos com 2 desenvolvedores, mas você estará enlouquecendo se o daemon / serviço do OpenVPN for morto por causa das interrupções de RAM toda vez que sua compilação é executada.

    
por 09.06.2009 / 20:30
1

Faça um favor a si mesmo e obtenha um roteador de hardware com um bom suporte VPN. Até mesmo algo tão barato quanto a linha Netgear ProSafe pode ser adquirido por US $ 70.

link

Estes tipos de unidades serão muito fáceis de configurar e configurar. Se você acabar precisando de serviços IP dinâmicos (que você pode facilmente fazer), use o DynDNS como sugerido.

    
por 09.06.2009 / 19:45
1

Já que você não tem certeza sobre como configurar algumas das peças, por que não permitir que outra pessoa faça isso?

Considere um ambiente hospedado como Assembla , Desfazendo , Origo , XP-Dev , ProjectLocker , CodeSpaces , bitbucket ou github .

Mantém você fora da configuração e manutenção do servidor e dos repositórios, e a maioria dos sites de hospedagem é barata o suficiente para que seus $ 1k cheguem longe.

A desvantagem é que você pode ter que encontrar uma solução de integração contínua separada. Na lista acima, apenas o ProjectLocker mencionou as ferramentas de integração contínua como um recurso.

    
por 09.06.2009 / 20:17
1

Algumas palavras sobre backups.

Se você não conseguir lê-los, não terá feito backup.

Se você não tem backups fora do local (a casa do seu amigo serve), você não tem bons backups.

Se seus backups estiverem on-line (RAID ou hot server), eles não são backups.

Imagine quais tipos de eventos podem limpar seu sistema e seus backups e certifique-se de aceitar o risco. Se você tiver bons backups na casa de seu amigo, e o servidor no seu, então um único evento teria que ser muito grande (e raro) para acabar com os dois. Se a cidade em que eu moro for bombardeada, por exemplo, provavelmente não vou me preocupar muito com o negócio.

Nenhuma das mídias de custo mais baixo para backups é tão durável, portanto, não apenas tenha um backup que você possa perder por motivos variados.

E, se você optar por um serviço de hospedagem, mantenha seus próprios backups de qualquer maneira. Se a sua empresa de hospedagem perde seus dados, eles prejudicam um cliente, o que não é bom, mas sua empresa está morta e isso é pior. Se o seu serviço sair do mercado, talvez você nunca mais veja seus dados.

A pessoa mais preocupada com seus backups é você, e isso é algo que você normalmente pode fazer por si mesmo. Faça isso.

    
por 09.06.2009 / 22:04
1

É exatamente assim que eu comecei e ainda executo uma caixa de proteção para servidores domésticos.

  • Use uma conexão com fio para o seu servidor, não para o aeroporto.
  • Depois de usar o Slackware, Fedora, SuSE, CentOS e Ubuntu, eu sugeriria o link do Ubuntu Server gestão e melhoria da segurança um pouco mais simples, mas na verdade, a distribuição depende principalmente da preferência pessoal. Todas as distribuições acima têm grandes comunidades por trás delas (embora o Slackware seja muito pequeno em comparação).

Quanto ao hardware: o sandbox do my home é executado em uma torre de qualidade de servidor de 64 bits com dois arrays SATA RAID (sistema, serviços) e 2 GB de RAM, o que é suficiente para esse aplicativo. As especificações que você sugere são possivelmente exageradas, mas se você puder pagar, definitivamente vá em frente. A longo prazo, você só precisará de mais, certo.

Quanto ao backup, você pode economizar algum dinheiro renunciando ao disco rígido USB e apenas colocando um segundo disco rígido que copie da mesma maneira baseada no cron. Observe, no entanto, que não estou sugerindo uma matriz de espelhamento RAID, já que isso não é um backup, mas apenas um segundo disco rígido. Você economizará dinheiro no recinto, e as velocidades de transferência serão um pouco mais altas do que com um externo. Um método de backup superior estaria fora do local ou em um dispositivo NAS.

E segurança: aprenda a tunelar tudo. Você provavelmente só precisará abrir 80 (e talvez 443) e 22 para o mundo exterior. Túnel o resto por ssh para administração remota. Você pode até conseguir encapsular todos os serviços de que precisa, economizando o custo de um roteador VPN.

EDIT Para criar um túnel ssh:

ssh remote.host.com -L local_port:remote_network_address:remote_port

Assim, fora da minha rede, se eu quiser acessar a interface da web do meu roteador do meu laptop que está fora da minha LAN, eu uso

ssh my-home.com -L 8081:192.168.0.1:80

e, em seguida, abra um navegador e acesse link e voilà - encapsulamento criptografado de localhost: 8081 para 192.168.0.1:80 no host remoto LAN. Se você precisar fazer isso a partir do Windows, o PuTTY (IMHO, o de fato Windows ssh client) permitirá que você os configure antes de se conectar. O código acima funciona em qualquer * nix (incluindo o Mac OS X).

    
por 09.06.2009 / 20:02

Tags