Pergunta

Eu tenho Apache rodando em um servidor Debian voltados para o público, e estou um pouco preocupado com a segurança da instalação. Esta é uma máquina que hospeda vários projetos de hobby em tempo livre, para que nenhum de nós que usam a máquina realmente tem tempo para vigiar constantemente para patches a montante, fique ciente dos problemas de segurança, etc. Mas eu gostaria de manter os bandidos para fora , ou se entrar, mantê-los em uma caixa de areia.

Então, qual é o melhor, fácil de configurar, fácil de manter solução aqui? É fácil de configurar um linux sandbox do modo de usuário no Debian? Ou talvez uma jaula? Eu gostaria de ter fácil acesso a arquivos dentro do sadbox do lado de fora. Este é um daqueles momentos em que se torna muito claro para mim que eu sou um programador, não um sysadmin. Qualquer ajuda seria muito apreciada!

Foi útil?

Solução

jaulas chroot pode ser muito inseguro quando você está executando um ambiente completo sandbox. Os atacantes têm acesso completo a funcionalidade do kernel e, por exemplo, pode montar drives para acessar o sistema "host".

Gostaria de sugerir que você usa linux-vserver. Você pode ver linux-vserver como uma jaula melhorada com um interior completo de instalação debian. É muito rápido, uma vez que está sendo executado dentro de um único kernel, e todo o código é executado nativamente.

Eu pessoalmente uso linux-vserver para separação de todos os meus serviços e há apenas um pouco as diferenças de desempenho notável.

Tenha um olhar para o linux-vserver wiki para instruções de instalação.

Atenciosamente, Dennis

Outras dicas

Eu segundo o xardias diz, mas recomendo OpenVZ .

É semelhante ao Linux-Vserver, de modo que você pode querer comparar os dois quando indo por este caminho.

eu configurar um servidor web com um servidor proxy HTTP ( nginx ), que, em seguida, os delegados tráfego para OpenVZ diferente recipientes (com base no nome de host ou caminho solicitado). Dentro de cada recipiente que você pode configurar o Apache ou qualquer outro servidor web (por exemplo, nginx, lighttpd, ..). Desta forma, você não tem um Apache para tudo, mas poderia criar um recipiente para qualquer subconjunto de serviços (projecto por exemplo per).

OpenVZ recipientes podem facilmente ficar atualizado completamente ( "for i in $ (vzlist); fazer vzctl exec apt-get upgrade; done")

Os arquivos dos diferentes recipientes são armazenados no nó de hardware e, portanto, você pode facilmente acessá-los por SFTPing no nó de hardware. Para além de que você pode adicionar um endereço IP público para alguns dos seus recipientes, instalar SSH lá e então acessá-los diretamente a partir do recipiente. Eu mesmo ouvi de proxies SSH, então o endereço IP público adicional pode ser ainda desnecessários nesse caso.

Você sempre pode configurá-lo dentro de uma máquina virtual e manter uma imagem dele, para que possa re roll-lo se for necessário. Dessa forma, o servidor é captada a partir de seu computador atual, e qualquer vírus ou assim por diante estão contidos dentro da máquina virtual. Como eu disse antes, se você manter uma imagem como um backup, você pode restaurar a seu estado anterior muito fácil.

Para se certificar de que é dito, Chroot prisões raramente são uma boa idéia é, apesar da intenção, muito fácil de quebrar, de facto eu já vi isso feito por usuários acidentalmente!

Sem ofensa, mas se você não tem tempo para assistir de patches de segurança, e ficar ciente das questões de segurança, você deve se preocupar, não importa qual a sua configuração. Por outro lado, o simples facto de que você está pensando sobre essas questões o distingue do outro 99,9% dos proprietários de tais máquinas. Você está no caminho certo!

Acho que é surpreendente que ninguém mencionou mod_chroot e suEXEC , que são as coisas básicas que você deve começar, e, muito provavelmente as únicas coisas que você precisa.

Você deve usar SELinux. Eu não sei o quão bem ele está suportado em Debian; se não é, basta instalar um CentOS 5.2 com o SELinux habilitado em uma VM. não deve ser muito trabalho, e muito muito mais seguro do que qualquer chrooting amador, que não é tão segura como a maioria das pessoas acredita. SELinux tem uma reputação de ser difícil de admin, mas se você está apenas executando um servidor web, que não deve ser um problema. Você pode apenas ter que fazer alguns "sebool" para deixar httpd conectar ao DB, mas que é sobre ele.

Apesar de todos os itens acima são boas sugestões, eu também sugerem a adição de iptables governar para não permitir conexões de rede de saída inesperados. Desde a primeira coisa web exploits mais automatizados fazer é baixar o resto de sua carga, impedindo a conexão de rede pode retardar o baixo atacante.

Algumas regras semelhantes a estes podem ser usados ??(Cuidado, seu servidor pode precisar de acesso a outros protocolos): iptables --append proprietário OUTPUT -m --uid-proprietário apache --state -m state estabelecidas, relacionadas --jump ACEITAR iptables --append proprietário OUTPUT -m --uid-proprietário apache --protocol udp --destination-porta 53 --jump ACEITAR iptables --append proprietário OUTPUT -m --uid-proprietário apache --jump REJEITAR

Se estiver usando Debian, debootstrap é seu amigo juntamente com QEMU, Xen, OpenVZ, Lguest ou uma infinidade de outros.

Faça uma máquina virtual. tentar algo como o VMware ou qemu

Que problema você está realmente tentando resolver? Se você se preocupa com o que está no servidor, você precisa para evitar intrusos de entrar nele. Se você se preocupa com o que os intrusos faria com o seu servidor, você precisa restringir as capacidades do próprio servidor.

Nenhum destes problemas poderiam ser resolvidos com a virtualização, sem criplling severamente o próprio servidor. Eu acho que a verdadeira resposta para o seu problema é o seguinte:

  1. executar um sistema operacional que fornece um mecanismo fácil para atualizações do sistema operacional.
  2. usar o software fornecido pelo fabricante.
  3. backup de tudo muitas vezes.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top