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.

Serveur/Authentification SSH avec certificat

Dans un premier lieu, il faut générer les clefs, sur le client, via la commande :

$ ssh-keygen

Par défaut il s’agit de RSA en 2048 bits.
Elles seront stockées sous ~/.ssh/

La clef privée sera nommée : id_rsa
La clef publique sera nommée : id_rsa.pub

Pour une authentification avec le certificat sans devoir saisir la passphrase, il ne faut pas en saisir lors de la génération des clefs.

Maintenant que nous avons les clefs, il faut communiquer la clef publique au serveur, via une commande dédiée :

$ ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ipaddress>

Il faudra saisir le mot de passe pour établir une connexion ssh pour la copie de la clef.
La commande permet de copier la clef publique dans le bon repertoire : ~/.ssh
avec le nom correct : authorized_keys
ainsi que les droits d’accès en 600.

Il ne reste plus qu’à effectuer la configuration sur le serveur ssh.
Pour cela, il faut éditer le fichier de configuration du daemon ssh :

# vi /etc/ssh/sshd_config

Il faut activer l’authentification via certificat :

PubkeyAuthentication yes

désactiver l’authentification de root :

PermitRootLogin no

Permettre l’authetification de root seulement par certificat :

PermitRootLogin without-password
RSAAuthentication yes
PubkeyAuthentication yes

Désactiver l’authentification par mot de passe :

PasswordAuthentication no

Désactiver PAM authentication, ne donner les droits ssh qu’à certains utilisateurs ou groupes, ici le groupe ssh

UsePAM no
IgnoreUserKnownHosts no
AllowGroups ssh

Il suffit juste pour finaliser, de relancer le service ssh :

sudo service ssh restart

Sources :
doc-ubuntu-fr/Authentification par un système de clés publique/privée
doc.fedora-fr/SSH : Authentification par clé
Prendre un café/Installer sa clé SSH sur un serveur distant
Résoudre problème de certificat sur le client :
Chris Jean/Ubuntu SSH Fix for “Agent admitted failure to sign using the key”