Catégories
Open-source Planet-libre Systeme

Un serveur FTP en 5 minutes chrono

Nous allons dans ce billet détailler l’installation d’un serveur FTP sur une machine tournant sous Ubuntu 10.04 (la procédure marche aussi sur d’autres versions). Le serveur FTP choisi est Pure-ftpd (je l’utilisai déjà sous FreeBSD et il est d’une stabilité à toutes épreuves).

> top chrono

Installation de Pure-ftpd

Il y a plus dur:

sudo apt-get install pure-ftpd pure-ftpd-common

Suite à cette commande, le serveur FTP sera lancé automatiquement. L’ensemble des fichiers de configuration de Pure-ftpd se trouve dans le répertoire suivant: /etc/pure-ftpd/

Il faut ensuite créer l’utilisateur/groupe système avec lequel le serveur FTP sera lancé:

sudo groupadd ftpgroup

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Configuration de Pure-ftpd

De base, Pure-ftpd base son authentification sur le PAM système puis sur un fichier de donnée interne. Personnellement et pour des raisons de sécurité, je préfère désactiver l’authentification par PAM. Pour cela il faut éditer le fichier conf/PAMAuthentication et remplacer la ligne yes par no:

# sudo vi /etc/pure-ftpd/conf/PAMAuthentication

no

# sudo vi /etc/pure-ftpd/conf/DontResolve

yes

Pour finir, il faut créer un lien symbolique pour activer l’authentification des utilisateurs virtuels :

# cd /etc/pure-ftpd/auth/

# sudo ln -s ../conf/PureDB 50puredb

Création d’un utilisateur FTP

Par exemple si vous voulez créer l’utilisateur ftp nicolargo dont le répertoire sera /home/ftp/nicolargo, il faut saisir les commandes suivantes:

sudo mkdir /home/ftp/nicolargo

sudo chown -R ftpuser:ftpgroup /home/ftp/nicolargo

sudo pure-pw useradd nicolargo -u ftpuser -g ftpgroup -d /home/ftp/nicolargo

Ces commandes vont avoir comme buts de créer un répertoire local puis de renseigner le fichier de configuration de Pure-ftp: /etc/pure-ftpd/pureftpd.passwd:

# sudo cat /etc/pure-ftpd/pureftpd.passwd

nicolargo:$1$ucgVifA0$HFoang9VssnUnErD3X4bj1:1001:1001::/home/ftp/nicolargo/./::::::::::::

Enfin il faut transofrmer ce fichier dans un format sécurisé et lisible par le serveur FTP (/etc/pure-ftpd/pureftpd.pdb):

sudo pure-pw mkdb

On relance alors le serveur pour que la configuration soit prse en compte:

sudo /etc/init.d/pure-ftpd restart

< fin du chrono ! (5 minutes !!! :))

Quelques commandes utiles…

Voici quelques commandes utiles à l’administration de votre serveur FTP.

Pour configurer le message affiché lors de la connexion des utilisateurs, il faut commencer par editer un fichier texte contenant le message:

# sudo vi /etc/motd.pure-ftpd

Bienvenue sur mon beau serveur FTP !

Puis ajouter le chemin de ce fichier dans le fichier /etc/pure-ftpd/conf/FortunesFile:

# sudo vi /etc/pure-ftpd/conf/FortunesFile

/etc/motd.pure-ftpd

Pour connaitre la liste des utilisateurs ayant un compte FTP:

# sudo pure-pw list

nicolargo /home/ftp/nicolargo

Pour changer le mot de passe d’un utilisateur:

sudo pure-pw passwd nicolargo

Pour supprimer le compte d’un utilisateur:

sudo pure-pw userdel nicolargo

Catégories
Open-source

Actualité open-source de la semaine #46

L’actualité open-source de la semaine…

L’image de la semaine

51mBMb4lNzL._SL500_AA240_.jpg

Petit rappel pour le fan de BSD: la bible est disponible en Français…

Tout le monde en parle, sauf moi…

L’actualité du libre et de l’open source en vrac:

Autres choses ?

Catégories
Open-source Systeme

