Prendre un Café

L'espace d'expression de Nicolas Perriault

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

Ubuntu

Ubuntu est une distribution Linux basée sur Debian.

Fil des billets - Fil des commentaires

vendredi 8 mai 2009

Installer Redmine sous Ubuntu

Redmine est un gestionnaire de projet technique exploitant Ruby on Rails et très inspiré de Trac, mais qui le dépasse fonctionnellement sur plusieurs points, notamment avec une gestion multiprojets qui fait cruellement défaut à son inspirateur. Voyons comment installer et déployer la dernière version de la branche stable (0.8) sur une Ubuntu Hardy Heron LTS[1].

(Redmine Screenshot)

Toutes les opérations décrites ci-dessous se font en root, mais libre à vous d’utiliser sudo à chaque fois, ou une fois pour toutes en lançant la commande sudo -s.

En préambule, on installe les quelques paquets qui nous seront nécessaires[2] :

# apt-get install build-essential ruby ruby1.8-dev rake libopenssl-ruby \
  libmysql-ruby apache2-threaded-dev subversion git

Maintenant, on récupère les sources de Redmine[3], qu’on va installer dans /opt :

# svn co http://redmine.rubyforge.org/svn/branches/0.8-stable /opt/redmine-0.8
# ln -s /opt/redmine-0.8 /opt/redmine

On va ajouter les sources de la version 2.1.2 de rails[4] dans le répertoire vendor de l’application, afin de cloisonner autant que possible l’environnement qu’elle exploite :

# cd /opt/redmine
# wget -O rails.tar.gz http://github.com/rails/rails/tarball/v2.1.2
# tar xvzf rails.tar.gz && rm rails.tar.gz
# mv railsXXX vendor/rails

Créez maintenant une base de données (MySQL ou autre) dédiée à Redmine. Une bonne pratique est de créer également un utilisateur MySQL aux droits restreints à sa seule exploitation.

Ensuite, éditez le fichier config/database.yml afin de modifier les paramètres de connexion à la base de données précédemment créée.

On installe maintenant une version récente de rubygems, ce qui nous permettra d’installer passenger, une sorte de mod_rails permettant de déployer facilement des applications rails sur un serveur Apache :

# wget http://rubyforge.org/frs/download.php/56228/rubygems-1.3.3.tar.gz
# tar xvzf rubygems-1.3.3.tar.gz && rm rubygems-1.3.3.tar.gz
# ruby setup.rb
# rm -r rubygems-1.3.3

Vous pouvez maintenant lancer la tâche de création des tables :

# rake db:migrate RAILS_ENV="production"

Et remplir la base avec quelques données par défaut :

# rake redmine:load_default_data RAILS_ENV="production"

On installe donc passenger, qui au passage vous posera quelques questions très simples :

# gem install passenger

On installe le module apache pour prendre en charge passenger :

# passenger-install-apache2-module

Pour mapper un domaine - par exemple mon.domaine.tld - vers votre instance Redmine, il faut d’abord créer un VirtualHost apache dédié, par exemple dans le fichier /etc/apache2/sites-available/redmine :

<VirtualHost *>
  SetEnv RAILS_ENV production
  ServerName mon.domaine.tld
  DocumentRoot /opt/redmine/public
</VirtualHost>

Vous noterez que la racine publique du vhost pointe vers le dossier public de l’instance Redmine précédemment installée. N’oubliez pas non plus de déclarer le domaine dans votre fichier /etc/hosts :

127.0.0.1 mon.domaine.tld

On active maintenant le vhost et on relance Apache :

# a2ensite redmine
# /etc/init.d/apache2 restart

Une dernière petite chose, vous devez autoriser Apache à lire et écrire dans certains répertoires de l’instance Redmine, comme suit :

# cd /opt/redmine
# chown -R www-data:www-data files log tmp
# chmod -R ug+rw files log tmp
# chmod -R o-rw files log tmp

Voila, vous devriez avoir une instance totalement fonctionnelle de Redmine, accessible par le domaine que vous avez configuré.

En cadeau Bonux, le support de GMail et TLS pour l’envoi d’emails

Si vous désirez configurer l’envoi des emails en utilisant un (ou votre) compte GMail[5], voici la procédure :

Installez tout d’abord le support de TLS pour ActiveMailer :

# cd /opt/redmine
# ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git

Puis éditez le fichier config/email.yml :

production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "votreadresse@gmail.com"
    password: "votremotdepasse"

Relancez Apache pour que la modification soit effective.

Edit : Prise en compte de certaines remarques faites en commentaires.

