Outils pour utilisateurs

Outils du site


raspberrypi:yunohost-stretch-v3.x.x.x-rpi

Installer "à la main" Yunohost v3.x.x.x sur Raspberry Pi sur une base Raspbian Stretch Lite | en cours de relecture

“YunoHost est un système d’exploitation serveur visant à simplifier l’auto-hébergement de services Internet. Il est basé et reste totalement compatible avec Debian GNU/Linux.”

Plus de détail sur le site de l'éditeur https://yunohost.org/#/docs

Prérequis

Préparation de la carte SD

<note warning> La carte SD devra être formatée. Préalablement, veillez à sauvegarder sur un autre support tous les fichiers et autres documents qu'elle pourrait contenir. </note>

Il est nécessaire de :

  • formater la carte SD en FAT32 ;
  • télécharger le fichier zip de la dernière version de NOOBS Lite à cette adresse :

https://downloads.raspberrypi.org/NOOBS_lite_latest

  • décompresser à la raçine d ela carte SD tous les fichiers de NOOBS Lite.

Installer la carte SD dans la Raspberry Pi, brancher l'alimentation et procéder à l'installation de Raspbian Lite en choisissant la langue et la disposition du clavier.

Configuration de Raspbian Lite Stretch

<note> Normalement le SSH n'est pas activé par défaut. L'utilisateur est pi et le mot de passe raspberry, enfin rqspberry si vous êtes resté en en-GB.UTF-8 ;-) </note>

Créer un mot de passe FORT pour root et se ré-identifier en root

sudo passwd root
# entrer et confirmer le mot de passe
exit
# identifiant : root
# mot de passe root : celui que vous venez de créer

Retirer l'utilisateur pi

deluser pi

Faire la mise à jour et un nettoyage

apt update && apt --assume-yes dist-upgrade && apt autoclean && apt autoremove

S'assurer que Apache n'est pas installé et le retirer le cas échéant

apt autoremove apache2*

Lancer le configurateur de la Raspberry Pi

sudo raspi-config

Mettre à jour raspi-config

Menu 8

Adapter les paramètres régionnaux

Menu 4
I1 pour paramètrer les locales (fr_FR.UTF-8)
I2 pour paramètrer l'heure
I3 pour paramètrer la disposition du clavier
I4 pour le paramètrage du WiFi.

Changer le hostname

Menu 2
N1 pour changer le hostname raspberry en YunoHost

A vérifier, mais normalement avec NOOBS tout l'espace de la carte SD est disponible

Menu 7
A1

Normalement, il n'y aura pas besoin du rendu graphique

Menu 7
A3
Passer la valeur au minimum : 16

Finir et redémarrer

sudo reboot

Récupération des adresses IP locale et publique, vérification du fichier de mise à jour et mise à jour des firmwares

Connaître son adresse IP locale

hostname -I

Connaître son adresse IP publique

curl ifconfig.me

<note warning> Vérifier que la version de Raspbian sera bien mise à jour sur la base Stretch.

⇒ Remplacer stable par stretch dans le fichier /etc/apt/sources.list

sed -i 's|stable|stretch|' /etc/apt/sources.list

</note>

Installer les derniers firmwares et redémarrer

sudo apt update
sudo rpi-update
sudo reboot

Activer SSH et autoriser les connexion de root en SSH

<note warning> Activer SSH et autoriser root à se connecter est optionnel. Tout dépend de l'utilisation et de la façon dont vous souhaitez faire la maintenance de votre serveur et instance YunoHost. </note>

Activer SSH

raspi-config
Menu 5
P2 Enable SSH

Autoriser root à se connecter en SSH et rechargement du service SSH

sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
service ssh reload

Se reconnecter avec root en SSH

ssh root@ip.du.raspberry.pi

Installation de YunoHost

<note tip> Pour rappel, le script d'installation ne peut pas être lancé avec l'utilisateur pi : il faut être identifié en root. </note>

Lancer cette commander

