Archives pour novembre, 2012

MySQL : export de données

Pour produire un dump contenant uniquement les données, les options à passer à mysqldump sont :

# mysqldump --skip-triggers --compact --no-create-info [...]

Pour ensuite insérer les données sans prendre en compte les contraintes d’intégrité (clés étrangères) :

mysql> set FOREIGN_KEY_CHECKS = 0
mysql> source dump.sql;
mysql> set FOREIGN_KEY_CHECKS = 1

PHP : stockage des sessions en memcache

root@debian:~# apt-get install php5-memcache
root@debian:~# nano /etc/php/fpm/php.ini
session.save_handler = memcache
session.save_path = "tcp://192.168.0.10:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

OpenDKIM : configuration avec support multidomaines

DKIM – Domain Keys Identified Mail –  est une technique d’authentification fiable du nom de domaine d’un émetteur de messages électroniques afin d’éviter le spam et le hameçonnage. Elle se base sur une clé de chiffrement asymétrique ; la clé privée est utilisée par le MTA pour chiffrer une partie de chaque message et insérer le résultat généré dans l’en-tête DKIM associée au message :

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hbis.fr; s=default;
	t=1352850858; bh=6FHfDLJhwx+aojx+pYcAnVDb+BLWaDNaO8vmZtguLiI=;
	h=Message-ID:Date:From:MIME-Version:To:Content-Type:
	 Content-Transfer-Encoding;
	b=wHB33aib+Km2FQRYuaYX8xgHnvrGsllOITWQ5HI5Pc+MGHRVogsYrRjfMJwAa1DTv
	 YRlLJN/GUoS/28gPymKm/yxjMEjlORWwVnb73nTU2PrLXObS0wKaiUXO43gqMBfhv3
	 Dn3ifsXHpx043ERQlv79CLgigcdvDSU1md4QXRGw=

La clé publique est publiée par champ TXT dans la zone DNS du domaine de l’émetteur. Celle-ci est récupérée par les différents MTA en destination afin de valider l’origine du mail par déchiffrement de l’en-tête DKIM.

;; QUESTION SECTION:
;default._domainkey.hbis.fr.	IN	TXT

;; ANSWER SECTION:
default._domainkey.hbis.fr. 10723 IN	TXT	"v=DKIM1\; g=*\; k=rsa\;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtMiBUJ6Aq0VHi0N1FTCsau0iLnmptFrG1GK
 +KHM1/bIcPUlD+GHKekEg9Y5jyaZ4liXQy67SG48d7Z1iKuipZnzvqizEHwFGCdw/b12Q8hi3ay
 gmz1F9wJXYfklc12D2USrviO69hzKRohE7CA6LxWL905yJNXoWzFHqntaAiwQIDAQAB"

Dans le cas où le déchiffrement est impossible, le MTA peut/doit refuser la réception du message. Sinon il le délivre en ajoutant une en-tête d’authenticité :

Authentication-Results: mx.google.com; spf=pass (google.com: domain of
bhuisgen@hbis.fr designates 2001:41d0:51:1::205 as permitted sender)
smtp.mail=bhuisgen@hbis.fr; dkim=pass header.i=@hbis.fr

DKIM repose donc intégralement sur la sécurité du serveur DNS de l’émetteur, qui ne doit pas être compromis, mais elle à l’avantage d’être totalement transparente pour les utilisateurs (ce qui n’est pas le cas de PGP par exemple).

Installation

root@vks10205:~# apt-get install opendkim

Configuration

root@vks10205:~# nano /etc/opendkim.conf
Syslog			yes
UMask			002

KeyTable		/etc/opendkim/key-table
SigningTable		/etc/opendkim/signing-table
ExternalIgnoreList	/etc/opendkim/trusted-hosts
InternalHosts		/etc/opendkim/trusted-hosts
root@vks10205:~# nano /etc/default/opendkim
SOCKET="inet:12345@localhost"

Les hôtes/IP autorisés à utiliser les clés de chiffrement sont à spécifier :

root@vks10205:~# mkdir /etc/opendkim/
root@vks10205:~# nano /etc/opendkim/trusted-hosts
localhost
127.0.0.1
::1

