CyanogenMod 7.1.0 est sorti !

La nouvelle version de Cyanogen est sortie et supporte officiellement le Samsung Galaxy S2 ! Les détails de l’annonce se trouvent sur cette page mais n’oubliez pas de consulter aussi le changelog.

J’utilisais les nightlies depuis la mi juillet mais c’est toujours bien de voir une version stable disponible. Vous pouvez la télécharger ici. Enfin, je vous conseille de lire le guide d’installation.

Serveur de fichiers haute dispo avec DRBD

J’ai récemment travaillé sur du beau matériel afin de paramétrer un serveur de fichiers haute disponibilité. J’ai utilisé Centos 5.x, il vous faudra les paquets suivants sur CentOS+: drbd83, kmod-drbd83, assurez-vous qu’ils soient exactement de la version de votre révision de noyau, vous pouvez télécharger les RPMS sur l miroir officiel Ainsi que les paquets pour OCFS2 d’Oracle, c’est disponible ici pour les modules du noyau et la pour les outils. Encore une fois, assurez-vous que ce soit la même version que votre noyau. Une fois les paquets installés, vous pouvez charger le module comme ceci : modprobe -v drbd.

Avant de préparer votre config, il vous faudra deux partitions/disques dont les blocs/cylindres sont identiques, sous faute de fonctionner correctement. Dans cet exemple, nous avons deux machines 192.168.6.66 et 6.67. Vous devez ensuite préparer le fichier de configuration, éditez /etc/drbd.conf (qui devrait être vide):

#
# please have a a look at the example configuration file in
# /usr/share/doc/drbd83/drbd.conf
#

global { usage-count yes; }

# you may want to lower the rate, if you're not using a dedicated GBit link 
# between both peers; 20M worked well on EC2
common { syncer { rate 100M; } }

resource res0 {
  protocol C;
  startup {
    wfc-timeout 20;
    degr-wfc-timeout 10;
    # we will keep this commented until tested successfully:
    # become-primary-on both; 
  }
  net {
    # the encryption part can be omitted when using a dedicated link for DRBD only:
    cram-hmac-alg sha1;
    shared-secret ubersecret;

    allow-two-primaries;
    after-sb-0pri discard-zero-changes;
    after-sb-1pri discard-secondary;
    after-sb-2pri disconnect;
  }
  on tic.example.com {
    device /dev/drbd1;
    disk /dev/sdb1;
    address 192.168.6.66:7789;
    meta-disk internal;
  }
  on tac.example.com {
    device /dev/drbd1;
    disk /dev/sdb1;
    address 192.168.6.67:7789;
    meta-disk internal;
  }
  disk {
    fencing dont-care;
  }
}

Copiez ce fichier sur le second serveur puis créez ensuite fautre device, il vous faudra pour ceci taper cette commande sur les DEUX machines : drbdadm create-md res0. Cela ne marchera pas si les noms de machines ne sont pas identiques à ceux dans votre configuration. Si tout se passe bien, cela devrait initialiser sur les deux machines, vous pouvez alors démarrer le service sur les deux machines en même temps (n’attendez pas trop longtemps) : service drbd start. Si tout a démarré sans encombres, vous pouvez à présent démarrer la synchronisation des données. Un point important à considérer est la capacité de votre réseau local, vu que toutes les données sont synchro par le réseau, donc un lien dédié est préférable (un simple cable d’une machine à une autre sur une adresse privée est plus que suffisant à moins que vous pensiez utiliser plus de deux machines, auquel cas cela dépasse ce que cet article couvre).

Il ne vous reste alors qu’à synchroniser, choisissez votre maître et tapez la commande suivante : drbdadm — –overwrite-data-of-peer primary res0, vous pouvez suivre la progression à l’aide de la commande : drbd-overview.

Une fois que c’est fini, il faut paramétrer les deux machines comme maître afin de pouvoir écrire sur les deux et de pouvoir utiliser une IP virtuelle, vous pouvez promouvoir la seconde machine à l’aide de la commande suivante : drbdadm primary res0, vous pouvez alors décommenter la ligne suivante dans les deux configurations : become-primary-on both;.

C’est tout pour le moment :)

Un gros merci à l’article suivant this article. Et bien sûr jetez un oeil au site officiel pour plus d’information.

Hellfest ’12 : premières annonces

