Ces recommandations me viennent à l'esprit et ne visent pas à être exhaustives.
Découvrez Bastille, c'est une série de scripts qui implémente les meilleures pratiques sous Linux.
N'envoyez pas de données d'authentification via des protocoles en clair. Par exemple, désactivez FTP. Si vous envoyez des données d'authentification via Apache, utilisez SSL.
Désactivez et supprimez tout logiciel inutile, y compris l'interface graphique.
Auditez tous les fichiers avec le bit SUID défini et supprimez. (Cela limitera considérablement les capacités non root. Comprenez les implications pour chaque changement individuel.)
Auditez les répertoires accessibles en écriture et supprimez le bit accessible en écriture. (Laisser / tmp seul.)
Évitez d'exécuter un démon en tant que root.
Recherchez tous les logiciels multi-utilisateurs qui écoutent en détail les sockets pour les meilleures pratiques de sécurité.
Éviter d'ajouter des utilisateurs au système est l'une des meilleures approches. Les systèmes multi-utilisateurs nécessitent une plus grande attention aux détails.
Appliquer les normes de mot de passe. Par exemple: minimum 10 caractères, caractères non alphanumériques, en utilisant des lettres et des chiffres. Ceci rend le forçage brutal plus difficile en cas de compromission du fichier de mot de passe. Appliquez cela via le système.
Verrouillez les utilisateurs après 5 tentatives d'authentification infructueuses avec un verrouillage d'au moins 10 minutes. Conservez un historique des mots de passe afin que les utilisateurs ne puissent pas utiliser les 5 derniers mots de passe.
Si vous disposez d'un environnement plus vaste, l'utilisation de la ségrégation réseau avec plusieurs sous-réseaux pour isoler le risque est une exigence absolue. S'il s'agit d'un environnement plus petit, il est recommandé d'exécuter un pare-feu sur le système local pour limiter l'exposition. Par exemple, autoriser uniquement SSH à votre IP. tcpwrappers peut également être utilisé pour une couche supplémentaire. (/etc/hosts.allow, /etc/hosts.deny)
Et, bien sûr, garder tous les logiciels à jour. En particulier les démons face au public.
Avec SSH:
- Désactiver le protocole SSH 1
- Autoriser uniquement l'authentification racine
without-password
(uniquement paire de clés)
Avec Apache:
- Désactivez tous les modules qui ne sont pas nécessaires
- Désactiver .htaccess et les répertoires publics
- Désactivez FollowSymlink et toutes les options inutiles
- N'installez pas PHP si vous n'en avez pas besoin.
Avec MySQL:
- Désactivez les utilisateurs par défaut.
- N'utilisez pas d'hôtes génériques.
- Assurez-vous de définir un hôte unique pour chaque utilisateur.
- N'écoutez pas sur TCP sauf si nécessaire. (Exceptionnellement inévitable.)
- Limitez autant que possible les privilèges des utilisateurs des applications. (SELECT, INSERT, UPDATE, DELETE idéal pour écrire et SELECT pour lire)
Je recommanderais de rechercher spécifiquement le réglage de php.ini pour la sécurité. C'est un logiciel plus risqué par défaut.
Bastille