La clé asymétrique d’un domaine est générée de cette façon :

root@vks10205:~# mkdir -p /etc/opendkim/keys/hbis.fr
root@vks10205:~# cd /etc/opendkim/keys/hbis.fr
root@vks10205:~# opendkim-genkey -r -d hbis.fr
root@vks10205:~# chown -R opendkim:opendkim /etc/opendkim/keys/hbis.fr

La clé publique est à ajouter dans la zone DNS du domaine :

root@vks10205:~# cat /etc/opendkim/keys/hbis.fr/default.txt

Le domaine peut ensuite être référencé :

root@vks10205:~# cat /etc/opendkim/key-table
default._domainkey.hbis.fr hbis.fr:default:/etc/opendkim/keys/hbis.fr/default.private
root@vks10205:~# cat /etc/opendkim/signing-table
hbis.fr default._domainkey.hbis.fr

Ces opérations sont à répéter pour chaque domaine de messagerie.

Lancement

root@vks10205:~# /etc/init.d/opendkim start

Configuration de Postfix

Le MTA doit enfin se connecter au démon OpenDKIM pour effectuer la signature des messages :

root@vks10205:~# nano /etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:12345
non_smtpd_milters = inet:127.0.0.1:12345
root@vks10205:~# /etc/init.d/postfix restart

Configuration d’Amavis

Si vous utilisez Amavis pour le filtrage mail, il convient de désactiver le milter précédent suite au filtrage afin d’éviter une seconde signature DKIM :

127.0.0.1:10025 inet n  -       n       -       -       smtpd
[...]
    -o receive_override_options=no_address_mappings,no_header_body_checks,
                                no_unknown_recipient_checks,no_milters

MySQL : vérifier l’occupation disque des tables & index

SELECT CONCAT(table_schema, '.', table_name) db_table,
       CONCAT(ROUND(table_rows/1000000, 2), 'M') rows,
       CONCAT(ROUND((data_length+index_length)/(1024*1024), 1), 'M') size,
       CONCAT(ROUND(data_length/(1024*1024), 1), 'M') data,
       CONCAT(ROUND(index_length/(1024*1024), 1), 'M') indx,
       ROUND(index_length/data_length, 2) ratio 
FROM   information_schema.TABLES 
ORDER  BY data_length + index_length DESC;

Debian : construire un paquet .deb

bhuisgen@dev:~$ sudo apt-get install build-essential devscripts dh-make autoconf libtool diff patch debhelper cdbs quilt gnupg fakeroot lintian pbuilder piuparts
bhuisgen@dev:~$ tar xzf software-1.0.0.tar.gz
bhuisgen@dev:~$ cd software-1.0.0
bhuisgen@dev:~/software-1.0.0$ dh_make -f ../software-1.0.0.tar.gz -s -b
bhuisgen@dev:~/software-1.0.0$ cd debian/
bhuisgen@dev:~/software-1.0.0/debian$ rm *.ex *.EX README.Debian
bhuisgen@dev:~/software-1.0.0/debian$ nano control 
#!/usr/bin/make -f
include /usr/share/cdbs/1/class/autotools.mk   
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/makefile.mk
# Add here any variable or target overrides you need.
makebuilddir/software-1.0.0::
    autoreconf --install
bhuisgen@dev:~/software-1.0.0/debian$ nano rules 
bhuisgen@dev:~/software-1.0.0/debian$ dch -e
bhuisgen@dev:~/software-1.0.0/debian$ nano copyright 
bhuisgen@dev:~/software-1.0.0/debian$ cd ..
bhuisgen@dev:~/software-1.0.0$ debuild -us -uc
bhuisgen@dev:~/software-1.0.0$ cd ..
bhuisgen@dev:~$ ls *.deb

Debian : clean install avec environnement XFCE

Adepte des installations minimalistes (aucun package sélectionné au moment de l’installation), je répertorie dans cet article la liste des packages nécessaires à la mise en place d’un environnement XFCE. L’espace disque nécessaire est de 4 Go environ ; 2 Go de RAM seront suffisants.

Système

