Table des matières
Installer Yunohost v2 final sur Raspberry Pi (en cours de rédaction)
“YunoHost est un outil qui vous permet d’installer et d’utiliser facilement votre propre serveur.” […] “YunoHost vous permet par défaut de gérer vos adresses mail et de messagerie instantanée via des interfaces simples d’utilisation et de manière sécurisée. Vous pourrez également étendre les fonctionnalités via des apps installables en un click.”
Plus de détail sur le site de l'éditeur https://doc.yunohost.org/#/index_fr ou de son (ancien wiki) http://wiki.yunohost.org/Main_Page/fr
Prérequis
- avoir une Raspberry Pi raccordée à la box ou au routeur ;
- une carte SD compatible avec la Raspberry Pi d'au moins 4 Go et si possible de classe 10 (http://elinux.org/RPi_SD_cards#Working_.2F_Non-working_SD_cards | http://elinux.org/RPi_VerifiedPeripherals#SD_cards) ;
- avoir téléchargé la dernière image en date pour Raspberry Pi mise à disposition par l'équipe de Yunohost à cette adresse : http://build.yunohost.org/yunohost4rpi2.img.7z ;
- disposer d'une connexion à internet via la box ou le routeur ;
- disposer d'un nom de domaine pointant vers l'adresse IP publique de votre Box/routeur. (cf no-ip.org, dyndns, …) ou alors bénéficier d'un de ceux mis à disposition par Yunohost : https://yunohost.org/#/dns_fr
<note importante> Pour le moment, il n'y a pas d'outils de sauvegarde de disponible. Il est donc (très) fortement déconseillé de l'utiliser en production. Nous n'avons pas testé l'installation avec cette nouvelle image : yunohost4rpi2.img. </note>
<note> Avec l'éditeur nano, pour enregistrer : Ctrl+O et pour quitter Ctrl+X. </note>
Copier l'image Yunohost sur une carte SD
Extraire l'image du fichier zip précédemment téléchargé depuis cette adresse : http://build.yunohost.org/yunohost4rpi2.img.7z à la racine de votre /home. Mettre la carte SD dans le lecteur de carte et vérifier quelle lettre est attribué à votre carte (exemple : sdb ou sdc ou …).
Pour copier l'image sur votre carte SD, entrer la commande suivante dans un terminal. Commande que vous devez adapter suivant la lettre de votre carte SD et l'endroit où se trouve l'image yunohost4rpi2.img extraite de l'archive zip. Remplacer le ? de la commande par la lettre attribuée à votre carte SD.
https://yunohost.org/#/copy_image_fr
<note importante> Vérifier bien la lettre attribuée à votre carte SD. Une mauvaise manipulation pourrait effacer et/ou endommager toutes ou parties des données sur d'autres supports reliés à l'ordinateur (disque(s) dur(s) interne(s) et/ou disque(s) dur(s) externe(s) et/ou clé(s) usb et/ou …). </note>
sudo dd bs=4M if=~/yunohost4rpi2.img of=/dev/sd?
Insérer la carte dans la Raspberry Pi et branchez la. Une fois démarré, il faudra noter l'adresse ip locale attribuée au Raspberry Pi. Elle sera à priori de la forme 192.168.xxx.xxx.
Reconnexion en SSH après le redémarrage
<note> Avez-vous un Nom De Domaine (NDD) ?
L'équipe de Yunohost peut vous permettre d'en avoir un : https://yunohost.org/#/postinstall_fr </note>
Une fois redémarré, il faut lancer le script de post-installation. Cela va permettre de renseigner le nom de domaine et le mot de passe de l'administrateur de Yunohost (https://doc.yunohost.org/#/install_fr).
ssh root@192.168.xxx.xxx yunohost tools postinstall
<note importante> Attention : la configuration réseau par défaut configure l'interface nommée eth0 en DHCP. Il se peut que vous ayez à changer cette configuration pour que votre Raspberry Pi puisse se connecter à votre réseau si l'interface porte un autre nom. Pour ce faire :
- Connectez-vous localement à votre Raspberry Pi
- Repérez le nom de votre interface réseau : $ ip link (lo correspondant à l'interface de rebouclage, cela peut-être eth1 par exemple)
- Éditez le fichier de configuration /etc/network/interfaces et remplacez eth0 par le nom de votre interface
- Redémarrez le service réseau : sudo service networking restart
Source : https://yunohost.org/#/install_on_raspberry_fr </note>
Changer votre mot de passe root
Par défaut, le mot de passe est yunohost. Pour des raisons évidentes de sécurité, il est important de le changer.
passwd root
Se connecter à la page web d'administration de Yunohost
Dans votre navigateur internet, entrez l'adresse suivante en l'adaptant à votre nom de domaine : https://monserveur.org/yunohost/admin/ . Entrez alors le mot de passe administrateur que vous venez de définir durant le script de post-installation.
Il faut alors créer un premier utilisateur en passant par le menu Users, puis, une fois l'utilisateur créé, vous pouvez commencer à installer des applications. N'oubliez pas de vous déconnecter.
Voilà, vous êtes maintenant auto-hébergé. N'oubliez pas de faire une mise à jour et mise à niveau régulièrement.
Soit en ssh :
ssh root@192.168.xxx.xxx apt-get update && apt-get dist-upgrade && yunohost app fetchlist && yunohost app upgrade
Soit en mode graphique à partir de la page d'administration :
https://yunohost.org/#/upgrade_fr
Pour mémoire, l'adresse d'administration de votre Yunohost est https://monserveur.org/yunohost/admin/ et l'adresse du portail de votre Yunohost est https://monserveur.org/.
Vous pouvez aussi contribuer à ce projet ici https://doc.yunohost.org/#/contribute_fr.
A vous de jouer !
Pour aller plus loin ...
<note importante> Les sections suivantes sont destinées aux utilisateurs avancés car de mauvais réglages et/ou paramétrages peuvent, à minima, altérer la sécurité mise en place par défaut des applications et du serveur Yunohost, voire engendrer de plus gros soucis. </note>
être averti par mail lors d'une connexion ssh au serveur :
Il faut installer mailutils pour pouvoir envoyer un mail :
apt-get install mailutils
Il faut ensuite créer, ou éditer s'il existe, le fichier /etc/ssh/sshrc.
sudo nano /etc/ssh/sshrc
Entrer lignes suivantes en adaptant à minima l'adresse mail de réception :
#!/bin/sh # source: http://blog.uggy.org/post/2009/06/05/... DATE=`date "+%d.%m.%Y--%Hh%Mm"` IP=`echo $SSH_CONNECTION | awk '{print $1}'` REVERSE=`dig -x $IP +short` echo "Connexion de $USER sur $HOSTNAME IP: $IP ReverseDNS: $REVERSE Date: $DATE " | mail -s "Connexion de $USER sur $HOSTNAME" moi@mon.domaine.ndd
Ensuite, redémarrer ssh :
/etc/init.d/ssh restart
cron
Pour programmer des tâches, comme par exemple une mise à jour suivi d'une mise à niveau de l'installation, vous pouvez utiliser cron.
Plus de détail ici : http://doc.ubuntu-fr.org/cron
fail2ban
Cela permet de bannir les adresses ip essayant de se connecter “furieusement”. Il est à priori installé par défaut sur Yunohost.
sudo apt-get install fail2ban
Ensuite, il faut éditer le fichier de configuration afin de donner une adresse mail afin d'envoyer les rapports de ban.
sudo nano /etc/fail2ban/jail.conf
findtime = 3600 bantime = 86400
destemail = votre@email.com
Toujours dans ce même fichier, rechercher la ligne qui commence par action = afin de rajouter mwl après le _ afin d'avoir un rapport complet.
action =%(action_mwl)s
Ensuite, toujours dans le même fichier, afin d'avoir les rapports sur les principaux services, il faut remplacer false par true dans les parties suivantes :
- ssh ;
- ssh-ddos ;
Apparemment, il y a beaucoup de brute-force sur sasl, il est donc préférable de commenter cette règle failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$ et appliquer celle-ci failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: \w :
nano /etc/fail2ban/filter.d/sasl.conf #failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$ failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: \w
D'autres réglages sont disponibles ici : http://doc.ubuntu-fr.org/fail2ban
changer le port d'écoute ssh
Editer /etc/ssh/sshd_config :
sudo nano /etc/ssh/sshd_config
Le numéro de port d'écoute est par défaut le 22. En choisir un au delà du numéro 1024, par exemple : 12345.
Ensuite, il faut éditer le fichier de configuration de fail2ban pour lui dire d'écouter le port 12345 au lieu du port 22.
sudo nano /etc/fail2ban/jail.conf
Dans la section #JAIL au chapitre [ssh] et [ssh-ddos], il faut changer :
port = ssh par port = 12345
Ensuite, il faut redémarrer le service ssh et recharger le service fail2ban :
sudo service ssh restart sudo fail2ban-client reload
Installation de logwatch
Si vous souhaitez avoir un historique de ce qui s'est passé sur le serveur la veille, il suffit d'installer logwatch :
sudo apt-get install logwatch sudo mkdir /var/cache/logwatch
Avant de modifier le fichier de configuration, en faire une copie :
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
Ensuite faire les modifications ici :
nano /etc/logwatch/conf/logwatch.conf
Par exemple, l'envoi des rapports sur une adresse électronique et/ou modifier le niveau de détail du résumé généré :
MailTo = moi@mon.domaine.ndd Detail = Med
Pour lancer logwatch en console :
sudo logwatch
Pour aller plus loin dans la configuration : http://doc.ubuntu-fr.org/logwatch#configuration
Ancienne section ... pour mémoire seulement
<note importante> Les sections suivantes sont destinées aux utilisateurs avancés car de mauvais réglages et/ou paramétrages peuvent, à minima, altérer la sécurité mise en place par défaut des applications et du serveur Yunohost, voire engendrer de plus gros soucis. </note>
Lancer l'utilitaire de configuration du Raspberry Pi après le redémarrage
Toujours avec la connexion SSH, lancer l'utilitaire et choisissez expand file system et redémarrez. Les sélection se font avec les flèches, la touche tabulation et la touche entrée pour valider.
ssh root@192.168.xxx.xxx raspi-config
Connexion en SSH en local et mise à jour d'openssl
La première chose à faire est de changer le mot de passe root qui est par défaut yunohost. Pour cela, se connecter en ssh en local. L'adresse ip locale de Yunohost est affiché sur l'écran lors du démarrage, entrer ensuite le mot de passe yunohost et lancer la commande pour redéfinir le mot de passe root.
Tout de suite après, il est très important de mettre à jour openssl et de faire un redémarrage.
ssh root@192.168.xxx.xxx passwd root apt-get update && apt-get install openssl && reboot
Finir l'installation en deux phases de mise à jour et de mise à niveau
Dspam a été remplacé par spamassassin, il faut donc ôter ce qui est relatif à Dspam.
rm /var/cache/apt/archives/yunohost-config-dspam*
Pour finir, il faut réaliser une première phase de mise à jour et de mise à niveau, puis une seconde phase de mise à jour et de mise à niveau de la distribution. Toujours dans le terminal en ssh il faut lancer cette suite commandes.
apt-get update && apt-get upgrade && apt-get update && apt-get dist-upgrade && apt-get autoremove
Mise à jour de vos certificats
<note importante> Cette mise à jour des certificats est -très- expérimentale. Il n'est pas conseillé de suivre cette procédure si vous ne savez pas ce que vous faites. </note>
1) Mise A Jour d'openssl sur le serveur :
apt-get update && apt-get upgrade && reboot
2) Copier et renommer les ssl_certificate et ssl_certificate_key :
cp /etc/yunohost/certs/VOTREDOMAINE.COM/crt.pem /etc/yunohost/certs/VOTREDOMAINE.COM/crt.pem_old cp /etc/yunohost/certs/VOTREDOMAINE.COM/key.pem /etc/yunohost/certs/VOTREDOMAINE.COM/key.pem_old
3) Se positionner dans le “bon” répertoire/dossier :
cd /etc/yunohost/certs/VOTREDOMAINE.COM
<note> Vous allez devoir remplir quelques champs lors d'une des phase de génération. Le plus important est en gras :
- Country Name (2 letter code) [AU]:FR
- State or Province Name (full name) [Some-State]:Vaucluse
- Locality Name (eg, city) []:Avignon
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:mondmomaine
- Organizational Unit Name (eg, section) []:yunohost
- Common Name (eg, YOUR name) []:mondomaine.com
- Email Address []:mon.adresse@mail.com
</note>
4) Générer les clés :
openssl genrsa -out VOTREDOMAINE.COM.key 2048 openssl req -new -key VOTREDOMAINE.COM.key -out VOTREDOMAINE.COM.csr
5) Générer le certificat auto-signé (-signkey) :
openssl x509 -req -days 365 -in VOTREDOMAINE.COM.csr -signkey VOTREDOMAINE.COM.key -out VOTREDOMAINE.COM.crt
6) Édité le fichier de configuration pour rectifier les chemins
<note> Les .pem de l'installation initiale seront remplacés par un .crt et un .key. </note>
nano /etc/nginx/conf.d/MONDOMAINE.COM.conf
Vous devriez avoir au final quelque chose du genre :
server { listen 443 ssl; server_name MONDOMAINE.COM; ssl_certificate /etc/yunohost/certs/VOTREDOMAINE.COM/VOTREDOMAINE.COM.crt; ssl_certificate_key /etc/yunohost/certs/VOTREDOMAINE.COM/VOTREDOMAINE.COM.key;
Faire Ctrl+o pour enregistrer, puis Ctrl+x pour fermer l'éditeur.
7) Redémarrage de Nginx :
/etc/init.d/nginx restart
8) Changement des mots de passe root et de l'administrateur du backoffice de Yunohost :
Changer le mot de passe root :
passwd root
Changer le mot de passe de l'administrateur du backoffice de Yunohost :
- Tools
- Change administration password