bash <(wget -q -O- https://install.yunohost.org/)

Post-installation de YunoHost

Au redémarrage il suffit d'accepter de lancer la post-installation.

Sinon la commande est la suivante :

yunohost tools postinstall

<note> Si nécessaire pour configurer git : Configurer git

git config --global user.email "moi@ndd.tld"
git config --global user.name "Votre Nom"

Redémarrer le serveur

reboot

</note>

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/.

<note tip> Pour régénérer les services :

yunohost service regen-conf

Pour mettre à jour la liste des applications YunoHost :

yunohost app fetchlist

Pour mettre à jour les applications YunoHost :

yunohost app upgrade

Pour faire une sauvegarde :

mkdir /home/yunohost.backup/archives
yunohost backup create

Pour récupérer une sauvegarde depuis son serveur vers le /home de son ordinateur (avec 1234 comme port SSH ; avec IP_ou_NDD comme adresse IP [locale ou pas] ou NDD son Nom De Domaine ; avec $USER son nom d'utilisateur ; avec aaaammjj-hhmmss comme par exemple 20161002-084907 [nom de la sauvegarde YunoHost]) :

scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.tar.gz /home/$USER
scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.info.json /home/$USER

Sur le même principe que précédemment, envoyer une sauvegarde depuis le /home de son ordinateur vers son serveur (s'assurer que le dossier archive existe bien sinon lancer une première sauvegarde ou bien en dernier recours créer le dossier en root : mkdir /home/yunohost.backup/archives) :

scp -P 1234 /home/$USER/aaaammjj-hhmmss.info.json root@IP_ou_NDD:/home/yunohost.backup/archives
scp -P 1234 /home/$USER/aaaammjj-hhmmss.tar.gz root@IP_ou_NDD:/home/yunohost.backup/archives

Pour restaurer une sauvegarde :

yunohost backup restore nom_de_la_sauvegarde

Sources pour la sauvegarde :

Pour que lors de la sauvegarde les fichiers de NextCloud soient sauvegardés en plus des paramètres de l'application en elle-même, il faut éditer le fichier /etc/yunohost/apps/nextcloud/settings.yml et supprimer le “1” de la variable backup_core_only :

nano /etc/yunohost/apps/nextcloud/settings.yml
backup_core_only: '1'
devient
backup_core_only: ''

Pour refuser l'accès d'une application à un utilisateur :

yunohost app removeaccess app -u user
# et par extension :
yunohost app removeaccess app1 app2 app3 -u user1 user2 user3
# pour faire l'inverse :
yunohost app addaccess app -u user

Source : https://forum.yunohost.org/t/refuser-lacces-dune-application-a-un-utilisateur/3266/2

Pour désactiver le wifi et/ou le bluetooth :

Pour enregistrer et quitter l'éditeur nano : Ctrl+o et Ctrl+x

Editer le fichier fbdev-blacklist.conf (anciennement raspi-blacklist.conf)

sudo nano /etc/modprobe.d/fbdev-blacklist.conf

Ajouter ces lignes …

#wifi
blacklist brcmfmac
blacklist brcmutil
#bt
blacklist btbcm
blacklist hci_uart

… puis redémarrer

reboot

Sources : http://www.cedynamix.fr/jeedom-raspberry-3-desactivation-bluetooth-wifi/

Pour étendre la partition :

raspi-config # 1 Expand Filesystem

Si ça ne fonctionne pas alors essayer cette commande à adapter à vos partition après un df -h et/ou fdisk -l

df -h
fdisk -l
resize2fs -p /dev/mmcblk*** # par exemple mmcblk0p2

</note>

Vous pouvez aussi contribuer à ce projet ici https://doc.yunohost.org/#/contribute_fr.

<note> A vous de tester et bidouiller ;-) </note>

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>

Cloner le script d'installation YunoHost et procéder à directement l'installation de la version testing de YunoHost

<note important> Réservé à des utilisateurs avancés sachant ce qu'ils font. </note>

Pour passer directement à la version 'testing' de YunoHost (sans passer par l'installation de la version stable) :

bash <(wget -q -O- https://install.yunohost.org/switchToTesting)

Mettez à jour votre instance :

apt-get update && apt-get dist-upgrade

Indiquez le dépôt testing en lieu et place du dépôt stable dans le sources.list YunoHost :

echo 'deb http://repo.yunohost.org/debian/ stretch stable testing' > /etc/apt/sources.list.d/yunohost.list

Mettez à jour votre instance (à nouveau) avec les dépôts testing :

apt-get update && apt-get dist-upgrade

Source en rapport : https://forum.yunohost.org/t/yunohost-2-5-0-beta-call-for-beta-testers-and-translators/2243

Pour revenir en arrière et repasser en mode stable

Indiquez le dépôt stable à la place du dépôt testing :

echo 'deb http://repo.yunohost.org/debian/ stretch stable' > /etc/apt/sources.list.d/yunohost.list

Mise à jour de l'instance :

apt-get update && apt-get dist-upgrade

<note important> N.B.: Votre version ne reviendra à la version stable qu'à la publication de nouveaux paquets stables. </note>

Source : https://forum.yunohost.org/t/yunohost-2-5-0-beta-call-for-beta-testers-and-translators/2243

Être averti par mail lors d'une connexion ssh au serveur :

Il faut installer mailutils pour que la fonction mail du script fonctionne :

apt-get install mailutils

Ensuite, il faut 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.net

Ensuite, redémarrer ssh :

service ssh restart

Source : http://yeuxdelibad.net/Logiciel-libre/Installation_et_securisation_d_un_serveur_auto-heberge.html#surveiller

Être averti par SMS lors d'une connexion ssh au serveur :

<note tip> Pour les “Free-Mobilonautes”, il est aussi possible d'être averti en plus par un SMS. Il suffit d'ajouter au fichier précédent le script suivant (à adapter avec l'identifiant et la clé de l'API après avoir activé l'option de notification par SMS sur le panel client Free https://mobile.free.fr/moncompte/ ) : </note>

  #!/bin/sh

# 
# Script d'envoi de notification SMS via l'API Free Mobile
# https://github.com/C-Duv/freemobile-smsapi-client
# 
# Auteur: DUVERGIER Claude (http://claude.duvergier.fr)
# 
# Nécessite: sed, sh et wget
# 
# Possible usages:
#   send-notification.sh "All your base are belong to us"
#   echo "All your base are belong to us" | send-notification.sh
#   uptime | send-notification.sh


##
## Configuration système
##

# Caractère de fin de ligne (http://en.wikipedia.org/wiki/Percent-encoding#Character_data)
NEWLINE_CHAR="%0D" # Valeurs possibles : %0A, %0D et %0D%0A

# URL d'accès à l'API
SMSAPI_BASEURL="https://smsapi.free-mobile.fr"

# Action d'envoi de notification
SMSAPI_SEND_ACTION="sendmsg"


##
## Configuration utilisateur
##

# Login utilisateur / identifiant Free Mobile (celui utilisé pour accéder à l'Espace Abonné)
USER_LOGIN="1234567890"

# Clé d'identification (générée et fournie par Free Mobile via l'Espace Abonné, "Mes Options" : https://mobile.free.fr/moncompte/index.php?page=options)
API_KEY="s0me5eCre74p1K3y"

# Texte qui sera ajouté AVANT chaque message envoyé
MESSAGE_HEADER="Notification :${NEWLINE_CHAR}"

# Texte qui sera ajouté APRÈS chaque message envoyé
MESSAGE_FOOTER="${NEWLINE_CHAR}--${NEWLINE_CHAR}Le serveur de la maison"


##
## Traitement du message
##

MESSAGE_TO_SEND=""
if [ "$1" ]; then # Message en tant qu'argument de la ligne de commande
    MESSAGE_TO_SEND="$1"
else # Message lu de STDIN
    while read line
    do
        MESSAGE_TO_SEND="$MESSAGE_TO_SEND$line$NEWLINE_CHAR"
    done
    MESSAGE_TO_SEND=$(echo $MESSAGE_TO_SEND | sed 's/'$NEWLINE_CHAR'$//') # Retire le dernier saut de ligne
fi

FINAL_MESSAGE_TO_SEND="$MESSAGE_HEADER$MESSAGE_TO_SEND$MESSAGE_FOOTER" # Assemble header, message et footer

##
## Appel à l'API (envoi)
##

# echo "Will send the following to $USER_LOGIN:" #DEBUG
# echo "$FINAL_MESSAGE_TO_SEND" #DEBUG

# --insecure : Certificat de $SMSAPI_BASEURL ne fourni pas d'informations sur son propriétaire
# --write-out "%{http_code}" --silent --output /dev/null : Renvoi le code réponse HTTP uniquement
HTTP_STATUS_CODE=$(curl --insecure --get "$SMSAPI_BASEURL/$SMSAPI_SEND_ACTION" --data "user=$USER_LOGIN" --data "pass=$API_KEY" --data "msg=$FINAL_MESSAGE_TO_SEND" --write-out "%{http_code}" --silent --output /dev/null)

# Codes réponse HTTP possibles
# 200 : Le SMS a été envoyé sur votre mobile.
# 400 : Un des paramètres obligatoires est manquant.
# 402 : Trop de SMS ont été envoyés en trop peu de temps.
# 403 : Le service n'est pas activé sur l'espace abonné, ou login / clé incorrect.
# 500 : Erreur côté serveur. Veuillez réessayez ultérieurement.

if [ "$HTTP_STATUS_CODE" -eq 200 ]; then
    # echo "API responded with 200: exiting with 0" #DEBUG
    exit 0
else
    echo "Error: API responded with $HTTP_STATUS_CODE"
    exit 1
fi

Source : https://github.com/C-Duv/freemobile-smsapi-client

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 a 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 pare-feux, désactiver l'ancien port dans le pare-feux (a priori le 22), redémarrer le service ssh et recharger le service fail2ban :

yunohost firewall reload
yunohost firewall disallow 22
sudo service ssh restart
sudo fail2ban-client reload

Source : https://yunohost.org/#/security_fr

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

raspberrypi/yunohost-stretch-v3.x.x.x-rpi.txt · Dernière modification : 2018/12/04 18:59 de 127.0.0.1

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : Public Domain