root@debian:~# apt-get install iptables-persistent ssh ssmtp smartmontools screen wget
  • iptables-persistent : outil basique de configuration et sauvegarde et des règles iptables
  • ssh : client/serveur SSH
  • ssmtp : MTA simpliste
  • smartmontools : utilitaire de monitoring SMART
  • screen : multiplexeur de terminal console
  • wget : utilitaire de téléchargement de fichiers par HTTP/HTTPS et FTP

Environnement XFCE

root@debian:~# apt-get install xfce4 xfce4-terminal slim blueman wicd cups synaptic gdebi gtk2-engines-murrine dmz-cursor-theme ttf-mscorefonts-installer
  • xfce4 : environnement graphique XFCE
  • xfce4-terminal : terminal X
  • slim : gestionnaire de sessions X
  • blueman : interface de gestion bluetooth
  • wicd : interface de gestion réseaux (filaires et sans-fils)
  • cups : système d’impression
  • synaptic : gestionnaire de paquets (aptitude like)
  • gdebi : installateur de paquets
  • gtk2-engines-murrine : collection de thèmes applicatifs
  • dmz-cursor-theme : thème de pointeurs de souris « blancs »
  • ttf-mscorefonts-installer : collection de polices TrueType Windows

Utilitaires

root@debian:~# apt-get install keypassx mousepad galculator catfish
  • keepassx : gestionnaire de mots de passe
  • mousepad : éditeur de texte
  • galculator : calculatrice
  • catfish : recherche de fichiers

Réseau

root@debian:~# apt-get install iceweasel icedove pidgin pidgin-otr xchat filezilla grdesktop
  • iceweasel : navigateur web firefox en version Debian
  • icedove : client de messagerie thunderbird en version Debian
  • pidgin : client de messagerie instantanée (MSN, AIM, Google, etc)
  • pidgin-otr : plugin de chiffrement des conversations pour Pidgin
  • xchat : client IRC
  • filezilla : client FTP/SFTP
  • grdesktop : client remote desktop RDP

Bureautique

root@debian:~# apt-get install libreoffice libreoffice-gtk gimp epfdview gpicview
  • libreoffice : suite bureautique
  • libreoffce-gtk : thème d’intégration GTK pour libreoffice
  • gimp : logiciel de manipulation d’images
  • epdfview : lecteur PDF
  • gpicview : visionneuse d’images

Multimédia

root@debian:~# apt-get vlc quodlibet
  • vlc : lecteur vidéo suite bureautique
  • quodlibet : lecteur audio

Une fois l’ensemble des packages installés, vous pouvez récupérer de l’espace disque avec cette commande :

root@debian:~# apt-get -f clean

Qt : QGtkStyle was unable to detect the current GTK+ theme

root@debian:~# apt-get install libgnomeui-0

Debian : installation de wheezy sur poste Mac

Cet article détaille l’installation d’une Debian Wheezy sur un Mac Mini en OS X 10.8. Pour pouvoir démarrer un OS non Apple, il faut installer un boot manager non bridé tel que refind (celui d’Apple ne présente que les partitions Apple). Concernant Linux, l’installation de GRUB EFI est obligatoire, ce qui nécessite en plus la copie d’un fichier sur la partition EFI (partition 1) du disque dur. Ces deux points étant effectués, un système Linux peut être installé et lancé sur un poste Mac.

Vérification du firmware EFI

Je n’ai pas eu de problème avec mon poste mais il est bon de savoir quel type de firmware EFI vous possèdez : 32 ou 64 bits. Pour ce faire, la commande à utiliser est la suivante :

$ ioreg -l -p IODeviceTree|grep firmware
| |   "firmware-revision" = <0a000100>
| |   "firmware-abi" = <"EFI64">
| |   "firmware-vendor" = <4100700070006c0065000000>

Redimensionnement de la partition Mac OS X

La partition de Mac OS X doit être redimensionnée avant de pouvoir installer un nouveau sytème. Le redimensionnent s’effectue à chaud avec l’utilitaire de disque. Ne touchez pas au schéma de partitionnement sous risque de perte de données !

Pour information, voici mon partitionnement final.