Notes

[1] C’est la version qui propulse mon serveur.

[2] Ce sont les paquets qui m’ont été nécessaires, sur ma machine ; n’hésitez pas à remonter d’éventuels manques en commentaires.

[3] On installe ici la dernière branche stable disponible à l’heure où sont écrites ces lignes, la 0.8.

[4] Oui, il y a plus récent, mais Redmine 0.8 est conçu pour tourner avec cette version : autant limiter les risques d’incompatibilités.

[5] L’intérêt principal à mes yeux reste l’archivage de tous les éléments envoyés.

mercredi 16 mai 2007

KeyJnote, et vos présentations ont la classe

KeyJnote est un logiciel permettant l'affichage de présentations au format PDF. Le logiciel, riche en effets OpenGL, se veut aussi spectaculaire que Keynote.

Bien que le paquet keyjnote soit disponible dans les dépôts d'Ubuntu Feisty en version 0.8.2, j'ai préféré installer la toute dernière version (0.9.4) qui s'installe relativement facilement :

$ sudo apt-get install python python-pygame python-opengl python-imaging gs pdftk
$ wget -c http://ovh.dl.sourceforge.net/sourceforge/keyjnote/KeyJnote-0.9.4.tar.gz
$ tar xvzf KeyJnote-0.9.4.tar.gz && sudo mv KeyJnote-0.9.4/keyjnote.py /usr/local/bin/

L'idée est de préparer ses slides dans un éditeur permettant de sortir du PDF (comme Impress ou KPresenter, par exemple) et de laisser la gestion de l'affichage à KeyJnote. Pour vous faire une idée plus précise des capacités du logiciel, lancez la démo en n'hésitant pas à jouer avec la souris et les raccourcis clavier disponibles :

$ keyjnote.py KeyJnote-0.9.4/demo.pdf

Voila, même sous Linux, vos présentations n'auront plus jamais la même tronche ;)

mercredi 25 avril 2007

Mettre en place un bouncer IRC avec Muh

Là, en lisant le titre, tu [1] te dis :

Ça y est, il a définitivement pété une durite, je le comprend même plus...

Rassure-toi, la fièvre tombe progressivement, mais je vais quand même essayer de t'expliquer de quoi il s'agit. Si tu utilises quotidiennement IRC, tu sais que chaque fois que tu rejoins un canal ou lances une commande /WHOIS, on voit ta résolution DNS inverse (par exemple jeanpierre@82-76-32-67.Rennes22.monfai.net.

Et parfois cette situation t'embête, pour x ou y raison. Là tu as 3 choix :

  • Tu renonces et acceptes ton sort sans rechigner.
  • Tu te loggues sur un serveur en SSH, tu lance un screen et utilises irssi. Valable, mais un poil overgeek pour moi qui me suit bien habitué à XChat, parfaitement intégré dans le bureau Gnome (avec les notifications des hilites dans la traybar, miam.)
  • Tu installes Muh, et continues à utiliser ton client IRC préféré tout en profitant de la résolution DNS inverse de ton serveur à toi.

Muh va faire office de proxy IRC - ou de bouncer, comme tu préfères. C'est à dire que tu vas mirrorer l'accès à tes serveurs IRC préférés sur ton serveur personnel [2]. Attention, certains hébergeurs n'aiment pas ça du tout et le précisent parfois dans les CGU du service : à vérifier.

Si une distro debian-based est installée sur le serveur, l'installation est simplissime :

$ sudo apt-get install muh
$ mkdir ~/.muh
$ cp /usr/share/doc/muh/examples/muhrc.gz ~/.muh
$ gunzip ~/.muh/muhrc.gz

Édite le fichier ~/.muh/muhrc, ça commence par ton identité sur IRC :

nickname = "NiKo";
altnickname = "NiKo`";
realname = "Nicolas Perriault";
username = "niko";

Je pense que c'est assez parlant. La configuration du port :

listenport = 9999;

Si tu utilises un firewall, attention : tu risques de te faire pincer très fort prends garde à autoriser l'écoute sur ce port.

Maintenant, définis un mot de passe de connexion :

password = "monbeaupassword";

Ce mot de passe est nécessaire pour te connecter à ton instance de Muh. Enfin, la liste des serveurs que tu désires bouncer :

servers {
  "irc.freenode.net",
  "irc.mozilla.org",
};

Enregistre le fichier et lance Muh :

$ muh

Voila, il ne te reste plus qu'à te connecter à ton serveur comme à n'importe quel autre via ton client IRC habituel.

Notes

[1] Oui, je te tutoies, c'est hype.

[2] Bien sûr, il faut disposer d'un serveur dédié ou équivalent.

jeudi 12 avril 2007

Feisty+1 sera Gutsy Gibbon

Le Gibbon Déterminé succèdera donc au Faon Téméraire, ainsi en a décidé SABDFL.

Cette future version du système d'exploitation Ubuntu sera déclinée en une version supplémentaire ne comportant plus aucun logiciel ou driver propriétaire, closed-source ou incompatible avec la définition de Logiciel Libre, en collaboration avec l'équipe de développement de gNewSense.

Gutsy aura de fortes chances d'embarquer Compiz ou le futur hybride Compiz/Beryl par défaut, même si sur le sujet personne n'ose plus vraiment prédire quoique ce soit.

D'ici là, le petit Faon sera ravi d'équiper vos machines dès le 19 avril de cette année. Les plus accros au support CD physique (croisés des moins impatients) seront ravis d'apprendre que ShipIt leur livrera leurs CD de Feisty sous 4 à 6 semaines.

Edit : Et Bill Gates aura beau rien faire qu'à copier Mark Shuttleworth, ça ne nous gâchera pas les feistyvités. Na.

vendredi 23 mars 2007

Intégration de Jamendo dans RhythmBox sous Feisty

[Via Jono Bacon]

Le catalogue intégral Jamendo débarque nativement intégré dans la version de RhythmBox qui équipera Feisty Fawn, la version d'Ubuntu en cours de développement à sortir courant avril.

Jamendo est une plateforme de diffusion et de promotion d'artistes proposant de la musique sous licences Creative Commons : c'est à dire que non seulement le téléchargement y est absolument légal mais qui plus est fortement incité :)

