Servidor LAMP seguro para uso em produção

10

Qual é o procedimento para proteger um Linux, Apache, MySQL, PHP Server (ou mesmo Perl) para uso em produção?

Além de definir a senha do MySQL e a senha root do Linux, que outras medidas (talvez não tão óbvias) devem ser tomadas?

Além disso, que medidas posso tomar, se eu fosse paranóico extra, que normalmente não seria necessário?

Isso é para uso básico em um único site, mas deve ser seguro.

WalterJ89
fonte
Apache Hardening em um site irmão.
Marcin

Respostas:

13

Essas recomendações estão fora da minha cabeça e não pretendem ser abrangentes.

Confira Bastille, é uma série de scripts que implementa as melhores práticas no Linux.

Não envie dados de autenticação por protocolos de texto sem formatação. Por exemplo, desative o FTP. Se você enviar dados de autenticação via Apache, use SSL.

Desative e remova qualquer software desnecessário, incluindo a interface GUI.

Audite todos os arquivos com o bit SUID definido e remova. (Isso limitará severamente as habilidades não-raiz. Entenda as implicações para cada mudança individual.)

Audite diretórios públicos graváveis ​​e remova o bit gravável. (Deixe / tmp sozinho.)

Evite executar qualquer daemon como root.

Pesquise todos os softwares multiusuário que escutam os soquetes em detalhes para obter as melhores práticas de segurança.

Evitar adicionar usuários ao sistema é uma das melhores abordagens. Os sistemas multiusuário exigem maior atenção aos detalhes.

Aplicar padrões de senha. Por exemplo: no mínimo 10 caracteres, caracteres não alfanuméricos, usando letras e números. Isso torna a força bruta mais difícil em caso de comprometimento do arquivo de senha. Aplique isso através do sistema.

Bloqueie os usuários após cinco tentativas de autenticação com falha, com um bloqueio mínimo de 10 minutos. Mantenha um histórico de senhas para que os usuários não possam usar as cinco senhas anteriores.

Se você tiver um ambiente maior, usar a segregação de rede com várias sub-redes para isolar o risco é um requisito absoluto. Se um ambiente menor, é recomendável executar um firewall no sistema local para limitar a exposição. Por exemplo, apenas permitindo SSH para o seu IP. O tcpwrappers também pode ser usado para uma camada extra. (/etc/hosts.allow, /etc/hosts.deny)

E, é claro, mantendo todos os softwares atualizados. Daemons especialmente voltados para o público.

Com SSH:

  • Desativar protocolo SSH 1
  • Permitir apenas autenticação raiz without-password(apenas par de chaves)

Com o Apache:

  • Desative todos os módulos que não são necessários
  • Desativar .htaccess e diretórios públicos
  • Desative o FollowSymlink e quaisquer opções desnecessárias
  • Não instale o PHP se você não precisar dele.

Com o MySQL:

  • Desabilitar usuários padrão.
  • Não use hosts curinga.
  • Certifique-se de definir um host exclusivo para cada usuário.
  • Não ouça no tcp a menos que seja necessário. (Invulgarmente inevitável.)
  • Limite os privilégios de usuário do aplicativo o máximo possível. (SELECT, INSERT, UPDATE, DELETE ideal para gravação e SELECT para leitura)

Eu recomendo pesquisar especificamente o ajuste do php.ini para segurança. É um software mais arriscado por padrão.

Bastilha

Warner
fonte
Vou sugerir para ler cyberciti.biz/tips/php-security-best-practices-tutorial.html para tunning php
ALex_hha
2

Aqui está um bom artigo que você pode usar como base para sua configuração e alterar de acordo com sua distribuição: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- servidor-com-centos-5-36786

Alexandre Nizoux
fonte
Mas basicamente, não carregue módulos que você não precisa explicitamente, oculte todos os números de versão e páginas de depuração / informações, crie um usuário mysql para cada aplicativo com senhas protegidas, sempre faça com que as pessoas trabalhem no seu servidor usando uma conta de usuário comum e faça-o sudo se eles precisam de permissões de root, use um firewall como iptables e apenas abra portas com base no que você absolutamente precisa para entrar na sua caixa ... Isso, além dos patches mais recentes, já lhe dará uma configuração bastante segura.
Alexandre Nizoux
Este artigo não é bom. Desativando o SELinux, nada sobre o endurecimento mysql, desativar módulos apache desnecessários ...
sumar