Her SUID programının her çağrısını günlüğe kaydet?


12

Bir kullanıcı, kullanıcı adı, program ve kendisine iletilen herhangi bir komut satırı bağımsız değişkenleri içeren herhangi bir suid programı çalıştırdığında her zaman için bir girdi içeren bir günlük dosyası olmasını istiyorum. Bunu Linux'ta başarmanın standart bir yolu var mı?

Yanıtlar:


7

Denetim alt sistemi aracılığıyla belirli bir yürütülebilir dosyanın (setuid ya da değil) tüm çağrılarını günlüğe kaydedebilirsiniz . Dokümantasyon oldukça seyrek; auditctl man sayfası veya belki de bu öğretici ile başlayın . En son dağıtımlar bir auditdpaket gönderir. Yükleyin ve auditdarka plan programının çalıştığından emin olun.

auditctl -A exit,always -F path=/path/to/executable -S execve

ve çağrıların oturum /var/log/audit/audit.logaçmasını izleyin (veya dağıtımınız bunu her nerede kurduysa).


1
Sanırım ilk önce tüm SUID ikili dosyaları bulmak ve daha sonra her biri için çözüm kullanmak için bir komut dosyası yazabilirsiniz. Zarif değil, ama kesinlikle yapılabilir. Teşekkürler!
Kim

2
@Kim: Sana değiştirerek değil kök kullanıcı tarafından root ikili tüm çağırmaları giriş yapabilirsiniz düşünmek -F path=…ile -F euid=0 -F 'uid!=0'veya bir benzeri. Tarafından ayarlanan setxid kodundaexecve bir kanca veya denetim alt sisteminde belirli bir setxid saat göremiyorum . Veya, elbette, her günlüğü execveve işlem sonrası işlemleri kaydedebilirsiniz .
Gilles 'SO- kötü olmayı bırak'

İlginç. Bunu daha önce hiç duymadım. Ne kadar yaygın kullanıldığını merak ediyorum. Debian popcon kullanıcısının girişi yok auditd.
Faheem Mitha

findtüm SUID dosyalarını listeleme komutu:find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMitha Popcon girişi var: qa.debian.org/popcon-graph.php?packages=auditd
jofel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.