Un Electron Libre...

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 14 mai 2008

Sécurité quand tu nous tiens...

Pensez à mettre vos serveurs / applications à jour et ce assez rapidement...

Procédure de vérification (issu d'un mail de Gandi)

Récupérer le script dowkd.pl :

$ cd /tmp
$ wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz
$ wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz.asc
$ gpg --keyserver subkeys.pgp.net --recv-keys 02D524BE
$ gpg --verify dowkd.pl.gz.asc
$ gunzip dowkd.pl.gz

L'appliquer sur des clés de machine (host key) :

$ perl dowkd.pl host localhost
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
localhost: weak key
localhost: weak key

Le message "weak key" indique que la clef est faible et donc vulnérable.

L'appliquer sur les clés des utilisateurs :

# perl dowkd.pl user
/home/someuser/.ssh/authorized_keys:1: warning: unparsable line
/home/someuser/.ssh/authorized_keys:3: warning: unparsable line
/home/someuser/.ssh/authorized_keys:4: weak key
/home/someuser/.ssh/authorized_keys:5: weak key

Pour les certificats, utiliser une procédure de révocation/regénération de certificats.

Pour le reste, voir la page SSLKey sur le wiki de Debian

Edit : Ajout du lien pour l'annonce d'OpenSSH Edit 2 : ajout du lien vers http://wiki.debian.org/SSLkeys

jeudi 1 mai 2008

Nginx, Redmine et PostgreSQL

Cela a été testé sur une Ubuntu "Hardy 08.04" & Debian "Testing/Lenny". Les utilisateurs d'Ubuntu rajouteront un sudo aux endroits qui vont bien :-)

Pré-requis

Installons le socle de base

aptitude install nginx ruby rubygems ruby-pkg-tools ruby1.8-dev build-essential postgresql

Utilisons ensuite les gems pour installer les "paquets" ruby dont on a besoin :

gem install rails mongrel mongrel_cluster postgres-pr --include-dependencies

Dans ~/.bash_profile ou ailleurs (/etc/profile, /etc/environment, etc) tant qu'au final, ce bout de chemin soit ajouté à votre PATH.

export PATH="$PATH:/var/lib/gems/1.8/bin"

Création de la base postgresql

Nous allons d'abord changer un paramètre d'authentification de postgres en éditant le fichier @@ /etc/postgresql//8.3/main/pg_hba.conf@@ afin d'avoir la ligne suivante :

local   all         all                               md5

Redémarrez ensuite postgresql pour que votre modification soit prise en compte :

/etc/init.d/postgresql-8.3 restart

En root, devenez l'utilisateur "postgres", compte technique d'administration de postgres :

su postgres

Créer un utilisateur redmine et une base redmine

createuser redmine --no-superuser --no-createdb --no-createrole --login --pwprompt --encrypted
(pour le tutoriel, j'ai pris le mot de passe redmine)
createdb --owner=redmine --encoding=utf-8 redmine
exit

Pour tester votre compte :

psql -U redmine redmine

Installation de Redmine

Récupération de Redmine

Même si la version 0.7 de Redmine est sortie il y a quelques jours, un bug fait qu'il vaut mieux attendre la version 0.7.1...

J'utilise donc la branche 0.6-stable pour ce tutoriel et je récupère le tout par svn. A vous d'adapter selon votre besoin et votre expérience

cd /srv/rails/ 
(adapter ce chemin à l'endroit où vous voulez mettre redmine, pas besoin que ce soit dans /var/www)
svn co http://redmine.rubyforge.org/svn/branches/0.6-stable redmine-0.6

Configuration de la base de données

Créer le fichier config/database.yml...

cp config/database.yml.example config/database.yml

... avec le contenu suivant :

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "redmine"

Remplissez la base

Au niveau du répertoire de redmine :

rake db:migrate RAILS_ENV="production"
rake redmine:load_default_data RAILS_ENV="production"

Test de bon fonctionnement

Toujours depuis le répertoire de redmine :

mongrel_rails start --environment=production

En vous rendant sur http://localhost:3000/, vous devriez voir une instance redmine tourner et pouvoir vous y connecter avec les identifiants admin/admin.

Mise en place du cluster mongrel

Note : je voulais faire tourner redmine via fastcgi mais j'ai rien trouvé à ce sujet. Tous les tutoriels sont basés sur mongrel donc je fais comme les autres...

Créer le fichier config/mongrel_cluster.yml dans le répertoire Redmine :

user: vous
cwd: /srv/rails/redmine-0.6
port: "9000"
environment: production
group: vous
address: 0.0.0.0
pid_file: log/mongrel.pid
servers: 2

et lancer le cluster :

mongrel_rails cluster::start

Vous devriez pouvoir accéder à votre instance redmine via http://localhost:9000/ et http://localhost:9001/

Faire en sorte que le cluster démarre lors du démarrage de votre pc/serveur :

mkdir /etc/mongrel_cluster
ln -s /srv/rails/redmine-0.6/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml
cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
chmod +x /etc/init.d/mongrel_cluster
update-rc.d mongrel_cluster defaults

Configuration de nginx

Dernière étape, accéder à votre instance redmine sur le port 80 via nginx :

Dans /etc/nginx/sites-available/ ajouter un fichier "redmine" par ex contenant :

server {
        listen 80;
        server_name localhost;
        root /srv/rails/redmine-0.6/public;

        location / {
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect false;
                proxy_read_timeout 300;

                if (-f $request_filename/index.html) {
                        rewrite (.*) $1/index.html break;
                }

                if (-f $request_filename.html) {
                        rewrite (.*) $1.html break;
                }

                if (-f $request_filename.txt) {
                        rewrite (.*) $1.txt break;
                }

                proxy_pass http://127.0.0.1:9000/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root html;
        }

        access_log /var/log/nginx/redmine.access.log;
        error_log /var/log/nginx/redmine.error.log;
}

Activez le site :

ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/redmine

et relancer nginx :

/etc/init.d/nginx restart

En vous rendant sur http://localhost/ vous devez avoir accès à votre instance redmine...

Connaissant pas du tout rails et mongrel, il y a peut être des améliorations à apporter. Pour nginx, idem. Je suis preneur d'améliorations :-)

Maintenant, il me reste à étudier la migration de Trac vers Redmine...

Liens utiles :

lundi 7 avril 2008

Les dépendances de debian sont impénétrables...

Sur un serveur, la mise à jour de libmagick10 (lié à php5-imagick et imagemagick) provoque l'installation de tout ceci :

sudo aptitude dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
Building tag database... Done
The following NEW packages will be installed:
  app-install-data{a} aspell{a} aspell-en{a} busybox{a} dbus{a} dbus-x11{a} dictionaries-common{a} djview4{a} djvulibre-desktop{a} djvulibre-plugin{a}
  docbook-xml{a} eject{a} esound-clients{a} esound-common{a} gconf2{a} gconf2-common{a} gksu{a} gnome-keyring{a} gnome-mime-data{a} gnome-mount{a}
  hal{a} hal-info{a} iceape-browser{a} iceape-gnome-support{a} initramfs-tools{a} klibc-utils{a} libart-2.0-2{a} libaspell15{a} libaudio2{a}
  libaudiofile0{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libavahi-glib1{a} libbonobo2-0{a} libbonobo2-common{a}
  libbonoboui2-0{a} libbonoboui2-common{a} libcairo-perl{a} libdbus-1-3{a} libdbus-glib-1-2{a} libdirectfb-1.0-0{a} libdirectfb-extra{a}
  libdjvulibre21{a} libeel2-2.20{a} libeel2-data{a} libenchant1c2a{a} libesd0{a} libgail-common{a} libgail18{a} libgconf2-4{a} libgksu2-0{a}
  libglade2-0{a} libglib-perl{a} libgnome-keyring0{a} libgnome-menu2{a} libgnome2-0{a} libgnome2-canvas-perl{a} libgnome2-common{a} libgnome2-perl{a}
  libgnome2-vfs-perl{a} libgnomecanvas2-0{a} libgnomecanvas2-common{a} libgnomeui-0{a} libgnomeui-common{a} libgnomevfs2-0{a} libgnomevfs2-common{a}
  libgnomevfs2-extra{a} libgtk2-perl{a} libgtop2-7{a} libgtop2-common{a} libhal-storage1{a} libhal1{a} libhunspell-1.1-0{a} libidl0{a} libilmbase6{a}
  libklibc{a} libmng1{a} libnautilus-extension1{a} libnotify1{a} libnspr4-0d{a} libnss3-1d{a} libopenexr6{a} liborbit2{a} libpam-gnome-keyring{a}
  libqt4-core{a} libqt4-gui{a} libqt4-qt3support{a} libqt4-sql{a} libscrollkeeper0{a} libsexy2{a} libsmbclient{a} libsmbios-bin{a} libsmbios1{a}
  libsmbiosxml1{a} libsplashy1{a} libstartup-notification0{a} libts-0.0-0{a} libvolume-id0{a} libvte-common{a} libvte9{a} libwnck-common{a}
  libwnck22{a} libx86-1{a} libxres1{a} mozilla-browser{a} notification-daemon{a} pm-utils{a} powermgmt-base{a} qt4-qtconfig{a} radeontool{a}
  scrollkeeper{a} sgml-base{a} sgml-data{a} synaptic{a} udev{a} usbutils{a} uswsusp{a} vbetool{a} xml-core{a}
The following packages will be REMOVED:
  libdjvulibre15{a} libopenexr2ldbl{u}
The following packages will be upgraded:
  libmagick10
1 packages upgraded, 120 newly installed, 2 to remove and 0 not upgraded.
Need to get 56.5MB of archives. After unpacking 165MB will be used.
Do you want to continue? [Y/n/?]

Installer notamment Mozilla et un bout de Gnome sur mon serveur pour une librairie de manipulation d'images, ça me laisse perplexe...

mercredi 23 mai 2007

knetworkmanager sous debian : en finir avec les problèmes de connexion

Note : ma solution fonctionne mais ce n'est peut être pas la plus élégante.

Rappel des faits : sous Debian, knetworkmanager (inclus dans le paquet network-manager-kde) ne fonctionne paus correctement, à savoir : par défaut, sous un utilisateur normal, l'application ne permet pas de voir son statut (connecté ou pas), ni de voir les connexions wifi environnantes pour en choisir une (balaud pour un gestionnaire réseau...). La solution consistait à lancer knetworkmanager via un kdesu :

kdesu knetworkmanager

Cette solution allait bien mais est rapidement pénible quand à chaque démarrage de session KDE il faut quitter l'instance lancée automatiquement et en lancer une nouvelle via kdesu.

Solution :

En partant de ce report de bug, j'en suis arrivé à faire 2 choses :

  • Ajouter mon utilisateur au groupe netdev :
sudo adduser nicolas netdev
  • Modifier /etc/dbus-1/system.d/NetworkManager.conf pour avoir (ajout de la ligne allow own=...):
<policy group="netdev">
                <allow own="org.freedesktop.NetworkManager"/>
                <allow send_destination="org.freedesktop.NetworkManager"/>
                <allow send_interface="org.freedesktop.NetworkManager"/>
        </policy>
  • Vérifier ensuite que vous avez la même règle dans /etc/dbus-1/system.d/knetworkmanager.conf
  • Il suffit alors de redémarrer d-bus :
sudo /etc/init.d/dbus restart

Et voilà, ça fonctionne.

Si vous ne voulez pas vous rajouter au groupe netdev, vous pouvez très bien copier la règle (policy) du user root et mettre votre nom d'utilisateur à la place... cela devrait aussi fonctionner :-)

mercredi 2 mai 2007

Debian Etch : notes de post-installation

Ce billet sera mis à jour au fur et à mesure :

Wifi :

  • knetworkmanager est dans le paquet network-manager-kde et il faut le lancer avec kdesu pour qu'il fonctionne correctement
  • pour les centrino utilisant le module ipw2200, il faut se procurer le firmware et mettre les fichiers dans /lib/firmware/. (Source)

Gestion de l'énergie :

  • Penser à installer powernowd, Charger les modules "speedstep-centrino" et "cpufreq_userspace" - (Source)

Look n' feel :

  • kde-guidance, et votre firefox oublie son aspect GTK pour être en accord avec votre thème KDE :)
  • gtk2-engines-gtk-qt (Via Think Underground).

Son :

Kmix me renvoyant une erreur du type :

Sound server informational message:
Error while initializing the sound driver:
device: default can't be opened for playback (No such device)
The sound server will continue, using the null output device.

Il faut :

  • Installer alsa-base et alsa-utils,
  • Lancer alsaconf,
  • Ajuster le volume avec alsamixer
  • Relancer kmix (si nécessaire)

Pour le reste, ça fonctionne normalement... :-)

Polices :

Il faut installer msttcorefonts

KDE 3.5.6

Pour installer KDE 3.5.6 (disponible uniquement dans les dépots "experimental" et "unstable"), il faut procéder de la façon suivante :

  • Ajouter dans /etc/apt/sources.list :
deb http://ftp.fr.debian.org/debian/ unstable main contrib non-free
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  • Définissez votre source favorite en créant le fichier /etc/apt/apt.conf contenant :
APT::Default-Release "testing";

Si vous préférez rester en etch, remplacez testing par stable :-)

  • Lancez la mise à jour :
aptitude -t experimental install kdeaccessibility kdeaddons kdeadmin kdeartwork kdebase kdeedu kdegames kdegraphics kdelibs kdelibs4c2a kdemultimedia kdenetwork kdepim kdeprint kdesdk kdesktop kdetoys kdeutils kdm amarok bogofilter* network-manager network-manager-kde

Si le score remonté par Aptitude est trop grand, vous pouvez tenter en remplaçant experimental par unstable. Dans tous les cas, comme le nom des dépots le disent, ce ne sont pas forcément des version stables... donc ne venez pas râler si votre ordi part en sucette ;-)

