# Peidetud cron-tööde tuvastamine tagauksena

> Cron-töö tagaukse tuvastamine: kontrollige kõiki ajastatud ülesannete kohti Linuxis, tõlgendage kahtlasi kirjeid ja kindlustage leiud enne kustutamist.

Allikas: https://phpsos.de/et/blog/cronjobs-als-hintertuer/  
Seis: 25.10.2026  
Pakkuja: PHP SOS, PHP hädaabi ja serveri turvalisus. Kohene abi WhatsAppis: https://wa.me/491736494914?text=Tere%2C%20PHP%20SOS%2C%20vajame%20abi%20oma%20PHP-serveriga.%20Ettev%C3%B5te%3A%20%E2%80%A6%20Veebisait%3A%20%E2%80%A6

**Lühidalt:** Peidetud cron-töö on üks sagedasemaid tagauksi Linuxi serverites: see laadib kahjulikku koodi korrapäraselt juurde või käivitab protsesse uuesti, ka pärast PHP uuendust. Kontrollige kõiki ajastatud ülesannete kohti, mitte ainult `crontab -l`: kõigi kasutajate crontabe, `/etc/crontab`, `/etc/cron.d`, cron-katalooge, systemd taimereid ja at-ülesandeid. Kindlustage leiud enne nende eemaldamist.

## Miks cron-tööd on tagauksena nii armastatud

Pärast edukat sissemurdmist on ründajal probleem: tema ligipääs on habras. Uuendus sulgeb turvaaugu, administraator kustutab veebishelli, taaskäivitus lõpetab protsessi. Cron-töö lahendab selle probleemi. See käivitab käske kindlatel aegadel, ilma et keegi sekkuks, ja taastab nii kaotatud ligipääsud.

