Archive for the ‘informatique’ Category

WikkaFS

Tuesday, December 21st, 2010

Étant grand amateur de Wiki pour gérer plein de pense-bête, de notes, de projets à l’état d’idée, j’apprécie  WikkaWiki pour sa syntaxe clair & pratique (pas besoin de compter les espaces pour les listes), sa simplicité. Le seul manque est que je suis obligé d’utiliser un navigateur Web alors que dans certains cas, je pourrais mettre à jour une page par un script ou juste faire une correction par mon vim favori (emacs étant par nature banni de mon PC).

J’ai décidé de jouer avec FUSE. Car FUSE me rappelle un peu Ubik, ça permet de tout faire 🙂

Voici donc WikkaFS (LGPL 2.1.) : il nécessite mysql & fuse pour se connecter au wiki (distant ou local). Le code n’est très propre et utilisable de manière sécurisé qu’en mono utilisateur. Seul bémol, sur la version stable (1.2) de WikkaWiki, l’UTF8 n’est pas géré alors attention à vos charsets :).

http://www.murlock.org/code/wikkafs-0.9.tar.bz2

Linux embarqué

Sunday, March 21st, 2010

Après avoir reçu ma Fonera 2.0n, j’ai décidé de faire le point sur mes différents appareils vitaminés au Linux :

Fonera 2.0n, Alix 2c3 et Dingoo A320

Donc voici la Fonera 2.0n, basé sur la distribution OpenWrt. Fonera fourni un firmware avec ssh ouvert pour permettre une administration ou des développements directement en situation, et le lien nécessaire pour le développeur.

Fonera 2.0n

Ensuite, voici une Alix 2c3 de PcEngines. Un certain nombre de distribution Linux/OpenBSD est possible, j’ai opté pour une OpenWrt, étant l’une des plus actives et supportant bon nombre de matériels. En étant basé sur une carte Compact Flash, l’installation se passe sans souci (avec dd sur votre PC par exemple) et de plus, comme c’est une architecture x86, OpenWrt permet de générer une image disque pour VirtualBox, permettant de tester très rapidement (en plus de la solution standard du NFS).

Alix 2c3

Et enfin, une A320 de Dingoo, une console chinoise de bonne qualité, avec une distribution nommée Dingux. L’installation est un peu plus douloureuse mais on arrive à s’en sortir sans trop de souci. Voici quelques liens : Dingux Intégrale v2 (comprenant tout ce qu’il faut pour installer et préparer sa miniSD) et la toolchain.

Dingoo A320

Cle d’authentification YubiKey

Sunday, February 28th, 2010

Pour ce premier post qui parle d’informatique, je vais vous presenter la YubiKey : c’est une cle d’authentification forte a base d’One-Time Password (ou mot de passe jetable), empechant les attaques par rejout. On peut utiliser cette cle avec une double authentification : le possesseur doit egalement saisir un autre mot de passe traditionnel, permettant une securite encore plus forte.

Malheureusement, il y a un defaut, cette cle est vu comme un peripherique de saisie standart ( HID ), ce qui ne cadrait pas avec mon utilisation de la cle : je voulais pouvoir modifier l’etat d’un service (le wifi ou surveillance video par exemple) sans avoir a ouvrir une session, ou dans le cas d’un routeur a base de firmware nihiliste extremiste libre, sans avoir a se connecter a une interface web).

Apres un peu de recherche, lors de l’insertion de la cle, grace a une regle udev, je lance mon programme :

ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010", KERNEL=="event*", RUN+="/bin/yubico"

Je reclame ensuite le peripherique indique par la variable d’environnement DEVNAME:

fd = open( getenv("DEVNAME"), O_RDONLY );

A ce stade, j’obtiens copie de tout les evenenements claviers de la cle, mais cette derniere reste attache a l’entree standart du PC. Il faut alors reclamer le peripherique (un plongeon dans /usr/include/linux/input.h a ete necessaire).

ioctl( fd, EVIOCGRAB, 1 );

A ce stade, il suffit d’attendre une structure input_event (toujours le meme fichier input.h ainsi que Documentation/input/input.h). Une gestion de tampon et de timeout et me voila pret a verifier l’OTP.

