Maniatux's Blog

Welcome to the internet

Sysadmin

de Owncloud à Dropbox

Rédigé par Xavier - - Aucun commentaire

J'ai besoin d'une solution pour rendre accessible des fichiers sur plusieurs machines à la fois et pouvoir travailler dessus hors connexion. J'ai commencé par le plus difficile : owncloud. C'est libre, c'est chez moi donc pas de souci au niveau confiance et confidentialité de l'hébergeur, mais ça fonctionne vraiment mal.

La dernière boulette a failli planter mon serveur. En effet owncloud a dupliqué les fichiers en 2, 3, voire 4 exemplaires ce qui a fait exploser l'espace disque occupé. N'ayant que 32GB de stockage (SSD) et étant en début de mois (un .tar.gz du mois dernier est créé) j'ai frôlé la catastrophe car il ne restait que 5Mo d'espace libre.

Bilan : j'ai supprimé owncloud purement et simplement. J'avais déjà perdu des données avec la synchronisation de contacts, j'ai failli planter mon serveur avec la synchronisation des fichiers.

Résigné, j'ai installé Dropbox, et il faut dire que cela fonctionne plutôt bien. Je synchronise de manière simple mes fichiers entre Linux (Fedora), Windows et Android. En prime je peux même générer des liens pour les partager en web.

Pour rappel j'avais mis en place owncloud pour remplir mes besoins et me passer des services propriétaires. Voici quelques liens vers des articles publiés :

L'expérience est un échec total, owncloud s'est révélé faillible dans tous les domaines.

Classé dans : Sysadmin - Mots clés : aucun

Un premier bilan sur l'auto-hébergement

Rédigé par Xavier - - Aucun commentaire

Cet article chez sciunto m'a inspiré. En effet je m'auto-héberge moi aussi depuis 1 an et demi et l'heure est venue de faire un premier point. Voici les services que j'héberge actuellement :

  • Serveur mail Postfix, comptes locaux, stockage Maildir et accès IMAP-SSL avec Dovecot.
  • Serveur Jabber propulsé par Prosody.
  • Serveur web pour l'upload d'images avec jyraphe et la synchronisation de fichiers avec owncloud.
  • Serveur DNS pour mon LAN.

Et mes équipements :

Motivations

  • Apprendre et acquérir de l'expérience

Parce qu'en faisant et refaisant les choses, on apprend. On découvre ainsi les imprévus auxquels on doit faire face et on apprend les bons réflexes pour diagnostiquer les pannes. Avec du recul j'ai l'impression d'avoir acquis de solides bases dans les systèmes unix-like, mais je suis loin d'être un spécialiste et il y a toujours plus à apprendre.

  • La liberté sur le choix des composants

Parce qu'on peut avoir envie d'utiliser lighttpd et postresql sur son serveur alors que tous les hébergeurs ne proposent que apache + mysql.

  • Indépendance

Parce que je n'étais pas satisfait de mon hébergeur email tant pour des raisons techniques que philosophiques. Mais j'ai appris qu'on ne peut pas avoir la même chose que GMail. Les solutions s'en approchant telles que SOGo induisent un tel niveau de complexité que j'ai fait le choix de rester sur quelque chose de simple. Zimbra est également un bon choix mais demande un serveur "puissant" (avec du 64 bits et 2GB de ram au minimum). Owncloud m'a tuer.

  • L'amusement

Parce que mettre un serveur en place pour moi est amusant, je me sens un peu comme un enfant devant une caisse de legos.

Systèmes d'exploitation

  • Debian Squeeze

Le premier que j'ai utilisé sur mon serveur. Il est très robuste, très stable, léger, et les paquets sont très nombreux. Je trouve cependant dommage qu'il y ait un tel retard dans les versions des logiciels. Par exemple c'est encore Dovecot 1.x qui est proposé, alors que la 2.x dispose de fichiers de configuration séparés qui sont très utiles. Même remarque pour LXC qui est bien peu mature dans Squeeze.

  • NetBSD

C'est avec ce système que j'ai vraiment plongé dans l'univers "des BSD". C'est là que j'ai réellement commencé à utiliser vi, et que j'ai compris la différence entre le système et les ports (pkgsrc). J'ai bien aimé NetBSD mais Debian est plus simple à administrer et mettre à jour.

  • OpenBSD

