Setelah sebuah insiden, log akses memuat semuanya: apa yang diminta, kapan, dari mana, dan apa jawaban server. Masalahnya tidak pernah kekurangan data, melainkan sejuta baris data. Perintah-perintah ini memangkasnya.

Siapa yang paling banyak meminta

sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Apa yang mereka minta

sudo grep " 203.0.113.42 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -30

Pemindaian terlihat jelas dalam daftar ini: puluhan jalur, masing-masing diminta sekali, sebagian besar 404. Manusia yang sedang menjelajah sama sekali tidak seperti itu.

Apa yang BERHASIL, dan itulah pertanyaan sebenarnya

sudo awk '$9 ~ /^(200|301|302)$/ {print $1, $7}' /var/log/nginx/access.log \
  | grep -E 'wp-login|xmlrpc|/admin|\.php' | sort | uniq -c | sort -rn | head -20
Dinding berisi 404 hanyalah kebisingan. Angka 200 pada jalur yang tidak Anda kenali adalah baris tempat Anda berhenti — terutama POST ke sebuah berkas di dalam direktori unggahan.

Hanya permintaan POST

sudo awk '$6 ~ /POST/ {print $1, $7, $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Kapan itu terjadi

sudo grep "203.0.113.42" /var/log/nginx/access.log | awk -F'[\\[\\]]' '{print $2}' | cut -d: -f1-2 | uniq -c

Dan wujud unggahan yang berhasil

sudo awk '$7 ~ /uploads/ && $9 == 200 {print}' /var/log/nginx/access.log | grep -i '\.php' | head
Salin log ke tempat lain sebelum Anda mulai. Rotasi sedang berjalan, dan server yang sibuk bisa menimpa buktinya dalam sehari — biasanya tepat sebelum Anda tahu apa yang harus dicari.