samedi 30 mars 2013

Shaarli et Kriss feed (auto-hébergement sur Synology)


Ca y est c'est la fin... A peine ai-je mis en place les bribes de la stratégie de veille avec Google Reader que tout s'effondre. Le 1 juillet 2013 Google Reader fermera ses portes. T_T

Bon qu'est-ce qu'on a comme concurrent qui ne se base pas sur l'API google reader ? Pas grand chose on dirait.

Mais à peine le temps de commencer la recherche que je tombe sur le message d'un mec qui aime bien gueuler : Sebsauvage. Ce développeur blogueur montre justement un exemple de logiciel que l'on peut installer chez soi pour être indépendant des aléas des sociétés à but lucratif.

Bref Sebsauvage propose d'installer l'application Kriss_feed de Tontof.


L'interface est sobre. Il est possible de grouper les liens. L'affichage est correct sur Android (les boutons sont trop énormes). Bref à voir sur la durée.

Maintenant il me reste à pouvoir classer les messages qui m'intéresent et c'est là qu'intervient Shaarli de Sebsauvage himself.

Shaarli est un mélange de Evernote, Twitter, microblog, StumbleUpon, Delicious. Bref il est ce que vous décidez d'en faire :D

Le principe est simple : vous créez un mini-message de description pour le lien que vous voulez partager et c'est fini. Vos amis n'ont qu'à suivre le flux RSS pour savoir ce qui vous a plu récemment. Mais il n'est pas obligatoire de partager les liens. Il y a un mode privé aussi qui est prévu à cet effet.

Le petit plus de Kriss_feed est qu'il y a un lien dans l'interface pour pousser le lien directement dans Shaarli afin de sauvegarder vos messages préférés. C'est Shaarli qui vous permettra de gérer les tags pour retrouver les informations par thème. Je pense que ça va bien me servir.

Les deux développeurs partagent la même philisophie de codage : Un fichier fichier de code et pas de base de données. C'est vraiment le rêve à déployer :)

Petite subtilité pour utiliser les deux applications sur un Synology : il faut activer l'extension zlib qui doit servir à compresser le fichier d'index qui remplace la base de données.


Je vais tester tout ça d'ici la mort de Google Reader en espérant que ça réponde à mes besoins.

mercredi 20 mars 2013

La sécurité informatique avec un oeil extérieur

Au hasard de mes balades numériques je suis tombé sur le document suivant : Enquête sur la sécurité numérique des entreprises. La première chose qui saute aux yeux est que le rapport n'est pas écrit par un spécialiste du domaine (Bruno Gruselle) et qu'il ne semble pas non plus destiné aux acteurs du domaine. Il est indiqué qu'un questionnaire a été utilisé pour mener les entretiens avec 21 entreprises, mais les réponses semblent très libres et finalement c'est très plaisant à lire car des vérités ressortent et j'ai décidé de les retranscrire ici en espérant vous donner envie de lire ce rapport.
Bonne lecture.

Introduction :
Le premier point d'attention est de bien distinguer la sécurité informatique de la sécurité de l'information. Ces deux facettes sont gérées généralement par les mêmes acteurs alors que la sécurité des données serait plutôt du périmètre de la protection du patrimoine. Bien sûr cette remarque concerne surtout les grosses entreprises.

