mercredi 10 août 2011

FreeBSD : Création de dossiers release 8.2-STABLE

Dans la suite  de mon post sur la mise à jour vers une version 8.2-STABLE, une personne pourrait avoir besoin de créer des CDROMs ou DVDs d'installation qui se basent sur la version 8.2-STABLE.

Le monde de FreeBSD prévoit ce cas avec le "make release". C'est une opération couteuse en temps car parmis les opérations réalisées par cette dernière commande il y a un environnement chroot créé, et des commandes "make buildworld", "make installworld", "make buildkernel" et "make installkernel" qui sont exécutées.

Création d'une release

Si vous aviez suivi mon précédent post, vous aviez installé une VM avec tous les sources nécessaire à FreeBSD, et donc vous aviez installé aussi le répertoire "/usr/src/release" (sans le savoir, ou en le sachant bien). Il va nous permettre de créer nos fichiers ISO 8.2-STABLE (entre autres) :

  • mkdir /home/release (on a besoin d'espace disque)
  • cd /usr/src/release
  • make release EXTSRC=/usr/src EXTPORTSDIR=/usr/ports CHROOTDIR=/home/release NODOC=yes NOTPORTSATALL=yes NOPORTS=yes
    • Les différentes options sont décrites dans /usr/src/release/Makefile
    • ! Ce make va prendre beaucoup de temps en fonction de la puissance de votre VM !
  • cd /home/release/R/cdrom
    • vous trouverez dans ce répertoire plusieurs répertoires : disc1, disc2, dvd1, livefs, qui vous permettront de créer (ou non) vos fichiers ISO, ou cdrom ou dvd
Vous pourrez facilement faire une release et faire d'autres choses en même temps, à moins que vous aimiez regarder les lignes de compilation défilées :p

mardi 9 août 2011

FreeBSD : mise à jour d'une version 8.2-RELEASE à 8.2-STABLE

Ce post n'a rien d'exceptionnel, mais il peut permettre à une personne qui aurait besoin de certaines fonctionnalités d'une version STABLE de FreeBSD de pouvoir en bénéficier.

Configuration

Dans mon exercice, j'ai utilisé :
  • Mac OS X Lion
  • Un outil de virtualisation :
    • VirtualBox v4.0.12
    • Parallel Desktop 6 (dernière mise à jour)
  • Une iso FreeBSD-8.2-RELEASE-amd64-dvd1.iso
  • Une connexion internet, c'est mieux avec que sans surtout dans ce cas là
Mes VMs, virtualbox ou //, n'ont rien de vraiment particulier attribué :
  • 2 CPU
  • 2 Gio de RAM
  • Un disque de 50 Gio, mais 30 Gio pourrait suffire
Installation de FreeBSD 8.2-RELEASE

Ici, il s'agit d'une installation tout ce qu'il y a de plus standard sans documentation. Par contre pour des raisons de facilités, installe standard = UFS et pas autre chose (qu'on ne me parle pas de ZFS pour ce post, merci)
Rajouter uniquement 2 ports :
  • shells/bash (prédilection)
  • ports-mgmt/portupgrade (prédilection)
Pourquoi pas de documentation ? car lors de la mise à jour des ports, ça installe tout un tas de ports dont on n'a vraiment pas besoin. D'autant plus que pendant la mise à jour à priori on ne veut mettre à jour que "bash", "portupgrade" et leurs dépendances.

Recompiler le kernel

Une fois l'installe faite et que votre VM a rebooté, le kernel GENERIC de base est sympa, mais clairement je préfère vraiment, et je le conseille, d'installer les sources grâce à sysinstall et de recompiler le kernel :
  • sysinstall
  • Configure      Do post-install configuration of FreeBSD
  • Distributions               Install additional distribution sets
  • src       Sources for everything
  • All
  • installation par "ftp through firewall", merci le mode passif
