Ako vyzerá môj home veeam hardened repository server?
Pri budovaní LAB infraštruktúry pre testovanie a simuláciu rôznych scenárov zálohovania pomocou Veeam som sa rozhodol využiť starý stolný počítač značky Fujitsu, ktorý už dávno stratil svoje miesto na stole ako bežný desktop. Napriek svojmu veku sa však ukázal ako úplne postačujúce riešenie pre Veeam Hardened Repository.
Hardvér, ktorý ešte nepatrí do šrotu
Tento stroj je obsahuje procesor Intel Pentium G4400 @ 3.30GHz, ktorý síce dnes nikoho neohúri výkonom, no pre potreby repozitára slúži spoľahlivo. K dispozícii má 8 GB RAM, čo je viac než dosť pre jednoduchý Linuxový systém určený výhradne na ukladanie záloh.
Úložisko
Základná systémová inštalácia je na 500 GB disku Toshiba DT01ACA0, kde sú partície rozdelené nasledovne:
/dev/sda
– 463.8 GB pre systém, dáta, logy a konfiguračné súbory
Hlavné úložisko pre zálohy zabezpečujú dva 4 TB disky typu WD Gold:
/dev/sdb
– WDC WD4003FRYZ/dev/sdc
– WDC WD4003FFBX


Inštalácia ubuntu
Ako operačný systém som si zvolil Ubuntu Server, konkrétne jeho minimálnu inštaláciu bez grafického prostredia. Tento výber nebol náhodný – Ubuntu Server je dlhodobo overené riešenie s výbornou komunitnou podporou, jednoduchou správou a skvelou kompatibilitou s nástrojmi ako Veeam Backup & Replication. Inštalácia prebehla na starší 500 GB disk, ktorý som vyčlenil výhradne pre systémové účely. V rámci inštalácie som zvolil použitie LVM (Logical Volume Manager), čo mi umožňuje flexibilnejšie pracovať s diskovým priestorom v prípade potreby (napr. zmeny veľkosti partícií, snapshoty apod.).
Konfigurácia systému je štandardná – root partícia, swap a boot. Na disku zároveň ostáva dostatok miesta na prípadné logovanie alebo pomocné skripty, ktoré môžu byť v budúcnosti využité pri správe a automatizácii. Z pohľadu spoľahlivosti systému je ideálne, ak je aj systémový disk nasadený v RAID zrkadlení (RAID 1), čím sa zabezpečí jeho dostupnosť v prípade zlyhania jedného z diskov. V mojom prípade, keďže ide o domáce LAB riešenie, som sa rozhodol túto redudanciu neimplementovať – systém sa dá v prípade poruchy jednoducho znova nainštalovať. Dôležité sú predsa dáta. A práve tie sú uložené na samostatných 4 TB diskoch (WD Gold), ktoré slúžia ako hardened Veeam repository. Práve tu je kritické mať zabezpečenie, integritu a ochranu pred stratou alebo manipuláciou – systém si totiž obnovím, ale stratené zálohy nie.
Nastavenie RAID
Pre účely zabezpečeného a redundantného ukladania dát som sa rozhodol využiť softvérový RAID1, ktorý poskytuje jednoduchú a spoľahlivú ochranu dát prostredníctvom zrkadlenia medzi dvoma fyzickými diskami. Ako súborový systém som zvolil XFS, a to z konkrétneho dôvodu – XFS ako jeden z mála podporuje nastavenie súborov ako immutable (nezmeniteľných) pomocou chattr +i
, čo je základný predpoklad pre správne fungovanie Veeam Hardened Repository.
Nasledujúci postup demonštruje, ako vytvoriť RAID1 pole pomocou mdadm
, naformátovať ho na XFS a pripojiť do adresára /backup
tak, aby bolo pripravené na bezpečné zálohovanie s podporou immutable ochrany súborov.
# Inštalácia potrebných balíkov
sudo apt update
sudo apt install mdadm xfsprogs -y
# Vytvorenie RAID1 poľa z dvoch diskov (napr. /dev/sdb a /dev/sdc)
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# (Voliteľné) Monitorovanie synchronizácie
cat /proc/mdstat
# Uloženie konfigurácie RAID poľa
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
# Formátovanie poľa na XFS
sudo mkfs.xfs /dev/md0
# Vytvorenie mount pointu a pripojenie poľa
sudo mkdir -p /backup
sudo mount /dev/md0 /backup
# Získanie UUID poľa
sudo blkid /dev/md0
# Pridanie záznamu do /etc/fstab pre automatické pripojenie
echo 'UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /backup xfs defaults 0 0' | sudo tee -a /etc/fstab
Nastavenie siete
Hardened Repository server nie je len o súborovom systéme a diskoch – bezpečnosť na úrovni siete je rovnako dôležitá ako samotná dátová ochrana. V mojej architektúre je tento server fyzicky aj logicky oddelený od zvyšku infraštruktúry pomocou Check Point firewallu, ktorý slúži ako centrálny bod pre kontrolu a monitoring sieťovej komunikácie.

