Latihan terkait keamanan:
Untuk keamanan ekstra, saya mengaktifkan akuntansi Unix tradisional ( acct
). Ini dapat membantu menyelidiki aktivitas yang mencurigakan setelah fakta.
Menurut halaman manual /var/log/account
adalah direktori yang berisi pacct
file (proses akuntansi) yang berisi proses data akuntansi sebagaimana ditulis oleh kernel, mungkin untuk setiap proses yang exit
diedit saat akuntansi aktif. Nama perintah terpotong menjadi 15-karakter (ini tampaknya sedikit bug: man 5 acct
menunjukkan #define ACCT_COMM 16
tidak termasuk karakter tambahan untuk mengakhiri NULL dalam struct, tapi saya melihat maksimal 15 karakter bukan 16).
Ketika saya menjalankan lastcomm
yang mengonversi pacct
file terbaru ke bentuk yang dapat dibaca manusia, saya mendapatkan beberapa baris di mana kolom 1 (paling kiri) bukan perintah yang jelas (nama file yang dapat dieksekusi pada disk) bahkan ketika saya mengabaikan karakter di luar 15- batas char. Berikut ini beberapa contohnya:
kworker/dying
handle-watcher-
WorkerPool/28
ScriptStreamerT
Compositor
CompositorTileW
Chrome_ChildIOT
Beberapa di antaranya terlihat seperti nama utas kernel. Ada lebih banyak utas yang dapat saya lihat sedang berjalan (misalnya dalam top
) yang tidak muncul dalam daftar ini. Saya berasumsi yang hilang adalah proses berjalan lama yang tidak pernah exit
diedit sejak acct
diaktifkan.
Pertanyaan: Dapatkah seseorang menjelaskan apa saja dari proses di atas yang tidak dihitung?
Untuk referensi, berikut adalah skrip bash untuk mencantumkan perintah yang tidak ditemukan pada disk, jadi Anda dapat menjalankannya sendiri (pastikan untuk menjalankannya sudo updatedb
terlebih dahulu)
#!/bin/bash
fullpath_of_cmd() {
# cmd may be truncated to a max of 15 chars (see "man 5 acct")
cmd="$1"
# Search for any file matching this prefix
# (assumes locate db is up to date)
paths=$(locate "/$cmd")
echo "$paths"
}
for cmd in $(lastcomm | cut -d' ' -f1 | sort -u); do
# echo === $cmd
paths=$(fullpath_of_cmd "$cmd")
case "$paths" in
(*/$cmd*) : cool, found it ;;
(*) printf "%s -> NOT FOUND (%s)\n" $cmd $paths ;;
esac
done
sumber