Une fois que sysinstall a installé les sources, en sortir. :p
Puis recompiler le kernel :
  • cd /usr/src
  • make buildkernel KERNCONF=GENERIC
  • make installkernel KERNCONF=GENERIC
  • reboot
Oui j'en entend certains qui vont me dire : "pourquoi GENERIC si c'est juste bien ?"
  1. C'est une VM
  2. La mise à jour du système complet ne se fera que sur un kernel GENERIC non modifié (doc. FreeBSD)
  3. Il faut suivre un peu ... :p

Mettre à jour l'environnement

Avant même de vouloir récupérer les sources STABLE de la version 8.x de FreeBSD, il est conseillé (doc. FreeBSD) de mettre à jour l'environnement des ports :
  • cd /usr/ports
  • portsnap fetch
  • portsnap extract
  • portsnap fetch update (fetch et extract prennent un peu de temps, on essaie une mise à jour du répertoire de ports)
  • portupgrade -af --batch (on met à jour tous les ports déjà installés, sans poser de questions)

Mise à jour des sources

Pour mettre à jour les sources de FreeBSD, il faut :
  • une machine avec un kernel GENERIC non modifié
  • cvsup, et puisque nous sommes sur une VM, on ne veut pas forcément la version qui compile avec une GUI, donc on parle là du port "net/cvsup-without-gui"
  • un fichier stable-supfile à utiliser avec cvsup
Installer "cvsup" :
  • cd /usr/src/net/cvsup-without-gui
  • BATCH=YES make install clean (mon compte root utilise bash)
Création du fichier stable-supfile
  • cp /usr/share/examples/cvsup/stable-supfile /root/stable-supfile
  • chmod 644 /root/stable-supfile
  • editer /root/stable-supfile avec vi, ou autre
    • *default host=CHANGE_THIS.FreeBSD.org
      • j'habite en France, donc je mets "cvsup1.fr.freebsd.org"
    • *default release=cvs tag=RELENG_8
      • Si vous avez suivi ce post, il n'y a pas besoin de toucher à cette variable. 
      • Si vous étiez sur une autre version de FreeBSD, c'est ce tag que l'on veut
Mettre à jour les sources (enfin...)

Attention, ça peut prendre un peu de temps (ou pas...) :
  • cvsup -g -L 2 /root/stable-supfile
Après ça, on est content car on a mis à jour les sources. Au revoir et à bientôt ............
Ah non, ce n'est pas fini en fait


Mise à jour complète du système

C'est la partie qui a priori vous prendra le plus de temps, de CPU, de RAM, de sueurs froides (si si... vous verrez). Mais une fois que vous l'aurez fait "une première fois", les autres fois vont paraîtront beaucoup plus simple... même si c'est fastidieux ! Toujours d'après la doc. FreeBSD :
  • cd /usr/src
  • make buildworld (prend beaucoup de temps)
  • make buildkernel (vous connaissez déjà)
  • make installkernel (de même)
  • shutdown -r now (et oui, faut pas déconner non plus)
  • Au redémarrage, il faut choisir le mode "single user"
    • à un moment en mode single user, on va vous demander ou se trouve /bin/sh, soit vous le re précisez "/bin/sh", soit vous appuyer sur entrée et faites confiance au système
  • adjkerntz -i
  • mount -a -t ufs (parce que vous aurez choisi UFS sous mon conseille, sinon débrouillez vous !)
  • mergemaster -p
  • cd /usr/src
  • make installworld
  • mergemaster
    • sueurs froides, vous voilà. Attention à la version des fichiers et au merge de certains fichiers. Même si la plupart des cas sont des choix simple, ne vous trompez pas sinon votre système aura probablement beaucoup de mal à redémarrer
  • reboot (facile)
Final

Si tout s'est bien passé, mesdames et messieurs, votre VM redémarre tranquillement, et si vous avez été assez malin, "uname -a" vous répondra quelque chose comme :
"FreeBSD bsd64.local 8.2-STABLE FreeBSD 8.2-STABLE #1: Mon Aug  8 11:40:45 CEST 2011     root@bsd64.local:/usr/obj/usr/src/sys/GENERIC  amd64"