Firewall je nakonfigurovaný tak, aby zabezpečoval:
- Presné logovanie všetkých prístupov na úrovni paketov,
- Segmentáciu siete – Hardened Repository je umiestnený v samostatnej zóne/subnete,
- Minimálnu expozíciu – prístup je povolený iba pre autorizované systémy.
Povolené spojenia a pravidlá:
- Veeam Backup Server – má povolený prístup iba cez port 22 (SSH), čo je potrebné pre pripojenie a zápis záloh cez funkciu Linux Hardened Repository. Veeam používa prístup s nemenným (immutable) prístupovým právom bez root oprávnení.
- Veeam Installer Service – má povolený prístup cez port 6160, ktorý slúži na nasadzovanie a správu agentov alebo komponentov Veeam na vzdialených systémoch. Tento port je využívaný pri inštalácii Data Mover služieb alebo aktualizáciách cez rozhranie Veeam Backup & Replication.
- TCP 6162 – port využívaný Veeam Data Mover Service, ktorá zabezpečuje samotný prenos dát medzi komponentmi infraštruktúry.
- TCP 2500 – 3300 – predvolený rozsah portov využívaných ako dátové kanály pre každé spojenie vytvorené zálohovacou úlohou. Pre každú TCP reláciu sa rezervuje jeden port z tohto rozsahu.
- Monitoring server (Checkmk) – má povolený prístup iba cez port 6556, čo je port používaný pre pasívne získavanie informácií o stave servera a diskov pomocou
check_mk_agent
.
Všetky ostatné spojenia sú defaultne zamietnuté a dôkladne logované. Firewall pravidlá sú definované tak, aby nedochádzalo ku žiadnej zbytočnej komunikácii, čím sa minimalizuje vektor útoku a zároveň udržiava vysoký štandard transparentnosti a auditu.
Hardening operačného systému
V rámci budovania bezpečného zálohovacieho prostredia som použil bash skript, ktorý implementuje vybrané odporúčania zo štandardu DISA STIG pre Linuxové systémy. Cieľom je zabezpečiť, aby Veeam Hardened Repository bežalo na systéme, ktorý je nielen izolovaný sieťovo a systémovo, ale aj pevne nakonfigurovaný proti známym zraniteľnostiam a slabým miestam.
Kľúčové vlastnosti skriptu:
- Automatická inštalácia a aktivácia bezpečnostných komponentov (
auditd
,AppArmor
,rsyslog
,ufw
,chrony
atď.), - Vynútenie politík pre heslá, prihlasovanie a autorizáciu (napr. zámok účtu, komplexita hesiel, pam_pwquality),
- Nastavenie auditovania systémových udalostí vrátane binárnych operácií, používania privilegovaných príkazov a práce s konfiguráciou,
- Ochrana systémových knižníc, logov a audit nástrojov pred neoprávnenou manipuláciou,
- Aktivácia firewallu s bezpečným defaultným nastavením a logovaním,
- Odstránenie zastaraných alebo nebezpečných balíkov (telnet, rsh),
- Aktivácia systémových bezpečnostných mechanizmov ako Address Space Layout Randomization (ASLR), sticky bit, disable USB mass storage, atď.
Spustenie skriptu:
Skript je možné spustiť na čerstvo nainštalovanom Ubuntu serveri (napr. 24.04 LTS) s minimálnou inštaláciou. Pred samotným spustením odporúčam skontrolovať a upraviť:
- zoznam zapnutých audit pravidiel,
- hodnoty časových timeoutov, politiky hesiel,
- vlastné NTP servery a bezpečnostné bannery.
git clone https://github.com/VeeamHub/veeam-hardened-repository.git
cd veeam-hardened-repository/
chmod +x veeam.harden.sh
sudo ./veeam.harden.sh
Aj keď je sieťová konektivita Veeam Hardened Repository striktne obmedzená (napr. cez Check Point firewall), vždy existuje možnosť, že sa systém stane cieľom automatizovaných brute-force útokov. Na ochranu proti týmto pokusom je vhodné nasadiť Fail2Ban, ktorý monitoruje autentifikačné logy a v prípade nadmerného množstva chybných pokusov automaticky zablokuje IP adresu útočníka pomocou iptables
alebo ufw
.
apt-get install -y fail2ban
# Konfigurácia základného jailu pre SSH
cat << 'EOF' > /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd
maxretry = 3
bantime = 3600
findtime = 600
EOF
# Povolenie a spustenie služby
systemctl enable --now fail2ban
fail2ban-client status sshd
Toto rozšírenie je odporúčané pre každý systém s vystaveným SSH portom, bez ohľadu na to, či sa nachádza v interne alebo v DMZ. V kombinácii s auditom, ufw
a AppArmor
predstavuje ďalší prvok obrany v hĺbke (defense in depth).
Ďalším kľúčovým krokom pri zabezpečení Veeam Hardened Repository je nastavenie bezpečnostných parametrov priamo na úrovni Linuxového jadra. Tieto parametre ovplyvňujú správanie sa systému pri sieťovej komunikácii, spracovaní pamäte a interakcii s používateľským priestorom. Ide o tzv. sysctl nastavenia, ktoré zvyšujú odolnosť voči exploitom, znižujú povrch útoku a blokujú nevhodné správanie protokolov.
cat <<EOF > /etc/sysctl.d/99-kernel-hardening.conf
kernel.randomize_va_space=2
kernel.yama.ptrace_scope=2
fs.suid_dumpable=0
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.default.log_martians=1
net.ipv4.tcp_syncookies=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.all.forwarding=0
net.ipv6.conf.default.forwarding=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv6.conf.all.accept_source_route=0
net.ipv6.conf.default.accept_source_route=0
fs.protected_hardlinks=1
fs.protected_symlinks=1
kernel.kptr_restrict=2
kernel.dmesg_restrict=1
net.ipv4.tcp_timestamps=0
EOF
# Aplikovanie nastavení okamžite
sysctl --system
Vysvetlenie niektorých kľúčových parametrov:
Parameter | Popis |
kernel.randomize_va_space=2 | Plne aktivuje ASLR – náhodné rozmiestnenie pamäťových adries |
fs.suid_dumpable=0 | Zakazuje dumpovanie pamäte pre SUID binárky |
net.ipv4.tcp_syncookies=1 | Ochrana proti SYN flood útokom |
net.ipv4.conf.*.accept_redirects=0 | Zakazuje ICMP redirecty – ochrana proti MITM útokom |
net.ipv4.conf.*.rp_filter=1 | Aktivuje kontrolu spätnej cesty paketu – prevencia IP spoofingu |
net.ipv6.conf.*.disable_ipv6=1 | Vypína IPv6, ak nie je potrebný (zníženie attack surface) |
kernel.yama.ptrace_scope=2 | Zakazuje ptrace (snooping procesov) mimo vlastného UID |
fs.protected_symlinks=1 | Zamedzuje zneužitiu symlinkov pri útokoch v /tmp |
kernel.kptr_restrict=2 | Skrytie adries jadrových symbolov v /proc/kallsyms |
kernel.dmesg_restrict=1 | Zakazuje neprivilegovaný prístup ku dmesg (zamedzenie info leakov) |
RKHunter (Rootkit Hunter) je nástroj na detekciu rootkitov, backdoorov a podozrivých modifikácií systémových binárnych súborov. Kontroluje integritu dôležitých častí systému, hľadá známe znaky prienikov, modifikácie oprávnení, skryté súbory a rôzne typy malwaru, ktoré by mohli ohroziť bezpečnosť zálohovacieho repozitára. Aj keď systém nie je vystavený verejne, v prípade kompromitácie (napr. cez supply chain, infikovaný software alebo slabinu vo Veeam serveri) je kritické včas zistiť prítomnosť rootkitu – teda komponentu, ktorý sa pokúša skrývať svoju činnosť v systéme.
apt-get install -y rkhunter
# Aktualizácia databáz signatúr a konfiguračných súborov
sed -i \
-e 's|^MIRRORS_MODE *=.*|MIRRORS_MODE=1|' \
-e 's|^UPDATE_MIRRORS *=.*|UPDATE_MIRRORS=1|' \
-e 's|^WEB_CMD *=.*|WEB_CMD=/usr/bin/wget|' \
/etc/rkhunter.conf
rkhunter --update
# Prvý scan systému
rkhunter --checkall --sk
# Automatické spúšťanie cez cron (denne o 1:30)
echo "30 1 * * * root /usr/bin/rkhunter --cronjob --update --quiet" > /etc/cron.d/rkhunter
Bezpečnostné odporúčania a nastavenia podľa DISA STIG
Pri konfigurácii systému som dodržal odporúčania spoločnosti Veeam v súlade s DISA STIG štandardmi pre Ubuntu. Použitý bol vyhradený používateľ a skupina veeam-user
, ktorý slúži výhradne na obsluhu Veeam komponentov a nie je súčasťou skupiny sudo
.
Na splnenie požiadavky UBTU-20-010009
bola nastavená ochrana GRUB-u heslom:
grub-mkpasswd-pbkdf2
Hash hesla sa pridal do /etc/grub.d/40_custom
:
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.XXXX...
V súbore /etc/grub.d/10_linux
bol doplnený parameter --unrestricted
:
CLASS="--class gnu-linux --class gnu --class os --unrestricted"
Aktualizácia GRUB:
sudo update-grub
Na splnenie požiadavky UBTU-20-010455
boli zakázané všetky bezdrôtové sieťové adaptéry, keďže nie sú potrebné v serverovom prostredí.
Obmedzenie prístupu k adresáru so zálohami
Adresár určený pre Veeam zálohy bol obmedzený len pre veeam-user
:
chown -R veeam-user:veeam-user /backup
chmod 700 /backup
Systém obsahuje iba 2 používateľov podľa UBTU-20-010012
:
root
– zakázané priame prihlásenie (nemá heslo)veeam-user
– použitý pri inštalácii a nasadení Veeam komponentov
echo 'veeam-user ALL = (root) NOEXEC: /usr/sbin/reboot' | sudo tee -a /etc/sudoers
echo 'veeam-user ALL = (root) NOEXEC: /usr/sbin/shutdown' | sudo tee -a /etc/sudoers
sudo deluser veeam-user sudo
Monitorovací nástroj Check_MK
Pre zabezpečenie spoľahlivosti Veeam Hardened Repository je monitorovanie stavu systému a hardvéru nevyhnutné. Aj keď je repozitár zabezpečený voči ransomvéru či neautorizovaným zmenám, zlyhanie hardvéru – najmä disku – môže spôsobiť rovnako vážne následky.
Preto som nasadil Checkmk ako overené open-source riešenie na monitoring. Ten v mojom prípade sleduje stav servera, stav diskov, záťaž, aktualizácie a prihlásenia.
apt install ./check-mk-agent_2.3.0p13-1_all.deb
apt install smartmontools
Monitoring je rozšírený o pluginy, ktoré boli skopírované do adresára agentov:
/usr/lib/check_mk_agent/local/8600/mk_apt # sleduje dostupnosť systémových aktualizácií
/usr/lib/check_mk_agent/local/lvm # monitorovanie LVM volume group a logical volume
/usr/lib/check_mk_agent/local/mk_logins # počet aktuálne prihlásených používateľov
/usr/lib/check_mk_agent/local/smart # S.M.A.R.T. kontrola fyzického stavu diskov


