Archives de catégorie : continuous integration

Bien configurer son serveur dédié sous Ubuntu 12.04 LTS

Ces notes ont été prises lors de la configuration d’un serveur dédié OVH kimsufi, installé avec Ubuntu Server 12.04 LTS.
Le but de cette machine est d’héberger toutes sortes de services : courriel, serveur web pour galeries de photos et (ce) blog, intégration continue (avec Jenkins), sauvegardes personnelles, vpn privé ; bref, un peu tout ce qu’on peut faire en quelques clics avec le « nuage », mais en gardant la mainmise sur la confidentialité et la localisation des données…
Ces notes sont principalement destinées à moi même pour le jour où je dois reprendre à zéro (en l’occurrence je les ai prises durant la migration d’un ancien serveur ovh vers un nouveau), mais je pense aussi qu’elles pourraient servir d’autres « admins système du dimanche » :-)

J’assume dans cet article qu’un système Ubuntu Server 12.04 LTS a été installé par OVH sur votre machine :

gabarit Ubuntu Server 12.04

Bien démarrer

on ajoute l’utilisateur principal au groupe sudo

on se déconnecte, et sur la machine locale, on lit le contenu de la clef SSH publique :

on y insère le contenu de la clef public

on se déconnecte, on se reconnecte sans mot de passe :

Outils divers à installer

Parefeu avec ufw

Avant de l’activer, on autorise ssh (ou sinon … c’est dommage :-D )

on verifie que ca fonctionne à coups de nmap du poste client, et on autorise les ports un à un

Serveur web pour wordpress, galeries en tout genre (apache/mysql/php5)

Le courrier

Avec postfix pour smtp, postgrey pour réduire le courriel indésirable, et dovecot pour accéder à ses boites en Imap Start tls

Postfix

En migrant postfix de 2.7 a 2.9 faire très attention en recopiant l’ancienne configuration, le mieux est sans doute de reprendre avec la conf par defaut et ajouter lesregles une par une

  • mettre à jour le hostname,
  • ajouter certaines regles de filtrage, dont le passage par postgrey, dont la configuration se trouve dans /etc/default/postgrey (rien à faire normalement)
  • augmenter la taille maximale par défauts des courriels : message_size_limit = 31457280 (si on met rien c’est 10Mo, pour info gmail c’est 25Mo)

Parfois il peut être utile d’ouvrir 1 autre port que le port 25 (smtp) ; comme par exemple le port 587 (submission) – si par exemple votre FAI ne vous autorise pas à utiliser le port 25 en sortant à part pour son propre serveur smtp.

Dans ce cas, rendez vous dans /etc/postfix/master.conf , afin de decommentez cette ligne :

Ensuite, il vous suffit de recharger la configuration postfix, et de demander l’ouverture du port 587 à votre parefeu:

Dovecot

configuration dans /etc/dovecot/dovecot.conf quand on migre de 1.2.9 vers 2.0.19 : ce n’est pas une bonne idée de garder la configuration, il vaut mieux prendre celle par défaut et la modifier.

Profitons en pour migrer du format mailbox vers Maildir (pas de grosses préférence pour l’un ou pour l’autre : mailbox tous les messages d’un dossier dans 1 fichier, Maildir chaque message dans son fichier; mais tous les logiciels semblent prendre Maildir par défaut aujourd’hui…)

pour configurer les accès distants (pop3s, imaps)

on peut jeter un coup d’oeil à la configuration :

Par défaut, les dossiers IMAP seront sauvegardés sous Mailbox/.nom_du_dossier; si comme moi vous préférez ne pas avoir le . devant le nom du répertoire, dans /etc/dovecot/conf.d/01-mail-stack-delivery.conf rajoutez :LAYOUT=fs à la suite du chemin de votre boite :

enfin, il peut etre interessant d’utiliser un mot de passe different de celui de votre compte principal; pour cela dovecot permet de configurer une base de mot de passe :
dans /etc/dovecot/conf.d/10-auth.conf

pour ajouter des entrees dans /etc/dovecot/passwd :

et vous pouvez recopier le mot de passe dans /etc/dovecot/passwd :

Ceci étant fait, on peut même déléguer l’autorisation de smtp a dovecot :

en verifiant que /etc/postfix/main.cf contient ces informations :

Liens utiles :

Jenkins

pour builder toute sorte de projets :

Faites attention à la version de java dans le path :

si ce n’est pas java 7 fourni par openjdk, il faut forcer les alternatives :

Pour installer jenkins :

On peut suivre les instructions du wiki officiel de Jenkins.
jenkins_home est par défaut situé dans /var/lib/jenkins, ayant un immense espace de stockage sur /home, il peut être intéressant de changer ce défaut !

  • pour déménager jenkins :

on y met a jour JENKINS_HOME avec /home/jenkins

Pour pouvoir y lancer des tests d’intégration nécessitant un serveur X11 :

et on rentre le mot de passe de vnc

Liens utiles :

VPN avec pptp

On va utiliser les dns d’OpenDns

il faut y décommenter net.ipv4.ip_forward=1

DEFAULT_FORWARD_POLICY » on remplace « DROP » par « ACCEPT »

au tout debut du fichier :

pour ouvrir les ports fermés par ufw aux utilisateurs connectes en vpn :

Liens utiles :

DNS avec Bind

named.conf/local : on y lie les fichiers des zones qu’on gère, named.conf.options on y configure les options de sécurité

on peut verifier la confiuration avec :

ca devrait etre correct, il n’y a plus qu’ a faire pointer votre registrar vers votre nouveau serveur dns

Liens utiles :

Sécuriser son serveur dédié avec fail2ban :

fail2ban permet de bannir les clients (momentanément) qui échouent trop de fois leur authentification à votre serveur dédié ; ssh est bien sûr un service important à surveiller, mais dovecot et apache peuvent l’être tout autant.

Pour activer les notifications par courriels :

Pensez aussi à mettre bantime en valeur infinie :

chaque jail est un service surveillé, il suffit de rendre enabled à true pour activer la surveillance.

https://help.ubuntu.com/community/Fail2ban

Lien utile :

Restaurer les sauvegardes d’une machine

  • pour copier des arborescences complètes (plein de petits fichiers) entre 2 machines, on utilise tar :

  • export avec phpmyadmin (pour ne pas sélectionner les tables systèmes) et on importe en ligne de commande :

ensuite, il n’y a plus qu’à créer un nouvel utilisateur et lui affecter les droits pour les bases des applications

Lien utile :

Pour aller plus loin :