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.
Respostas:
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:
without-password
(apenas par de chaves)Com o Apache:
Com o MySQL:
Eu recomendo pesquisar especificamente o ajuste do php.ini para segurança. É um software mais arriscado por padrão.
Bastilha
fonte
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
fonte
A Agência de Segurança da Informação de Defesa possui um conjunto de listas de verificação de segurança que são um bom ponto de partida. Melhor ainda é entender a lógica de cada entrada, mas essa não é uma resposta rápida. Eu recomendo que você olhar para o Enclave, Network, Unix, e Web Server STIG s.
fonte