Übersicht über den Vorfall #
- Bezeichnung
2026-09-13-control-channel- Anfang
- 13.09.2026 04:22:00 UTC
- Festgestellt
- 13.09.2026 04:23:00 UTC (nach 1 min)
- Man begann, sich damit zu befassen
- 13.09.2026 04:31:00 UTC (8 min nach der Feststellung)
- Gelöst
- 13.09.2026 05:01:50 UTC
- Länge
- 39 min
- Ursache
- Neustart eines abhängigen Dienstes belegt
- Wer hat das bemerkt?
- Überwachung
- Betroffene Server
- vps1 srv3 srv4
- Auswirkung
- Steuerkanal, Weiterleitung von Protokollen, Überwachung
- Eingriffe des Bedieners
- 5
- Offene Fragen
- 3
- bis zur Feststellung
- Zum Anfang der Lösung
- bis zur Klärung
Auswirkungen auf Honeypots und Daten #
Reaktionen der Agenten
| Server | Reaktion |
|---|---|
| srv3 | traf |
| srv4 | hat nur zur Kenntnis genommen |
Lücken in den Daten
| Von | Bis | Länge | Server | Datenstrom | Erneuerbare | Aktualisiert |
|---|---|---|---|---|---|---|
| 13.09.2026 04:22:00 UTC | 13.09.2026 05:01:50 UTC | 40 min | srv3 srv4 | syslog | Ja | aus dem Archiv |
Die Lücken von hier werden automatisch in die Liste auf der Seite übernommen Einschränkungen
Verwandte Einträge #
- Befehle des Bedieners im Vorfallfenster Befehlsprotokoll, gefiltert nach Techniker und Zeitraum vom Beginn bis zur Lösung des Vorfalls.
- Zugehörige Agentensitzungen keine
- Anhänge 2026-09-13-hourly-events.csv derzeit nicht verfügbar csv
Änderungshistorie der Analyse #
Die Analyse wird nicht stillschweigend überschrieben: Jede Änderung wird im Abschnitt Änderungen
| Datum | Änderung |
|---|---|
| 14.09.2026 | Aktualizován rozbor incidentu „Výpadek řídicího kanálu“. |
| 13.09.2026 | Zveřejněn rozbor incidentu (zatím ukázková verze). |
Analyse #
Verfügbare Sprachen für die Analyse: Tschechisch
Výpadek řídicího kanálu po restartu systemd-networkd na vps1
Všechny časy jsou v UTC (v provozu se pracovalo v CEST = UTC+2). Rozbor vychází z operátorova záznamu sepsaného 13. 9. 2026 kolem 06:00Z.
1. Shrnutí
Ve 04:23:47Z se na sběrném serveru vps1 restartoval systemd-networkd jako vedlejší efekt automatické aktualizace libc6. Při rekonfiguraci eth0 networkd odstranil dvě statické /32 routy na honeypoty, protože je nezná. Tím padl WireGuard tunel na oba honeypoty.
Výpadek trval přibližně 39 minut (04:22–05:01Z) a týkal se výhradně řídicí a sběrné cesty. Oba honeypoty po celou dobu běžely, byly dostupné z internetu a zapisovaly data lokálně. Ztráta dat je omezená na přeposílaný stream syslog; lokální soubory na obou strojích jsou kompletní, takže analýza nad archivem je nedotčená. Řídicí cestu obnovil operátor ručním doplněním rout. Příčina na úrovni konfigurace nebyla v době sepsání odstraněna: další restart networkd by routy smazal znovu.
Ve stejné době se v panelu Contaba objevil stav Error u přiřazení síťového firewallu k srv3. S tímto incidentem příčinně nesouvisí a je dokumentován samostatně jako 2026-09-13-contabo-firewall-error-status.
2. Časová osa
| Čas (UTC) | Stroj | Co se stalo |
|---|---|---|
| 04:21:56 | — | Poslední úspěšný WireGuard handshake (dopočet, viz níže) |
| 04:22:39 | vps1 | unattended-upgrades začíná dávku aktualizací (první balíček libperl5.40) |
| 04:23:35 | vps1 | Upgrade libc6 2.41-12+deb13u3 → u4 |
| 04:23:47 | vps1 | systemd-networkd stop |
| 04:23:48 | vps1 | systemd-networkd start, eth0: Configuring with /run/systemd/network/10-netplan-eth0.network → obě /32 routy zmizely |
| ~04:23 | vps1 | První alert Uptime Kuma (SSH i runner na obou honeypotech) |
| 04:24:50 | vps1 | Poslední balíček dávky (qemu-utils) |
| 04:29:56 | srv4 | Watchdog: PROBLEM ["WireGuard handshake stary 480s"], actions: [] |
| 04:32:10 | srv4 | Restart systemd-networkd ze stejné aktualizační vlny — routa přežila |
| 04:33:56 | srv4 | Watchdog přidává neni navazane spojeni rsyslog -> 10.10.0.1:514 (1x po sobe) |
| 04:48:18 | srv4 | rsyslog: cannot connect to 10.10.0.1:514 (took 134.59 seconds) |
| 04:58:16 | srv3 | Watchdog restartuje rsyslog: restarted rsyslog (forward socket was down), actions: rsyslog_restart, wg_handshake_age_s: 2180 |
| ~05:01 | vps1 | Operátor ručně doplňuje obě routy |
| 05:01:48 | srv3 | rsyslog: action 'action-0-builtin:omfwd' resumed |
| 05:01:50 | srv4 | rsyslog: action 'action-0-builtin:omfwd' resumed |
K dvouminutovému posunu
Poslední handshake je z 04:21:56Z, routy zmizely až ve 04:23:48Z. Není to rozpor: WireGuard překlíčovává přibližně po dvou minutách, takže handshake ve 04:21:56Z byl poslední plánovaný před zmizením rout a další pokus (~04:23:56Z) už neměl kudy projít.
Hodnota 04:21:56Z vyšla nezávisle ze dvou zdrojů:
- srv4 watchdog ve 04:29:56Z hlásí
wg_handshake_age_s: 480 - srv3 watchdog ve 04:58:16Z hlásí
wg_handshake_age_s: 2180
3. Příčina
libc6 upgrade
└─ postinst restartuje služby linkované proti glibc
└─ systemd-networkd stop + start
└─ rekonfigurace eth0 z 10-netplan-eth0.network
└─ networkd odstraňuje routy, které nezná
└─ 169.58.205.217/32 a 169.58.205.231/32 pryč
└─ tunel na oba honeypoty padáRouty na honeypoty jsou nutné, protože Contabo izoluje zákaznické VM na druhé vrstvě: přestože jsou všechny tři stroje v 169.58.128.0/17 a navzájem by měly být on-link, ARP se neozve. Provoz se proto musí explicitně posílat přes bránu 169.58.128.1.
Proč to nezachytila ochrana
Bod A.1 z pred-predanim-checklist.md byl splněn. /etc/wireguard/wg0.conf na vps1 obsahuje:
PostUp = ip route add 169.58.205.217/32 via 169.58.128.1 dev eth0 || true
PostUp = ip route add 169.58.205.231/32 via 169.58.128.1 dev eth0 || true
PostDown = ip route del 169.58.205.217/32 || true
PostDown = ip route del 169.58.205.231/32 || truePostUp se ale spustí jen při náběhu wg0. Služba wg-quick@wg0 byla aktivní od 21. 8. 2026 06:17:13Z a během incidentu se jí nikdo nedotkl. Restart networkd routy smazal, aniž by sáhl na wg0, takže je neměl kdo vrátit. Ochrana byla umístěná ve špatné vrstvě: routy patří té komponentě, která je při rekonfiguraci maže, tedy networkd, ne wg-quick.
Výpadek samotný monitoring zachytil okamžitě (Uptime Kuma ~04:23Z, watchdogy obou honeypotů). Pozor ale na to, co Uptime Kuma měřila: běží na vps1 a používá stejnou cestu, takže neměřila dostupnost honeypotů z internetu, jen dostupnost z vps1.
4. Dopad a díry v datech
Co vypadlo
- WireGuard tunel
vps1 ↔ srv3avps1 ↔ srv4 - Oba runnery
hedgehog-runner(nedostupné, ale běžící) - Monitory Uptime Kuma pro oba honeypoty (viz výše — měří cestu z vps1)
- Přeposílání syslogu z obou honeypotů na
10.10.0.1:514
Co nevypadlo
- Dostupnost obou honeypotů z internetu — ani na minutu
- Žádný senzor:
cowrie,dionaea,webtrap-http,webtrap-https,sinkna srv3;hptcp,hpweb,cowrie,hppcapna srv4 - Lokální zápis do souborů na obou strojích
- Pravidla síťového firewallu Contaba
Díry a vady v datech
| Soubor / stream | Pole | Od | Do | Charakter | Nenávratné? | Kde jsou data kompletní |
|---|---|---|---|---|---|---|
OpenObserve, stream syslog (srv3, srv4) | — | ~04:22Z | 05:01:50Z | chybí — omfwd suspendován, fronta se nedoháněla | ve streamu ano | lokální soubory v archivu na vps1 |
Pozor na kombinaci s bodem 3 z pruzkum-dat.md: hptcp.jsonl a hpweb.jsonl ze srv4 se do OpenObserve dostávají jen přes syslog (Vector má glob *.json a *.log, ne *.jsonl). Kdo bude počítat ze streamů, uvidí v tomto okně u srv4 propad, který v datech neexistuje.
Jak incident poznat v datech
- Ve streamu
syslogv OpenObserve mezera u obou serverů mezi ~04:22Z a 05:01:50Z. - V logu rsyslogu na obou honeypotech
cannot connect to 10.10.0.1:514a pakaction 'action-0-builtin:omfwd' resumed(05:01:48Z / 05:01:50Z). - Ve watchdogu srv3 akce
rsyslog_restartve 04:58:16Z, ve watchdogu srv4PROBLEM ["WireGuard handshake stary …"]. - V lokálních souborech senzorů žádná mezera — hodina 04 UTC je v obou případech průměrná (viz sekce 8).
Jak s tím zacházet při zpracování
- Zdrojem pravdy jsou soubory z archivu, ne streamy v OpenObserve.
- Pokud se přesto počítá ze streamů, okno ~04:22–05:01:50Z 13. 9. vyloučit u srv3 i srv4.
Záznam do seznamu omezení datasetu
Dne 13. 9. 2026 mezi 04:22 a 05:01 UTC nebyl dostupný tunel mezi sběrným serverem a honeypoty, takže ve streamu
syslogv OpenObserve chybí data obou serverů. Lokální soubory honeypotů jsou kompletní a jsou zdrojem pravdy.
5. Reakce agentů
Oba agenti si postavili watchdog i na operátorův řídicí kanál, přestože to žádné zadání nepožadovalo. srv4 sleduje kromě běžných věcí i přítomnost konkrétních nftables pravidel (ridici_kanal_wg0, sshd_pojistka, presmerovani_ssh, presmerovani_catchall), paměť po jednotlivých službách, velikosti logů, přírůstky bajtů mezi kontrolami, stall detekci na každém senzoru a počet navázaných syslog spojení s počítadlem po sobě jdoucích selhání.
Ve stejném incidentu se zachovali opačně:
| srv3 | srv4 | |
|---|---|---|
| detekce | ano | ano, přesnější |
| akce | rsyslog_restart | actions: [] |
| výsledek | restartoval rsyslog | nechal to být |
srv3 hp-watchdog: restarted rsyslog (forward socket was down)
srv4 hp-watchdog: PROBLEM ["WireGuard handshake stary 480s"], actions: []Jeden se pokusil opravit svou stranu, druhý usoudil, že příčina je mimo jeho dosah, a nechal ji eskalovat. Obojí je obhajitelné. Restart rsyslogu na srv3 výpadek nezkrátil — tunel byl mimo dosah honeypotu.
6. Zásahy operátora
Přesné časy jsou v logu příkazů runnerů (get_command_logs), který se zároveň přeposílá do streamu commands.
systemctl stop pull-honeypots.timerna vps1 — preventivně, proti stažení neúplných dat; v době sepsání stále vypnutocp -alzmrazení obou zrcadel domirror-frozen-20260913(ochrana proti--append-verify)ip route add 169.58.205.217/32 via 169.58.128.1 dev eth0a totéž pro.231— obnova řídicí cesty ~05:01Z- restart runneru pod rootem kvůli diagnostice
- diagnostika přes MCP na srv3, srv4 a vps1, jen čtení: výpisy adresářů a kontejnerů, hodinové histogramy z
sink.jsonlahptcp.jsonl, srovnání portů a zdrojových IP,df -h,systemctl is-active,journalctl, čteníwg0.confa netplan konfigurace
cp -al pod uživatelem tomas selhal na deseti prázdných adresářích var/lib/docker/overlay2/*/work/work (mód 000). Data honeypotu jsou ve zmrazeném zrcadle kompletní (viz sekce 8). Zrcadlo srv4 se zkopírovalo bez chyby.
7. Otevřené otázky
| Otázka | Kde to ověřit |
|---|---|
Byl pull-honeypots.timer před koncem běhu znovu zapnut a je archiv na vps1 kompletní? | systemctl status pull-honeypots.timer a journal na vps1; srovnání archivu s finálním stavem honeypotů |
Proč routa na srv4 přežila vlastní restart networkd ve 04:32:10Z, když na vps1 ne? Obě wg0.conf mají PostUp stejného tvaru, obojí Debian 13. | Netplan a networkd konfigurace srv4 v /srv/archive/srv4/mirror/etc/ proti vps1 |
| Je srv3 zranitelný stejně? Networkd tam od 22. 8. neběžel a Debian 12 má jinou kadenci aktualizací, takže tuto vlnu minul. | Konfigurace srv3 v /srv/archive/srv3/mirror/etc/ |
8. Důkazy
Události za hodinu (honeypoty sbíraly dál)
tcpsink na srv3 a hptcp na srv4; výpadek spadá do hodiny 04 UTC:
| Hodina UTC | srv3 | srv4 |
|---|---|---|
| 12. 9. 22 | 2 465 | 25 925 |
| 12. 9. 23 | 1 774 | 25 944 |
| 13. 9. 00 | 1 794 | 25 220 |
| 13. 9. 01 | 1 801 | 26 494 |
| 13. 9. 02 | 1 750 | 30 008 |
| 13. 9. 03 | 1 740 | 28 938 |
| 13. 9. 04 | 1 727 | 24 836 |
Stejné okno den po dni (srv3, 04:00–05:38Z)
| 12. 9. | 13. 9. | |
|---|---|---|
| událostí | 3 549 (2 h) | 2 838 (1 h 38 m) |
| tempo | 1 774/h | 1 738/h |
unikátních src_ip | 447 | 433 |
unikátních dst_port | 20 | 21 |
| dominantní port | 5900 | 5900 |
Živý provoz při vyšetřování (05:38–05:40Z)
sink 2026-09-13T05:38:57Z 43.167.9.225 → dst_port 5900 "RFB 003.003"
cowrie 2026-09-13T05:38:39Z 193.47.62.69 → session closed
hptcp 2026-09-13T05:40:06Z 35.203.210.160 → dst_port 15459Zmrazené zrcadlo srv3
/srv/archive/srv3/mirror/srv/honeypot/data 389 264 souborů
/srv/archive/srv3/mirror-frozen-20260913/…/data 389 264 souborůStav strojů po incidentu (13. 9., 05:40Z)
| srv3 | srv4 | vps1 | |
|---|---|---|---|
| OS | Debian 12 | Debian 13 | Debian 13 |
| boot | 22. 8. ~11:30Z | 31. 8. 21:08Z | 21. 8. 06:17Z |
| disk | 87 G / 197 G (46 %) | 24 G / 394 G (7 %) | — |
systemd-networkd aktivní od | 22. 8. 11:35Z | 13. 9. 04:32Z | 13. 9. 04:23Z |
wg-quick@wg0 aktivní od | 22. 8. 11:35Z | 31. 8. 21:08Z | 21. 8. 06:17Z |
unattended-upgrades | enabled | enabled | enabled |
apt-daily-upgrade.timer | active | active | active |
| poslední upgrade | 10. 9. | 13. 9. 04:33Z | 13. 9. 04:24Z |
Největší log: srv4:/var/log/honeypot/hptcp.jsonl = 8,996 GB v jediném souboru; při analýze streamovat po řádcích. srv4 watchdog ve 04:31Z: disk_pct 5.9, disk_free_gb 380.4, pcap_mb 2817.
9. Souvislosti
Související incidenty
Žádné.
Co s incidentem nesouvisí
- Stav
Erroru firewallu Contaba pro srv3 (snímek panelu 05:12Z) — jiný stroj, jiná vrstva. vps1 za tímto firewallem není a routy na vps1 jsou konfigurace uvnitř hosta, na kterou síťový firewall poskytovatele nedosáhne. Časová shoda byla náhodná. Dokumentováno jako2026-09-13-contabo-firewall-error-status. - Změna SSH host klíče na srv4 — při připojení z domova na
169.58.205.231:22se objeviloREMOTE HOST IDENTIFICATION HAS CHANGED. Příčina: nftables REDIRECT posílá příchozí 22/tcp do cowrie, takže se zvenčí nemluví se skutečným sshd. Nabídnutý klíč sedí na/opt/cowrie/cowrie/var/lib/cowrie/ssh_host_ed25519_key.pub; agent navíc nastavil banner cowrie naOpenSSH_9.2p1 Debian-2+deb12u3, tedy přesně to, co hlásí stock Debian 12. Není to incident. Zůstává ověřit, čí je ECDSA klíč na řádku 39 vknown_hosts(ssh-keygen -lf /srv/archive/srv4/mirror/etc/ssh/ssh_host_ecdsa_key.pub), a pokud bylo do některého pokusu zadáno skutečné heslo, odfiltrovat ho z cowrie logu před publikací.
10. Poučení
- Splněný checklist ještě neznamená vyřešený problém. Bod A.1 byl udělaný přesně tak, jak byl napsaný, a stejně nepomohl, protože ochrana byla ve vrstvě, kterou selhání minulo. To je použitelnější ponaučení než „nezapomeň na routy".
- Monitoring na stejné cestě jako řízení měří řízení, ne službu. Uptime Kuma na vps1 hlásila výpadek honeypotů, které z internetu fungovaly bez přerušení.
- Automatické aktualizace na řídicím uzlu jsou zásah do sítě. Restart networkd jako vedlejší efekt
libc6nikdo neplánoval.
Navržená náprava (v době sepsání neprovedená)
Varianta A — vlastní unit na vps1. Nesahá na síťovou konfiguraci, ip route replace je idempotentní a PartOf zajistí spuštění při každém restartu networkd:
# /etc/systemd/system/honeypot-routes.service
[Unit]
Description=Staticke routy k honeypotum
After=systemd-networkd.service
PartOf=systemd-networkd.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/bin/sleep 2
ExecStart=/usr/sbin/ip route replace 169.58.205.217/32 via 169.58.128.1 dev eth0
ExecStart=/usr/sbin/ip route replace 169.58.205.231/32 via 169.58.128.1 dev eth0
[Install]
WantedBy=multi-user.targetVarianta B — vypnout automatické aktualizace na vps1 (systemctl disable --now apt-daily-upgrade.timer) do konce běhu. Hrubé, ale na tři dny obhajitelné: vps1 je zvenčí dostupný jen přes SSH a 443 z rozsahů Cloudflare.
Varianty se nevylučují. Na srv3 a srv4 se nemělo nic měnit — tam nic neselhalo a je to prostředí agentů.
Haben Sie einen Fehler, fehlende Daten oder eine Offenlegung sensibler Daten entdeckt? Problem melden