jeudi 2 juin 2011

FreeBSD 8.2 / OpenVPN 2.2 / Gateway Routing (Français/French)

Cela fait quelques années que je connais un peu le principe du VPN puisque la plupart des entreprises pour lesquelles j'ai pu travailler en possédaient un.
En fonction du système d'exploitation, il existe une ou plusieurs méthodes pour réaliser un VPN.

Qu'est ce qu'un VPN ?
V.P.N. <=> Virtual Private Network

A quoi sert un VPN ?
Ça sert, entre autre, à créer un réseau ethernet. L'avantage c'est qu'il peut être privé : seules certaines personnes peuvent s'y connecter, et il peut être crypté. Il est virtuel, contrairement à un réseau ethernet physique, il ne possède pas directement une carte réseau avec une MAC Address.

Pourquoi se servir d'un VPN ?
Cela peut être très pratique pour mettre en relation divers machines sur un réseau ethernet ou internet de manière sécurisée.
Un autre avantage, c'est qu'il peut permettre de créer une sorte de tunnel complet et sécurisé vers Internet au travers d'un réseau d'entreprise.
C'est ce mode ci qui nous intéresse ici.

PRECAUTION :
Le mode que je mets ici en place permet de router entièrement un traffic depuis une machine sur un sous-réseau vers un VPN.
Les désavantages sont que l'on n'a plus accès au sous-réseau de base. Donc plus accès aux autres machines qui se trouve sur ce sous-réseau.
EDIT.: Il semblerait qu'un accès par adresse IP soit toujours possible. Seule la résolution des noms est remplacée par celle du VPN.

Le matériel utilisé, système d'exploitation et outils VPN pour le Serveur :
  • un serveur sur internet que je loue (Dedibox)
  • FreeBSD 8.2
  • ipfilter / ipnat
  • OpenVPN 2.2
Mon serveur est donc directement connecté à Internet.

Le matériel utilisé, OS et outils VPN pour le Client :
  • un Macbook Pro sur un sous réseau connecté directement ou indirectement à Internet
  • Mac OS X 10.6.7
  • TunnelBlick 3.1.7, qui utilise OpenVPN 2.1.4
Les réseaux :
  • Internet, directement accessible depuis ma Dedibox
    • Supposons ici que l'IP publique du serveur est 1.2.3.4, et qu'un serveur DNS est accessible depuis ce serveur est à pour adresse IP 1.2.5.6
  • un sous-réseau 10.0.0.0/24 en WiFi, auquel mon MBP accède
  • un sous-réseau 192.168.0.0/24 filaire (cable ethernet standard) auquel le routeur WiFi accède
  • une connexion Internet accessible depuis 192.168.0.0/24
Le VPN :
  • Un réseau 172.30.0.0/24 (255.255.255.0)

  1. Côté Serveur :
    1. Installation de OpenVPN sur FreeBSD 8.2
    2. Création de votre Certificat d'Autorité (Certificate Authorithy, CA)
    3. Configuration de OpenVPN
    4. Gateway
    5. NAT
    6. Démarrage des services
1. Côté Serveur
1.1 Installation de OpenVPN sur FreeBSD 8.2

# cd /usr/ports/security/openvpn
# make install clean
# mkdir /usr/local/etc/openvpn

1.2 Création de votre Certificat d'Autorité (Certificate Authorithy, CA)

J'ai principalement suivi la page suivante :
Si l'on suit l'ensemble des points, à la fin on se retrouve avec les certificats pour le serveur et pour un client. La partie "client" peut être faite plusieurs fois s'il l'on désire plusieurs "client" sur le VPN.
Une fois qu'on a créé les certificats et clés, il suffit de faire :

# cp -r ~/easy-rsa/2.0/keys /usr/local/etc/openvpn/