Nastavenie Veeam Backup & Replication servera
V rámci celej zálohovacej infraštruktúry tvorí Veeam Backup & Replication server centrálny prvok, ktorý riadi zálohovacie politiky, orchestruje komunikáciu s jednotlivými komponentmi (napr. backup proxy, repository) a zabezpečuje plánovanie, monitorovanie aj obnovu dát. Postup spočíva vo vytvorení nového Backup Repository typu Linux, kde je ako cieľový úložný priestor nakonfigurovaný samostatný server s aktivovaným XFS súborovým systémom a správne nastavenými oprávneniami. Dôležitým krokom je overenie SSH konektivity, správne pridelenie nemenných práv a priradenie repozitára ku konkrétnym backup jobom.


Pri použití Linux Hardened Repository Veeam automaticky zabezpečuje, aby zálohované dáta boli na cieľovom systéme nemenné (immutable) počas definovaného obdobia ochrany. Táto kontrola slúži na overenie, že jednotlivé súbory záloh boli vytvorené správne a majú požadovanú funkciu a ochranu. Nasledujúce súbory sa štandardne nachádzajú v úložisku:

- .veeam.1.lock – Zaisťuje, že do úložiska zapisuje iba jeden proces naraz. Slúži na koordináciu prístupu počas prebiehajúcej zálohy.
- *.vbm – Obsahuje informácie o zálohách (čas, verzia, zoznam súborov) a slúži Veeam serveru na rýchlu orientáciu a obnovu.
- *.vbk – Hlavný súbor so zálohou systému alebo VM. Na tento súbor sa aplikuje
immutable
ochrana, ktorá bráni jeho úprave alebo zmazaniu počas retenčnej doby.
Overenie immutable
atribútu v XFS
lsattr -R /backup/backups/immutable-VM/

Overenie nefunkčnosti zmazania súboru:

Odborník na kybernetickú bezpečnosť, správu Azure Cloud a VMware onprem. Využíva technológie, ako Checkmk a MRTG, na monitorovanie siete a zvyšovanie efektívnosti a bezpečnosti IT infraštruktúry. Kontakt: hasin(at)mhite.sk