Ketika saya memeriksa /var/log
, saya menemukan sesuatu yang sangat aneh
me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r----- 1 syslog adm 19919118 Jan 15 16:55 auth.log
-rw-r----- 1 syslog adm 139702302 Jan 15 16:55 syslog
-rw-r----- 1 syslog adm 191122 Jan 15 16:55 mail.log
-rw-r----- 1 syslog adm 2210432 Jan 15 16:32 kern.log
-rw-r--r-- 1 root root 1741863 Jan 15 14:22 dpkg.log
Perhatikan bahwa pemilik dari empat file log pertama adalah syslog
. Ini aneh, karena hanya ada satu pengguna di sistem saya:
me@me~$ users
me
Mengapa nama file syslog
bisa menjadi pengguna?
/etc/passwd
kapan-kapan. Saya menghitung 36 pengguna peran, tidak termasuk root. Juga, cobaman users
--Anda berasumsi (tidak benar) apa yang dilakukan perintah.Jawaban:
Ini berkaitan dengan keamanan dan izin untuk mengakses sistem Anda.
Dan tidak, Anda memiliki lebih banyak pengguna daripada hanya pengguna Anda sendiri. Ada "root", "daemon", "bin", "game", "tidak ada", dan "daftar".
Lakukan
more /etc/passwd
untuk daftar pengguna di sistem Anda. Anda akan melihat banyak baris dengan "/ usr / sbin / nologin". Itu berarti mereka tidak dapat digunakan sebagai pengguna normal dengan login seperti yang dilakukan pengguna Anda sendiri. Kolom ketiga adalah ID pengguna. Semua ID pengguna di bawah 1000 adalah pengguna semu. Pengguna sudo pertama Anda (yang menginstal sistem) memiliki 1000 secara default.Pada dasarnya syslog pengguna diizinkan untuk menggunakan
/var/log/
direktori yang ditetapkan sebagai direktori yang dimiliki oleh root . Agar tidak harus berkompromi dengan izin pada direktori (yaitu, turunkan izin sehingga pengguna lain dapat menggunakannya), pengguna ini dibuat.Hal yang sama dilakukan dengan pengguna untuk Apache dan MySQL (Anda akan melihat pengguna dan grup www-data dan pengguna dan grup MySQL ketika Anda menginstal ini), tetapi digunakan untuk banyak hal. Ada grup "dialout" yang digunakan untuk mengakses perangkat ke luar. Pengguna ditambahkan ke grup ini untuk memungkinkan pengguna menggunakan perangkat ini. Kalau tidak, Anda akan mendapatkan kesalahan izin ditolak. Ini berfungsi dua cara: menolak akses pengguna berarti menghapus grup.
sumber
Layanan syslog, yang menulis pesan log yang dibuat oleh kernel dan oleh layanan lain ke berbagai file log, konsol, dan / atau tujuan lain, berjalan di bawah akun pengguna khusus miliknya sendiri. Begitu juga banyak layanan lainnya. Ini untuk menerapkan prinsip privilege paling tidak :
Untuk meminimalkan dampak yang mungkin terjadi dari layanan yang dikompromikan atau rusak (mis. Layanan yang memiliki bug yang kemudian dieksploitasi oleh penyerang, atau layanan yang memiliki bug yang menyebabkannya melakukan hal-hal yang tidak diinginkan secara acak, atau layanan yang telah sengaja dirancang oleh pengembang ganas untuk melakukan hal-hal buruk), Anda ingin setiap layanan memiliki akses hanya ke apa yang diperlukan untuk operasinya dan tidak ada yang lain.
Pada sistem operasi mirip-unix (yang mencakup semua distribusi GNU / Linux seperti Ubuntu), Anda dapat dengan mudah menetapkan hak istimewa (yang sebagian besar adalah hak untuk membaca dan / atau menulis dari / ke file tertentu atau hal-hal seperti file seperti node perangkat) berdasarkan pengguna dan grup. Ada kemungkinan lain, tetapi seringkali lebih membosankan dan rentan kesalahan untuk diatur, atau hanya berfungsi dalam konteks tertentu.
Jadi, layanan syslog berjalan di bawah akun pengguna syslog. Jika sekarang, misalnya, seorang penyerang bisa mendapatkan layanan syslog untuk melakukan apa yang mereka katakan, bukan apa yang seharusnya, layanan syslog masih dibatasi (diberlakukan oleh kernel berdasarkan akun pengguna, tidak ditegakkan oleh syslog perangkat lunak itu sendiri, yang akan sia-sia karena dikompromikan) untuk menulis hanya ke file log (satu-satunya file yang memiliki akses menulis pengguna syslog). Dengan demikian, penyerang tidak dapat menggunakan layanan syslog yang dikompromikan untuk misalnya mengubah konten situs web atau database yang dihosting di komputer yang sama, karena file yang relevan diatur untuk dapat ditulis hanya oleh beberapa set tertentu (manusia atau sistem ) pengguna tertentu akun, bukan oleh akun pengguna syslog.
Untuk menyebabkan lebih banyak kerusakan daripada hanya menghapus / memodifikasi file log dan membaca file "publik" (dengan izin "baca" untuk semua orang), penyerang harus terlebih dahulu mengeksploitasi bug kedua, baik dalam kernel atau dalam beberapa perangkat lunak yang diinstal untuk dijalankan dengan hak istimewa berbeda dari pengguna yang memintanya ( setuid ), dan dengan demikian mendapatkan hak istimewa tambahan ( eskalasi hak istimewa ).
The
users
perintah yang Anda digunakan, menurut halaman manual , menunjukkan hanya pengguna yang sedang login . Karena pengguna syslog adalah pengguna sistem , itu tidak akan pernah masuk, sehingga tidak akan pernah muncul dalam daftar ini. Anda dapat melihat ke dalam file/etc/passwd
atau menggunakan metode lain yang dijelaskan di sini untuk mendapatkan daftar semua pengguna (manusia dan sistem) di sistem Anda.sumber
Karena syslog bukan file; itu adalah daemon yang digunakan oleh sistem untuk menyimpan daemon sistem dan pesan aplikasi (debug, kesalahan, peringatkan, dan info) ke file.
Baca di sini untuk sejarah singkat syslog.
Dalam distribusi lain, misalnya yang didasarkan pada Red Hat Linux, output syslog untuk sistem disimpan dalam file bernama
/var/log/messages
. Itu tergantung konfigurasi.Seperti yang dikatakan Rinzwind, untuk alasan keamanan berbagai komponen dalam sistem operasi dijalankan dengan pengguna tertentu, dan setiap pengguna memiliki haknya sendiri. Misalnya, syslog setidaknya memiliki izin menulis di
/var/log
folder.Suatu sistem memiliki banyak layanan, dan biasanya ada pengguna untuk setiap layanan atau untuk sekelompok kecil layanan. Sebagai contoh
apache get www-data|httpd|apache
,. Biasanya pengguna daemon ini tidak mendapatkan akses Bash untuk menghindari kebocoran keamanan.sumber