Pour ajouter de la sécurité, on crée un clé grâce à OpenVPN qui sera utilisé côté serveur et côté client.

# openvpn --genkey --secret /usr/local/etc/openvpn/keys/ta.key

1.3 Configuration de OpenVPN

# vim /usr/local/etc/openvpn/server.conf
daemon
port 1194
proto udp
dev tun

ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh1024.pem

server 172.30.0.0 255.255.255.0
push "route 1.2.3.0 255.255.255.0"
push "dhcp-option DNS 1.2.5.6"
push "redirect-gateway def1"

client-to-client
keepalive 10 120
duplicate-cn

user nobody
group nobody

persist-key
persist-tun
tls-auth /usr/local/etc/openvpn/keys/ta.key 0

status openvpn-status.log

comp-lzo
verb 4
puis ajouter à votre fichier /etc/rc.conf

openvpn_enable="YES"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"


1.4 Gateway
Ajouter à votre fichier /etc/rc.conf
gateway_enable="YES"
1.5 NAT
pour router les paquets vers Internet

Créer un fichier /etc/ipnat.rules avec la règle suivante :
map xl0 172.30.0.0/24 -> 0/32
xl0 (ou autre) est l'interface réseau de votre carte réseau sur laquelle est configurée votre adresse IP publique de votre serveur.

Ajouter ensuite dans /etc/rc.conf
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"

1.6 Démarrage des services
Si tout est bien configuré, tout devrait se lancer comme un charme.

# # Gateway
# /etc/rc.d/routing restart
# # NAT
# /etc/rc.d/ipnat start
# # OpenVPN
# /usr/local/etc/rc.d/openvpn start

Normalement, ifconfig devrait montrer une interface tun0

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        inet 172.30.0.1 --> 172.30.0.2 netmask 0xffffffff 
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
        Opened by PID 1234
  1. hidden
  2. Côté client
    1. Récupérer les clés et certificats
    2. Installer TunnelBlick
    3. Configurer une connexion OpenVPN cliente
    4. Connexion au VPN
2. Côté client
2.1 Récupérer les clés et certificats

Dans la partie "1.2 Création de votre certificat d'autorité", nous avons créé d'une part le certificat et les clés pour la configuration du serveur, mais aussi les clés pour un client.
Dans la liste ci-dessous, en rouge sont les fichiers qui nous intéressent pour l'installation sur le poste client :

# cd /usr/local/etc/openvpn/keys/
# ls -1
01.pem
02.pem
ca.crt
ca.key
dh1024.pem
server.crt
server.csr
server.key
index.txt
index.txt.attr
index.txt.attr.old
index.txt.old
serial
serial.old
ta.key
client.crt
client.csr
client.key

Copier ces fichiers dans un répertoire "VPN" :

$ mkdir ~/VPN
$ su
Password:
# cd /usr/local/etc/openvpn/keys/
# cp ca.crt /home/YourUser/VPN/
# cp ta.key /home/YourUser/VPN/
# cp client.crt /home/YourUser/VPN/
# cp client.key /home/YourUser/VPN/
# exit
$ ls -m ~/VPN/
ca.crt, ta.key, client.crt, client.key

Puis depuis votre machine cliente (Mon MBP pour ma part), copier ce répertoire dans votre Home :

$ scp -r YourUser@YourServer.com:VPN/ .

"C'est tout, pour le moment ..."

2.2 Installer TunnelBlick

Grâce à un de mes collègues, j'ai découvert TunnelBlick qui est une interface graphique pour OpenVPN sur Mac OS X. Cette interface donne un contrôle assez simple de client et/ou de serveur OpenVPN.

Pendant l'installation, TunnelBlick vous demande si vous voulez créer une nouvelle connexion. Vous pouvez refuser, le prochain point reprend les indications d'une installation de connexion OpenVPN.

2.3 Configurer une connexion OpenVPN cliente

Dans une console sur votre machine cliente :