MacPorts simplifie l’open-source sous Mac

macports-logo.pngvous le savez (ou pas), le système d’exploitation Mac Os X est basé sur un système Unix de type FreeBSD. Depuis le passage à une architecture de type Intel, il est donc théoriquement possible de compiler n’importe quel logiciel développé pour FreeBSD sur votre Mac.

La théorie étant souvent assez éloignée de la pratique, on se retrouve régulièrement avec des problèmes de compilation. Heureusement, il existe de bonnes âmes qui vous mâchent un peu le travail en « packagant » les sources des logiciels pour une complication sans souci. MacPorts est un projet de la communauté open-source visant à regrouper ces sources (il y en a plus de 5400 au moment de l’écriture de ce billet) tout en offrant un gestionnaire de paquets.

Nous allons voir comment installé les MacPorts sur votre machine sous Mac OS X puis donner quelques exemples de commande du gestionnaire de paquets.

Installation des MacPorts

Il existe plusieurs méthodes pour installer les MacPorts sur votre machine. La plus simple étant de télécharger l’image DMG (version 1.7.0 par exemple) puis de procéder à l’installation.

Attention: il faut que les pré-requis suivants soit installés sur votre machines:

  • Xcode version 3.1 (disponible sur le DVD d’installation de Mac OS X ou à télécharger ici.
  • X11 user + X11 SDK, également disponible sur le DVD d’installation de Mac OS X

Si vous avez déjà les MacPorts installés, pour les mettre à jour à la dernière version, il faut utiliser la commande suivante:

sudo port -v selfupdate

Utilisation des MacPorts

Nous n’allons pas faire un copier/coller de la documentation très complète disponible en ligne (en Anglais) mais juste donner quelques commandes pour débuter.

Liste des logiciels disponibles:

# port list

Liste des logiciels installés:

# port installed

Recherche un logiciel:

# port search iperf

iperf @2.0.4 (net)

A tool to measure maximum TCP and UDP bandwidth

Information sur un logiciel:

# port info iperf

iperf @2.0.4 (net)

Variants: universal

Iperf is a tool for measuring maximum TCP and UDP bandwidth, reminiscent of ttcp and nettest. It

has been written to overcome the shortcomings of those aging tools. Iperf can also test UDP

bandwidth, loss, and jitter.

Homepage: http://iperf.sourceforge.net

Platforms: darwin

Maintainers: pmq@macports.org

Installer un logiciel:

# sudo port install iperf

De-installer un logiciel:

# sudo port uninstall iperf

Vérifier si les logiciels installés sont à jour:

# port livecheck outdated

Mise à jour d’un logiciel:

# sudo port upgrade iperf

Mise à jour de l’ensemble des logiciels installés:

# sudo port upgrade outdated

Et voila, je vous invite à consulter le site officiel qui regorge d’information sur le projet. Si vous souhaitez y participer en intégrant vos développements (compatible Mac bien sûr…) aux MacPorts, il suffit de suivre la documentation suivante.

Catégories
Open-source Reseau

Surveiller les interfaces de son Cisco avec Nagios

Qui veut surveiller l’état des interfaces de ses routeurs Cisco doit obligatoirement se plonger dans l’arborescence des MIB SNMP. Heureusement, Patrick Proy a eu la bonne idée d’intégrer dans un seul et même script Perl toutes les fonctions pour répondre à ce besoin.

Nous allons dans ce billet voir comment installer et tester le plugin check_snmp_int.pl puis configurer Nagios pour prendre en compte ce nouveau plugin.

Installation du plugin

Il faut dans un premier temps se rendre dans le répertoire ou les plugin Nagios sont stockés (/usr/local/libexec/nagios par exemple) puis y télécharger la dernière version du plugin (1.4.8 au moment de l’écriture de ce billet):

cd /usr/local/libexec/nagios
wget http://nagios.manubulon.com/check_snmp_int.pl

Ensuite on le rend executable par Nagios:

chown nagios:nagios check_snmp_int.pl
chmod 555 check_snmp_int.pl

Enfin on vérifie que l’utilisateur Nagios (ou celui qui doit lancer Nagios) peut exécuter ce script:

su – nagios
nagios> /usr/local/libexec/nagios/check_snmp_int.pl -h
… la syntaxe va s’afficher …
nagios> exit

Si vous avez une erreur lors de l’éxécution du script, cela peut être dû à l’absence des pré-requis suivants sur votre système:

  • Perl doit être installé dans le répertoire /usr/bin/perl
  • La librairie Perl nommée Net::SNMP doit être installé (via CPAN)
  • Le fichier ‘utils.pm doit être présent dans le répertoire des plugins Nagios

Test du plugin

Nous allons dans un premier temps chercher la liste des interfaces réseau du routeur Cisco (ou autre compatible avec MIB-2 standard) à superviser:

/usr/local/libexec/nagios/check_snmp_int.pl -H <adresseIPdurouteur> -C public -n zzzz -v
Alarm at 15 + 5
SNMP v1 login
Filter : zzzz
OID : 1.3.6.1.2.1.2.2.1.2.26, Desc : Async54
OID : 1.3.6.1.2.1.2.2.1.2.28, Desc : Async56
OID : 1.3.6.1.2.1.2.2.1.2.18, Desc : Async46
OID : 1.3.6.1.2.1.2.2.1.2.12, Desc : Async40
OID : 1.3.6.1.2.1.2.2.1.2.31, Desc : Async59
OID : 1.3.6.1.2.1.2.2.1.2.19, Desc : Async47
OID : 1.3.6.1.2.1.2.2.1.2.22, Desc : Async50
OID : 1.3.6.1.2.1.2.2.1.2.34, Desc : Async62
OID : 1.3.6.1.2.1.2.2.1.2.13, Desc : Async41
OID : 1.3.6.1.2.1.2.2.1.2.23, Desc : Async51
OID : 1.3.6.1.2.1.2.2.1.2.4, Desc : Null0
OID : 1.3.6.1.2.1.2.2.1.2.35, Desc : Loopback0
OID : 1.3.6.1.2.1.2.2.1.2.30, Desc : Async58
OID : 1.3.6.1.2.1.2.2.1.2.5, Desc : Async33
OID : 1.3.6.1.2.1.2.2.1.2.11, Desc : Async39
OID : 1.3.6.1.2.1.2.2.1.2.1, Desc : Ethernet3/0
OID : 1.3.6.1.2.1.2.2.1.2.39, Desc : Virtual-Access2
OID : 1.3.6.1.2.1.2.2.1.2.14, Desc : Async42
OID : 1.3.6.1.2.1.2.2.1.2.37, Desc : Virtual-Template1
OID : 1.3.6.1.2.1.2.2.1.2.16, Desc : Async44
OID : 1.3.6.1.2.1.2.2.1.2.20, Desc : Async48
OID : 1.3.6.1.2.1.2.2.1.2.17, Desc : Async45
OID : 1.3.6.1.2.1.2.2.1.2.29, Desc : Async57
OID : 1.3.6.1.2.1.2.2.1.2.36, Desc : Tunnel0
OID : 1.3.6.1.2.1.2.2.1.2.3, Desc : Serial3/1
OID : 1.3.6.1.2.1.2.2.1.2.25, Desc : Async53
OID : 1.3.6.1.2.1.2.2.1.2.2, Desc : Serial3/0
OID : 1.3.6.1.2.1.2.2.1.2.7, Desc : Async35
OID : 1.3.6.1.2.1.2.2.1.2.33, Desc : Async61
OID : 1.3.6.1.2.1.2.2.1.2.9, Desc : Async37
OID : 1.3.6.1.2.1.2.2.1.2.6, Desc : Async34
OID : 1.3.6.1.2.1.2.2.1.2.15, Desc : Async43
OID : 1.3.6.1.2.1.2.2.1.2.10, Desc : Async38
OID : 1.3.6.1.2.1.2.2.1.2.27, Desc : Async55
OID : 1.3.6.1.2.1.2.2.1.2.32, Desc : Async60
OID : 1.3.6.1.2.1.2.2.1.2.8, Desc : Async36
OID : 1.3.6.1.2.1.2.2.1.2.21, Desc : Async49
OID : 1.3.6.1.2.1.2.2.1.2.24, Desc : Async52

Il faut ensuite noter le nom système des interfaces à surveiller (par exemple Serial 3/0 et Serial 3/1 dans mon cas).

Puis on lance ensuite la commande pour vérifier l’état de l’interface Serial 3/0:

/usr/local/libexec/nagios/check_snmp_int.pl -H <adresseIPdurouteur> -C public -n « Serial3/0 » -r
Serial3/0:UP:1 UP: OK

On a donc maintenant la commande à éxécuter, il ne reste plus qu’a l’intégrer dans notre configuration de Nagios.

Configuration de Nagios

On commence par se rednre dans le répertoire ou se trouve les fichiers de configuration de Nagios (/usr/local/etc/nagios par exemple):

cd /usr/local/etc/nagios

Puis si vous êtes sous Nagios 3.x ou supérieur dans le sous-répertoire objects:

cd objects

Enfin on édite le fichier commands.cfg puis on y ajoute la section suivante:

###################
# check_snmp_int.pl
###################

# ‘check_snmp_int.pl’, vérifier l’état de l’interface reseau
define command{
command_name    check_snmp_int
command_line    $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -r
}

On vient donc de créer une nouvelle commande Nagios qui appelera le plugin check_snmp_int avec deux paramètres:

  • $ARG1$: nom de la communauté SNMP à utiliser (public la plupart du temps)
  • $ARG2$: nom de l’interface à superviser

Enfin , on ajoute un nouveau service pour le routeur Cisco à superviser (par exemple dans le fichier network.cfg):

define host{
use             routeur
host_name       cisco
alias           Routeur liaison WAN
address         <adresseIProuteurcisco>
}
define service{
use                     generic-service
host_name               cisco
service_description     LS 1
check_command           check_snmp_int!public!« Serial3/0 »
}

Et si en plus je veux…

…surveiller la bande passante utilisée et envoyer une alerte si celle-ci dépasse un certain seuil ? Aller Noël n’est pas si loin…

Il suffit de créer une nouvelle commande Nagios et d’utiliser l’option -k du plugin. Par exemple pour surveiller un interface Serial3/0 et emmettre une alerte de warning si  débit dépasse 1.6 Mbps puis une alerte critique si ce dernier passe la barre des 1.9 Mbps ?

/usr/local/libexec/nagios/check_snmp_int.pl -H <adresseIPdurouteur> -C public -n « Serial3/0 » -k -w 1600,1600 -c 1900,1900

Je vous laisse convertir cette commande système vers une commande Nagios, cela vous fera un bon exercice 😉

Catégories
Open-source

Actualité open-source des vacances de Noël

Bonne année 2009 à tous, en espérant plus de libre dans ce mode de logiciel propriétaire 😉

Quelques brèves et actualités qui se sont déroulées pendant ces deux semaines de vacance de Noël 2008…

  • Le noyau Linux passe en version 2.6.28 (liste des nouveautés ici).
  • I’m a Linux: pour contrer la bipolarisation de la bataille publicitaire entre Mac OS et PC Windows, la Linux Fondation lance un grand concours communautaire pour la publication d’une vidéo mettant en scène l’OS Linux.

    i-am-linux.jpg
  • Mandriva 2010 déjà en bêta (ils sont pas à la bourre…).
  • Rockbox (actuellement en version 3.1) est un operating system (firmware) libre pour les baladeurs numériques (Archos, iAudio, iRiver, Ipod, Toshiba, Sandisk et Olympus).

      ipod_0.jpg
  • Cela se confirme, MD5 n’est plus sûr
  • Il ne chaume pas pendant les vacances eux…: Pidgim 2.5.3 (client de messagerie instantanée), Camino 2.0 bêta 1 (navigateur Web), Fenec alpha 2 (navigateur Web pour mobile de la fondation Firefox)

Catégories
Blog

Tout WordPress sur une page A4

Dans la grande série des documentations tenant sur une simple page A4, je viens d’en trouver une qui intéressera sûrement tout les blogueurs développant leur propre thème WordPress.

Image 1.png

On trouve en effet sur cette page un résumé des fonctions PHP entrant dans la conception des pages des thèmes WordPress. A avoir sur un coin de table…

Catégories
Open-source

Actualité open-source de la semaine #45

L’actualité open-source de la semaine…

La vidéo de la semaine

YoFrankie, le prochain jeu basée sur le moteur libre de Blender

Tout le monde en parle, sauf moi…

L’actualité du libre et de l’open source en vrac:

Autres choses ?

Catégories
Open-source

Vous aimez les logiciels libres ?

« L’April joue en France un rôle fondamental et unique pour la promotion et la défense du logiciel libre et de ses différents acteurs. La liberté informatique est un enjeu de société et il est essentiel, aujourd’hui plus encore qu’avant, de soutenir celle-ci en rejoignant l’April. J’encourage tous les citoyens épris de liberté informatique à adhérer dès maintenant à l’April », Richard Stallman, président de la Fondation pour le Logiciel Libre (Paris, 19 mai 2007).

Alors n’hésitez plus et adhérez à l’April. La cotisation annuelle est seulement de 10 Euros pour les particuliers (mais vous pouvez donner plus ;))…

