Estas recomendações estão fora do meu limite e não pretendem ser abrangentes.
Confira o Bastille, é uma série de scripts que implementa as melhores práticas no Linux.
Não envie dados de autenticação em protocolos de texto simples. 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 gráfica.
Audite quaisquer arquivos com o conjunto de bits SUID e remova-os. (Isso limitará severamente as habilidades não-raiz. Entenda as implicações para cada mudança individual.)
Audite os diretórios graváveis públicos e remova o bit gravável. (Deixe / tmp sozinho).
Evite executar qualquer daemon como root.
Pesquise todos os softwares multiusuários que ouvem soquetes detalhadamente sobre as práticas recomendadas de segurança.
Evitar adicionar usuários ao sistema é uma das melhores abordagens. Sistemas multiusuário exigem maior atenção aos detalhes.
Aplicar padrões de senha. Por exemplo: mínimo de 10 caracteres, caracteres não alfanuméricos, usando letras e números. Isso é para tornar o brute forçando mais difícil em caso de comprometimento do arquivo de senha. Reforce isso através do sistema.
Bloqueie os usuários após 5 tentativas de autenticação malsucedidas com um mínimo de 10 minutos de bloqueio. Mantenha um histórico de senhas para que os usuários não possam usar as 5 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, a execução de um firewall no sistema local para limitar a exposição é recomendado. Por exemplo, apenas permitindo o SSH ao seu IP. Os tcpwrappers também podem ser usados para uma camada extra. (/etc/hosts.allow, /etc/hosts.deny)
E, claro, manter todos os softwares atualizados. Especialmente daemons voltados ao público.
com o SSH:
- Desativar o protocolo SSH 1
- Permitir somente a autenticação raiz
without-password
(somente par de chaves)
Com o Apache:
- Desative todos os módulos que não são necessários
- Desativar diretórios .htaccess e 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:
- Desativar usuários padrão.
- Não use hosts curinga.
- Assegure-se de configurar um host exclusivo para cada usuário.
- Não escute no tcp, a menos que seja necessário. (Inevitavelmente inevitável).
- Limite os privilégios de usuário do aplicativo o máximo possível. (SELECT, INSERT, UPDATE, DELETE ideal para escrever e SELECT para leitura)
Eu recomendaria pesquisar especificamente o ajuste do php.ini para segurança. É um software mais arriscado por padrão.