$ cd ~/VPN/
$ vim config.ovpn
client
dev tun
proto udp
remote YourServer.com 1194

resolv-retry infinite
nobind 
pull
persist-key
persist-tun

ns-cert-type server
tls-auth ta.key 1
ca ca.crt
cert client.crt
key client.key

comp-lzo
verb 1
$ cd ..
$ mv VPN VPN.tblk

Puis pour installer les informations dans TunnelBlick, il suffit d'ouvrir un Finder, et de double-cliquer sur le "répertoire"/"l'application" VPN(.tblk) dans votre répertoire utilisateur.

2.4 Connexion au VPN
Si vous n'avez pas configuré TunnelBlick (nul besoin), l'icone de TunnelBlick doit apparaitre à côté de l'icone SpotLight. Lorsque vous cliquez dessus, il devrait y avoir une ligne "Connect VPN", cliquez dessus.
Après quelques secondes, si tout va bien, vous devriez être connecté à votre VPN et avoir accès à Internet via celui-ci.

RAPPEL : vous ne devriez plus avoir accès à vos autres machines (ordinateurs, serveurs, imprimantes, etc.) sur votre réseau local. Heureusement, dés que vous déconnectez votre VPN vous retrouverez toutes vos connexions habituelles.


vendredi 15 avril 2011

"Contrat moral" ... lol

Ce n'est pas la première fois que je l'entend puisqu'on l'a aussi fait à ma copine.
J'entend bien souvent de la part des femmes que leur patron leur ont dit qu'elles n'avaient pas respectées leur "contrat moral".
Personnellement on ne me l'a jamais sorti, probablement parce que je ne suis pas une femme. Toutefois je pense que si mes employeurs me sortent un jour ce truc, en plus de mon expression totalement éberluée et de mon rire sardonique je leur dirais :

"J'ai signé un contrat de travail avez vous. Si les clauses de ce contrat ne vous satisfont plus, vous n'avez qu'à :
a. changer mon contrat de travail pour y ajouter, si vous le pouvez, vos nouvelles clauses;
b. dénoncer ce contrat de travail;
Dans les deux cas, vous finirez en procès aux Prud'Hommes et vous perdrez."

Employeurs, sachez une chose : IL N'Y A PAS DE CONTRAT MORAL. Tout ceci n'est que dans votre tête malade. Soignez vous, faites vous interner, vous verrez ça ira tout de suite mieux.

En bref et comme d'habitude : il ne faut absolument pas se démonter devant ce genre de méprise et leur dire  que leur contrat moral ils peuvent se le carrer profondément dans leur anus.

A bon entendeur ! :)

vendredi 8 avril 2011

Fichiers Entreprises : C'est en ligne !

Après quelques semaines de travail, c'est enfin en ligne !
C'est un outil formidable car il donne envie de jouer avec (en quelque sorte).
De plus, on sait rapidement combien d'entreprises entrent dans les critères qui nous intéressent.

Merci à tous ceux qui y ont participé.

Ça se passe par là :
http://www.societe.com/pages_html/fichiers-entreprises.html

À suivre !

mercredi 6 avril 2011

Traitements de données en quantité

Chose magnifique lorsque l'on travaille dans des sociétés de tout type avec des partenariats (ou non) et que ces partenaires plus ou moins reconnus (ou non) fournissent des données en quantité importante, c'est que ces personnes affirment allègrement que leurs données sont magnifiquement géniales (et payantes).

Qui dit "payant" devrait dire "sérieux", et qui dit "sérieux" devrait dire "exactitude" car pour le prix auquel on les paie (ces données) c'est le minimum légal auquel on s'attendrait.
Sauf que non content de nous avoir soutiré de l'argent, ces partenaires fournissent (par dessus la jambe) des données erronées.
"Tout va bien tant qu'on ne regarde pas ce qui est fourni", malheur à ceux qui ont le courage d'aller jusqu'au bout des informations contenues dans ces données.