Pour accéder au catalogue Jamendo dans RhythmBox, il suffit d'activer le greffon Jamendo via le menu Edition de RhythmBox. La qualité de restitution des flux est excellente, et des liens contextuels proposent le téléchargement direct des albums dans leur intégralité, pour stockage en local.

RhythmBox et le plugin Jamendo

Le plus marquant reste le texte affiché dans la barre de statut du logiciel une fois la liste intégrale des titres Jamendo disponibles rapatriée :

22972 morceaux, 65 jours, 21 heures et 54 minutes

De quoi voir venir, assurément.

Notez que de la même manière, le catalogue Magnatune, quand à lui payant et par conséquent plus proche de ce que peut être une boutique de musique en ligne, est également disponible via un autre greffon.

iThunes n'a qu'à bien se tenir.

dimanche 4 mars 2007

Rhythmbox tips

(Excusez cette soudaine profusion de billets, je solde)

Je suis fan de Rhythmbox, le gestionnaire de fichiers musicaux fourni avec Gnome dans Ubuntu. C'est simple, ça fonctionne. Voici quelques astuces destinées à une utilisation optimale du programme.

Applet de contrôle dans un tableau de bord Gnome

Music Applet permet de contrôler votre lecteur musical préféré depuis un tableau de bord Gnome :

Music Applet

Pour l'installer :

$ sudo apt-get install rhythmbox-applet

Puis ajouter un nouvel applet au tableau de bord et choisissez Music Applet dans la section Multimedia. Notez qu'il est également capable de piloter Banshee ou Muine.

Notification du titre écouté dans Gajim

Pierpaolo Follia a réalisé un plugin pour Rhythmbox permettant de changer votre message de statut Gajim en fonction du titre que vous écoutez. Pour l'installer, c 'est très simple :

$ mkdir ~/.gnome2/rhythmbox ~/.gnome2/rhythmbox/plugins
$ cd ~/.gnome2/rhythmbox/plugins
$ wget -c http://madchicken.altervista.org/tech/download/gajim-status.tar.gz
$ tar xvzf gajim-status.tar.gz && rm gajim-status.tar.gz

Relancez Rhythmbox, et configurez le plugin via le menu Edition > Greffons > Gajim status changer :

Capture-Gajim_Status_Changer.png

Suggestions Last.fm avec le plugin LastRhythm

Je suis également un très grand fan de last.fm, particulièrement des fonctionnalités de suggestions par similarité artistique. Aussi, quand je suis tombé complètement par hasard sur l'existence d'un plugin LastRhythm pour Rhythmbox, je me suis empressé de l'installer pour le tester.

Verdict, ça marche fort bien (sous Edgy du moins.)

La procédure d'installation est très simple :