Cette semaine fut riche en activités et j’ai pas eu trop le temps de regarder les annonces jusqu’à aujourd’hui. Alors nous y sommes, première annonce pour le line up 2012. Me concernant, on a déjà des bonnes nouvelles : Lamb Of God, Hatebreed, Dimmu Borgir (qui passe à Dublin à la fin novembre), Children of Bodom, Napalm Death et Anaal NathRakh. J’ai hâte de voir un second banc d’annonces mais cela commence plutot bien :)

OpenDnsSec et Bind avec Debian

J’avais posté quelques mois auparavant sur dnssec mais la configuration était relativement compliquée pour déployer DNS Sec. J’ai depuis jeté un oeil sur OpenDNSSEC qui est plus facile à configurer sur Debian. Voici les étapes pour configurer le tout :

Bon Gros Avertissement: Testez à vos risques et périls, ne pas mettre en production à moins de savoir ce que vous faites, des bisounours peuvent mourrir et votre taxe carbone va augmenter. Vous êtes toujours en train de lire ? On y va !

J’utilise Debian Wheezy (testing) pour cette configuration car les paquets OpenDNSSEC sont plus à jour. Commencez par installer ce qui suit : apt-get install opendnssec libhsm-bin softhsm libsofthsm libhsm-bin. Vous pouvez à présent configurer le tout. Tous les fichiers se trouvent dans le répertoire /etc/opendnssec.

Editez le ficher conf.xml (changez le PIN avec le vôtre) :

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: conf.xml.in 3192 2010-04-14 20:51:42Z rb $ -->
<Configuration>
        <RepositoryList>

                <Repository name="SoftHSM">
                        <Module>/usr/lib/libsofthsm.so</Module>
                        <TokenLabel>OpenDNSSEC</TokenLabel>
                        <PIN>6666</PIN>
                </Repository>
        </RepositoryList>
        <Common>
                <Logging>
                        <Syslog><Facility>local0</Facility></Syslog>
                </Logging>
                
                <PolicyFile>/etc/opendnssec/kasp.xml</PolicyFile>
                <ZoneListFile>/etc/opendnssec/zonelist.xml</ZoneListFile>
        </Common>
        <Enforcer>
                <Privileges>
                        <User>opendnssec</User>
                        <Group>opendnssec</Group>
                </Privileges>
                <Datastore><SQLite>/var/lib/opendnssec/db/kasp.db</SQLite></Datastore>
                <Interval>PT3600S</Interval>
        </Enforcer>
        <Signer>
                <Privileges>
                        <User>opendnssec</User>
                        <Group>opendnssec</Group>
                </Privileges>
                <WorkingDirectory>/var/lib/opendnssec/tmp</WorkingDirectory>
                <WorkerThreads>2</WorkerThreads>
                <NotifyCommand>/usr/sbin/rndc reload %zone</NotifyCommand>
        </Signer>
        <Auditor>
                <Privileges>
                        <User>opendnssec</User>
                        <Group>opendnssec</Group>
                </Privileges>

                <WorkingDirectory>/var/lib/opendnssec/tmp</WorkingDirectory>
        </Auditor>
</Configuration>

Puis editez kasp.xml comme suit :

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: kasp.xml.in 3564 2010-07-06 13:39:29Z rb $ -->
<KASP>
        <Policy name="default">
                <Description>A default policy that will amaze you and your friends</Description>
                <Signatures>
                        <Resign>PT2H</Resign>
                        <Refresh>P3D</Refresh>
                        <Validity>
                                <Default>P7D</Default>
                                <Denial>P7D</Denial>
                        </Validity>
                        <Jitter>PT12H</Jitter>
                        <InceptionOffset>PT3600S</InceptionOffset>
                </Signatures>
                <Denial>
                        <NSEC3>
                                <!-- <OptOut/> -->
                                <Resalt>P100D</Resalt>
                                <Hash>
                                        <Algorithm>1</Algorithm>
                                        <Iterations>5</Iterations>
                                        <Salt length="8"/>
                                </Hash>
                        </NSEC3>
                </Denial>
                <Keys>
                        <!-- Parameters for both KSK and ZSK -->
                        <TTL>PT3600S</TTL>
                        <RetireSafety>PT3600S</RetireSafety>
                        <PublishSafety>PT3600S</PublishSafety>
                        <!-- <ShareKeys/> -->
                        <Purge>P14D</Purge>

                        <!-- Parameters for KSK only -->
                        <KSK>
                                <Algorithm length="2048">7</Algorithm>
                                <Lifetime>P1Y</Lifetime>
                                <Repository>SoftHSM</Repository>
                                <Standby>0</Standby>
                        </KSK>

                        <!-- Parameters for ZSK only -->
                        <ZSK>
                                <Algorithm length="1024">7</Algorithm>
                                <Lifetime>P150D</Lifetime>
                                <Repository>SoftHSM</Repository>
                                <Standby>0</Standby>
                                <!-- <ManualRollover/> -->
                        </ZSK>
                </Keys>
                <Zone>
                        <PropagationDelay>PT43200S</PropagationDelay>
                        <SOA>
                                <TTL>PT86400S</TTL>
                                <Minimum>PT1H</Minimum>
                                <Serial>unixtime</Serial>
                        </SOA>
                </Zone>
                <Parent>
                        <PropagationDelay>PT9999S</PropagationDelay>
                        <DS>
                                <TTL>PT3600S</TTL>
                        </DS>
                        <SOA>
                                <TTL>PT172800S</TTL>
                                <Minimum>PT10800S</Minimum>
                        </SOA>
                </Parent>
                <Audit>
                        <!-- <Partial /> -->
                </Audit>
        </Policy>