Les risques :
Les RSSI reconnaissent que les risques numériques sont critiques pour l'entreprise, mais qu'il faut distinguer parmi les attaques le bruit de fond (phishing, scans de ports, sites Internet piégés par des kits d'exploit) des attaques pouvant avoir un impact important (intrusion, fraude). A noter qu'en matière de phishing, il y a et aura toujours un taux incompressible d'erreur (humaine ?) qui devrait être pris en compte par les solutions de sécurité mises en place pour dépanner les utilisateurs qui se sont fait piéger.

Le niveau des attaques dépend souvent de la réputation et de la visibilité des entreprises. Pour les banques l'impact d'une attaque réussie serait très mauvais pour leur réputation. La préoccupation actuelle est aux APT (bizarrement écrit Advanced Permanent Threat partout sauf une fois Persistant) dans le sens où une bonne configuration des FW et un patch management correct ne sont plus suffisants. Surtout qu'en face nous avons des pirates professionnels.

Un point intéressant qui ressort est l'isolation de certains réseaux. Par exemple il est préférable d'isoler les systèmes critiques (SCADA) et les environnements R&D. Bien qu'ayant un coût important, cette mesure permet d'éviter bon nombre de risques.

En ce qui concerne les environnements type SCADA, l'enjeu n'est pas la confidentialité (à part les secrets de fabrication, configuration, ...) mais la disponibilité. On parlait avant de sûreté de fonctionnement, mais on converge vers la sécurité informatique.

L'organisation :
Côté organisation il semble que la plupart des entreprises ont mis en place un réseau de correspondants sécurité qui ont pour rôle de s'assurer que la politique de sécurité est appliquée et d'être en soutien aux utilisateurs pour les questions de sécurité.

En ce qui concerne le RSSI, il peut être dans la direction sécurité du patrimoine (sous la DG), sous le DSI, ou bien il n'y a pas vraiment de RSSI, mais un groupe d'acteur de chaque direction (DSI, RH, juridique, métier, ...). Il ressort qu'un RSSI sous la DSI gère de la sécurité Informatique alors qu'un RSSI sous la DG sera plus à même de faire de la gouvernance, avoir un rôle de prescripteur et d'assistance aux projets.

"Ainsi comme le souligne l'un des interlocuteurs, la notion de RSSI est une aberration car il faut concevoir la sécurité comme tout autre fonction et pas comme un métier à part. On doit faire évoluer pour intégrer la sécurité dans les besoins de tous les projets et pas comme une contrainte externe portée par une direction qui intervient en dernier ressort."

"Certaines des personnes concernées jugent toutefois que le manque de contraintes (comme celles qui peuvent peser sur le secret de la défense nationale) conduit à donner un poids plus important aux problématiques d'économies de préférence à celles de sécurité."

"Si la relation avec la CNIL est en général bien cadrée - du fait de la prise en compte des obligations réglementaires ou légales qui pèsent sur l'entreprise - le contact avec l'ANSSI est parfois plus compliqué. Pour certaines interlocuteurs, l'agence est encore trop peu réactive et s'intéresse encore trop aux grands comptes lés à l'Etat plutôt qu'à l'ensemble du tissu économique."

"L'une des personnes interrogées souligne que l'un des défis de sécurisation est de faire venir les utilisateurs à la sécurité plutôt que de les obliger à appliquer des mesures qu'ils ne comprennent pas ou qu'ils trouvent inutiles, voire incompréhensibles."

"Les éléments contractuels doivent être suffisamment précis pour englober la responsabilité du sous-traitant à un niveau équivalent à celui des sociétés appartenant au groupe."

"Le cadre juridique - quand il est clair et précis - s'avère en fait d'une grande aide et simplifie le travail de sécurisation."

Les orientations :
Plusieurs entreprises commencent à mettre en place un SOC (équipe de supervision dédiée).
Il va être important de créer un dispositif d'alerte et de gestion de crise.

La sensibilisation et la formation est toujours une priorité.
"Pour autant il faut noter l'existence de deux tendances antinomiques : d'une part on ne peut pas tout miser sur l'utilisateur et il faut concevoir la sécurité en imaginant que l'utilisateur va faillir. D'autre part les failles ou les attaques importantes (APT) sont le plus souvent détectées par les utilisateurs. Il est donc indispensable de faire de l'information, de la sensibilisation et de la formation."
" Il existe deux niveaux de formation : directement après le recrutement qui permet généralement de présenter les risques, la politique de sécurité mise en place et les outils de l'entreprise. Ensuite dans le cycle de vie de l'employé, se déroulent des modules spécifiques sur les SI et leur sécurité."

La progression du cadre juridique et réglementaire qui va apporter de nouvelles contraintes : déclaration des incidents, création d'un CIL, gestion des lois au niveau international.

"Enfin, quelques personnes rencontrées se sont étonnées de l'absence d'un outil juridique qui permettent d'imposer un certain niveau de confidentialité aux informations non industrielles détenues par leurs entreprises (de type secret des affaires)."

samedi 16 mars 2013

Mac mini et Debian, EFI et GPT

Je m'amuse comme un petit fou avec mon Mac mini (comprendre : ça fait une semaine que je perds mes soirées et que je n'avance pas).

J'avais donc prévu d'installer un ESXi, dessus mais en fait le côté hyperviseur "bare metal" m'a rebuté car il n'est pas possible d'utiliser le serveur comme station de travail en même temps (enfin c'est possible d'attacher une 2ieme carte graphique à une VM, mais je ne vois pas où je vais la mettre sur un Mac mini). Il m'aurait donc fallu un autre ordinateur pour me connecter aux machines virtuelles.

J'ai donc décidé de donner une chance à proxmox mais en l'installant sur une Debian et non en natif. A vrai dire je n'en suis qu'à l'étape Debian, mais c'est déjà pas mal :D