PHP2Shelli kohta ei ole kinnitatud kompromiteerimistunnuseid (Indicators of Compromise). Uued cron-tööd kuuluvad meie käsutuses olevate aruannete kohaselt aga veebirakenduste kaudu toimunud sissemurdmiste järgsete üldiste hoiatusmärkide hulka. Kes on juba veebishelle otsinud, peaks ajastatud ülesanded kohe kaasa kontrollima. Järelhoolduse muud sammud loetleb [Kontrollnimekiri pärast häkkimist](https://phpsos.de/et/ratgeber/checkliste-nach-dem-hack/).

## Kus ajastatud ülesanded võivad peituda

Linux tunneb ajastatud ülesannete jaoks mitut mehhanismi. Paljud kontrollid ebaõnnestuvad, sest vaadatakse ainult ühte neist.

| Koht | Debian/Ubuntu | RHEL-perekond | Kes tohib kirjutada |
|---|---|---|---|
| Crontab kasutaja kohta | `/var/spool/cron/crontabs/` | `/var/spool/cron/` | vastav kasutaja |
| Süsteemne crontab | `/etc/crontab` | `/etc/crontab` | root |
| Üksikud failid | `/etc/cron.d/` | `/etc/cron.d/` | root |
| Perioodilised kaustad | `/etc/cron.hourly` kuni `/etc/cron.monthly` | samuti | root |
| systemd taimerid | `/etc/systemd/system/`, kasutaja unitid | samuti | root, osaliselt kasutaja |
| at-ülesanded | `atd` järjekord | samuti | kasutaja, kui lubatud |

Veebiserverite jaoks oluline: veebiserveri kasutaja saab üldjuhul luua oma crontabi ilma root-õigusteta. Ründaja, kellel on `www-data` õigused, ei vaja selleks seega täiendavat turvaauku. Kirjed kataloogis `/etc/cron.d` või systemd unitid viitavad seevastu sellele, et ta on saanud root-õigused.

Majutuspaneelid nagu Plesk või cPanel pakuvad ajastatud ülesannete jaoks oma liidest. Selle taga on üldjuhul samuti vastavate süsteemikasutajate crontabid. Kes vaatab ainult liideses, ei tunne seetõttu ära iga kirjet, mis on loodud otse serveris. Kahtluse korral kontrollige mõlemat.

## Nii kontrollite kõiki kohti täielikult

Järgmised käsud ainult loevad. Käivitage need root-na ja kindlustage väljundid kuupäevaga.

```bash
# Kõigi kasutajate crontabide väljastamine
for u in $(cut -d: -f1 /etc/passwd); do
  out=$(crontab -l -u "$u" 2>/dev/null) && printf '### %s\n%s\n' "$u" "$out"
done

# Süsteemsed kirjed ja muutmisajad
cat /etc/crontab
ls -la --time-style=full-iso /etc/cron.d /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

# systemd taimerid ja at-ülesanded
systemctl list-timers --all
atq 2>/dev/null

# Tüüpiliste mustrite otsimine kõigist cron-failidest
grep -rnE "curl|wget|base64|/tmp/|/dev/shm|\| *(ba)?sh" /etc/crontab /etc/cron.* /var/spool/cron 2>/dev/null
```

Kaks nippi väärivad erilist tähelepanu. Mõned kirjed peidavad käsud paljude tühikute taha, nii et need jooksevad redaktoris paremalt pildist välja. Teised kasutavad juhtmärke, mis kuvamisel teksti üle kirjutavad. Käsuga `cat -A` muutuvad sellised märgid nähtavaks:

```bash
cat -A /var/spool/cron/crontabs/www-data 2>/dev/null | less
```

Teine vaatenurk on cron-teenuse protokollid. Paljudes süsteemides märgib cron iga täitmise kasutaja ja käsuga. Nii näete ka kirjeid, mille ründaja on vahepeal eemaldanud, ja tunnete ära, alates millest kahtlane käsk töötab:

```bash
# Veebiserveri kasutaja täidetud cron-käsud (Debian/Ubuntu või systemd päevik)
grep -h "CRON" /var/log/syslog* 2>/dev/null | grep -E "\((www-data|apache|nginx)\) CMD"
journalctl -u cron -u crond --since "2026-10-17" --no-pager 2>/dev/null | grep CMD | head -100
```

## Kuidas cron-tööga tagaust ära tunda

1. **Juurdelaadimine internetist:** allalaadimine, mille tulemus antakse otse shellile.
2. **Kodeeritud sisu:** pikad märgijadad, mis dekodeeritakse alles töö ajal.
3. **Ebatavalised teed:** programmid kataloogides `/tmp`, `/dev/shm`, peidetud kaustades või üleslaadimiskataloogides.
4. **Vale kasutaja:** ülesanded veebiserveri kasutaja all, kuigi rakendus ei vaja ühtegi.
5. **Silmatorkav tempo:** täitmine iga minut või igal taaskäivitusel `@reboot` kaudu.
6. **Sobimatud ajatemplid:** fail muudetud ajavahemikus, mil keegi serveris ei töötanud, näiteks pärast 17. oktoobrit.

Ärge unustage: ka rakendustel on omad ajakavad. WordPress haldab ajastatud ülesandeid näiteks andmebaasis. Kuidas seal kontrollida, kirjeldab [Tagauste leidmine WordPressis](https://phpsos.de/et/ratgeber/backdoor-wordpress-finden/).

> **Oluline:**
> Cron-töö tuleb harva üksi. Kes on loonud ajastatud ülesande, on sageli ka SSH-võtmeid sisse seadnud või faile peitnud. Kontrollige lisaks võtmeid, nagu on kirjeldatud artiklis [Tundmatute SSH-võtmete leidmine](https://phpsos.de/et/blog/ssh-schluessel-pruefen/).

## Leiu kindlustamine, mõistmine, siis eemaldamine

Kahjulik cron-töö on väärtuslik tõendusmaterjal. See näitab juurdelaadimise aadressi, loomise ajahetke ja sageli kasutajat, kelle kaudu ründaja tuli. Kindlustage fail kontrollsumma ja ajatemplitega enne eemaldamist. Ajatempel aitab hiljem kulgu rekonstrueerida; kuidas, näitab [Intsidendi ajajoone koostamine](https://phpsos.de/et/blog/zeitleiste-eines-vorfalls/). Ka võimaliku andmekaitseasutusele teavitamise või kindlustaja jaoks on leid oluline tõend selle kohta, alates millest ründajal ligipääs oli.

Üksi eemaldamisest ei piisa. Kui töötab veel protsess, mis kirje uuesti kirjutab, on see pärast järgmist minutit tagasi. Ja kuni algne turvauk on lahti, saab ründaja igal ajal uuesti alustada. Järjekord on seetõttu: kindlustada, sulgeda põhjus, eemaldada kõik osad, vahetada ligipääsud, jälgida.

## Cron-tööde ennetav kaitsmine

Et cron-töö tagauks üldse ei tekiks või kiiresti silma jääks, aitavad kolm meedet. Esiteks saab kindlaks määrata, millised kasutajad tohivad üldse crontabi luua. Kui fail `/etc/cron.allow` on olemas, tohivad `crontab`-i kasutada ainult seal nimetatud kasutajad. Kui teie rakendus ei vaja veebiserveri kasutaja all cron-tööd, ei kuulu see kasutaja nimekirja. Kontrollige enne, millised ülesanded rakendus tegelikult vajab, ja looge need teadlikult eraldi kasutaja all.

Teiseks tasub failide jälgimine. Terviklikkuse kontrolli tööriist teatab, kui fail cron-kataloogides või kataloogis `/var/spool/cron` muutub. Kolmandaks kuuluvad ajastatud ülesanded serveri dokumentatsiooni: kes teab, millised kirjed peaksid olema, tunneb võõra kohe ära.

## Kuidas PHP SOS konkreetselt aitab?

- **Täielik kontroll:** Uurime kõiki ajastatud ülesannete mehhanisme, ka systemd taimereid, at-ülesandeid ja rakenduste ajakavasid.
- **Leidude hindamine:** Hindame kahtlasi kirjeid neid käivitamata ja tuletame edasisi jälgi.
- **Puhas puhastamine:** [Kahjuliku tarkvara eemaldamisega](https://phpsos.de/et/leistungen/malware-entfernung/) eemaldame kõik osad ja sulgeme põhjuse.
- **Tagasituleku tuvastamine:** Seadistame jälgimise, mis teatab uutest või muudetud ajastatud ülesannetest.


## Korduma kippuvad küsimused

**Miks ründajad cron-töid kasutavad?**  
Cron-töö käivitab käske korrapäraselt ja ilma edasise sekkumiseta. Ründajad laadivad sellega kahjulikku koodi juurde, loovad kustutatud faile uuesti või käivitavad protsesse uuesti. Nii elab nende ligipääs üle uuenduse ja sageli ka pealiskaudse puhastamise.

**Kas crontab -l kontrolliks piisab?**  
Ei. crontab -l näitab ainult praeguse kasutaja crontabi. Ajastatud ülesanded asuvad lisaks teiste kasutajate crontabides, failis /etc/crontab, kataloogis /etc/cron.d, cron.daily kaustades, systemd taimerites ja at-ülesannetes.

**Kuidas tunda ära kahjulik cron-töö?**  
Tüüpilised on allalaadimised internetist koos otsese käivitamisega, kodeeritud märgijadadega käsud, programmid ajutistes kaustades, ülesanded veebiserveri kasutaja all ja kirjed, mis töötavad iga minut. Üksik tunnus on vihje, mitu koos tõsine kahtlus.

**Kas kahtlased cron-tööd võib lihtsalt kustutada?**  
Esmalt kindlustage, siis eemaldage. Kirje reedab sageli päritolu, juurdelaadimise aadressi ja muud osad. Ilma selgitamata, kuidas see tekkis, loob ründaja selle sageli uuesti.

## Allikad

- [BSI: Saksamaa föderaalne infoturbeamet](https://www.bsi.bund.de/)
- [BSI IT-Grundschutz](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
