Make ur home secure web server !

    août 21st, 2009

    Un ami veut se faire un petit serveur privé chez lui et je lui ai passé quelques astuces afin d’avoir le moins possible à payer en terme d’équipement ou même de consommation d’énergie. De plus quelques astuces en sécurité histoire d’avoir un serveur personnel pas très cher, mais robuste. Je me souviens d’ailleurs de mon premier serveur maison, il y a de ça quelques années j’en avais réalisé un dans une boite en carton d’écran LCD, ce qui au niveau chaleur n’était pas trop trop conseillé.

    Bref, donc tout d’abord, quel matériel choisir ?

    Là, question coût, nous n’allons pas acheter quelque chose de très puissant, car il sera principalement réalisé afin de permettre le téléchargement de fichiers (après vous voyez pour la légalité), la mise en place d’un serveur web voire mail si vous le souhaitez. Donc pour faire « bien » à pas cher, vous avez deux choix :

    1. Le choix Système-D : Allez acheter sur un site ex : leboncoin.fr un netbook avec un écran cassé, on en trouve de très bons à pas cher 50 à 80 euros avec 1go de Ram, 900hz, entre 4 et 16go de disque dur etc. Ceci est bien car les personnes vendant ce matériel ne savent pas que ce qui compte dans une grande partie des cas, ce n’est pas l’écran, mais bien l’intérieur de la bête.

    2. Le choix résonné : Si vous avez un peu d’argent devant vous (environ 200 euros) vous pouvez vous prendre un petit soekris histoire d’être sûr d’avoir du bon matos. Il n’est pas bruyant et consomme rien. Cependant ceux qui sont allergiques aux lignes de commande vont vivre quelques heures de configuration fastidieuses. Ce choix est résonné par rapport à la consommation d’énergie si votre bébé va tourner 7j/7.

    Maintenant que vous avez le matériel, où l’installer ? Là vous avez plusieurs possibilités et tout dépend là aussi de la chaleur qu’il dégage. J’ai fait des tests dans plusieurs endroits aussi atypiques les uns que les autres et ce qui en ressort c’est qu’un petit serveur comme vous allez faire n’a pas besoin d’une chambre froide afin de fonctionner non-stop. Cependant, j’ai testé la méthode dans le frigo et cela s’avère un assez bonne alternative :) (si vous n’avez pas de légumes/fruits/etc dedans).

    Et le web fut !

    Pour ce qui est de la connectivité, oubliez le WIFI et préférez le filaire cela permettra d’avoir moins de problèmes de paramétrage au cas où le serveur redémarre ou si le wifi merdoy. Une chose est sûre, les câbles, malgré ce que l’on en dit, ont encore de beaux jours devant eux ! Le raccordement à la box fait, sécurisez cette dernière, mettez un mot de passe d’accès si cela n’est pas déjà fait. Activez l’IP forwarding vers l’adresse IP statique de votre serveur en question à partir de la console d’administration. Pourquoi mettre un mot de passe ? Tout simplement pour éviter les attaques CSRF, mais aussi (et surtout) éviter que l’on ait accès à son administration si votre serveur est éteint.

    Ceci fait, tous les flux entrants par le(s) port(s) que vous avez désignés vont être aiguillés vers votre serveur (Cool, non ? Non ? Bon d’accord…) Maintenant vous n’avez plus qu’à installer votre petite solution LAMP sur votre serveur et les différents services que vous voulez. N’oubliez pas d’activer les virtual hosts sur Apache si vous avez fait pointer des noms de domaines sur votre BOX.

    La sécurité avant tout !

    Passons maintenant à la sécurité du serveur, car il faut bien le dire, un serveur non implanté dans une DMZ présente un vrai risque pour la sécurité du réseau et la confidentialité des informations transférées sur ce dernier. Donc il faut absolument le sécuriser de toutes parts. Tout d’abord, contre le fingerprinting actif et passif. Il faut pour cela changer le TTL de Linux pour faire croire aux différents scanners que c’est Windows qui est sur la machine (on on change le TTL de 64 en 128) (les scanners ne se basent pas que sur le ttl pour déduire les version des Os, mais c’est une méthode, et autant la brouiller), on change aussi les différents bandeaux des différentes applications telles que SSH, Apache et autres trucs comme cela. Moins l’attaquant en sait sur le système visé depuis l’extérieur mieux c’est pour vos fesses ! (d’ailleurs documentez-vous sur ce petit soft bien sympa : IP personnality, même s’il est pour les 2.4, la doc est assez sympa histoire de voir comment cela fonctionne…). Il y a aussi ce petit lien avec quelques logiciels du même type.

    Ceci fait, il nous faut changer quelques configurations par défaut, tout d’abord, SSH. On enlève la possibilité de login en Root à distance sur le système, on change le port par défaut du service histoire de ne pas être attaqué par des Boots où des SK. Ensuite on va configurer un petit utilitaire afin de détecter la moindre tentative manquée de connexion à différents services, cet utilitaire est connu et bien sympa. Surtout si on le couple à un service d’envoi d’SMS pour avec un temps de réponse post-attaque rapide. Son nom : fail2ban. Et oui, on ne change pas une équipe qui gagne ! Bon pour la documentation direction ICI où tout y est très bien expliqué. Amusez-vous avec IP tables afin de dropper les paquets qui sont méchant, pour cela, il existe des tonnes de ressources sur Internet donc je vous fait confiance.

    Vous pouvez aussi envisager une solution de port knocking afin de gérer les ports dynamiquement, cette solution permet beaucoup de choses, et surtout réduit considérablement les logs de tentatives d’attaques :)

    Il faut aussi créer un utilisateur dans un espace confiné, afin d’emprisonner le pirate dès l’obtention d’un shell d’attaque sur un processus utilisé par cet utilisateur. La technique s’appelle le chroot et est difficile à mettre en place si on ne l’a pas fait trente six mille fois sur différents logiciels (moi aussi j’ai encore du mal à chrooter). Au programme, récupération des librairies utiles au logiciel, création de l’espace restreint dans un répertoire à la racine et emprisonnement des processus. Vous pouvez le faire, ou pas. Si vous ne voulez pas passer par cette tâche longue et fastidieuse, vous pouvez désactiver pour les utilisateurs autres que le root les programmes utiles au pirate en tant d’attaque tels que wget, gcc, python, cURL, vim, nano, pico etc. afin qu’il ait beaucoup de mal à devenir root sur votre machine (chmod 700). On peut aussi, afin qu’il ne s’amuse pas à essayer d’entrevoir la topologie de notre réseau chmoder les ifconfig, ping etc. Vous pouvez aussi vous amuser avec le petit tool de la NSA dénommé SElinux perrmettant de mettre des droits pour des processus à des fichiers pécis, et cela, un Linux standard ne le fait pas ! :D Cela devient très vite utile en cas d’attaque. Voir plus d’infos ici ou sur Google ;)

    Enfin, pour la configuration du serveur (apache, php etc.) désactivez tout ce qui peut permettre l’identification là aussi des versions utilisés, donc direction tout d’abord httpd.conf et désactivez les signatures du serveur. Vérifiez que la valeur expose_php dans le php.ini est à off, si elle ne l’est pas, mettez-là ! En ce qui concerne aussi le php.ini, mettez le safe_mod sur on, les magic_quotes aussi, modifier l’open base dir et mettez allow_url_fopen sur Off. Désactivez de plus certaines fonctions qui sont pas très très sympa… Ne laissez jamais MySQL s’exécuter avec l’utilisateur root de ce dernier, créez des utilisateurs avec des droits restreint afin de ne pas aller vers la catastrophe. Par ailleurs, mettez en place un petit IDS codé en PHP sur votre site dynamique afin de voir s’il est la cible d’attaques… (voir PHPIDS, même si à ma grande surprise, il ne contre pas certaines attaques que mon IDS php à moi détecte… :D)

    Et maintenant ?

    Et bien, si vous avez tout fait et que vous arrivez encore à lire ces lignes, je dois dire bravo ! Il ne vous reste plus qu’à veiller sur les mises à jour de votre système, de créer un Cron qui exportera vos logs (mysql/apache/acces/ssh) toutes les semaines vers une adresse mail mise en place pour l’occasion afin d’entrevoir des tentatives d’attaque qui seraient passées entre les mailles du filet. On peut aussi s’amuser à envoyer des mails ou des SMS, mais ceci est une autre histoire. Veillez à faire un rkhunter avec Cron quelques fois afin de voir s’il n’y a pas de rootkits sur le système et… voilà !

    Désolé si cet article manque de références ou n’est pas complet, j’ai écrit cela – un peu – à l’arrache aujourd’hui et je ne vais pas aller chercher des références si j’en n’ai pas pris pour le réaliser. La prochaine fois, j’essayerai de faire quelque chose de plus « pro ».

    Semaine blanche

    août 21st, 2009

    Ayé, j’en suis sorti vivant. Avec quelques lacunes, certes, mais vivant ! De quoi ? Bah de Elab Tv bien sûr ! Elab TV est un rendez-vous beaucoup attendu par les SRCien-ne-s de Bordeaux. Cet évènement d’une semaine permet aux étudiants organisés par groupes de huit élèves de réaliser une émission vidéo de A à Z ce qui comprend donc : Le choix du thème, l’élaboration d’un scénario, d’un story board, la prise de contact avec les personnes intervenantes, l’organisation en général, le tournage, le dérushage, le montage, les « effets », la finalisation/exportation et de grosses doses de café. Le tout bien évidemment en quatre jours et quelques nuits pour compliquer la chose.

    Me concernant, j’étais dans le groupe d’organisation de l’évènement et nous devions dans ce groupe réaliser deux choses principales. Tout d’abord, organiser l’évènement mais aussi faire un générique à l’émission. L’organisation s’est bien passée même si le matériel manquait à la suite de groupe qui ayant les yeux plus gros que le ventre prenaient deux caméras alors qu’une aurait largement suffit.

    Par contre, niveau générique, je pense que nous, tout comme certains groupes, nous avons eu les yeux plus gros que le ventre. Notre idée était de réaliser un effet de magazine incrustant des vidéo avec des testes en 3D dans after effects donc il nous fallait faire toute la mise en page dans photoshop/illustrator puis ensuite l’importer dans after. Bref, outre le temps pris pour la mise en page des maquettes, seule une personne dans le groupe avait des notions d’after effects ce qui fut la plus grande contrainte de réalisation de ce générique (sans parler des problèmes matériels, ayant des ordinateurs non conçus pour exporter en deux deux des vidéos d’after effects).

    Bref, beaucoup d’erreurs ont été faites dans mon groupe et dans l’ensemble de cet Elab TV qu’il faudra que je retienne. Mais outre le but de l’évènement, je retiens quelques souvenirs tout de même, certains fous rires, ou même les longues heures devant un écran afin de réaliser des maquettes ou de comprendre le fonctionnement d’after effects. Sans parler du rapprochement franco-chinois pendant cet Elab TV. Une chose est sur, n’ayant que quelques bases actuellement en vidéo (première), il faut vraiment que je me mette à voir plus loin qu’un simple montage lambda .

    Quelques idées en vrac pour le prochain Elab TV :

    - Réaliser l’évènement avant décembre pour rapprocher les élèves ? (Après, il faut voir au point de vue de la formation audiovisuelle de ces derniers).
    - Faire des impressions d’autorisation de droit à l’image avant l’évènement.
    - Pourquoi ne pas faire une présentation en live façon « météo » dans une pièce à côté du plateau qui sera enregistrée et projetée directement au plateau télévision ?
    - Ne pas injecter du matériel dans le processus sans qu’il ne soit notifié par les responsables de l’organisation.
    - Prévoir les interviews de policiers, gendarmes etc. avec une autorisation de leur hiérarchie faite avant Elab TV.

    Feed Back, stage en imprimerie.

    août 21st, 2009

    Et me revoilà, de retour après une semaine intense de stage en imprimerie dans le cadre de ma formation à SRC Bordeaux. Car il faut bien le dire, nous ne faisons pas que du web et nous voyons bien d’autres choses !

    Bref, j’ai passé ce stage dans une petite imprimerie de Poitiers afin d’observer tout le processus de la chaine graphique mais aussi et bien entendu, mettre un peu la main à la patte là où je pouvais me rendre utile. Donc en une semaine, on va dire que j’ai fait quelques trucs intéressants. Tout d’abord, je me suis initié à Quark Xpress, ne l’ayant pas à mon IUT (tout du moins, pas à ma connaissance.) j’ai pu enfin voir ce que valait ce logiciel – dont on me vante les mérites depuis quelques années maintenant – comparé à Indesign d’Adobe. Bref, je n’ai pas fait de très grandes maquettes dessus mais seulement quelques faire-parts et cartes de visites.

    D’ailleurs, outre le fait que cette imprimerie possède certains grands comptes comme clients, elle est aussi spécialisé dans les faire-parts. En voir un d’accord, mais en voir dix de suite devient plus que marrant ! Toujours les mêmes formulations, toujours les polices anglaises pour faire chique et pour plaire aux clients. De plus, sur certains siégeaient de très grosses fautes de formulation. Maintenant, je sais pourquoi il faut soigner son orthographe (même si cela m’arrive évidemment de faire des fautes) car faire des fautes sur un schéma de faire-part que l’on donne à un imprimeur, cela ne se fait pas.

    Donc il y avait des moments « cools », ceux où je faisais de l’infographie et d’autres moins « cools », ceux où je remplissais des cartons de 27000 feuilles. Par ailleurs, étant en SRC, on m’a demandé de réaliser une maquette de présentation pour leurs email mais aussi afin de faire un petit peu de PUB autour d’eux (oh le vilain spammeur !). Donc j’ai passé environ cinq heures à faire le design ou à développer le code. Mais aussi à faire des tests pour voir ce qui était interprété et ce qui ne l’était pas par nos amis les webmails et de plus (hacker inside) j’ai élaboré des stratégies afin de contourner certains filtres interdisant l’affichage direct de la moindre petite image dans un mail…

    Bref, c’est fini, maintenant je passe à autre chose. Je remercie tous les employés pour m’avoir donné de leurs temps afin de m’expliquer tous les rouages d’une imprimerie et de certaines machines. De plus, j’essaye encore de garder cette vision d’artisan même si la technologie est aujourd’hui partout ce qui dé-nature un peu l’esthétisme qu’avait le typographe d’antan mettant à la main des chaînes de caractères. Aujourd’hui l’offset est partout, les imprimeurs n’ont plus le temps, mais bien l’heure.

    SaaS et vulnérabilités

    août 21st, 2009

    Je vais présenter dans cet article un service qui tend à s’étendre dans l’avenir avec le développement de nouvelles applications et nouveaux procédés. Tout le monde et ce depuis quelques années maintenant, s’émerveille devant la venue des SaaS sur le web et des avantages que cela procure.

    De plus en plus de personnes font appel à ces services [1] en entreprise afin d’optimiser leurs coûts. Cependant, beaucoup d’entreprises ne réalisent pas qu’en utilisant ces types de services, elles soumettent certaines informations contenues à des tiers.

    Ceci peut augmenter à terme le risque de vol d’informations, de viol de la confidentialité des données et de plus la possibilité de récolte d’informations en vue du piratage du réseau de l’entreprise si les serveurs du prestataire des SaaS s’avèrent compromis ou si des fichiers de connexions à ces derniers sont détournés.

    Les risques sont multipliés lorsque ces SaaS utilisent par ailleurs un navigateur Internet lambda comme client. Des failles sur le site du prestataire (surtout si ce dernier développe d’autres services étendus orientés sur le web) permettent là aussi d’accéder à vos documents. Nous retiendrons une faille présente malheureusement dans beaucoup d’applications web qui sont autre que les XSS, permettant suite au vol de cookies sur un service d’étendre son emprise sur la totalité des services du prestataire utilisés par l’Internaute.

    Ainsi, la logique du prestataire, qui n’est autre que de ne pas changer les informations de sessions entre les SaaS afin de ne pas gêner le client passant d’un service (ex : webmail) à un autre (ex : Editeur en ligne) se révèle une vulnérabilité potentielle pour la compromission totale des informations soumises par l’internaute au SaaS.

    C’est le cas par exemple lorsque de grands noms du web ayant des SaaS se retrouvent avec une vulnérabilité dans une de leurs pages dynamiques et ceci arrive plus que souvent. Nous pouvons aussi noter de par le passé un SaaS qui pouvait permettre à n’importe qui de visionner les documents de chaque utilisateur en prédisant le nom relatif au document utilisé par l’application.

    Bref, les SaaS c’est beau. Mais il ne faut pas en abuser ! Surtout lorsqu’on a aucune information relative à la sécurité du système traitant les documents envoyés dans le cadre de suites de bureautique Online ou autres. Selon moi, une entreprise ne devrait pas soumettre n’importe quel document interne (quel que soit son niveau de divulgation) à un SaaS sans être assuré de la préservation de la confidentialité de ces derniers. Pour les particuliers (CV etc.) ceci est une autre histoire et une autre échelle de risques.

    Twitter a risqué gros !

    août 21st, 2009

    Bon, je ne vais pas m’éterniser, mais il était possible de faire un petit CSRF-viruz made in Twitter suite à l’ancienne vulnérabilité CRSF (elle a été corrigée grâce à la mise en place d’un token). Rappelez-vous, il était possible à la suite d’un appel d’une URL de changer le statut twitter d’un visiteur de son site internet.

    A partir de cela, comment un virus pourrait-il fonctionner ?

    Eh bien, mettre dans le message posté sur le Twitter de la victime l’adresse du site internet ayant le script permettant l’attaque CSRF dans sa version la plus basique. Ainsi, ceci permettait une récursivité dans le style des virus MSN bien connus. En cliquant sur le lien, on postait l’accès à la page sur notre twitter, et nos followers, feront de même en cliquant et les followers de nos followers feront pareil.

    En plus, nous aurions pu faire un générateur de phrases alléchantes en JS attirant nos followers à aller voir cette page piégée…

    En bref, beaucoup de perspectives et je n’ai pas parlé d’autres – exécutions d’autres codes malicieux à partir de la page etc. – étaient possibles malheureusement.

    Aujourd’hui, la récupération des tokens en Cross-domain grâce à AJAX suite à l’utilisation de XMLHttpRequest et grâce à JSON suite à l’utilisation de la classe JSONscriptRequest est impossible (sur Firefox et certains autres navigateurs acceptant JavaScript). Cependant, il n’est pas rare de voir des chercheurs arrivant à détourner les protections contre les Httprequests en cross-domain établies par les navigateurs.

    Donc ce n’est que partie remise…