La première étape pour installer un nouveau système est évidemment de booter sur une clé USB (vu que le lecteur externe coûte un œil). Bref je me fais une clé Debian avec unetbootin et je redémarre. Bon je cherche le BIOS, par réflexe j'appuie sur del, F10, F12, mais j'aurai pu essayer toutes les touches du clavier car il n'y plus de BIOS sur les machines Macintel, mais un UEFI. Qu'à cela ne tienne, je trouve d'obscures raccourcis clavier à base de pomme et alt. Là encore c'est l'échec et je tombe sur un KB officiel d'Apple qui indique qu'il n'est pas possible de faire les manipulations au boot avec un clavier sans fil.

Finalement je suis tombé sur l'application Refit, puis sur son successeur Refind qui permet de détecter les systèmes présents et de sélectionner celui de son choix y compris sur clé USB ! Je peux donc booter sur ma live Debian. Au passage Debian a mis au point un système hybride qui permet d'extraire l'ISO du CD directement sur la clé USB avec la commande DD, mais je n'ai pas réussi à le faire :/

Je peux enfin commencer l'installation de ma Debian. Je suis un premier post qui m'indique que c'est bien possible à faire, mais le petit malin est en single boot. Je fais donc un partitionnement tout propre et je colle grub sur le MBR, sauf qu'il n'y a plus de MBR. En effet ça aussi je l'ignorais, mais les nouveaux systèmes configurent les disques en GPT. Cela permet d'avoir des partitions de plus de 2,2Go et 128 partitions sans passer par des bidouilles de partitions étendues ou encore du LVM. Mais au passage le MBR a été supprimé. J'ai donc un système installé  sur lequel je ne peux pas booter malgré Refind. Il faut en fait installer un grub-efi sur la première partition du disque en suivant ce second post.

Pour installer grub-efi je suis repassé par la Debian USB en mode live et comme il y a peu de drivers j'ai dû passer en mode sans échec et brancher une clé WIFI alfa car celle du Mac n'est pas reconnue. Il faut faire un chroot sur le système installé puis télécharger grub-efi et faire l'installation.

Et voilà ! J'ai mis une semaine à faire le genre de chose que je faisais en 1h avec le BIOS et le MBR, mais ça m'a appris plein de choses et je mettrai moins de temps la prochaine fois :)

jeudi 7 mars 2013

Powershell : Out-GridView

Héhé ! Vous avez cru que Powershell c'était juste de la ligne de commande... et bien vous vous êtres gourés !

Il existe une sortie vers une affichage fenêtré contrairement à Out-File et Export-Csv que j'ai utilisé dans mon premier post. Elle s'appelle Out-GridView et permet ensuite d'effectuer des filtres sur la liste d'objets qu'on lui passe.

Get-Process | Out-gridview

Ce qui donne :

Malheureusement Out-Griview est un cul-de-sac. Tout votre travail s'en va en fumée dès que vous fermez la fenêtre. Alors pensez à mettre votre travail d'abord dans un fichier puis ensuite ouvrez-le dans une fenêtre.

$result = Get-Process
$result | Export-Csv "ExportCSV.csv"
$result | Out-GridView

Mais heureusement Microsoft n'est pas sourd et en Powershell v3 il est possible de passer en sortie de Out-GridView notre sélection.

get-eventlog -list | 
    out-gridview -title "Select one or more event logs" -PassThru |
    foreach { une_action $_ }


Vous trouverez un exemple d'utilisation ici : http://mcpmag.com/articles/2013/01/08/pshell-gridview.aspx

mercredi 6 mars 2013

Powershell : Astuces en vrac

J'ai commencé à regarder sérieusement du côté de Powershell assez récemment. Je dirais que le langage est assez facilement appréhendable par sa ressemblance avec un shell Linux, mais la seule subtilité est le "tout" objet qu'il vaut mieux respecter si on veut conserver sa force.

C'est un précieux conseil que j'ai trouvé dans la convention de codage de Powersploit (ne me demander comment je suis tombé là-dessus...).

Contrairement à Linux l'idée n'est pas d'écrire sur la sortie standard mais d'y pousser un objet qui pourra être manipulé par la suite. Vous aurez un exemple sur le site de Microsoft ici : http://technet.microsoft.com/en-us/library/ff730946.aspx

La conservation d'un objet et non d'un bloc de texte va permettre de faire des requêtes façon SQL. Je vais présenter comment je raffine une recherche de non-conformité sur des comptes administrateur locaux.

Hypothèse 1 : J'ai une liste de CSV contenant tous les dump des groupes locaux les machines de mon parc.
Hypothèse 2 : Je recherche des comptes utilisateur (UserAccount) et non des groupes.
Hypothèse 3 : Les colonnes de mon CV sont Compte, Categorie, Domaine et Machine

Get-ChildItem .\temp\ | where {$_.Extension -eq ".csv"} |
    Import-Csv | Where-Object {$_.group -eq "Administrateurs"} | 
    Where-Object {$_.Compte -ne "Administrateur"} | 
    Where-Object {$_.Categorie -eq "UserAccount"} | 
    sort Machine, Compte | Export-Csv -notype ".\admin\AdminNonConformes.csv"

