Saya menggunakan Zabbix untuk memantau lingkungan saya dan zabbix_agentd
mengeksekusi sebagai pengguna zabbix
skrip khusus setiap 60 detik; digunakan sudo
untuk menjalankan skrip ini sebagai root
.
Dalam /var/log/auth.log
saya melihat setiap 60 detik:
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session closed for user root
Saya ingin menghentikan pesan ini dari membanjiri log saya. Saya menambahkan baris berikut ke /etc/pam.d/sudo
file, segera sebelum session required pam_unix.so
:
session [success=1 default=ignore] pam_succeed_if.so service in sudo quiet uid = 0
dan pesan itu hilang.
Tetapi masalahnya adalah bahwa dengan cara ini saya telah menekan setiap pesan PAM ketika seseorang mengeksekusi skrip dengan sudo
as root
.
Saya ingin menghentikan pesan hanya untuk pengguna zabbix
(tidak semua pengguna lain). sudo
tahu bahwa zabbix
pengguna ingin menjalankan skrip dengan root
hak istimewa dan apakah ada cara untuk memberi tahu PAM itu? Bagaimana saya bisa memberi tahu PAM untuk tidak login untuk pengguna tertentu saat menggunakansudo
?
Catatan : Saya mencoba memfilter pesan di syslog; meskipun ini berfungsi, ia memiliki masalah yang sama seperti di atas, yaitu terlalu membabi buta, karena pesan log tidak menunjukkan pengguna mana yang menjadi root.
sumber
session closed for user root
dan jika saya memfilternya sebenarnya saya memfilter semua pesan. Saya ingin pengguna tertentu yang tidak disebutkan dalam pesan dan saya tidak bisa memfilter dengan namanya ...Jawaban:
Anda sepertinya cukup dekat dengan baris conf PAM Anda:
Melihat halaman manual untuk
pam_succeed_if
, saya pikir Anda ingin menguji bahwa pengguna yang meminta (ruser
) adalahzabbix
.Jadi saya sarankan:
Itu akan menekan tes berikutnya ketika pengguna
zabbix
menjadiroot
(tetapi tidak ada transisi lain). Saya sudah menguji ini dengan sepasang pengguna saya sendiri.Hapus
uid = 0
tes di atas jika Anda ingin tetap diam tentangzabbix
menjadi pengguna apa pun, bukan hanya root.Saya dihapus
service in sudo
tes: berlebihan itu mengingat bahwa baris ini di/etc/pam.d/sudo
.sumber
service in sudo
.[user] : TTY=unknown ; PWD=... ; USER=root ; COMMAND=...
baris dari log, Anda dapat menambahkan ini ke file sudoers.d /:Defaults:[user] !logfile, !syslog
(ganti[user]
jika perlu)/etc/sudoers.d/
- Saya lebih suka menggunakan nama pengguna, grup atau aplikasi yang ini berlaku. Lihat sudo.ws/man/1.8.15/sudoers.man.html:
di sana. Dan apakahlogfiles
eksplisit atau sesuatu yang harus diganti?Berdasarkan jawaban Toby, saya menemukan cara untuk mengkonfigurasi ini dengan cara yang sedikit berbeda di Debian / Ubuntu. Untuk konteks, lihat:
Jadi Debian / Ubuntu memiliki
pam-auth-update
perintah ini dan ketika Anda melihatnya/etc/pam.d/sudo
terlihat seperti ini:dan
/etc/pam.d/common-session-noninteractive
terlihat seperti ini:Jadi yakin, saya bisa mengedit salah satu file di atas tetapi jelas ada beberapa "kekuatan yang lebih tinggi" yang bekerja di sini. Bagaimana cara mendapatkan perubahan agar saya bisa bermain baik dengan paket lain yang mungkin ingin menambahkan aturan pam? Terlebih lagi, sepertinya saya tidak bisa hanya menambahkan garis
/etc/pam.d/sudo
di antara keduanya@include
seperti ini ..Setelah membaca tautan di atas dan juga contoh-contoh lain (lihat
/usr/share/pam-configs/unix
) saya menemukan ini, di/usr/share/pam-configs/myapp
:Session
danSession-Type
mengontrol file mana yang diedit danPriority
menentukan urutannya. Setelah menambahkan file itu dan berjalanpam-auth-update
,/etc/pam.d/common-session-noninteractive
terlihat seperti ini (di bagian bawah :)... yang kami inginkan karena
pam_succeed_if
saluran kami harus datang sebelumnyasession required pam_unix.so
. (Baris itu berasal dari/use/share/pam-configs/unix
dan memilikiPriority: 256
sehingga berakhir di urutan kedua.) Perhatikan juga bahwa saya meninggalkanservice = sudo
predikat karenacommon-session-noninteractive
mungkin juga termasuk dalam konfigurasi lain di sampingsudo
.Dalam kasus saya, saya sudah dikemas kode saya sebagai installer deb jadi saya menambahkan
/usr/share/pam-configs/myapp
file, dan menambahkanpam-auth-update --package
untuk sayapostinst
danprerm
skrip dan aku baik untuk pergi!Peringatan ...
Jika Anda membaca artikel PAMConfigFrameworkSpec yang saya tautkan di atas , itu mendefinisikan
Session-Interactive-Only
opsi, tetapi tidak memiliki cara untuk menentukan hanya aturan non-aktif . Jadi/etc/pam.d/common-session
itu juga diperbarui . Saya tidak berpikir ada jalan keluarnya. Jika Anda setuju dengan sesi interaktif yang tidak dicatat untuk pengguna tersebut (ini ADA akun layanan, kan?) Maka Anda harus siap!Bonus: cara juga menghapus output log sudo
Selain
session openened|closed
baris yang dipancarkan PAM, catatsudo
informasi tambahan tentang perintah yang dijalankan. Ini terlihat seperti ini:Jika Anda juga ingin menghapusnya, buka tautan ini kemudian lanjutkan di bawah ...
Jadi ... Anda mungkin terbiasa dengan
/etc/sudoers.d/___
pengaturan tipikal yang mungkin melakukan hal seperti ini untuk akun layanan yang membutuhkan superuser privs untuk beberapa tindakan:yang mungkin masuk
/etc/sudoers.d/10_myuser
. Nah, antara lain Anda juga bisa menentukanDefaults
. Perhatikan secara khusus sintaks ini'Defaults' ':' User_List
Sekarang, lihat bagian PILIHAN SUDOERS . Bit yang menarik termasuk
log_input
,log_output
tetapi (mungkin) lebih penting,syslog
danlogfile
. Tampaknya bagi saya bahwa dalam versi terbaru Debian, baik rsyslog atausudo
masuk kestdout
ataustderr
secara default. Jadi bagi saya ini muncul di jurnal journald untuk layanan saya, dan tidak misalnya di/var/log/auth.log
mana tidak akan dicampur ke dalam log aplikasi saya. Untuk menghapus sudo logging, saya menambahkan yang berikut ini/etc/sudoers.d/10_myuser
sehingga terlihat seperti:YMMV, jika Anda merasa menonaktifkan pencatatan menciptakan masalah dengan audit keamanan Anda mungkin juga mencoba menyelesaikannya melalui filter rsyslog.
sumber
success=1
, (yang melewatkan klausa berikutnya), dan (2) Karena bagaimana Anda menentukanservice = sudo
, setiap pekerjaan CRON berjalan, menghasilkanrequirement "service = sudo" not met by user "root"
. (Dan mungkin efek samping lainnya.) Namun, bonus Anda bekerja dengan baik! Terima kasih.postinst
danprerm
?success=1
- Saya lebih suka tidak melewatkanpam_unix
sama sekali. Saya hanya ingin berhenti mencatat output yang[default=ignore]
tampaknya berhasil dengan baik tanpa melewatkan pam_unix.cron
jobs andservice = sudo
: Mungkinkah pekerjaan cron Anda berjalan sebagai pengguna unpriv, tetapi Anda tidak meneleponsudo
sebagai bagian dari pekerjaan cron?Setelah melakukan beberapa pengujian dan penelitian yang menakutkan, saya telah menemukan solusi yang berfungsi untuk Debian Stretch (di Raspberry). Pasti ada lebih dari satu cara untuk mencapai apa yang diminta OP. Tetapi dokumentasi PAM luar biasa, sehingga sebagian besar barang benar-benar TL; DR.
/etc/rsyslog.d/anyname.conf
dengan menggunakan::msg, contains, "session opened for user root by pi" stop
/etc/pam.d/sudo
/usr/share/pam-configs/
/etc/sudoers.d/020_pi
Saya akan menunjukkan caranya (2) dan (4).
Untuk menghilangkan "sesi buka / tutup":
Kami ingin menyingkirkan
/var/log/auth.log
spam berikut :Melakukan hal ini:
Apa yang sangat penting di sini, adalah bahwa
success=1
, berarti melewatkan 1 klausa berikutnya (atau dalam istilah PAM "melompati modul berikutnya dalam tumpukan"), jika berhasil.Dari
man pam.conf
:Selanjutnya, reboot dan biarkan beroperasi beberapa jam (misalnya untuk memeriksa tugas cron) untuk menguji apakah ini berfungsi. Kemudian pastikan untuk menginstal kembali izin file, jika tidak Anda akan memiliki lubang keamanan yang menganga di sistem Anda. (
sudo chmod 644 /etc/pam.d/sudo
)Untuk menghilangkan pesan "TTY PWD COMMAND" yang berulang:
Kami juga ingin menyingkirkan pesan seperti ini:
Dalam kasus saya, ini dibuat oleh skrip IDS yang menjalankan arp-scan setiap beberapa menit. Untuk menghapusnya agar tidak muncul di log, buat file berikut:
(Ini
xxx
adalah nama mesin Anda, danpi
adalah nama pengguna.)sumber
sudo su -
Maka Anda tidak harus menetapkan izin berbahaya dan berisiko lupa untuk mengubah kembali.Kamu akan mendapatkan:
dengan jawaban Anda.
berfungsi tetapi Anda masih akan mendapatkan:
di log Anda.
sumber