En server sätts upp en gång och lever sedan vidare av sig själv. En månad senare väntar några paket på uppgradering, certifikatet har glidit in på tre veckor från utgången, efter installationen av något ovidkommande har det dykt upp en rad för mycket i SSH-konfigurationen, och det jail som ska bevaka inloggningarna har stannat utan att någon märkt det. Inget av detta skriker. Allt slutar bara tyst att vara sant.
Nedan tolv saker som är värda att kontrollera regelbundet, med kommandon. Rundan tar en kvart. Ordningen går från det man tar sig in genom till det som går sönder av sig självt.
SSH: fem rader
Det som ska granskas är inte filen utan den verksamma konfigurationen: den sätts samman av /etc/ssh/sshd_config, hela katalogen sshd_config.d och byggets standardvärden.
sudo sshd -T | grep -iE 'permitrootlogin|passwordauthentication|permitemptypasswords|maxauthtries|x11forwarding'
Det vi vill se: permitrootlogin no, passwordauthentication no, permitemptypasswords no, maxauthtries på 3–4 och x11forwarding no. De tre första är dörren, de två sista dess gångjärn — ett tak för antalet försök per anslutning, och en grafikvidarebefordran som en server inte har någon nytta av.
Två reservationer, båda enkla sätt att låsa ute sig själv. För det första: stäng inte av lösenordsinloggning och root-inloggning innan du har bekräftat att din nyckel fungerar — i en separat session, utan att stänga den pågående. Läser du det här inloggad som root med lösenord är det just dig de två raderna stänger ute.
För det andra: filernas ordning. OpenSSH tar det första värde det möter för en parameter, och filerna i sshd_config.d läses i bokstavsordning. Molnavbildningar lägger oftast en 50-cloud-init.conf där, och den vinner över din egen fil om du döpt den till något i stil med 90-hardening.conf. Egna inställningar hör hemma under ett lägre nummer — 00- eller 10-. Och resultatet kontrolleras med sshd -T, inte genom att läsa filen.
Brandvägg: en kontroll
sudo ufw status verbose
Värt att minnas är att den utskriften visar avsikter, inte resultat. En regel kan stå i listan utan att stänga något: UFW själv är avstängt, porten betjänas av något som Docker publicerat (det skriver egna regler i iptables under UFW), eller så når trafiken servern en annan väg. Det lönar sig alltså att ställa regellistan mot vad som faktiskt lyssnar utåt:
sudo ss -tulpn | grep -v '127.0.0.1\|::1'
fail2ban: två kontroller
Det räcker inte att tjänsten kör — det behövs också ett fungerande jail för SSH.
sudo fail2ban-client status
sudo fail2ban-client status sshd
Det vanligaste besväret här är ett tyst jail. På Debian 12 och nyare Ubuntu kan /var/log/auth.log saknas helt: rsyslog är inte installerat och posterna lever bara i journald. Ett jail med standardens logpath startar då, rapporterar sig som aktivt och bannar aldrig någon. Botas genom att peka det mot systemd-journalen:
printf '[sshd]\nenabled = true\nbackend = systemd\n' | sudo tee /etc/fail2ban/jail.d/sshd-systemd.local
sudo systemctl restart fail2ban
Tecknet som avslöjar detta utan att man gräver i konfigurationer: i fail2ban-client status sshd står ”Currently failed” och ”Total failed” på noll medan journalen uppenbart innehåller misslyckade inloggningar.
Uppdateringar: tre kontroller
Var för sig: hur många paket som väntar totalt, hur många av dem som rör säkerhet, och om systemet ber om omstart efter en kärnuppdatering.
sudo apt update
apt list --upgradable 2>/dev/null | grep -c -- '-security'
ls /var/run/reboot-required 2>/dev/null && echo 'omstart krävs'
Den tredje kontrollen är om automatiska säkerhetsuppdateringar är påslagna, så att de två första inte blir en månatlig ritual:
systemctl status unattended-upgrades --no-pager
cat /etc/apt/apt.conf.d/20auto-upgrades
I den filen ska det stå en etta på båda raderna. Saknas paketet: sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades.
Certifikat: en kontroll
Ett Let's Encrypt-certifikat lever nittio dagar, och förnyelsen sköter sig själv ända fram till just den dag då den slutar göra det. Det som ska granskas är inte registrarens panel utan vad servern faktiskt levererar:
echo | openssl s_client -connect localhost:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate
sudo certbot renew --dry-run
Det första kommandot ger slutdatum för det certifikat som levereras för det namnet, det andra kontrollerar att förnyelsen går igenom utan att invänta den riktiga fristen. Det lönar sig att gå igenom alla namn servern betjänar, inte bara huvuddomänen: det man glömmer är som regel underdomänen som lades till senare.
Disk: en kontroll
df -h
df -i
Två kommandon, eftersom utrymme och filposter tar slut oberoende av varandra. På de flesta servrar slår det andra i taket först — miljontals småfiler i PHP-sessioner eller i en applikationscache ger IUse% på 100 med gigabyte kvar. Om båda fallen har vi en egen text.
Vad som är fel med den här listan
Listan är riktig, men har en egenskap: den kräver att någon kommer ihåg den. En kvart i veckan är inte mycket, så länge servern är en och så länge det finns anledning. Efter två lugna månader hoppas rundan över, och att jailet stannat får man veta av någon annans loggar.
Därför samlade vi precis dessa tolv kontroller i en separat, kostnadsfri panel — Arcivéo FREE. Den installeras med ett kommando, kör på din egen server, skickar ingenting till oss och kräver ingen registrering. En insamlare körs via cron var femte minut och skriver samma saker till en lokal databas: SSH-inloggningar och avvisade anslutningar, tillståndet för UFW och fail2ban, väntande säkerhetsuppdateringar, certifikatens frister, diskutrymme. Historiken omfattar sju dagar, gränssnittet finns på 34 språk. Priset är noll, även på en arbetsserver: licensen tillåter installation på egna maskiner, företagets maskiner inräknade, och tillåter inte att den säljs vidare eller drivs som en tjänst för andras servrar.
Den kostnadsfria utgåvans stack är blygsam: den installerar och aktiverar UFW och fail2ban och visar därefter tillståndet. ModSecurity, Suricata, AIDE och de övriga modulerna finns inte där, de hör till den betalda. Men för att sluta bära den veckovisa rundan i huvudet räcker den. Hur samma data ser ut i den fullständiga panelen visar demosidorna nedan.