Backup Server::Configureren

Package management op de Raspberry Pi OS

Package management op de Raspberry Pi verschilt niet zoveel met andere linux software package management.
Raspberry PiOS ( voorheen Raspbian) is tenslotte gebaseerd op de Debian Linux distributie.

Software toevoegen aan het Raspberry Pi OS 

Eén manier om software toe te voegen is het downloaden van de bronbestanden, deze te compileren en de software installeren. Dit kan gecompliceerd zijn omdat veel software aanvullende 'dependencies' nodig heeft, zoals ondersteunende librairy software die geïnstalleerd moet worden vóór het compileren.
Alternatief, kun je pre-compiled binairy bestanden downloaden. Deze binairy bestanden hebben ook dependencies die geïnstalleerd moeten worden.

Er zijn twee algemeen gebruikte package systemen voor de Raspberry Pi OS

Naar index

Management van packages met APT

APT commando's voor het managen van packages

Naar index

Aanvullende Software

Naar index

Upgrades van OS en packages

Zie https://thenewstack.io/enable-automatic-updates-for-ubuntu-server/

Wanneer was het de laatste keer dat de BackupServer een upgrade heeft gehad?
Als een server jaren achtereen draait zonder een reboot kan inhouden dat al die tijd er geen upgrade gedaan wordt.
Unpatched software wordt kwetsbaar voor aanvallen
Tenzij je alle tijd hebt om dagelijks upgrades uit te voeren is het raadzaam upgrades automatisch te laten plaatsvinden.

Canonical (de firma achter Ubuntu) is zo zeker over de onbeheerde upgrades voor de server, dat zij het OS verzenden met de noodzakelijke package al voorgeïnstalleerd.
Dit is echter niet het geval met Raspberry Pi OS Lite

We installeren nu zelf het 'unattended-upgrades' package

Naar index

Unattended Upgrades

Zie Unattended Upgrades - Keeping Your Raspberry Pi Secure

Vindt de package in de RaspberryPi repository

root@pi-nas:~# apt list unattended-upgrades
Listing... Done
unattended-upgrades/stable 2.9.1+nmu3 all

Installeer Unattended-Upgrades:

root@pi-nas:~# apt install unattended-upgrades

Configureer Unattended-Upgrades

root@pi-nas:~# dpkg-reconfigure --priority=low unattended-upgrades

Na bovenstaand commando opent er een window met de vraag of je automatische download en installatie van stabiele upgrades wenst.

Kies: <TAB> naar <YES> en klik <ENTER> en hiermee is de onbeheerde utomatische upgrade geactiveerd.

Naar index

Check van de configuratie

Om te zien wat de unattended-upgrade configuratie doet, open als eerste het configuratiebestand /etc/apt/apt.conf.d/20auto-upgrades, deze bevat 2 regels:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Dit houdt in dat de interval tussen de updates/upgrades minimaal 1 dag is.
Wijzig naar 'always' als er geen tijd tussen de opeenvolgende updates hoeft te zijn:

APT::Periodic::Update-Package-Lists "always";
APT::Periodic::Unattended-Upgrade "always";

Configuratie opties
Er is een tweede bestand op de zelfde locatie, /etc/apt/apt.conf.d/50unattended-upgrades. Deze kan/moet door editing nader geconfigureerd worden.
Het meeste van dit bestand is uitgemarkeerd, maar als je door het bestand gaat zul je zekere regels en/of secties vinden die aktief zijn.
Bijvoorbeeld de volgende sectie:

