Mise en place d’un Serveur Ubuntu 16.04 LTS

Voici une série de procédures permettant de mettre en production un serveur sous la distribution Ubuntu Server 16.04.
Tout a été testé plutôt deux fois qu’une !

La préparation du système

Le serveur SSH

Les certificats

LAMP

Fail2ban

NTP Serveur

Certificats

Pour sécuriser une connexion web en utilisant le protocole https, il faut un certificat.
Nous allons voir comment les générer sans trop de fatigue !

Recommandations

L’ANSSI déconseille fortement de générer des certificats sur un serveur fraîchement installé ou pire sur une machine virtuelle, car il n’y a pas suffisamment d’entropie. cf p8/21 Anssi – Note technique Recommandations pour un usage sécurisé d’OpenSSH

Quelques règles permettent de s’assurer que le réservoir d’entropie est correctement rempli :

  • la machine de génération de clés doit être une machine physique ;
  • elle doit disposer de plusieurs sources d’entropie indépendantes ;
  • l’aléa ne doit être obtenu qu’après une période d’activité suffisamment importante (plusieurs minutes voire heures).

Il parait donc nécessaire de générer les clefs et certificats sur son poste de travail, qui a de nombreuses applications en service, générant de l’entropie.

L’autorité de certification

Il est possible de faire signer ses certificats par une autorité de certification, qui vous facturera l’opération.

Sinon il est possible de créer sa propre autorité de certification.
Continue reading

Ubuntu Serveur 16.04/php7

Après avoir installé la nouvelle version d’Ubuntu Serveur : 16.04, j’ai eu la mauvaise surprise de constater que les pages retournées par le serveur apache2 n’avait pas le code php d’interprété.
Les paquets relatifs à php7 avaient bien étaient installés par le système, php7.0, libapache2-mod-php7.0.

J’ai fini par trouver une solution, il faut éditer le fichier du virtual host

sudo vi /etc/apache2/sites-available/000-default.conf

et d’ajouter la ligne :

AddType application/x-httpd-php .php

Serveur/MediaTomb

MediaTomb est un serveur UPnP, permettant de partager audio et vidéo, et administré par une page web.

Installation.

#apt-get install mediatomb

Une fois terminé, la plate-forme est accessible via : http://serveur:49152

Le service est fonctionnel, il ne reste plus qu’à ajouter les répertoires contenants les médias à diffuser via l’interface web.

J’ai eu une série de plantages dus à la locale. Les caractères spéciaux provoquent le plantage du service, visible dans le log /var/log/mediatomb.log
Il faut éditer le fichier xml de configuration /etc/mediatomb/config.xml et ajouter les lignes suivantes :

< filesystem-charset>UTF-8
< metadata-charset>UTF-8
< playlist-charset>UTF-8

sans l’espace après <, et ce juste après la ligne

< import hidden-files="no">

Sources :
doc.ubuntu-fr.org/MediaTomb

Serveur/Subsonic

Subsonic est une plate-forme de streaming audio.

Prérequis.

Pour commencer il y a un prérequis, à savoir il faut JRE d’installé sur le serveur. Si ce n’est pas le cas, nous allons l’installer :

#apt-get install openjdk-8-jre

Installation.

Une fois les paquets installés, nous pouvons télécharger le paquet subsonic depuis le site :

#wget http://subsonic.org/download/subsonic-5.3.deb

et procéder à l’installation qui se passe sans demander de paramètres :

#dpkg - i subsonic-5.3.deb

Une fois terminé, la plate-forme est accessible via : http://serveur:4040

Le service est fonctionnel, mais de base, il n’est pas sécurisé.
Il faut dans un premier temps changer le mot de passe admin qui est admin,
ainsi qu’activer ssl pour y accéder via du https,
créer un utilisateur unix propre à au service en lieu et place à root,
puis créer les utilisateurs.

Activation du protocole SSL.

A venir

Changement de l’utilisateur système.

Il faut éditer le fichier de configuration :

# vi /etc/default/subsonic

et changer des variables comme :

SUBSONIC_USER = subsonic
/*au lieu de */
SUBSONIC_USER = root

Pour plus d’information quant aux paramètres disponibles, la commande :

/usr/share/subsonic/subsonic.sh --help

donne les détails :

Usage: subsonic.sh [options]
  --help               This small usage guide.
  --home=DIR           The directory where Subsonic will create files. Make sure it is writable. Default: /var/subsonic
  --host=HOST          The host name or IP address on which to bind Subsonic. Only relevant if you have multiple network interfaces and want to make Subsonic available on only one of them. The default value will bind Subsonic to all available network interfaces. Default: 0.0.0.0
  --port=PORT          The port on which Subsonic will listen for incoming HTTP traffic. Default: 4040
  --https-port=PORT    The port on which Subsonic will listen for incoming HTTPS traffic. Default: 0 (disabled)
  --context-path=PATH  The context path, i.e., the last part of the Subsonic URL. Typically '/' or '/subsonic'. Default '/'
  --max-memory=MB      The memory limit (max Java heap size) in megabytes. Default: 100
  --pidfile=PIDFILE    Write PID to this file. Default not created.
  --quiet              Don't print anything to standard out. Default false.
  --default-music-folder=DIR    Configure Subsonic to use this folder for music.  This option  only has effect the first time Subsonic is started. Default '/var/music'
  --default-podcast-folder=DIR  Configure Subsonic to use this folder for Podcasts.  This option  only has effect the first time Subsonic is started. Default '/var/music/Podcast'
  --default-playlist-folder=DIR Configure Subsonic to use this folder for playlists.  This option only has effect the first time Subsonic is started. Default '/var/playlists'

Sources :
doc.ubuntu-fr.org/Subsonic

Serveur/Webmin

Afin de faciliter l’administration d’un serveur, il peut être sympa d’avoir une interface web.
Je vais donc installer Webmin.
Dans un premier temps, il faut télécharger le paquet sur le serveur :

#wget http://prdownloads.sourceforge.net/webadmin/webmin_1.770_all.deb

Puis lancer son installation :

#dpkg -i webmin_1.770_all.deb

L’installation est automatique, il n’y a pas de paramètre à renseigner.
Une fois terminée, vous avez dans la console le retour suivant :

Webmin install complete. You can now login to https://serveur:10000/
as root with your root password, or as any user who can use sudo
to run commands as root.

Donc l’utilisateur root a accès à l’interface, ainsi que les utilisateurs du groupe sudo.
Mon conseil, pour la gestion des autorisations d’accès à webmin est de créer un groupe webmin et d’y ajouter des utilisateurs, afin de savoir facilement et rapidement qui y a accès.