$ sudo apt-get install subversion python-elementtree
$ svn co https://svn.usrportage.de/lastrhythm/trunk/ /usr/lib/rhythmbox/plugins/lastrhythm

Redémarrez rhythmbox, activez le plugin greffon et appréciez :)

lundi 5 février 2007

Sécuriser son Ubuntu-server

L'intérêt d'avoir une Dedibox sur une classe C réputée niche à boulets, c'est qu'on est confronté à de nombreuses tentatives de hacks, DDOS et autres bruteforce quasi-quotidiennement. De quoi envisager une approche totalement paranoïaque de la sécurité du système ; voila quelques bonnes résolutions pour une Ubuntu-server.

Utilisez de vrais mots de passe

Minimum 8 caractères avec des lettres, des chiffres et de la ponctuation. Changez-en régulièrement.

Mieux, utilisez des clés SSH.

Désactiver l'accès root depuis SSH

Si quelqu'un arrivait à craquer votre accès SSH, il serait dommage qu'il arrive directement en root. Le moyen le plus simple pour éviter cela, c'est de désactiver l'accès SSH en root, en éditant le fichier /etc/ssh/sshd_config et en remplaçant la ligne :

PermitRootLogin: yes

par

PermitRootLogin: no

Changer le port SSH par défaut

Toujours dans le même fichier /etc/ssh/sshd_config, changer le numéro de port par défaut (22) par un autre :

Port 12345

Attention, ne prenez pas un numéro de port utilisé par un des autres services que vous utilisez sur le serveur (80 pour http, 25 pour smtp, 443 pour https, etc.)

Par exemple si vous déclarez le port 12345 pour SSH, vous vous connecterez ainsi sur la machine :

$ ssh user@machine.tld -p 12345

Note : Chaque modification du fichier sshd_config doit occasionner un redémarrage du service :

$ sudo /etc/init.d/ssh restart

Blacklister les IP malsaines

fail2ban est un petit utilitaire qui scanne les logs d'accès sshd et blackliste les IP depuis lesquelles émanent trop de tentatives de connexion échouées. Pour l'installer :

$ sudo apt-get install fail2ban

Plus d'infos sur la configuration et l'utilisation de fail2ban.

Interdire l'execution depuis /tmp

Le répertoire /tmp est souvent utilisé par les script-kiddies de tous poils pour y déposer leurs executables et les lancer. Une approche intelligente du phénomène est d'interdire l'execution de programme sur ce point de montage, en ajoutant la directive noexec à votre fichier /etc/fstab, comme dans cet exemple :

/dev/sda3   /tmp    ext3   noexec,nosuid     0    2

Si vous ne possédez pas de point de montage pour /tmp, pas de panique : vous allez pouvoir en créer un à l'arrache :-)

Attention :

  • Le gestionnaire de paquet apt a parfois besoin d'executer des scripts depuis cet emplacement lors de certaines mises à jour, chose que la drective noexec interdit;
  • MySQL a parfois besoin de créer des tables temporaires à cet emplacement pour traiter des requêtes coûteuses, chose que le nosuid interdit.

La manipulation décrite ci-dessus n'est donc à appliquer en connaissance de cause. (voire à ne pas appliquer du tout, en fait. Hem.)

Installer un firewall

Shorewall est un firewall simple à administrer, mais pas pour autant moins efficace que les autres. L'installation se fait par un traditionnel :

$ sudo apt-get install shorewall

Un très bon tutoriel de configuration du logiciel existe, n'hésitez pas à aller y faire un tour. L'idée est dans tous les cas de tout interdire par défaut et d'ouvrir les ports un à un en fonction de vos besoins.

Vérifier régulièrement la présence de rootkits

Chkrootkit scanne votre machine et y déniche les rootkits les plus répandus. Le programme s'installe facilement via la commande :

$ sudo apt-get install chkrootkit

Et se lance de cette façon :

$ sudo chkrootkit

Vous pouvez croner l'exécution du programme quotidiennement et vous en envoyer le résultat par email, en ajoutant cette ligne dans votre crontab :

0 3    *   *   *   chkrootkit 2>&1 | mail vous@domain.tld -s "Rapport de chkrootkit"

D'autres outils peuvent tout aussi bien faire l'affaire et peuvent être utilisés de façon complémentaires :

Ces deux outils sont disponibles dans les dépôts officiels Ubuntu et sont d'une utilisation très simple.

Note : si la commande mail est inconnue de votre système, installez le paquet mailx :

$ sudo apt-get install mailx

Emprisonnez vos programmes et utilisateurs

