Mengapa syslog pengguna?

15

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 syslogbisa menjadi pengguna?

Alice
sumber
6
Saya yakinkan Anda bahwa ada lebih dari satu pengguna di sistem Anda. Saya tahu maksud Anda "pengguna manusia yang terkait dengan akun dan direktori home" tetapi gagasan tentang "pengguna" untuk semua sistem lebih luas dari itu.
Lihatlah /etc/passwdkapan-kapan. Saya menghitung 36 pengguna peran, tidak termasuk root. Juga, coba man users--Anda berasumsi (tidak benar) apa yang dilakukan perintah.
chrylis -pada mogok-

Jawaban:

26

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/passwduntuk 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.

Rinzwind
sumber
Angka itu tidak selalu 1000 sekalipun. Saya telah bekerja pada sistem yang memiliki sejarah yang cukup panjang sehingga ID pengguna nyata mulai dari 20.
kasperd
1
Saya tahu tetapi Ubuntu selalu dimulai pada 1000. Redhat misalnya dimulai pada 500.
Rinzwind
Ya, tetapi pengguna tidak harus dibuat secara lokal. Dalam kasus saya, mereka diterima melalui NIS, hari ini mungkin LDAP.
kasperd
Pengguna nyata mulai dari 20 serius akan merusak distro berbasis Debian. UID 0-99 pada sistem berbasis Debian dialokasikan secara statis oleh proyek Debian untuk penggunaan khusus.
Peter Green
1
@ PaddyLandau / bin / false akan keluar dari login tanpa memberi tahu. nologin akan menampilkan pesan "Akun ini saat ini tidak tersedia." (/etc/nologin.txt memegang pemberitahuan ini)
Rinzwind
8

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 usersperintah 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/passwdatau menggunakan metode lain yang dijelaskan di sini untuk mendapatkan daftar semua pengguna (manusia dan sistem) di sistem Anda.

Hans-Jakob
sumber
7

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/logfolder.

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.

AtomiX84
sumber