Promouvoir et soutenir le logiciel libre

Catégories
Developpement

Je recherche un stagiaire !

Dans le cadre de mon activité professionnelle, je recherche un stagiaire (ayant une convention de stage ingénieur dernière année) avec un profil de développeur Java. Il intégrera une équipe dynamique dans une grande entreprise Française. Le stage se déroule dans les Alpes-Maritimes.

Le sujet du stage et toutes les informations pour porter candidature se trouve à l’adresse suivante (référence du stage à saisir: DSP969).

Catégories
Open-source Systeme

Installation de Nagios sur FreeBSD

FreeBSD étant, à mon humble avis, le meilleur « operating system » pour les fonctions réseaux, il était normal qu’un blog comme le mien s’intéresse à l’installation de Nagios, l’outil de supervision open-source, sur ce système.

Le but de ce tutoriel est d’installer Nagios version 3.0.6 sur un serveur FreeBSD 7.0. Je pars sur l’hypothèse ou le lecteur a des connaissances de bases sur FreeBSD.

Avant de commencer…

On s’assure que notre FreeBSD est à jour au niveau de l’arbre des ports (« port tree »).

portsnap fetch
portsnap update

On installe les pre-requis

Avant de se lancer dans l’installation de Nagios, un certain nombre de logiciels doivent être présent sur votre système.