C'est un système humainement compréhensible et très instructif à utiliser. Il est malheureusement en retard au niveau des pilotes et des ports, mais il colle parfaitement dans les rôles orientés sécurité (routeur, passerelle, mta...). J'en garde un bon souvenir.

  • CentOS

Je n'ai pas beaucoup eu l'occasion de l'utiliser, parce que les ressources de mon serveur m'orientent vers LXC alors que CentOS se focalise sur KVM. C'est néanmoins un système très robuste et fonctionnel. Il y a beaucoup de différences par rapport à Debian notamment dans l'implémentation des logiciels comme Apache. Le fonctionnement est plus "basique" il n'y a par exemple pas d'outil comme a2enmod.

  • Ubuntu Server LTS

Ubuntu Server est une bonne solution, surtout pour les containers LXC. On y retrouve les bons côtés de Debian, avec des logiciels plus à jour. J'ai beaucoup hésité avec Debian Wheezy mais les templates LXC sont bugués. Je tourne donc actuellement avec Ubuntu Server 12.04 LTS.

Sécurité

Pour de l'auto-hébergement les règles de sécurité de base sont suffisantes, par exemple choisir des bons mots de passe, ne pas ouvrir le port SSH si ce n'est pas nécessaire, penser à mettre à jour assez souvent le serveur si celui-ci utlise des composants à risque (php...).

Pour pousser les choses plus loin j'ai isolé chaque service dans un container avec LXC, ce qui ajoute une couche supplémentaire de sécurisation. Le serveur lui-même est situé sur une vraie DMZ gérée par pfSense. Je comptais mettre en place des passerelles SMTP, IMAP et HTTP afin de ne pas exposer directement le serveur sur internet, mais là encore la complexité engendrée m'a découragé.

Dans les logs Apache je note des tentatives d'attaques, des erreurs indiquant que "/phpmyadmin n'a pas été trouvé" (normal car je ne l'utilise pas). Ces tentatives sont probablement automatisées et peu dangereuses si le serveur et les applications sont bien à jour.

Continuité de service

L'endroit où j'habite est plutôt épargné par les coupures électriques ce qui me permet d'avoir un bon uptime. Je n'ai eu qu'un seul gros souci, au mois de Décembre, avec une journée sans électricité suivi d'une semaine sans adsl. J'ai donc loué un serveur kimsufi (le moins cher) pour y installer le rôle de serveur mail (le plus important). Suite au rétablissement de l'adsl chez moi je n'ai pas renouvelé ma souscription au kimsufi.

Si on met de côté cet incident, il faut bien avouer qu'un serveur ça tourne tout seul et demande bien peu d'interventions.

Bruit et consommation

Je dors dans la même pièce que mes équipements réseau et mon serveur, le silence est donc un point primordial pour moi. Le serveur n'a pas de ventilateur et utilise un SSD, ce qui le rend inaudible. Il était historiquement alimenté par du 12V et ~10W, c'est donc une consommation très faible. Suite à une panne du transfo il tourne maintenant sur un chargeur universel. Il est donc tout à fait possible de "cohabiter" avec un serveur.

Conclusion

L'auto-hébergement a toujours été satisfaisant et suffisant pour moi. Je me suis souvent intéressé aux serveurs dédiés ou aux VPS, mais au final je me suis toujours demandé "pourquoi?". Mon serveur bien que faiblard est suffisant pour mes besoins.

J'encourage toute personne motivée à se lancer. Je suis également disposé à donner un coup de main à ceux qui ont besoin !

Liens à consulter

Scripts de sauvegarde en vrac

Rédigé par Xavier - - Aucun commentaire

Exports de bases de données

Création d'un utilisateur MySQL pour les backup :

# mysql -u root -p
create user backup identified by 'password';
grant select, lock tables on *.* to backup identified by 'password';
flush privileges;
quit;

Création d'un script de sauvegarde :

