Page 1 sur 2
Sécurité serveur
Posté : 02 mai 2006, 18:07
par Invité kroc69
Bonjour à tous
Voilà un sujet que j'ai vu maintes fois abordé donc je pense pouvoir trouver ici ma réponse concernant la sécurité de mon serveur web.
J'ai installé sur un vieux PC portable une distrib Linux Debian avec tout ce qui va bien pour en faire mon serveur web qui fera tourner mon site web perso (j'ai choisi pour le moment cette solution plutôt que du dédié plus pour découvrir Linux et que je voulais me lancer, pour le Fun donc

), php, mysql installés manuellement.
J'ai après avoir longuement consulté aussi bien ce forum qu'Internet paramétrer manuellement le fichier conf d'Apache, mis des mots de passe à ma base Mysql.
J'ai aussi pris une IP dynamique chez Dyndns et que j'ai entrée dans le paramétrage de mon routeur (Livebox de chez Wanadoo) afin de rediriger sur le port 80 les appels sur mon IP.
Est-ce suffisant question sécurité, ou dois-je encore aller plus loin (j'ai lu des choses à propos d'iptables, de firewall mais là je pense que ma Livebox fait office de firewall...)?
Merci de vos réponses suggestions
A+
Kroc69 (qui n'a pas son mot de passe de connexion au forum sous la main)

Posté : 02 mai 2006, 23:46
par jobherzt
ta livebox te protege... tant que tu n'as pas de serveur, a priori
un conseil, si tu decouvres linux : interresse toi a l'outil nmap, pour tester la securite de ton montage..
Posté : 03 mai 2006, 08:01
par Ripat
Malgré la présence des fonctions firewall de ta livebox, il est prudent d'activer un firewall sur ton serveur.
Je pense à trois niveaux de protection:
- filtrage IP
Analyse les couches transport et internet des paquets IP. C'est à dire le protocole, le port, le type de paquet, sa source et sa destination. Et, accessoirement, la partie réseau (adresse mac). Tu tournes sous Linux, c'est bien. Tu peux ainsi te protéger avec netfilter/iptables qui fait tellement autorité en matière de pare-feux qu'il est embarqué sur beaucoup de pare-feux professionnels. Iptables est supporté depuis le noyau 2.4 et doit être compilé sur celui-ci.
- détecteur d'intrusion
Analyse du contenu des paquet IP pour y détecter les tentatives malveillantes d'intrusion. Voir SNORT.
- pare-feux applicatif
Niveau application. Vérifie si le contenu de la requête http est conforme et non malveillante. Il existe un excellent module Apache pour cela: mod_security. Il bloquera les tentatives d'utilisation des failles connues de PHP, MySQL et JS.
Pour le reste, il faut que tu journalises TOUT. Même si la lecture des log t'empêche de dormir en raison du nombre de tentatives d'intrusion qui s'y trouvent, il faut impérativement le faire.
Pour tester ta protection, jobherzt t'a cité un excellent scaneur. J'y rajouterais
nessus, créé par un français et qui fait référence dans le monde professionnel de la sécurité.
apt-get install iptables snort libapache2-mod-security nessus et vogue la galère...
Une liste des utilitaires de sécurité se trouve sur le site de nmap:
http://www.insecure.org/tools.html
Attention, l'auteur de nmap y présente nessus comme logiciel payant. C'est vrai qu'il n'est plus open source mais il reste gratuit. Dans la version gratuite, la mise à jour des scripts d'intrusion ont 7 jours de retard.
Sinon il existe des fork de nessus (pas testé).
Sécurité serveur
Posté : 03 mai 2006, 15:36
par Invité kroc69
Bonjour
Merci à Jobhertz et Ripat pour leur précieux conseils
J'ai commencé à me plonger dans les arcanes des différents softs indiqués.
A+
Kroc69
Sécurité Serveur
Posté : 03 mai 2006, 23:40
par invité kroc69
Bonsoir
Bon ben je suis entrain de tenter les installs recommandées et j'ai un petit pb avec snort au moment de la compil après m'avoir dit qu'il ne trouvait pas les libpcap et pcre que j'ai installé manuellement SNORT me fait encore une erreur sur Mysql maintenant
ERROR: unable to find mysql headers (mysql.h)
checked in the following places
/usr/include
/usr/include/mysql
/usr/local/include
/usr/local/include/mysql
et après vérif je ne trouve rien nul part (soit pas l'un des répertoires proposés soit le fichier headers en question)...
Une idée SVP ?
Merci d'avance
Kroc69

Posté : 03 mai 2006, 23:47
par jobherzt
a priori, snort tu n'as pas besoin de le compiler... tu peux l'installer direct via apt... sinon, vu l'erreur, je dirais qu'il faut faire soit :
(le plus probable... )
soit (mais ca m'etonnerait )
mais compiler snort, ca n'est pas forcement indispenable : l'installation via apt te donnera une installation stable et fiable, propre, ce qui n'est pas a negliger !
Sécurité Serveur
Posté : 04 mai 2006, 00:19
par Invité kroc69
Merci jobhertz de ta promptitude à la réponse.
J'ai adopté ta suggestion et installer snort via apt et effectivement c'est beaucoup plus facile et à priori c'est OK...bon maintenant je dois avoir tout un tas de fichiers inutiles du fait de mes tentatives d'install manuelles...
Maintenant la suite, j'ai d'installé iptables (par défaut avec Debian), mod_security sur Apache que j'ai installé et maintenant SNORT il me reste donc soit Nmap soit Nessus si j'ai bien compris vos emails ??
Une fois ces installs terminées, le paramétrages du tout et vogue la galère....enfin j'espère.
A+
Kroc69

Posté : 04 mai 2006, 10:10
par jobherzt
la bible pour configurer iptables, en ligne et en francas

:
http://olivieraj.free.fr/fr/linux/infor ... index.html
pour les fichiers un peu partout, ne t'en fait pas, tant que la compilation n'est pas arrivée a terme, il n'a a priori rien copie en dehors du repertoire des sources. de toute facon, fait un petit make clean et tout sera.... clean
et apres, oui, nmap et nessus, je ne sais pas s'ils sont complementaire ou plus ou moins sur le meme creneau.. je connais mal nessus, ca a l'air d'etre specialise dans la detection de faille de securite, donc il est peut etre plus directement utile que nmap
nmap permet de scanner les ports avec beaucoup d'option, peut se rendre quasi invisible, peut detecter le systeme d'exploitation... enfin si rien n'est fait pour empecher ca !! a ta place j'essaierais les 2, ca ne coute rien... nessus pour une analyse en profondeur, nmpa pour des test vite fait en ligne de commande si tu as un doute
bon courage !
Posté : 04 mai 2006, 12:36
par Ripat
Dans l'ordre de priorité:
1- un pare-feu que tu fermes le plus possible. Un firewall
Netfilter/Iptables est facile à mettre en oeuvre. Si tu ne souhaites ouvrir que le port http, la table filtre ne devrait comporter que quelques lignes. Assez facile à paramétrer pour une config de base.
2- tu vérifies la qualité de ton pare-feux avec
nmap, qui te donnera le statut des ports ouverts et
Nessus pour l'exécution de tests d'intrusion. (si tu me donnes ton IP du jour par MP je veux bien te faire un test et t'envoyer le rapport)
3- tu protèges ton serveur http des failles et attaques connues de PHP-JS-MYSQL. Surtout si tu n'es pas certain de la qualité du code qu'il hébergera (code de tiers, scripts mal patchés, erreurs de codage etc...) -->
mod_security
4- [option] en production
snort. Pour une surveillance plus fine. Mais, à priori, si tu n'as que un ou deux ports ouverts (80 et 22 ssh), ce qui précède devrait suffire.
5- tu analyses régulièrement les access.log et autres journaux.
@jobherzt > Pas mal le lien. Hop dans les marques-pages!
Les miens:
Sécurité serveur
Posté : 18 mai 2006, 21:57
par KROC69
Bonsoir à tous
Sur les conseils de Ripat je reviens vers vous pour juste faire le point sur mon avancement de mon projet sécurisation de mon serveur Apache
Pour le moment j'ai réussi à installer mod_security sur Apache (mais je souhaiterais savoir s'il était possible de vérifier son bon fonctionnement ?)
J'ai aussi installé nessus mais uniquement la partie Serveur, car lorsque je tente d'installer un client Nessus en l'occurence NessusClient ca ne le fait pas trop. Une idée peut-être d'un autre client ?
J'ai mis en route un Firewal iptables sans trop de difficulté mais un nouveau test externe sur mes ports pourrait me rassurer quant à sa fiabilité.
Enfin, je tente mais pour le moment sans grand succès je dois dire d'installer SNORT en connection avec Mysql, et là grosse galère. Pour le moment la connection ne semble pas se faire mon frontend ACID fonctionne bien mais comme la connection SNORT/Mysql semble out je n'ait rien dans ACID
Merci de vos suggestions/idée
A+
KROC69

Sécurité serveur
Posté : 18 mai 2006, 22:58
par KROC69
C'est encore moi
Enfin un pb de résolu: SNORT tourne enfin avec ACID et Mysql...
Bon maintenant passons à NessusClient ou à un autre client si quelqu'un à une idée.
Merci
A+
KROC69
Re: Sécurité serveur
Posté : 19 mai 2006, 07:31
par Ripat
Pour le moment j'ai réussi à installer mod_security sur Apache (mais je souhaiterais savoir s'il était possible de vérifier son bon fonctionnement ?)
Le mieux est de commencer par activer les log et de journaliser tous les "deny". Cela te permettra de détecter les faux-positifs (les requêtes valables qui ont été rejetées). Tu peux te faire un petit script PHP qui testera toutes tes pages légitimes. Tu peux même simuler l'envoi de formulaires.
Quel rule set utilises-tu. Celles de l'auteur ou de GotRoot ?
http://www.gotroot.com/tiki-index.php?p ... rity+rules
J'ai aussi installé nessus mais uniquement la partie Serveur, car lorsque je tente d'installer un client Nessus en l'occurence NessusClient ca ne le fait pas trop. Une idée peut-être d'un autre client ?
Sans client, tu ne pourras pas faire grand chose. J'utilise les deux clients graphiques Windows et Linux. As-tu essayé
nessus -q le client en ligne de commande? Voir
man nessus
J'ai mis en route un Firewal iptables sans trop de difficulté mais un nouveau test externe sur mes ports pourrait me rassurer quant à sa fiabilité.
nmap -P0 xxx.xxx.xxx.xxx (ton ip externe)
Sécurité serveur
Posté : 25 mai 2006, 00:27
par KROC69
Rebonsoir
C'est encore moi en réponse à Ripat je viens juste vous mettre au courant de mes "progrès"
J'ai vérifié sur le serveur Apache mod_security est installé avec les règles stantards + certaines de GotRoot (pour info j'ai eut quelques soucis pour certaines règles GotRoot qui généraient des erreurs systématiques et donc que je n'ai pas installées...à revoir pour moi).
J'ai réussit à installé le NessusClient et à lance un scan sur mon serveur et bonne nouvelle aucun trou de sécurité, juste une alerte de sécurité sur le port 53 car il semble que le nom distant permette que des requêtes récursives puissent être effectuées par l'hôte faisant tourner Nessusd. Mais, on me dit aussi que si c'est le nom serveur interne alors je peux oublier cette alerte ???
Concernant nmap, je l'ai donc lancé sur l'IP externe et comme résultat j'obtiens 4 ports ouverts: 22 53 80 et 10000 tous les autres apparaîssent comme fermés...good news non ?
Enfin j'ai installé et fait tourner SNORT + ACID + MySQL qui me donne une bonne idée des connexions sur mon serveur. Je suis entrain d'essayer de faire en sorte d'annuler les alertes lorsqu'elles sont manifestement inutiles afin de limiter leur nombre.
Bref, une bonne progression je pense et j'espère en fait avoir quelque chose qui tienne à peu près la route, non ?
Merci
A+
KROC69
Posté : 25 mai 2006, 09:01
par Ripat
Belle progression pour un premier essai sous Linux! Bravo. =D>
Pour tes ports: 22 et 80, normal. Le 55 est le port standard pour un serveur DNS, tu en as vraiment besoin? Les serveurs DNS sont souvent la cible de tentatives malveillantes, alors si tu peux t'en passer...
Le port 10000 est un port client, essaye de savoir à quoi il correspond (netstat).
Je refermerais un maximum de ports sur ton router. Attention au port ssh. S'il est ouvert en permanence, il subira des attaques. Ne l'ouvrir que quand tu as vraiment besoin d'accéder à ton serveur depuis l'extérieur.
Solutions possibles: créer un deuxième firewall, sur ton serveur cette fois (iptables et/ou tcp wrapper -> /etc/hosts.allow), tu pourras ainsi facilement ouvrir/fermer ton port. Eventuellement dynamiquement et à distance: tu es à l'extérieur et tu as subitement besoin d'accéder en ssh à ton serveur. Tu appelles une page secrète sur ton serveur httpd, protégée par un mot de passe, et tu y récupères l'ip d'où tu appelles ($_SERVER['REMOTE_ADDR']). Le script PHP de cette page modifiera ton firewall avec une règle iptables (exec('iptables ta règle')) ou/et l'injectera directement dans /etc/hosts.allow avec fopen() --> fwrite() selon la méthode que tu auras choisie.
C'est une sorte de télécommande pour activer/désactiver ta protection du port ssh.
Il ne devrait plus te rester que le port http (80). Si ton serveur (Apache, je suppose) est bien sécurisé, tu ne risques pas grand-chose.
Règle d'or, fermer tous les ports inutiles et non strictement indispensables et surveiller les logs pour les drop/reject positifs mais aussi pour les faux positifs car un serveur trop protégé (mod_security ou SNORT) peut s'infliger lui même un DoS.
En tout cas, bravo pour ton approche sécuritaire. On est souvent taxé de parano quand on aborde ce sujet mais il suffit d'une lecture occasionnelle des access log pour se convaincre que c'est une qualité indispensable quand on installe un serveur (perso à la maison ou hébergé-dédié).
Sécurité serveur
Posté : 25 mai 2006, 12:17
par KROC69
Bonjour
Merci Ripat pour tes conseils/soutiens
En fait ce n'est pas le port 55 qui est ouvert mais le port 53 domain d'où je pense l'alerte de sécurité de Nessus...
Quand au port 10000 c'est simplement parce que j'ai installé la console d'admin à distance Webmin qui nécessite par défaut (mais peu se changer semble-t-il) l'accès au serveur via le port 10000 en mode https.
D'ailleurs à ce propos de Webmin, c'est via l'un des modules Linux firewall que j'essaie de contrôler l'accès à mes ports, et au vu de ta réponse concernant le port 22 et les solutions possibles (qui je dois l'avouer est encore un peu obscure

) je me demande si je ne l'ai pas déjà installé car il utilise iptables semble-t-il...mais bon je vais revoir la question et tenter de mettre en place ta soluc page secrète qui effectivement me semble parfaitement correspondre à une bonne approche sur ce port. Je l'utilise assez régulièrement pour me connecter sur le serveur via putty et winscp (je travaille mon site web sur Dreamweaver puis je fais une syncronisation des répertoires local/distant sur le serveur avec, très très pratique).
Merci encore de ton aide for précieuse
A+
Kroc69