Serveur et client – MySQL

Le serveur MySQL hébergera la base de donnée ou Nagios stockera les informations sur les réseaux supervisés.

cd /usr/ports/databases/mysql50-server
make
make install
make clean

cd /usr/ports/databases/mysql50-client
make
make install
make clean

cd /usr/ports/databases/mysql50-scripts
make
make install
make clean

On édite ensuite le fichier /etc/rc.conf pour y ajouter la ligne suivante:

mysql_enable= »YES »

Puis on lance le daemon:

/usr/local/etc/rc.d/mysql-server start

Enfin on effectue les configurations de base:

mysqladmin -u root password ‘votremotdepasse’

mysql -u root -p

mysql> DROP DATABASE test;

mysql> DELETE FROM mysql.user WHERE user =  »;

mysql> FLUSH PRIVILEGES;

Serveur Web – Lighttpd

J’ai choisi d’utiliser Lighttpd en lieu et place d’Apache pour hébérger l’interface Web de Nagios. En effet, ce seveur est moins gourmant et tout aussi rapide.

cd /usr/ports/www/lighttpd
make
make install
make clean

Pour une installation plus détaillée (avec support PHP), je vous conseille la lecture de ce billet (en Anglais).

On édite ensuite le fichier /etc/rc.conf pour y ajouter la ligne suivante:

lighttpd_enable= »YES »

On configure le serveur:

vi /usr/local/etc/lighttpd.conf

server.document-root        = « /usr/local/www/ »

# Nagios
alias.url =     (
« /nagios/cgi-bin » => « /usr/local/www/nagios/cgi-bin »,
« /nagios » => « /usr/local/www/nagios »
)

$HTTP[« url »] =~ « ^/nagios/cgi-bin » {
cgi.assign = ( «  » => «  » )
}

$HTTP["url"] =~ "^/nagios/cgi-bin" {
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/usr/local/etc/nagios/passwd"
        auth.require = ( "" => (
                "method" => "basic",
                "realm" => "nagios",
                "require" => "user=nagiosadmin"
                )
        )
}

$HTTP["url"] =~ "^/nagios" {
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/usr/local/etc/nagios/passwd"
        auth.require = ( "" => (
                "method" => "basic",
                "realm" => "nagios",
                "require" => "user=nagiosadmin"
                )
        )
}

Avant de lancer le serveur il faut créer le fichier de log avec les bon droits:

touch /var/log/lighttpd.error.log
chown www:www touch /var/log/lighttpd.error.log

touch /var/log/lighttpd.access.log
chown www:www /var/log/lighttpd.access.log

Puis on lance le daemon:

/usr/local/etc/rc.d/lighttpd start