Chroot est un programme qui permet de littéralement emprisonner un utilisateur ou un programme dans un environnement désolidarisé du reste du système, ce qui garanti une réversibilité des dommages occasionnés.

Plus d'informations sur la commande chroot.

Encore quelques conseils de base

  • Mettez régulièrement à jour votre système
  • Utilisez toujours les dépôts officiels Ubuntu
  • N'installez jamais de softs pour tester en oubliant de les désinstaller par la suite
  • N'ouvrez de nouveaux services que si vous en avez réellement besoin
  • Surveillez vos logs
  • Surveillez régulièrement les process système
  • Monitorez votre machine, surveillez les comportements anormaux
  • Ne donnez jamais vos mots de passe
  • Touchez du bois

Les commentaires bouillent d'impatience de recevoir vos remarques, suggestions et contributions.

Edit : Prise en compte de certains commentaires judicieux.

Edit 2 : JJL pose une vraie question : Ubuntu est-elle prête pour le serveur ? Sachant que les paquets Universe contenant des choses comme Trac ou Bacula ne sont pas maintenues au niveau patches de sécurité, cela laisse songeur...

jeudi 18 janvier 2007

Synchro distante automatique via un daemon rsync sur Ubuntu

Et non ! Rsync n'est pas une voiture des années 90 mais bien un outil de synchronisation de fichiers à distance très puissant. Il peut notamment tourner en daemon afin d'autoriser les appels distants automatiques, via Cron par exemple.

Si par un hasard hallucinant vous ne disposiez pas de rsync sur votre Ubuntu, voici la démarche à suivre pour l'installer en ligne de commande :

$ sudo apt-get install rsync

Bien. Nous disposons de deux machines, la machine A - disposant d'un utilisateur jeanpierre - et la machine B - habitée par edmond. Nous devons automatiser la synchro d'un répertoire présent sur la machine A vers la machine B. On va donc installer un daemon rsync sur la machine A et le configurer en créant le fichier /etc/rsyncd.conf :

uid             = jeanpierre 
gid             = jeanpierre
use chroot      = no    
max connections = 4
syslog facility = local5
pid file        = /var/run/rsyncd.pid

[mon_partage]
  comment = Mon partage
  path = /home/jeanpierre/monpartage
  read only = yes
  list = yes
  hosts allow = *
  auth users = edmond, gerard
  secrets file = /etc/rsyncd.secrets

Je vous renvoie à cette page sur la syntaxe du fichier rsync.conf pour plus de renseignements.

On crée un fichier process vide :

jeanpierre@machineA:~$ sudo touch /var/run/rsyncd.pid

Les comptes utilisateurs se définissent dans le fichier /etc/rsyncd.secrets sous la traditionnelle forme login:motdepasse comme ci-dessous :

edmond:3dm0nd
gerard:g3r4rd

Par souci de sécurité et de confidentialité, ces fichiers ne devront pas être lisibles par un autre utilisateur que le root, donc :

jeanpierre@machineA:~$ sudo chmod 640 /etc/rsyncd.conf
jeanpierre@machineA:~$ sudo chmod 640 /etc/rsyncd.secrets

Lancer rsync en daemon sur la machine A (machinea.domain.tld) :

jeanpierre@machineA:~$ sudo rsync --daemon

Et depuis la machine B (machineb.domain.tld) :

edmond@machineB:~$ rsync -avz edmond@machinea.domain.tld::mon_partage ~/mon/repertoire/cible

La saisie du password de l'utilisateur edmond défini précedemment lancera la synchronisation effective des fichiers. Pour éviter la saisie manuelle du password, il faut envisager d'utiliser l'option --password-file=FILE. Pour se faire, il faut créer un fichier contenant juste le mot de passe en clair, par exemple dans /home/edmond/.rsync_passwd comme ceci :

3dm0nd

Ce fichier devra n'être accessible que par l'utilisateur système utilisant la commande rsync. Dans le cas de l'utilisateur connecté à la machine B :

edmond@machineB:~$ chmod 640 /home/edmond/.rsync_passwd

On peut alors lancer une synchro de cette façon :

edmond@machineB:~$ rsync -avz edmond@machinea.domain.tld::mon_partage ~/mon/repertoire/cible --password-file=/home/edmond/.rsync_passwd

L'avantage de cette ligne de commande est qu'elle peut être appellée depuis un Cron et donc ne pas nécessiter de saisie du mot de passe manuellement.

Enfin, sachez que les éventuelles erreurs d'authentification seront logguées dans le fichier /var/log/syslog.

- page 1 de 10