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