La configuration de Lighttpd est la suivante par défaut:

  • Fichier de configuration: /usr/local/etc/lighttpd.conf
  • Emplacement par défaut du site (« document root ») : /usr/local/www/data/
  • Utilisateur et groupe avec lequel Lighttpd est lancé: www

Installation de Nagios à partir des ports

On doit dans un premier temps se rendre dans le répertoire /usr/port/net-mgmt/nagios. On vérifie la version que l’on va installer en consultant le fichier distinfo:

cd /usr/ports/net-mgmt/nagios
cat distinfo
MD5 (nagios-3.0.6.tar.gz) = 900e3f4164f4b2a18485420eeaefe812
SHA256 (nagios-3.0.6.tar.gz) = bedeb2c1ffbf7525ec19ac84a66bad60a19d2b0544cbf050a53bfc363c09bb22
SIZE (nagios-3.0.6.tar.gz) = 2735504

On lance ensuite l’installation du serveur et des plugins Nagios:

cd /usr/port/net-mgmt/nagios
make WITH_MYSQL= »YES »
> EMBEDDED_PERL = X
make install
make clean

cd /usr/port/net-mgmt/nagios-plugins
make
make install

On édite ensuite le fichier /etc/rc.conf pour y ajouter la ligne suivante:

nagios_enable= »YES »

La configuration initiale est la suivante:

  • Script de démarrage du service Nagios: /usr/local/etc/rc.d/nagios
  • Localisation du serveur (executable): /usr/local/bin/nagios
  • Répertoire de configuration: /usr/local/etc/nagios
  • Répertoire des plugins: /usr/local/libexec/nagios
  • Répertoire racine pour le service Web: /usr/local/www/nagios

Avant de lancer le serveur, il faut aller dans le répertoire de configuration et configurer votre serveur en fonction de vos besoins. Vous pouvez lire le billet suivant pour vous aider.

Une fois la configuration faite et validée par la commande suivante:

/usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg

Total Warnings: 0
Total Errors: 0

Il faut ensuite créer le fichier passwd préhalablement configuré dans Lighttpd:

cd /usr/ports/www/rubygem-htauth
make
make install
make clean

htpasswd-ruby -c /usr/local/etc/nagios/passwd admin

Enfin on lance le daemon Nagios:

/usr/local/etc/rc.d/nagios start

Vous pouvez tester le tout en utilisant un navigateur Web et en saisissant l’URL: http://<adresseIPduserveur>/nagios/

Et voili, c’est beau, c’est stable, c’est simple, c’est BSD !!!

Quelques commandes pour finir

Vérifier la syntaxe des fichiers de configurations:

/usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg

Arrêter le daemon Nagios:

/usr/local/etc/rc.d/nagios start

Relancer le daemon Nagios:

/usr/local/etc/rc.d/nagios restart