Raspberry / Cloud Privé : Architecture : Interrogation écrite !

Quel est la solution la plus sécurisé pour avoir un Cloud Privé ?  Imaginons une personne qui a une liaison ADSL, un Raspberry, un portable sous Mac et/ou Linux, et un smartphone sous Android. Quel est la solution la plus sécurisé ? Quel est la solution la plus ergonomique ? Je ramasse les copies dans deux heures .

Solution n°1 OwnCloud : ( Site officiel : https://owncloud.org )

Lire les articles :

Outils sur Android :

C’est le plus populaire.

Solution n°2 : SeaFile, SeaHub et Fail2ban : ( Site officiel : https://www.seafile.com/en/home/ )

Lire les articles :

Outils sur Android :

Solution n°3 : PiVPN avec OpenVPN

Lire les articles :

Outils sur Android :

Solution n°4 : SSH & SSHFS

Lire les articles :

Outils sur Android :

Solution n°5 : NextCloud :

Lire les articles :

Outils sur Android :

Solution n°6 : PyDio :

Outils sur Android :

Solution n°7 : Cozy :

Lire les articles :

Outils pour Android :

J’ai du mal à savoir si cette solution est encore d’actualité …

Solution n°8 : OpenStack : 

Pas assez de ressource sur le Raspberry …

Solution n°9 : Syncthing or Resilio : 

Lire les articles :

Outils sur Android :

En résumé :

Raspberry : Architecture : Interrogation écrite !

Petit rappel sur l’architecture mis en place sur le Munin :

Maintenant, quel est la meilleure architecture pour la mise en place du Logstach ? Mettre un Filebeat sur tous les serveurs ou bien envoyer les informations via Rsyslog afin d’avoir qu’un seul Filebeat ? Vous avez une heure …

Raspberry/Rsyslog : Centralisation des logs via syslog

J’ai donc finaliser l’installation de Munin Server/Node sur mon installation de Raspberry, maintenant je passe à Rsyslog. Voici la liste de mes Raspberry :

Nom Type Processeur RAM (Mo) Version IP Utilisation Munin-node
RASP1 / PAPI 000f ARMv6-compatible processor rev 7 443896 4.14.50+ 192.168.0.70 Maison de retraite OK
RASP2 / OSMC a22082 ARMv7 Processor rev 4 764720 4.14.34-6-osmc 192.168.0.80 Munin Server / OSMC OK
RASP3 a020d3 ARMv7 Processor rev 4 (v7l) 949452 4.14.50-v7+ 192.168.0.71 Rsyslog Server OK
RASP4 a020d3 ARMv7 Processor rev 4 (v7l) 949452 4.14.50-v7+ 192.168.0.72 OK
RASP5 a020d3 ARMv7 Processor rev 4 (v7l) 949452 4.14.50-v7+ 192.168.0.73 OK

Pour mémoire, mes posts sur Munin :

Ma version de Raspberry est la suivante ( je fais utiliser RASP3 ) : 4.14.50-v7+

Etape n°1 : Modification du fichier /etc/rsyslog.conf

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

...
if ($fromhost-ip=='192.168.0.70') then /var/log/RASP1.log
if ($fromhost-ip=='192.168.0.80') then /var/log/RASP2.log
if ($fromhost-ip=='192.168.0.71') then /var/log/RASP3.log
if ($fromhost-ip=='192.168.0.72') then /var/log/RASP4.log
if ($fromhost-ip=='192.168.0.73') then /var/log/RASP5.log
if ($fromhost-ip=='127.0.0.1') then {
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
cron.*                          /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
}

En théorie le fichier RASP3.log, devrait être vide …

Etape n°2 : Je modifie aussi  /etc/logrotate.d/rsyslog :

/var/log/RASP1.log
/var/log/RASP2.log
/var/log/RASP3.log
/var/log/RASP4.log
/var/log/RASP5.log
/var/log/syslog
{
        rotate 30
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

Je relance rsyslog :

$ sudo systemctl restart rsyslog.service

Maintenant que le serveur peut faire de la réception je passe au client :

Etape n°3 : J’ajoute le fichier /etc/rsyslog.d/50-default.conf sur tous les autres RASP.

$ cat /etc/rsyslog.d/50-default.conf 
@192.168.0.71:514

Et je relance en local :

$ sudo systemctl restart rsyslog.service

Pour forcer l’affichage d’un message vous pouvez faire par exemple :

$ sudo df

Chaque sudo va provoquer une ligne de logs …

Il va falloir maintenant voir via Munin quel est l’activité supplémentaire que cela provoque sur les écritures/lectures de la carte MicroSD. Les graphiques actuels :

A noter que sur la version OSCM il faut l’installer rsyslog :

$ sudo apt-get install rsyslog
...
Les NOUVEAUX paquets suivants seront installés :
  libestr0 libfastjson4 liblogging-stdlog0 liblognorm5 rsyslog
0 mis à jour, 5 nouvellement installés, 0 à enlever et 12 non mis à jour.
Il est nécessaire de prendre 611 ko dans les archives.
Après cette opération, 1 369 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] O
...
$ sudo systemctl start rsyslog.service
$ sudo systemctl enable rsyslog.service
Synchronizing state of rsyslog.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rsyslog

Etape n°4 : Munin & Rsyslog .

J’ajoutes dans  /etc/rsyslog.conf :

module(load="impstats" interval="60" severity="7")
...
if $syslogtag contains 'rsyslogd-pstats' then {
     action(type="omfile" queue.type="linkedlist" queue.discardmark="980"
            name="pstats" file="/var/log/impstats")
     stop
}

Afin d’avoir un fichier de statistique tous les 60 secondes.

Ensuite il suffit de prendre le programme de https://github.com/jonschipp/munin-plugins/blob/master/rsyslog_queued : (et le mettre dans le fichier /usr/share/munin/plugins/rsyslog_queued ). En rouge mes modifications …

#!/bin/sh
FILE=/var/log/impstats
Q=core
IFS=:

if [ "$1" = "autoconf" ]; then
        echo yes
        exit 0
fi

if [ "$1" = "config" ]; then
echo "graph_title Number of Rsyslog Messages in the Queue (enqueued)"
echo "graph_category network"
echo "graph_vlabel Messages per minute"
echo "graph_info Queued syslog messages "
echo "graph_period minute"
echo "${Q}.label $Q" | sed 's/\\//g'
echo "${Q}.min 0" | sed 's/\\//g'
echo "${Q}.type DERIVE" | sed 's/\\//g'
echo "${Q}.info Logs by Queue $Q" | sed 's/\\//g'

else
if [ -f $FILE ] && [ -r $FILE ]; then

awk "/$Q/ && /$(date +"%b %e")/" $FILE |
grep -o ' enqueued=[0-9]\+ ' | tail -1 | awk -F "=" -v queue=$Q '{ printf("%s.value %d\n", queue, $2) }' 2>/dev/null

unset IFS
else
echo "File not found!"
exit 1
fi
fi

Ensuite on fait un petit test :

$ sudo /usr/share/munin/plugins/rsyslog_queued
core.queue.value 989
$ sudo /usr/share/munin/plugins/rsyslog_queued config
graph_title Number of Rsyslog Messages in the Queue (enqueued)
graph_category network
graph_vlabel Messages per minute
graph_info Queued syslog messages 
graph_period minute
core.queue.label core.queue
core.queue.min 0
core.queue.type DERIVE
core.queue.info Logs by Queue core.queue
$ sudo munin-run rsyslog_queued --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Setting /rgid/ruid/ to /113/65534/
# Setting /egid/euid/ to /113 113/65534/
# Setting up environment
# About to run '/etc/munin/plugins/rsyslog_queued'
core.queue.value 1523
$ $ sudo ln -s /usr/share/munin/plugins/rsyslog_queued /etc/munin/plugins/rsyslog_queued  

On ajoute dans /etc/munin/plugin-conf.d/munin-node :

[rsyslog_queued]
user root

Et on relance :

$ sudo systemctl restart munin-node.service 

On peut aussi faire un test via le Server Munin :

$ telnet RASP71 4949
Trying 192.168.0.71...
Connected to RASP71.
Escape character is '^]'.
# munin node at raspberrypi
list
acpi cpu cpuspeed df df_inode entropy forks fw_packets if_err_eth0 if_err_wlan0 if_eth0 if_wlan0 interrupts irqstats load memory netstat nfs4_client nfs_client open_files open_inodes proc_pri processes rsyslog_queued swap threads uptime users vmstat

 

Raspberry : Installation de l’écran WAVESHARE 5″ HDMI LCD (B)

Sur Amazon, la référence est : « 5 pouces LCD B Rev2.1 Touch Control Win10 résistif Screen HDMI interface 800*480 with Bicolor case Supports Various Systems Pour Raspberry pi3/3B+/2 «  à 40,99 Euros.

Ma version de raspberry est la suivante :

$ hostnamectl 
   Static hostname: osmc
         Icon name: computer
        Machine ID: 1671b5b617884fdf85a465a5ac731b8f
           Boot ID: fe304875cb0a49dd835e4a2c5d8c6ee4
  Operating System: Open Source Media Center
            Kernel: Linux 4.14.34-6-osmc
      Architecture: arm

Il faut modifier le fichier /boot/config.txt , mon fichier d’origine est :

$ cat /boot/config.txt
gpu_mem_1024=256  
hdmi_ignore_cec_init=1  
disable_overscan=1
start_x=1  
disable_splash=1
dtoverlay=lirc-rpi  
gpu_mem_256=112  
sdtv_aspect=1  
dtparam=gpio_in_pin=18  
gpu_mem_512=144  
dtparam=gpio_out_pin=17  
program_usb_timeout=1 

Il faut ajouter dans le fichier : (ne pas mettre hdmi_mode=1, la doc est fausse )

max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
hdmi_drive=1

Ensuite ajout d’un package ( facultatif et il faut avoir le server X, ce qui n’est pas mon cas ) :

$ sudo apt-get install -y xinput-calibrator

Ensuite il faut calibrer via la commande :

$ sudo DISPLAY=:0.0 xinput_calibrator

Mais cela ne semble pas obligatoire, je ne l’ai pas fait. Si on n’a pas de serveur X, on a cette erreur :

$ sudo DISPLAY=:0.0 xinput_calibrator
Unable to connect to X server

A noter que la luminosité est forte …

A suivre.