Utilitaire disque : partition Mac redimensionnée

Installation de refind

Le boot manager est disponible ici : http://www.rodsbooks.com/refind/.

Toute l’installation est automatisée et aucune configuration n’est nécessaire :

# ./install.sh
Installing rEFInd on Linux....
ESP was found at /boot/efi using vfat
Copied rEFInd binary file refind_x64.efi

Copying sample configuration file as refind.conf; edit this file to configure
rEFInd.

Installation has completed successfully.

On peut ensuite passer au partitionnement du disque dur.

Création des partitions GPT pour Linux

Le partitionnement est effectué avec gptfdisk : http://sourceforge.net/projects/gptfdisk/

On initialise au préalable la table MBR. Aucune partition MBR n’est à ajouter :

$ sudo gdisk /dev/disk0
> x
> n
> o

Disk size is 625142448 sectors (298.1 GiB)
MBR disk identifier: 0x00000000
MBR partitions:

Number  Boot  Start Sector   End Sector   Status      Code
1                     1    625142447   primary     0xEE

> w

Le partitionnement GPT peut débuter : je crée ici une partition pour /boot et une partition LVM (si vous ne souhaitez pas de LVM, créez autant de partitions nécessaires). Attention, il faut laisser un espace libre de 128 Mo entre la partition Mac et la partition Linux /boot. Ceci est obligatoire sous peine de planter votre système OS X lors d’une mise à jour.

$ sudo gdisk /dev/disk0
> p
> n (first sector: +128M, size: +256M, type 8300)
> n (all remaining, type 8E00)
> p

Number  Start (sector)    End (sector)  Size       Code  Name
1              40          409639   200.0 MiB   EF00  EFI system partition
2          409640       314726519   149.9 GiB   AF00  Customer
3       314988664       315512951   256.0 MiB   8300  Linux filesystem
4       315512952       625142414   147.6 GiB   8E00  Linux filesystem

> w

Le partitionnement EFI étant terminée, l’installation Linux peut débuter

Installation de Wheezy

L’installation Debian est faite à partir du CD en mode expert (touche C au boot).

A l’étape de partitionnement, il faut utiliser la partition 4 pour /boot et la partition 5 pour LVM. Je crée ensuite un VG de 3 LV : swap, / et /home. Pour la sélection des packages, j’ai pour habitude faire une clean install donc seule l’installation du serveur SSH est activée. L’étape cruciale est au niveau du bootloader : il ne faut pas l’installer car il s’agit de GRUB pour système MBR.

L’installation étant finalisée, il reste à installer GRUB pour EFI.

Installation de GRUB EFI

On redémarre à nouveau sur le CD Debian mais en mode rescue.

On lance un chroot sur la partition racine du système Linux (partition 5), puis les commandes suivantes dans le shell :

# mount /dev/sda4 /boot
# mkdir /boot/efi
# mkdir /dev/sda1 /boot/efi
# apt-get install grub-efi
# grub-install /dev/sda4
# ls /boot/efi/EFI/
APPLE  debian
# update-grub

La partition /boot est montée, puis la partition EFI dans /boot/efi. Le package GRUB est installé.  J’installe ensuite GRUB sur la partition /boot (/dev/sda4). Le bootloader de GRUB est alors copié sur la partition EFI afin qu’il puisse lancer son stage2 présent sur /boot et au final Linux. Je finalise en mettant à jour le menu GRUB.

Le système Linux est maintenant démarrable. En cas de non démarrage du système par GRUB, les commandes précédentes sont à effectuer de nouveau à partir d’un boot en mode rescue, en chrootant sur la partition racine.

Sous Linux, les packages suivants seront nécessaires pour la prise en charge du matériel :

# apt-get install cpufrequtils firmware-b43-installer

Xorg : lancement automatique sans gestionnaire de sessions

Astuce pour lancer automatiquement une session X depuis le login sur la première console :

user@debian:~$ cat ~/.bash_profile
# start X11
if [ $(tty) == "/dev/tty1" ]; then
      startx
fi

Sudo : désactiver la confirmation de mot de passe

root@srv:~# visudo
#%sudo   ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL
Haut de page