Apa cara paling aman untuk memungkinkan pengguna membaca akses ke file log?

21

Aplikasi saya memerlukan akses baca /var/log/messages, yang milik pengguna dan grup root. Apa tingkat paparan minimal yang diperlukan /var/log/messagesagar aplikasi saya dapat membacanya?

Saat ini, rencana saya adalah mengubah kepemilikan grup /var/log/messagesmenjadi grup baru, dan menambahkan root dan pengguna aplikasi saya ke dalamnya, tetapi ini juga akan memberikan hak istimewa menulis aplikasi /var/log/messages.

OS: Centos 5.5

gAMBOOKa
sumber

Jawaban:

7

Tidak perlu menambahkan root ke grup karena akan memiliki akses melalui privasi pengguna, berikan saja grup membaca apa pun grup yang Anda putuskan. Ingat untuk membuat perubahan dengan logrotate juga atau perubahan grup akan dihapus setiap malam.

rfelsburg
sumber
Di mana skrip logrotate berada?
gAMBOOKa
1
/etc/logrotate.d/ adalah folder untuk skrip logrotate yang rusak. / var / log / messages ada di /etc/logrotate.d/syslog. Anda perlu memindahkan / var / log / messages ke file itu sendiri di dalam /etc/logrotate.conf dan kemudian menggunakan sesuatu seperti 'create 0640 root new_group' beri tahu untuk membuat file dengan benar.
rfelsburg
Anda perlu memindahkan / var / log / pesan ke file itu sendiri di dalam /etc/logrotate.d/
Massimo
17

Hanya untuk sedikit memperluas jawaban di atas di sini adalah kasus penggunaan dunia nyata. Saya menjalankan aplikasi analisis log perusahaan Splunk pada kotak Redhat. Ini berjalan di bawah pengguna splunk dan grup splunk. Ini mencegah splunk mengakses log di / var / log karena hanya dapat diakses oleh root (atau admin sudo)

Untuk memungkinkan akses hanya baca untuk splunk saja, saya telah menggunakan beberapa ACL dan modifikasi logrotate untuk bertahan.

Anda dapat secara manual mengatur ACL dengan

sudo setfacl -m g:splunk:rx /var/log/messages

Ini tidak akan bertahan karena logrotate tidak akan menerapkan kembali pengaturan ACL jadi untuk solusi yang lebih permanen saya menambahkan aturan untuk logrotate untuk mengatur ulang ACL. Saya menambahkan file ..

/etc/logrotate.d/Splunk_ACLs

dengan

{
    postrotate
        /usr/bin/setfacl -m g:splunk:rx /var/log/cron
        /usr/bin/setfacl -m g:splunk:rx /var/log/maillog
        /usr/bin/setfacl -m g:splunk:rx /var/log/messages
        /usr/bin/setfacl -m g:splunk:rx /var/log/secure
        /usr/bin/setfacl -m g:splunk:rx /var/log/spooler
    endscript
}

Periksa status ACL file dengan

$ getfacl /var/log/messages

Untuk info lebih lanjut tentang ACL, lihat https://help.ubuntu.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/

nick fox
sumber
juga diposting ke splunk jawaban answer.splunk.com/answers/4253/…
nick fox
1
Perhatikan bahwa splunk tidak memerlukan izin eksekusi pada file log, cukup baca.
rojs
@nickfox Apakah itu seluruh konten /etc/logrotate.d/Splunk_ACLsyang Anda posting di sana? Anda sebenarnya tidak perlu menentukan jalur untuk logrotate untuk memproses bit postrotate?
Dale Anderson
hmmm Jangan berpikir begitu. Saya tidak ingin memodifikasi konfigurasi logrotate yang ada untuk log sistem dan saya juga tidak ingin menggantinya dengan saya sendiri. Dengan cara ini modifikasi khusus untuk splunk ada secara independen. Mengizinkan Anda untuk menggunakan paket atau boneka dll. Untuk itulah direktori /app.d/. Tentu saja saya bisa salah, itu lebih dari setahun yang lalu sejak saya melakukan itu
nick fox
1
Hanya sebuah catatan yang menunjukkan bahwa jika Anda menggunakan opsi X (seperti dalam huruf kapital X daripada x) itu akan menambahkan eksekusi hanya jika file tersebut adalah direktori atau sudah memiliki izin eksekusi untuk beberapa pengguna
steoleary
5

Rencana Anda dapat diterima dan dalam skema izin Unix "tradisional" adalah cara terbaik untuk melangkah.
Opsi lain adalah meminta syslog mengalihkan pesan-pesan yang menarik ke file lain (yang menghindari memberikan pengguna akses aplikasi ke hal-hal sensitif yang mungkin ada /var/log/messages).

Jika Anda merasa tidak terikat oleh skema izin tradisional Pengguna / Grup / Lainnya, Anda juga dapat menggunakan POSIX ACL (lainnya, mungkin info / info yang lebih baik tersedia melalui Google) untuk memberikan akses baca-saja bagi pengguna aplikasi Anda ke /var/log/messages- ini sedikit lebih halus dan tidak beresiko menempatkan orang lain dalam kelompok aplikasi dan memberi mereka akses ke hal-hal yang seharusnya tidak dapat mereka lihat.

voretaq7
sumber
2

Yip Saya sudah terbiasa setfaclmelakukan ini untuk memberikan akses ke mail.logfile untuk pelanggan, tidak Anda juga perlu menempel perintah di logrotate.conffile untuk mengatur ulang ACL setelah log diputar misalnya::

postrotate
         /usr/bin/setfacl -m o::r /var/log/mail.log  
endscript

Catatan Saya baru saja mengatur ini, dan belum diuji, tetapi meskipun itu akan dikirim kembali ke sini, tidak bisa melihat mengapa itu tidak berhasil, seseorang memperbaiki saya jika saya salah.

Mat
sumber
0

Anda dapat menggunakan ACL untuk ini. Ini memungkinkan Anda untuk mengatur aturan akses tambahan khusus untuk pengguna dan file tertentu.

Landonz
sumber
-1

setelah Anda mengonfigurasi ACL Anda seperti kata orang lain, alih-alih meletakkan semua aturan acl Anda dalam konfigurasi postrotate, Anda dapat swith logrotate untuk menggunakan copytruncate alih-alih membuat file log baru setiap kali

Skullone
sumber