A ce stade, j’ai joue la solution de facilite et j’attaque le WebService de Yubico pour verifier la cle OTP fourni par la cle. J’ai prevu trois hooks : en cas de succes, en cas d’echec et lorsque la cle est retire, le programme quitte automatiquement.

La suite du travail se passera sur une Alix PC-Engines avec OpenWRT pour verifier si tout marche correctement avec mdev, le remplacement d’udev fourni par BusyBox. Il reste aussi plusieurs bricoles comme indique dans l’archive.

Le progamme est telechargeable a http://www.murlock.org/utils/yubikey.tar.bz2. Ma machine, un Aspire One, tourne sur une Debian (mi testing / mi stable) avec le noyau 2.6.32.

PS: ce billet est entierement realise sur un clavier qwerty, donc pas d’accent dans un premier temps.

SSH + VPN + Proxy

Saturday, January 2nd, 2010

Dans certains cas (déplacement professionnel, réseau peu sûr/partiellement bloqué, ou tout simplement confidentialité pour la navigation), je désire protéger ma navigation.

Il est possible d’utiliser une connexion SSH pour se connecter une machine distante et de s’en servir comme relais via OpenVPN.

Préparons d’abord notre serveur (testé sur Debian) :

En premier, notre serveur VPN avec le fichier de configuration script d’init ( /etc/openvpn-server.conf par exemple )
remote localhost
dev tun
ping 30
ifconfig 192.168.5.1 192.168.5.2
proto tcp-server
port 6124

On lance le daemon avec sudo openvpn --conf /etc/openvpn-server.conf

Puis le proxy ( squid 3 dans mon cas)

Il faut juste ajouter dans les règles acl l’ip du client (192.168.5.2), rechercher la chaine acl localhost src 127.0.0.1/32 & insérer à la suite :
acl localhost src 192.168.5.2

Un petit /etc/init.d/squid3 restart pour prendre en compte les modifications.

Depuis notre portable / poste de travail, on se connecte à notre serveur  :

ssh -L 6124:localhost:6124 utilisateur@monserveur

(L’option -L 6124:localhost:6124 permet que le port 6124 en écoute qui se trouve sur le serveur sera également en écoute sur l’interface localhost:6124 sur la machine cliente)

Lançons maintenant la connexion VPN qui passera via le tunnel SSH

openvpn --config /etc/openvpn-client.conf

Contenu du fichier openvpn-client.conf
remote localhost
dev tun
ping 30
ifconfig 192.168.5.2 192.168.5.1
proto tcp-client
port 6124

Si tout va bien, on devrait voir pousser une nouvelle interface réseau (tun0 dans la plupart des cas).

Ensuite, dans notre navigateur, on paramètre le proxy sur HTTP / IP: 192.168.5.1 / port: 3128.

Dans la plupart des cas, je paramètre une nouvelle session de navigateur utilisant le proxy, me permettant de ‘choisir’ où va sortir le traffic.

Utilisation d’iSCSI Initiator sous OpenSolaris

Saturday, May 9th, 2009

iscsiAprès avoir monté , je voulais me préparer une zone de travail à partager entre VirtualBox & mon portable, suite à un comportement de NFS qui ne me convenait pas sous Linux, je suis intéressé au protocol iScsi.

Sur mon Linux Debian Lenny, pas grand chose à faire :

  1. Installation des paquets iscsitarget & iscsitarget-modules-2.6.26-2-686
  2. Création d’un fichier avec dd(dd if=/dev/zero of=/mnt/data/iscsi bs=4k count=2000)
  3. Modification de la configuration /etc/ietd.conf :
    Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
    Lun 0 Path=/mnt/data/iscsi,Type=fileio
  4. Par défaut, le démon iscsitarget est désactivé dans /etc/default/iscsitarget :
    ISCSITARGET_ENABLE=true
  5. On relance /etc/init.d/iscsitarget