Je ne cautionne aucunement (d'aucune manière que ce soit) ces agissements. Il me vient des envies de leur rendre la monnaie de leur pièce, si toutefois ce n'est pas l'inverse :  qu'ils nous rendent l'argent que nous leur avons fourni pour un si minable résultat qu'est le leur.

jeudi 27 janvier 2011

Fractale - Opening : J'ADORE !



Ohlalaaaaaa ! Franchement trop heureux de regarder des animes quand j'entend de si bonnes musiques de générique !
Waaaaaaaaaaaaï

Kanji

捨てたはずの不安の種が
心突き破って芽を出した
無数の茨が今日も
足元伸びて待ち構えている
the seed of anxiety i should have thrown away
penetrated my heart and began to sprout
the countless thorns are too now
growing out beneath my feet, lying in wait

どこへ行けば会える?
where can i go in order to meet you? 

抱きしめたいんだ
背中の棘が君を傷つけるよ
それでも溢れる想いが君を探している
i want to hold you close
but the thorns on my back might hurt you
even so, my overflowing thoughts are searching for you

Romaji

suteta hazu no fuan no tane ga
kokoro tsukiyabutte me o dashita
musuu no ibara ga kyou mo
ashimoto nobite machikamaete iru

doko e yukeba aeru?

dakishimetain da
senaka no toge ga kimi o kizutsukeru yo
sore de mo afureru omoi ga kimi o sagashite iru

jeudi 13 janvier 2011

Indubitablement.

Nous vivons dans un monde où les gens aiment bien essayer et parfois réussir à tromper leur monde avec des subterfuges abracadabrants, et comme on dit de se payer la tête des personnes qu'ils ont trompé. On pourra me traiter de paranoïaque ou de quelques maux que ce soient. C'est malheureusement une vérité indubitable.

dimanche 9 janvier 2011

Authentification d'email : DKIM (+ SPF) (+ Gandi.net)

Récemment, Google a mis à jour ses news pour indiquer qu'il est désormais possible d'utiliser l'authentification d'email "DKIM" (DomainKeys Identified Mail) pour les utilisateurs de Google Apps pour leur domaine. Fonctionnalité fort sympathique quand on apprend qu'elle permet d'éviter des problèmes de spam qui utiliseraient une adresse mail de votre nom de domaine, ce qui peut résulter bien souvent à la catégorisation de certains des emails de votre domaine en spam alors que les mails en question proviennent bien des utilisateurs authentifiés de celui-ci.
Google nous indique comment faire dans ses FAQ, seulement ce n'est pas très clair lorsqu'on décide de mettre la dite fonctionnalité en place.

Après plusieurs essais infructueux et plusieurs recherches qui ne m'avançaient guère, j'ai compris à force d'examiner les messages dans Google Mail qu'il faut combiner 2 types de vérifications faites grâce au configuration DNS.
Et plus particulièrement pour Gandi, il faut :
  • une entrée SPF TXT avec en nom "@" et en valeur "v=spf1 include:_spf.google.com ~all"
  • une entrée DKIM TXT avec en nom la valeur fournie par dans votre interface de gestion google apps, si vous ne changez pas le préfixe ce sera "google._domainkey", et pour valeur la clé qui vous sera aussi fourni par la même interface de gestion.

Configuration GANDI

La configuration avec uniquement la 2ème ligne ne fonctionne pas, car apparemment le test se passerait comme ceci : 1. vérification de l'attribut SPF, 2. vérification de la clé pour le DKIM.

De fait, avec cette configuration lors de l'envoi d'un mail des utilisateurs de votre domaine grâce à Google Apps, les entètes de leur mail seront signés et normalement le détail de cet entète montrera quelque chose comme : "signed-by: your-domain.com"


DKIM dans GMail

Mise à jour :
Pour les personnes intéressées par le format de la chaîne SPF : http://www.openspf.org/SPF_Record_Syntax