J'obtiens la liste des comptes utilisateurs (locaux ou de domaine) disposant des droits administrateur et le tout ranger par nom de machine.

Petit décryptage :
Get-ChildItem liste les enfants d'un objet, ici pour un répertoire il s'agit de son contenu. Il est même possible de faire une recherche récursive pour chercher dans les sous-dossiers. Remarque, il n'est pas possible de limiter la profondeur de récursivité mais des scripts existent.

Le pipe comme sous Linux passe le résultat à la commande suivante.

Import-Csv permet d'importer d'un fichier texte en le convertissant sous forme d'objet requêtable. Si les types de colonne ne sont pas définis chaque champ est pris comme du texte. Ici nous importons donc plusieurs fichiers CSV et un seul ensemble cohérent est créé et va être traité par la suite.

Where va réaliser un test sur chaque objet un par un. L'objet en cours est nommé $_. Il faut faire attention dans les sous-requêtes car l'objet courant peut changer et il faut alors créer un tampon avec la valeur intéressante. Par exemple :

$liste_postes | ForEach-Object {
    $compte = $_.compte
    $match = $liste_admin | Where-Object {$_.compte -eq "$compte"} | Select-Object *
}

Le premier $_ correspond à un ordinateur de $liste_poste, puis $_ correspond à un administrateur de $liste_admin. Cela me permet de comparer les comptes administrateur avec une base de dérogation.

Export-Csv, comme son nom l'indique, va exporter tout notre bazar dans un fichier CSV. A noter quelques arguments intéressants :

  • -notype : évite la ligne de typage des champs (texte, nombre, ...). La sortie est plus "propre"
  • -Encoding Unicode : pour celui-là j'ai eu du mal. C'est lui qui permettra d'enregistrer correctement des lettres accentuées dans des CSV
A noter que Powershell encadre tous les champs de doubles quotas, ce qui n'est utile que lorsque le texte peut contenir des virgules. Il est possible de nettoyer le CSV avec la commande suivante :
Get-Content fichier.csv | 
    % {$_ -replace '"', ""} |  
    Out-File "fichier.csv"

J'espère que ce n'est pas trop indigeste pour ce premier article sur Powershell.

mardi 5 mars 2013

Protection des mots de passe


On le voit tous les jours maintenant, des sites sont compromis et des tonnes de miyons de mots de passe sont volés !

Dommage pour vous votre mot de passe Paris75 est grillé dans le monde entier à cause du dernier site à la mode www.glandouille.com. En plus il faut le changer sur 36 sites et en urgence sur votre messagerie, ebay et paypal !

Bon on a tendance à toujours taper sur l'utilisateur, mais quand bien même il utiliserait un mot de passe complexe. qu'est-ce qui empêche un site de stocker ses mots de passe en clair ou en XOR ou encore en md5 ? Rien du tout... (ou peut-être PCI-DSS...)

Finalement je suis tombé sur un article disons sympa qui présente des statistiques non pas seulement sur la résistance des mots de passe, mais aussi sur la robustesse des algorithmes de hachage (je n'aime pas écrire hachage car je l'emploie comme un anglicisme).
http://resources.infosecinstitute.com/the-exponential-nature-of-password-cracking-costs

Dans un premier temps on commence avec un gentil MD5 et on voit qu'un mot de passe avec les 4 catégories de caractères est résistant à partir d'une longueur de 7 caractères alors qu'il faut plus de 10 lettres pour avoir un semblant de résistance identique. (Pas la peine d'évoquer un code PIN de 4 chiffres ici.) A mon avis les graphes sont au pif, mais l'idée est là :D

Maintenant ce qui est sympa c'est la comparaison de MD5 à bcrypt qui est un algorithme créé exprès pour protéger les mots de passe et non pour faire de la vérification d'intégrité (obligation de performance tout ça... bien pratique pour faire du bruteforce rapide).

Or donc bcrypt est basé sur un algorithme qui nécessite beaucoup de cycles processeur pour hasher un mot de passe. J'ai cru lire qu'un md5 prenait 1ms et un bcrypt 0,3s, soit 300 fois plus longtemps. Mais le plus beau dans l'histoire c'est qu'on peut même choisir le nombre d'itérations pour gonfler encore le temps de traitement. Et c'est ainsi qu'on obtient un algorithme robuste avec 6 caractères quand il en faut plus de 10 en MD5.





Et donc pour conclure, si on fait embête à choisir des mots de passe très longs, c'est parce que potentiellement ils sont mal protégés ! Mais en lui même le mot de passe n'est pas forcément mauvais.