Edit 1 : ajout de kde-guidance

Edit 2 : ajout de la partie son

Edit 3 : ajout de la partie police & kde 3.5.6 (dispo dans unstable & experimental)

Edit 4 : ajout de gtk2-engines-gtk-qt dans la section "look n' feel".

lundi 30 avril 2007

Résultat des courses

A la question : Quel site de tirages de photos, je réponds Photoweb car moins cher et pour un meilleur rendu que Photoways.

A la question : Ubuntu Feisty Fawn sortie, mais..., je réponds : Debian Etch avec l'installateur qui permet de faire des partitions cryptés + LVM. Faut aussi juste voir que knetworkmanager s'appelle network-manager-kde... ;) . En plus, j'ai l'impression que Debian est plus rapide au lancement que sa consoeur, et pourtant, j'ai encore des services inutiles au démarrage...

A la question : Je virtualise (enfin je tente) et toi ? : je réponds VmWare qui au passage vient de sortir en version 1.0.3 et même si vmWare est dans les dépots commerciaux d'ubuntu.

dimanche 8 avril 2007

En vrac de Pâques

  • Debian 4.0 "Etch" est sortie ; voir l'annonce de sortie - comme d'habitude, mieux vaut tard que jamais :-D
  • SPIP se dote d'un plugin OpenID : Plugin d'authentification OpenID
  • Pour ceux qui utilisent l'espace de stockage Amazon S3 et qui veulent accéder à leur espace et l'utiliser via Firefox, c'est possible grâce à S3Fox
  • Les auteurs du framework python Django annoncent des changements importants et irréversibles dans la branche de développement - attention donc pour ceux qui suivaient la branche svn à bien tester ou bien à rester en 0.96 ;-). Un des changements est la suppression des paramètres "auto_add" et "auto_add_now" pour les champs Date. Pour implémenter la fonctionnalité, voici une solution (voir le message 3).
  • Toujours sur Django, la revue de la semaine indique notamment qu'il est dorénavant possible de nommer les motifs d'urls. Cela a l'air assez intéressant !
  • Sortie de Dotclear 1.2.6, qui corrige une faille de sécurité dans l'interface d'admin. Mise à jour recommandée !