</KASP>

Editez le fichier suivant /etc/softhsm/softhsm.conf puis ajoutez :

1:/var/lib/opendnssec/db/kasp.db

Nous pouvons à présent créer la base, il vous sera demandé de confirmer votre PIN, c’est celui que vous avez déclaré dans votre premier fichier de configuration. Executez ensuite : softhsm –init-token –slot 1 –label “OpenDNSSEC”

Editez ensuite votre fichier de groupes :

bind:x:107:opendnssec
opendnssec:x:114:bind
softhsm:x:999:opendnssec

Vous pouvez maintenant créer la base : ods-ksmutil setup

Je vous recommande de changer les permissions et de créer les liens symboliques pour les répertoires signed/unsigned utilisés par OpenDNSSEC.

chown -R opendnssec:opendnssec /var/lib/opendnssec/
chgrp opendnssec /etc/opendnssec/*
ln -s /var/lib/opendnssec/signed /etc/bind/master/
ln -s /var/lib/opendnssec/unsigned /etc/bind/master/

Nous voici au moment crucial de l’affaire, nous ajoutons à présent notre première zone. Copiez la dans /var/lib/opendnssec/unsigned puis faîtes :

ods-ksmutil zone add -z myzone.net
service opendnssec-enforcer restart
service opendnssec-signer restart

Si tout s’est bien passé, il devrait vous indiquer que votre zone existe. Si c’est le cas, il faut à présent la déclarer afin de générer les clés : ods-ksmutil key generate –policy default –interval 30. Vous devez maintenant attendre qu’elle devienne valide, ce qui devrait prendre au moins 12h selon votre configuration. Vous pouvez à présent vous faire plein de café et écouter quelques albums de métal.

Il faut à présent rendre vos zones disponibles. Plutot que de faire cela manuellement, voici un script (qu’il vous faudra placer dans le bon répertoire) :

ods-ksmutil  key list |grep ready|awk '{ print $1 }'  > list
for i in `cat list`;
do 
SERIAL=`ods-ksmutil key export --zone $i --keystate ready |awk '{ print $11 }'`
ods-ksmutil key ds-seen -z $i -x $SERIAL
done

Maintenant que la zone est prête, vous devez la faire signer par ods. Il vous suffit de faire service opendnssec-signer restart. Si cela a bien marché, vous devriez voir votre nouvelle zone signée ici : /etc/bind/master/signed. Il ne vous reste alors qu’à pointer Bind vers le bon fichier.

Ceci conclu notre article, les clés expirent : 6 mois pour la Zone Signing Key (ZSK) et un an pour la KSK. Vous devrez vous assurer de regénérer les clés avant leur expiration, vu que vous êtes supposé propager vos clés vers les serveurs root de l’internet.

Lorsque vous modifiez une zone, lancez ods-signer sign myzone.net pour la re-signer. Si vous avez besoin d’effacer une zone sous ods, exécutez la commande suivante : ods-ksmutil zone delete –zone myzone.net

Au moment de la rédaction de cet article, seulement certaines zones ont été signées, je réitère donc ici l’aspect recherche plus que production (bien que toutes mes zones soient signées).