# vi /root/mysqlbackup.sh
#!/bin/sh
mysqldump --user=backup --password=password database1 > database1-`date +%d-%m-%Y`.sql
mysqldump --user=backup --password=password database2 > database2-`date +%d-%m-%Y`.sql

Ce fichier contenant des mots de passe, il vaut mieux en restreindre l'accès :

# chown root:root /root/mysqlbackup.sh
chmod 600 /root/mysqlbackup.sh
chmod +x /root/mysqlbackup.sh

A mettre ensuite en tâche planifiée :

# crontab -e
@weekly /root/mysqlbackup.sh

Dans ce cas c'est toutes les semaines. Les fichiers .sql créés porteront la date dans leur nom !

Sauvegarde des conteneurs LXC

Pour ma part j'ai choisi de faire des sauvegardes complètes une fois par mois (à récupérer ensuite par sftp). Le fichier de sauvegarde est compressé et indique le mois dans son nom.

# vi /root/backup.sh
!/bin/sh
tar -zcf /root/"sauvegarde-`date --date "yesterday" +%B-%Y`".tar.gz /var/lib/lxc/*

EDIT : Sur remarque (très juste de etenil) j'ai remplacé 7z (version initiale de mon article) par tar car ce dernier conserve les droits.

Ensuite, il ne reste qu'à planifier :

# crontab -e
@monthly /root/backup.sh

Notez que la sauvegarde va se déclencher le 1er du mois à minuit. C'est la raison pour laquelle la commande date porte l'argument "yesterday" car on veut indiquer que c'est une sauvegarde contenant les données du mois terminé.

Classé dans : Sysadmin - Mots clés : aucun

Serveur mail sous Ubuntu

Rédigé par Xavier - - Aucun commentaire

Ce tutoriel décrit la mise en place d'un serveur mail simple sous Ubuntu. Comme vous pourrez le constater, une poignée de minutes suffisent et tout s'administre très facilement. Nous mettrons en place un accès IMAP pour que les utilisateurs puissent consulter leur courrier.

Le tutoriel devrait fonctionner également sur Debian, par contre privilégiez la version Wheezy car Squeeze utilise une ancienne version de Dovecot dont la configuration diffère.

Pré requis

  • Un nom de domaine sur internet (gratuits chez noip ou dyndns) qui pointe chez vous.
  • Ports 25 et 993 TCP redirigés sur le serveur sur lequel vous allez travailler.
  • Ubuntu 12.04

Exemple

Création d'un serveur mail avec deux utilisateurs :

  • xavier@freeman.org / xavier.chotard@freeman.org
  • dragonborn@freeman.org

Installation des paquets

Installation du serveur SMTP :

$ sudo apt-get install postfix

Sélectionnez "Pas de configuration" pour le moment, nous y reviendrons après.

Installation du serveur IMAP :

$ sudo apt-get install dovecot-imapd

Et voilà c'est tout. Vous attendiez des paquets au noms bizarres peut-être ?

Configuration de Postfix

sudo dpkg-reconfigure postfix
  • Type de serveur de messagerie : Site Internet
  • Nom de courrier : freeman.org
  • Destinataire des courriels de root : xavier
  • Autres destinations : par défaut
  • Mises à jour synchronisés : non
  • Réseaux internes : par défaut
  • Taille maximale BAL : 0
  • Caractère d'extension : *
  • Protocoles : tous

Ensuite il y a un dernier point à modifier, il s'agit de demander à Postfix d'utiliser le format de stockage Maildir à la place de mailbox. Le premier va créer un ensemble de sous-répertoires correspondant à la boite mail de l'utilisateur et les placera dans son home. Le second stocke tout dans 1 seul fichier et le met dans /var/mail. Maildir est recommandé.

sudo nano /etc/postfix/main.cf

Et ajouter :

home_mailbox = Maildir/

Puis relancer Postfix :

sudo service postfix restart

Configuration IMAP

Dovecot est fonctionnel par défaut, en IMAP + SSL. Il faut juste lui spécifier que nous travaillons en Maildir :

sudo vi /etc/dovecot/conf.d/10-mail.conf

Décommenter ou ajouter :

mail_location = maildir:~/Maildir

Relancer Dovecot :

sudo service dovecot restart

Comptes utilisateur

Création des comptes + création de leurs mots de passe :

sudo useradd -m xavier
sudo useradd -m dragonborn
sudo passwd xavier
sudo passwd dragonborn

Création d'un alias pour rediriger "xavier.chotard" vers "xavier" :

sudo vi /etc/aliases

Ajouter tout en bas :

xavier.chotard: xavier

Valider la création des alias et recharger Postfix :

sudo newaliases
sudo service postfix reload

Conclusion

Vous devriez maintenant être en mesure de recevoir des mails, et de vous connecter avec Thunderbird en IMAP sur votre serveur. Etait-ce si compliqué ? Non.

Notes

Par défaut votre serveur ne peut envoyer des messages que si deux conditions sont réunies :

  • Celui qui envoie le message est connecté sur le serveur (nous avons mis précédemment dans la configuration que nous n'acceptons que le 127.0.0.1, et ce afin d'éviter de servir de relais à spam). Pour autoriser les envois il faut ajouter le réseau local, ou utiliser une authentification SASL (utilisateur + mdp)
  • Le FAI ne bloque pas le port 25 sortant (il faut alors utiliser un relais SMTP sur internet sur un port 465 ou 587

Ces points ne seront pas détaillés car pas forcément utiles, si vous utilisez Thunderbird vous pouvez configurer le relais SMTP directement dedans (par exemple celui de gmail ou de votre FAI).

Nous avons vu ici la création d'un serveur mail très simple, si vous cherchez une solution taillée entreprise, avec des domaines et comptes virtuels, jetez un œil à iRedMail.

Liens

iRedMail pour un serveur mail opensource facilement

Rédigé par Xavier - - Aucun commentaire

Si la configuration de Postfix et Dovecot est très simple pour gérer un petit serveur utilisant les comptes du système, elle l'est beaucoup moins lorsque l'on commence à mettre en jeu un annuaire LDAP, des domaines virtuels, etc. iRedMail est une solution pour automatiser cette configuration, et la gérer à l'aide d'une console en web. On pourrait dire, pour reprendre les termes marketeux, qu'iRedMail est une solution taillée pour un serveur Small Business.

Les fonctionnalités proposées sont :

  • Domaines e-mail virtuels
  • Comptes avec quota par utilisateur
  • Mailing list
  • Transferts/alias
  • Whitelist/Blacklist
  • Antivirus et antispam
  • Accès IMAP & POP
  • Base utilisateurs LDAP, MySQL ou Postresql
  • Roundcube, phpldapadmin, phpmyadmin, awstats

L'installation est assez simple puisqu'il suffit, à partir d'un serveur Linux fraichement installé de récupérer un script avec wget, et de l'exécuter. L'installation des composants se fait automatiquement via aptitude, yum ou autre gestionnaire de paquets. iRedMail utilise donc les logiciels de la distribution, ce qui est un plus. Il ouvre ensuite un assistant semi-graphique (ncurses) permettant de configurer votre serveur. Puis pour finir il vous proposera d'ajouter des composants additionnels : roundcube, phpmyadmin, phpldapadmin, et awstats. Les procédures pour chaque système sont disponibles sur cette page.

Ce que j'apprécie particulièrement est qu'à la fin de l'installation, un fichier "tips" est généré. Il récapitule les logins, mots de passe, mais aussi l'emplacement des fichiers de configuration de Postfix.

On peut ensuite accéder à l'admin panel, qui est plutôt joli et intuitif à utiliser :

iRedMail est une solution facile à utiliser et bien pratique.

Je vois cependant quelques petits inconvénients :

  • Tous les logiciels sont sur le même serveur : Postfix, OpenLDAP, MySQL... ce qui peut être un peu dérangeant au niveau de la sécurité et l'exploitation.
  • Pas assez de choix dans les composants, j'aurais aimé avoir la possibilité de ne pas installer l'antispam et l'antivirus.

Dernier point important, cette solution est payante. La version gratuite est minimale : on ne gère que les domaines et utilisateurs. Pas de mailinglist, alias, listes noires, à moins d'y aller à la main dans le serveur LDAP. La version Pro est un peu onéreuse mais le tout est quand même un produit super intéressant.