Côté OpenSolaris, testé avec snv_111a (le futur OpenSolaris 2009.06) :

  1. il faut installer le paquet SUNWiscsi (un redémarrage est sans doute nécessaire, à confirmer)
  2. on activate le démon : svcadm enable iscsi_initiator
  3. maintenant, on configure le iscsi-initiator :
    # iscsiadm modify initiator-node -A opensolaris-vm
    # iscsiadm add discovery-address linux-amd64
    # iscsiadm modify discovery -t enable
  4. on force une réactulisation des périphériques iscsi # devfsadm -c iscsi
  5. le périphérique iscsi devrait maintenant apparaître lors de le commande format:
    AVAILABLE DISK SELECTIONS:
    0. c3d0 /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
    1. c3d1 /pci@0,0/pci-ide@1,1/ide@0/cmdk@1,0
    2. c5t1d0 /iscsi/disk@0000iqn.2001-04.com.example%3Astorage.disk2.sys1.xyz0001,0
    Specify disk (enter its number):^C
  6. à ce stade, vous êtes désormais capable d’utiliser zpool pour utiliser ce nouveau disque :
    # zpool create zfsiscsi c5t1d0

source : http://www.c0t0d0s0.org/4220-Less-known-Solaris-Features-iSCSI-Part-2-Basic-iSCSI.html

opensolaris : déplacer /export sur une autre partition/disk

Friday, May 8th, 2009

J’utilise beaucoup OpenSolaris en tant que VM, aujourd’hui, suite à une fausse manip, je me lance dans une réinstallation : un disque de 16 Go pour l’OS et un second disque de 4Go qui sera dédié à /exportopensolaris

1/ Identification des disques :
$ pfexec format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0. c3d0  /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
1. c3d1 /pci@0,0/pci-ide@1,1/ide@0/cmdk@1,0
Specify disk (enter its number):

Le disque de 4 Go est donc identifié par c3d1, l’étape est donc de créer maintenant le zpool. (Note: si jamais vous faites des tests avec différentes versions d’OpenSolaris, je conseille de créer le dataset avec la plus vieille version d’OpenSolaris sinon il y a de fortes chances qu’il soit inaccessible.)
$ pfexec zpool create murlockdir c3d1
On peut vérifier le bon résultat :
zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
murlockdir 3,97G 136K 3,97G 0% ONLINE -
rpool 17,9G 5,23G 12,6G 29% ONLINE -

On crée un snapshot de notre répertoire /export actuel puis on l’envoie sur notre nouveau zpool

$ pfexec zfs snapshot -r rpool/export@transfer
$ pfexec zfs send -R rpool/export@transfer | pfexec zfs receive -dv murlockdir

Vous obtiendrez un message d’erreur mais il est normal vu que l’on importe sur la même machine un dataset existant avec ses propriétés.

Ensuite il vous faut désactiver le montage automatique de rpool/export :

$ pfexec zfs set canmount=noauto rpool/export
$ pfexec zfs set canmount=noauto rpool/export/home
$ pfexec zfs set canmount=noauto rpool/export/home/murlock

Et enfin, un petit reboot et /export sera maintenant sur le deuxième disque


pkg – vider le cache

Monday, May 4th, 2009

Par défaut, pkg ne vide pas ses caches contenus dans les répertoires /var/pkg/download et /var/pkg/index, résultat beaucoup de place perdu (dans mon cas, environ 5Go) si vous utilisez souvent pkg (ou update-manager).

Il est possible d’effacer ces répertoires ou de positionner flush-content-cache-on-success avec la commande pkg :

$ pfexec pkg set-property flush-content-cache-on-success  true

Une évolution de pkg est prévue avec l’ajout d’une nouvelle commande pour vider le cache.

Attention : ne supprimez pas le contenu du répertoire /var/pkg/pkg car il contient l’état des dépôts installés. Si c’est déjà le cas, vous pouvez installer le paquet entire.

pkg, dépôt Sun

Monday, May 4th, 2009

En lisant le draft du Getting Started with OpenSolaris 2009.06, il apparait qu’il existe plusieurs dépôts pkg chez Sun : il y a les dépôts accessibles via un contrat de support, mais il existe aussi un dépôt accessible pour tout ceux qui ont un compte Sun (gratuit je le rappelle).

Il faut se rendre sur https://pkg.sun.com/register et ensuite générer votre certificat.

Vous aurez ensuite accès à https://pkg.sun.com/opensolaris/extra/ qui vous donnera accès à quelques paquets, dont WBEM, virtualbox & flash