Edit du 10/04 : ajout de dotclear 1.2.6

dimanche 25 février 2007

MySQL 5 sous Debian (at least) : surcharger votre configuration.

Avec la mise à jour vers la version 5.0.32-7 de MySQL sous Debian "Etch", je viens de découvrir qu'une petite ligne s'était ajoutée en fin du fichier de configuration /etc/mysql/my.cnf, à savoir :

#
# * IMPORTANT: Additional settings that can override those from this file!
#
!includedir /etc/mysql/conf.d/

En ayant marre de reporter les réglages proposés par mon hébergeur pour la configuration de MySQL à chaque mise à jour de cette dernière, voilà de quoi me réjouir :-)

Donc, maintenant, on ne touche plus à /etc/mysql/my.cnf (sauf pour les options non surchargeables) mais on met les options dans un fichier présent dans /etc/mysql/conf.d/

Ex :

[mysqld]
table_cache             = 128
sort_buffer             = 512K
record_buffer           = 512K
myisam_sort_buffer_size = 16M

query_cache_type        = 1

Attention à bien préciser la section à laquelle se rapporte les variables que vous ajoutez (ici à mysqld )

Relancez MySQL et c'est bon :-)

(ne me demandez pas la justification du tuning de MySQL - je l'ai pris en l'état et n'ai pas cherché plus loin)