Unattended-Upgrade::Origins-Pattern {
 // Codename based matching:
 // This will follow the migration of a release through different
 // archives (e.g. from testing to stable and later oldstable).
 // Software will be the latest available for the named release,
 // but the Debian release itself will not be automatically upgraded.

// "origin=Debian,codename=${distro_codename}-updates";
// "origin=Debian,codename=${distro_codename}-proposed-updates";
// "origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
Unattended-Upgrade::Mail "ben@makkink.eu";

// Set this value to one of:
//  "always", "only-on-error" or "on-change"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
Unattended-Upgrade::MailReport "always";

Op 26-4-2025 is de laatste regel gewijzigd naar;

Unattended-Upgrade::MailReport "only-on-error";

Naar index

In bovenstaande regels staan de toegestane bronnen.
De regel met -updates, -proposed-updates en label=Debian zijn uitgemarkeerd omdat deze updates kunnen bevatten die problemen veroorzaken met al geïnstalleerde packages.
Deze voeren we later zelf op de hand uit.

Verder in het bestand is een sectie met de opties "true" of "false" bijvoorbeeld:

88 // Do automatic removal of unused packages after the upgrade
89 // (equivalent to apt-get autoremove)
90 //Unattended-Upgrade::Remove-Unused-Dependencies "false";

Als je geen ongebruikte dependencies wilt behouden, verwijder de uitmarkereing '//' en wijzig "false" naar "true".

Een andere configuratie optie is:

 92 // Automatically reboot *WITHOUT CONFIRMATION* if
 93 //  the file /var/run/reboot-required is found after the upgrade
 94 Unattended-Upgrade::Automatic-Reboot "true";

Deze optie activeren is niet aan te raden omdat het niet bekend is wanneer een onbeheerde upgrade zal starten en eindigen en tot onverwachtte downtimes kan leiden.

Als we toch een automatic reboot instellen dan specificeren we ook het tijdstip:

100 // If automatic reboot is enabled and needed, reboot at the specific
101 // time instead of immediately
102 //  Default: "now"
103 Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Herstart na configuratie-wijziging
Als er wijzigingen aangebracht zijn in /etc/apt/apt.conf.d/50unattended-upgrades dan moet unattend-upgrades opnieuw geladen worden.

root@testserver:~# systemctl restart unattended-upgrades

Logfile

Als er zich problemen voordoen kijk dan in de unattended-upgrades log

# less  /var/log/unattended-upgrades/unattended-upgrades.log

Naar index

Schedule

Zie ook How is unattended-upgrades started and how can I modify its schedule?

De timers (schedulers) worden bij de installatie van het 'unattended-upgrades' package geinstalleerd in /lib/systemd/system/ en gelinkt naar /etc/systemd/system/ zijnde apt-daily.timer en apt-daily-upgrade.timer

Zie ook:

root@pi-nas:~# systemctl list-timers
NEXT                        LEFT           LAST                        PASSED       UNIT                         ACTIVATES           >
Fri 2025-03-14 20:48:51 CET 3h 48min left  Fri 2025-03-14 11:44:44 CET 5h 16min ago apt-daily.timer              apt-daily.service
Fri 2025-03-14 22:09:50 CET 5h 9min left   Tue 2025-03-11 12:19:32 CET 3 days ago   man-db.timer                 man-db.service
Sat 2025-03-15 00:00:00 CET 6h left        Fri 2025-03-14 10:05:33 CET 6h ago       dpkg-db-backup.timer         dpkg-db-backup.servi>
Sat 2025-03-15 00:00:00 CET 6h left        Fri 2025-03-14 10:05:33 CET 6h ago       logrotate.timer              logrotate.service
Sat 2025-03-15 06:53:12 CET 13h left       Fri 2025-03-14 10:47:17 CET 6h ago       apt-daily-upgrade.timer      apt-daily-upgrade.se>
Sat 2025-03-15 11:41:13 CET 18h left       Fri 2025-03-14 10:49:27 CET 6h ago       plocate-updatedb.timer       plocate-updatedb.ser>
Sat 2025-03-15 14:00:00 CET 20h left       Fri 2025-03-14 14:00:02 CET 3h 0min ago  motd-update.timer            motd-update.service
Sat 2025-03-15 15:20:16 CET 22h left       Fri 2025-03-14 15:20:16 CET 1h 40min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-cle>
Sun 2025-03-16 03:10:17 CET 1 day 10h left Sun 2025-03-09 12:01:14 CET 5 days ago   e2scrub_all.timer            e2scrub_all.service
Mon 2025-03-17 01:18:36 CET 2 days left    Mon 2025-03-10 17:37:50 CET 3 days ago   fstrim.timer                 fstrim.service

10 timers listed.

De tijd voor de 'updates check' is gespecificeerd in apt-daily.timer en voor upgrades in apt-daily.timer

Deze tijden zijn niet echt interessant omdat de BackupServer elke dag om 15:00 uur uitschakeld en de volgende ochtend opnieuw boot om 12:00 uur.
Dit is dan ook de tijd dat de timers de apt-daily.service en de apt-daily-upgrade.service starten.
In de apt-daily-upgrade.service staat vervolgens dat deze pas mag starten als de apt-daily.service beeindigd is.

root@pi-nas:~# less /lib/systemd/system/apt-daily-upgrade.service

[Unit]
Description=Daily apt upgrade and clean activities
Documentation=man:apt(8)
ConditionACPower=true
After=apt-daily.service network.target network-online.target systemd-networkd.service NetworkManager.service connman.service

[Service]
Type=oneshot
ExecStartPre=-/usr/lib/apt/apt-helper wait-online
ExecStart=/usr/lib/apt/apt.systemd.daily install
KillMode=process     

Naar index

Handmatige upgrades voor packages en dependencies

In de vorige secties zijn de unattended security upgrades ingesteld.
Voor de reguliere upgrades van geïnstalleerde packages en dependencies geven we de voorkeur aan het op de hand upgraden om te voorkomen dat mogelijkse bugs de goede werking verstoren.

Backup!

Voordat we deze upgrades uitvoeren maken we eerst een OS systeembackup, zodat als er zich problemen voordoen het systeem van vóór de upgrades teruggezet kan worden.

Check voor Updates

root@pi-nas:~# apt update
Hit:1 http://archive.raspberrypi.com/debian bookworm InRelease
Hit:2 http://raspbian.raspberrypi.com/raspbian bookworm InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
8 packages can be upgraded. Run 'apt list --upgradable' to see them.

root@pi-nas:~# apt list --upgradable
Listing... Done
firmware-atheros/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-brcm80211/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-libertas/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-misc-nonfree/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
firmware-realtek/stable,stable 1:20240709-2~bpo12+1+rpt2 all [upgradable from: 1:20230625-2+rpt3]
linux-image-rpi-v8/stable 1:6.6.74-1+rpt1 arm64 [upgradable from: 1:6.6.20-1+rpt1]
raspi-firmware/stable,stable 1:1.20250305-1 all [upgradable from: 1:1.20241126-1]
rpi-eeprom/stable,stable 27.5-1 all [upgradable from: 27.4-1]

Upgrade

Voer alleen 'stable' upgrades van packages uit!

- Alle beschikbare upgrades

root@pi-nas:~# apt upgrade

- Specifieke upgrade bijv. raspi-firmware

root@pi-nas:~# apt upgrade raspi-firmware

Reboot

Reboot na upgrades

Naar index

Dynamic Message Of The Day (MOTD)

Zie https://github.com/ar51an/raspberrypi-motd voor de scripts

Intro

De Raspberry Pi wordt meestal 'headless' gebruikt en wordt SSH gebruikt om te verbinden met de Raspberry Pi.
Zodra we een SSH verbinding maken wordt als eerste de MOTD weergegeven met informatie van het OS.
Bij Raspberry Pi OS Lite is de hoeveelheid informatie zeer beperkt en ontbreekt onder andere, zoals bij Ubuntu Server, de informatie hoeveel upgrades beschikbaar zijn.

Het ontbreken van de 'update' count heeft geleid tot de ontwikkeling van de hierna volgende MOTD

Het gebruikte process voor de nieuwe MOTD is hetzelfde als die van RaspiOS of Ubuntu Server. Er is geen extra package of tool nodig.
Het is geschreven in bash en gebruikt hetzelfde mechanisme als de standaard RaspiOS MOTD.

Download github bash bestanden raspberrypi-mod

Maak download folder

root@pi-nas:~# mkdir /srv/raspberrypi-motd

Maak backup-folder voor te verwijderen bestanden

root@pi-nas:~# mkdir /srv/raspberrypi-motd/original-motd-files

Download van github
(url van webpagina is: https://github.com/ar51an/raspberrypi-motd )

root@pi-nas:~# cd /srv/raspberrypi-motd
root@pi-nas:/srv/raspberrypi-motd# git clone
						https://github.com/ar51an/raspberrypi-motd.git

Verify gedownloade bestanden

root@pi-nas:/srv/raspberrypi-motd# ls -l /srv/raspberrypi-motd
-rwxr-xr-x 1 root root 1059 Mar 13 14:08 LICENSE
drwxr-xr-x 2 root root 4096 Mar 13 14:02 original-motd-files
drwxr-xr-x 2 root root 4096 Mar 13 14:08 putty
-rwxr-xr-x 1 root root 9213 Mar 13 14:08 README.md
drwxr-xr-x 2 root root 4096 Mar 13 14:08 systemd-timer
drwxr-xr-x 2 root root 4096 Mar 13 14:08 update-motd.d
drwxr-xr-x 2 root root 4096 Mar 13 14:08 update-motd-static.d
drwxr-xr-x 2 root root 4096 Mar 13 14:08 update-os

Verifieer dat van de folder ‘/srv/raspberrypi-motd’ en de files daarin root eigenaar is en dat  ze executable zijn

Verwijder de default MOTD met static tekst (en sla elders op)

root@pi-nas:~# mv /etc/motd /srv/raspberrypi-motd/original-motd-files

Verwijder /etc/update-motd.d/10-uname met dynamische weergave van de OS versie (en sla elders op).
De nieuwe MOTD print een getrimde OS versie

root@pi-nas:~# mv  /etc/update-motd.d/10-uname
						   /srv/raspberrypi-motd/original-motd-files

Edit /etc/ssh/sshd_config
Dit bestand print timestamp en locatie van laatste login. Dit wordt gebruikt door de nieuwe MOTD
Zet PrintLastLog naar 'No'

 root@pi-nas:~# vi /etc/ssh/sshd_config
       ....
       #X11UseLocalhost yes
       #PermitTTY yes
       PrintMotd no
       #PrintLastLog yes
       PrintLastLog no 
       #TCPKeepAlive  yes
       #PermitUserEnvironment  no
       ....

Herstart SSHD om nieuwe configuratie te laden

root@pi-nas:~# systemctl restart sshd

NOTE:

De default MOTD is nu volledig verwijderd.

Implementeer de nieuwe MOTD

Kopieer gedownloade scripts 10-welcome, 15-system en 20-update van /srv/raspberrypi-motd/update-motd.d naar /etc/ update-motd.d en zorg dat ze executable zijn.

root@pi-nas:~# cd /etc/update-motd.d
root@pi-nas:~# cp -a /srv/raspberrypi-motd/update-motd.d/* .
root@pi-nas:~# ls -l
-rwxr-xr-x 1 root root  980 Mar 13 14:08 10-welcome
-rwxr-xr-x 1 root root 3135 Mar 13 14:08 15-system
-rwxr-xr-x 1 root root    0 Mar 13 14:08 20-update
-rwxr-xr-x 1 root root  165 Dec 31  2022 92-unattended-upgrades

Scripts Info

Bovenstaande bestanden vormen samen de inhoud van de nieuwe MOTD
(De nummers zorgen voor het lezen in de gewenste volgorde)

Creëer nieuwe statische inhoud voor de MOTD

Maak nieuwe map /etc/update-motd-static.d
En kopieer /srv/raspberrypi-motd/update-motd-static.d/20-update

root@pi-nas:~# mkdir /etc/update-motd-static.d/
root@pi-nas:~# cd /etc/update-motd-static.d
root@pi-nas:~# cp -a  /srv/raspberrypi-motd/update-motd-static.d/20-update
           /etc/update-motd-static.d/20-update

Zorg er voor dat het script root permissies heeft en executable is.

Dit script 20-upgrade haalt het aantal upgrades die klaar staan en plaatst dit aantal in bestand /etc/update-motd.d/20-update
Bewerk het script 20-upgrade zodat een e-mail naar admin gestuurd wordt als er meer dan 10 upgrades klaar staan.

...
# Count
apt-get update --quiet=2
pkgCount="$(apt-get -s dist-upgrade | grep -Po '^\d+(?= upgraded)')"
if [ $pkgCount -gt 10 ]; then
cat /home/ben/updates-beschikbaar.txt | msmtp ben@makkink.eu;
fi
...

(Re)set aantal beschikbare upgrades

Voor het aanmaken of verversen van het MOTD bestand /etc/update-motd.d/20-update met het aantal beschikbare updates voeren we volgend commando uit:

root@pi-nas:~# run-parts /etc/update-motd-static.d

Zie volgende sectie Automatisering voor het dagelijks resetten van het aantal beschikbare upgrades

Maak content MOTD

Elke keer als er ingelogd wordt runt de PAM (Pluggable Authentication Module) de scripts in de map /etc/update-motd.d waarmee het MOTD weergegeven wordt.

We testen nu het aanmaken van de MOTD met het commando:

root@pi-nas:~# run-parts  /etc/update-motd.d

Met als resultaat:

Naar index

Automatisering MOTD

Zoals hierboven beschreven wordt het aantal beschikbare upgrades naar /etc/update-motd.d/20-update geschreven door het script /etc/update-motd-static.d/20-update.
Dit script wordt uitgevoerd met het commando: # run-parts /etc/update-motd.d

Dit proces duurt enkele seconden en zou elke keer onnodige vertraging opleveren bij het inloggen.
Daarom beperken we het vaststellen van het aantal beschikbare upgrades tot 1 keer per dag, automatisch d.m.v. een timer.

Kopiëer motd-update.timer en motd-update.service van /srv/raspberrypi-motd/ naar /etc/systemd/system/
Verifieer dat root eigenaar en groep is.

root@pi-nas:~# cp -a /srv/raspberrypi-motd/* /etc/systemd/system 
root@pi-nas:~# ls -l /etc/systemd/system/motd*
-rwxr-xr-x 1 root root  135 Mar 13 14:08 motd-update.service
-rwxr-xr-x 1 root root  156 Mar 13 14:08 motd-update.timer  

Edit motd-update.timer

root@pi-nas:~# vi /etc/systemd/system/motd-update.timer
    
[Unit]
Description=Motd upgradable package count timer - Daily at 08:00

[Timer]
OnCalendar=*-*-* 08:00
Persistent=true

[Install]
WantedBy=timers.target

Zet OnCalendar naar dagelijks 08:00.

Persistent= : Als true dan wordt de tijd wanneer de service het laatst getriggerd werd op disk opgeslagen.
Wanneer de timer na een (re)boot geactiveerd wordt dan wordt de service onmiddelijk getriggerd alsof het minstens 1 keer getriggerd zou zijn gedurende de tijd dat de timer niet actief was.
Hiermee worden tijdens OS shutdown gemiste runs opgevangen.

Enable timer :

root@pi-nas:~# systemctl enable motd-update.timer
Created symlink  /etc/systemd/system/timers.target.wants/
                  → /etc/systemd/system/motd-update.timer.

Start timer:

root@pi-nas:~# systemctl start motd-update.timer

Verifieer timer:

root@pi-nas:~# systemctl status motd-update.timer

motd-update.timer - Motd upgradable package count timer - Daily at 08:00
   Loaded: loaded (/etc/systemd/system/motd-update.timer; enabled; preset: enabled)
   Active: active (waiting) since Sat 2025-03-29 17:30:49 CET; 20h ago
   Trigger: Mon 2025-03-31 08:00:00 CEST; 17h left
   Triggers: motd-update.service

motd-update.service

[Unit]
Description=Motd upgradable package count service
After=network.target

[Service]
ExecStart=run-parts /etc/update-motd-static.d

Naar index

Packages toevoegen

VIM

De default teksteditor VIM in Raspberry Pi OS is vim 2:9.0.1378-2 armhf. Deze functioneert niet met het systeem clipboard van Windows.
De package vim-gtk3 bevat een berg onnodige dependencies maar werkt uitstekend samen met Windows clipboard.
Installeer: # apt install vim-gtk3

Kopie en paste
Er zijn bepaalde shortcuts vereist voor het kopiëren en plakken van- en naar VIM:

  1. Kopieer en plak binnen VIM : selecteer + 'y'(ank) en op bestemming 'p'
  2. Kopieer van VIM 1 en plak VIM 2:     Shift Select tekst + 'y' --> plak: insertmode +shift-rightclick
  3. Kopieer van Windows en plak VIM:  Select tekst + Ctrl-C   --> plak: insertmode +shift-rightclick
  4. Kopieer van puTTY en plak VIM:       Select tekst                 --> plak: insertmode +shift-rightclick

Kleurenschema
Raspberry OS heeft een nieuwere versie van de editor VIM, o.a. met Color Syntax Highlighting.
Met een donkere achtergrond is sommige tekst moeilijk te lezen.

Edit bestand /etc/vim/vimrc en verwijder de uitmarkering voor de regels:

.....
" All Debian-specific settings are defined in $VIMRUNTIME/debian.vim and
" sourced by the call to :runtime you can find below.  If you wish to change " any of those settings, you should do it in this file or " /etc/vim/vimrc.local, since debian.vim will be overwritten everytime an " upgrade of the vim packages is performed. It is recommended to make changes
" after sourcing debian.vim so your settings take precedence. runtime! debian.vim ..... ..... " If using a dark background within the editing area and syntax highlighting " turn on this option as well set background=dark

Naar index

SSHPASS

Sshpass is een utility ontworpen om ssh te runnen waarbij een wachtwoord gevraagd wordt. Met SSHPASS verstrekken we dit wachtwoord 'prefetched' uit een bestand met dit wachtwoord.
Installeer: # apt install sshpass

Om met bijvoorbeeld RSYNC data te synchroniseren tussen de Backup Server op de Raspberry Pi en de Thuisserver zou je de volgende code op de Backup-Server gebruiken:
# rsync -avzh ububen@thuisserver:/vault/backup /store
Nu wordt het thuisserver wachtwoord gevraagd.

Als deze synchronisatie vanuit een script plaats vindt moet dit wachtwoord op één of andere manier samen met bovenstaand commando gestuurd worden.
Hiervoor gebruiken we sshpass

  1. Voor het verstrekken van het wachtwoord maken we een nieuw bestand aan:
    ben@pi-nas:~ $ vi ~/.rsync_pass_thuisserver
  2. Zet de permissies:
    ben@pi-nas:~ $ chmod 644 ~/.rsync_pass_thuisserver
  3. Edit bestand en plaats wachtwoord van homeserver user 'ububen'
  4. rsync /vault/backup van thuisserver naar Raspberry Pi /store
    ben@pi-nas:~ $ sudo sshpass -f ~/.rsync_pass_thuisserver rsync -avzh ububen@thuisserver:/vault/backup /store

Voor uitvoering in script
Scripts worden uitgevoerd als root dus het bestand .rsync_pass_thuisserver verplaatsen we naar root
ben@pi-nas:~ $ sudo mv ~/.rsync_pass_homeserver /root

Creëer een script in /usr/local/bin

#!/bin/bash
 sshpass -f ~/.rsync_pass_thuisserver rsync  ububen@thuisserver:/vault/test /backup;

Denk aan spatie vóór sshpass! Hierdoor wordt het commando en het wachtwoord niet in historie opgeslagen.

Naar index

MSMTP e-mail van commandline

Voor het sturen van een e-mail van de commandlijn gebruiken we in Debian de MSMTP methode.

Gebruik hiervoor een (nieuwe) GMail account, speciaal voor de Backup-Server op de Raspberry Pi.

Maak een nieuwe GMail account en zet 2FA aan

 

Naar index

Installeer MSMTP app

# sudo apt install msmtp msmtp-mta mailutils mpack ca-certificates

Setup default instellingen voor MSMTP

Creëer en edit bestand /etc/msmtprc (chmod 644)

Inhoud /etc/msmprc:

account default
host smtp.gmail.com
port 587
logfile /tmp/msmtp.log
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth login
user detmersweg@gmail.com
password <zie lastpass detmersweg@gmail.com>
from Raspberry Admin

Note: De logfile /tmp/msmtp.log wordt verwijderd na een shutdown/reboot

Maak e-mailbestand /home/ben/thuisserver-ransom-mail.txt

To: ben@makkink.eu
Subject: Ransomware?
Het controlebestand '/vault/thuisserver-ransom.txt' op de thuisserver bestaat niet (meer), is gewijzigd en/of versleuteld.

Omdat dit mogelijk duidt op ransomware, worden nu geen backups naar de backup-server gemaakt.
Door deze ransomware-check wordt geprobeerd te voorkomen dat de ‘schone’ backups op de BackupServer ook versleuteld worden.

De raspberry BackupServer is nu volledig uitgeschakeld.
Houdt de BackupServer off-line tot dat het hele thuisnetwerk vrij van ransomware is!

Check op de BackupServer of er een bestand in /home/ben/tmp/ staat en of deze al dan niet versleuteld is.

Admin

Stuur de e-mail van de commandlijn

# cat /home/ben/thuisserver-ransom-mail.txt | msmtp --debug ben@makkink.eu

Als alle goed werkt verwijder dan --debug uit het commando.

Naar index

BMON Netwerk Monitor

Bmon is een Ubuntu commandlijn monitor van Netwerkverkeer (Portable Bandwidth monitor and Rate estimator is een commandline)

# sudo apt install bmon

Start monitor:
# bmon

Stop Monitor:
# Ctrl-C

Naar index

Opslagmedium toevoegen

Het Operating System (OS) bevindt zich op de SD-kaart in 2 partities

ben@pi-nas:~ $ lsblk
NAME        MAJ:MIN RM  SIZE  RO TYPE MOUNTPOINTS
mmcblk0      179:0    0   58G  0 disk
├ mmcblk0p1 179:1    0  512M  0 part /boot/firmware
└ mmcblk0p2 179:2    0 57.4G  0 part /

Alle data (backupdata) gaan we op een externe USB-SSD plaatsen.

Naar index

Formatteer met Ext4

ben@pi-nas:~ $ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda             8:0    0  3.6T  0 disk
└ sda1         8:1    0  3.6T  0 part 
mmcblk0       179:0    0   58G  0 disk
├ mmcblk0p1  179:1    0  512M  0 part /boot/firmware
└ mmcblk0p2  179:2    0 57.4G  0 part /

Naar index

ben@pi-nas:~ $ sudo fdisk /dev/sda

Command (m for help): p
Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: CT4000X10PROSSD9
Disklabel type: gpt
Disk identifier: 0D3925F3-B6C7-4948-87A9-352ED9D6AD6E

Device      Start        End    Sectors  Size Type
/dev/sda1      34     262177     262144  128M Microsoft reserved
/dev/sda2  264192 7814035455 7813771264  3.6T Microsoft basic data

De nieuwe CT4000 X10 PRO SSD9 blijkt al 2 microsoft partities te hebben, delete deze

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Toon niet gepartitieoneerde ruimte

Command (m for help): F
Unpartitioned space /dev/sda: 3.64 TiB, 4000785964544 bytes, 7814035087 sectors

Start        End    Sectors  Size
 2048 7814037134 7814035087  3.6T

Maak en schrijf nieuwe partitie en print details

Command (m for help): n
Gebruik default opties voor alle prompts

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Command (m for help): p
Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: CT4000X10PROSSD9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0D3925F3-B6C7-4948-87A9-352ED9D6AD6E

Device     Start        End    Sectors  Size Type
/dev/sda1   2048 7814035455 7814033408  3.6T Linux filesystem

Naar index

ben@pi-nas:~ $ sudo mkfs.ext4 /dev/sda1
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 976754176 4k blocks and 244195328 inodes
Filesystem UUID: 105c8fa8-a129-4029-bdc8-badce75915b1
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Naar index

Maak mountpoint

ben@pi-nas:~ $ sudo mkdir /store
ben@pi-nas:~ $ ls -l /store
total 0    

Nu niet mounten!
We willen niet dat de externe USB-SSD per default gemount is, dus niet beschikbaar.

Wanneer we op een gegeven moment willen mounten dan doen we dat middels een script.
Omdat het een externe USB-disk is. is het niet verstandig er van uit te gaan dat de USB-disk altijd SDA1 is. Als er meer aangesloten worden kan het zo maar zijn dat het SDB1 blijkt te zijn.
Het mounten met een script doen we daarom met de UUID van de externe USB-SSD

Vindt de UUID van SDA1:

ben@pi-nas:~ $ sudo blkid /dev/sda1
/dev/sda1:
UUID="138d237d-dae1-4c0f-8246-b766b1d33737"
BLOCK_SIZE="4096"
TYPE="ext4"
PARTUUID="8a5323fb-7ee9-b546-9e08-74bff95e2e25"

Later mounten
Voor het mounten vanuit een script voegen we de volgende regel toe in het script:

 mount UUID=138d237d-dae1-4c0f-8246-b766b1d33737 /store;