Syslogd Linux dan Perintah Unix

Sysklogd menyediakan dua utilitas sistem yang menyediakan dukungan untuk pencatatan sistem dan pembuatan pesan kernel. Dukungan soket internet dan unix domain memungkinkan paket utilitas ini untuk mendukung pencatatan log lokal dan remote.

Pencatatan sistem disediakan oleh versi syslogd (8) yang berasal dari sumber stock BSD. Dukungan untuk kernel logging disediakan oleh utilitas klogd (8) yang memungkinkan logging kernel dilakukan baik dalam mode mandiri atau sebagai klien syslogd.

Syslogd menyediakan sejenis penebangan yang banyak digunakan program modern. Setiap pesan yang masuk setidaknya berisi waktu dan bidang nama host, biasanya bidang nama program juga, tetapi itu tergantung pada seberapa tepercaya program pencatatan log.

Sementara sumber syslogd telah banyak dimodifikasi, beberapa not-not diurutkan. Pertama-tama ada upaya sistematis untuk memastikan bahwa syslogd mengikuti standarnya, perilaku BSD standar. Konsep penting kedua yang perlu diperhatikan adalah versi syslogd ini berinteraksi secara transparan dengan versi syslog yang ditemukan di pustaka standar. Jika biner yang terkait dengan pustaka bersama standar gagal berfungsi dengan benar, kami ingin contoh perilaku anomali.

File konfigurasi utama /etc/syslog.conf atau file alternatif, diberikan dengan opsi -f , dibaca saat startup. Setiap garis yang dimulai dengan tanda pagar (`` # '') dan garis kosong diabaikan. Jika kesalahan terjadi selama parsing seluruh garis diabaikan.

Ringkasan

syslogd [ -a socket ] [ -d ] [ -f file config ] [ -h ] [ -l daftar host ] [ -m interval ] [ -n ] [ -p socket ] [ -r ] [ -sendaftar domain ] [ - v ] [ -x ]

Pilihan

-sebuah soket

Menggunakan argumen ini Anda dapat menentukan soket tambahan dari syslogd yang harus didengarkan. Ini diperlukan jika Anda akan membiarkan beberapa daemon berjalan di lingkungan chroot (). Anda dapat menggunakan hingga 19 soket tambahan. Jika lingkungan Anda membutuhkan lebih banyak lagi, Anda harus meningkatkan simbol MAXFUNIX dalam file sumber syslogd.c. Contoh untuk chroot () daemon dijelaskan oleh orang-orang dari OpenBSD di http://www.psionic.com/papers/dns.html.

-d

Mengaktifkan mode debug. Menggunakan ini daemon tidak akan melanjutkan fork (2) untuk mengatur dirinya sendiri di latar belakang, tetapi berlawanan dengan itu tinggal di latar depan dan menulis banyak informasi debug pada tty saat ini. Lihat bagian DEBUGGING untuk informasi lebih lanjut.

-f file konfigurasi

Tentukan file konfigurasi alternatif daripada /etc/syslog.conf , yang merupakan default.

-h

Secara default syslogd tidak akan meneruskan pesan yang diterimanya dari host jarak jauh. Menentukan switch ini pada baris perintah akan menyebabkan daemon log untuk meneruskan pesan jarak jauh yang diterimanya ke host forwarding yang telah ditentukan.

-l daftar host

Tentukan nama host yang harus dicatat hanya dengan nama host yang sederhana dan bukan fqdn. Beberapa host dapat ditentukan menggunakan pemisah titik dua (``: '').

-m interval

Syslogd mencatat cap waktu mark secara teratur. Interval baku antara dua - MARK - lines adalah 20 menit. Ini dapat diubah dengan opsi ini. Mengatur interval ke nol akan mematikannya sepenuhnya.

-n

Hindari latar belakang otomatis. Ini diperlukan terutama jika syslogd dimulai dan dikendalikan oleh init (8).

-p soket

Anda dapat menentukan alternatif soket domain unix alih-alih / dev / log .

-r

Opsi ini akan memungkinkan fasilitas untuk menerima pesan dari jaringan menggunakan soket domain internet dengan layanan syslog (lihat (5)). Defaultnya adalah untuk tidak menerima pesan apa pun dari jaringan.

Opsi ini diperkenalkan pada versi 1.3 dari paket sysklogd. Harap perhatikan bahwa perilaku default adalah kebalikan dari perilaku versi sebelumnya, jadi Anda mungkin harus mengaktifkannya.

-s domainlist

Tentukan nama domain yang harus dilucuti sebelum login. Beberapa domain dapat ditentukan menggunakan pemisah titik dua (``: ''). Harap diperhatikan bahwa tidak ada sub-domain yang dapat ditentukan tetapi hanya seluruh domain. Sebagai contoh jika -s north.de ditentukan dan logging host diselesaikan ke satu.infodrom.north.de tidak ada domain yang akan dipotong, Anda harus menentukan dua domain seperti: -s north.de:infodrom.north.de .

-v

Cetak versi dan keluar.

-x

Nonaktifkan pencarian nama saat menerima pesan jarak jauh. Ini menghindari kebuntuan ketika nameserver berjalan pada mesin yang sama yang menjalankan daemon syslog.

Sinyal

Syslogd bereaksi terhadap serangkaian sinyal. Anda dapat dengan mudah mengirim sinyal ke syslogd menggunakan yang berikut:

kill -SIGNAL `cat / var / run / syslogd.pid`

Sighup

Ini memungkinkan syslogd melakukan inisialisasi ulang. Semua file yang terbuka ditutup, file konfigurasi (default adalah /etc/syslog.conf ) akan dibaca ulang dan fasilitas syslog (3) dimulai lagi.

SIGTERM

Syslogd akan mati.

SIGINT , SIGQUIT

Jika debugging diaktifkan, ini diabaikan, jika tidak syslogd akan mati.

SIGUSR1

Mengaktifkan / menonaktifkan debug. Opsi ini hanya dapat digunakan jika syslogd dimulai dengan opsi -d debug.

SIGCHLD

Tunggu anak-anak jika beberapa dilahirkan, karena pesan-pesan wall'ing.

Perbedaan Sintaks File Konfigurasi

Syslogd menggunakan sintaks yang sedikit berbeda untuk file konfigurasinya daripada sumber BSD asli. Awalnya semua pesan dari prioritas tertentu dan di atas diteruskan ke file log.

Sebagai contoh, baris berikut menyebabkan SEMUA output dari daemon menggunakan fasilitas daemon (debug adalah prioritas terendah, sehingga setiap yang lebih tinggi juga akan cocok) untuk masuk ke / usr / adm / daemon :

# Contoh syslog.conf daemon.debug / usr / adm / daemons

Di bawah skema baru, perilaku ini tetap sama. Perbedaannya adalah penambahan empat penentu baru, tanda bintang ( * ) wildcard, tanda persamaan ( = ), tanda seru ( ! ), Dan tanda minus ( - ).

* Menentukan bahwa semua pesan untuk fasilitas yang ditentukan harus diarahkan ke tujuan. Perhatikan bahwa perilaku ini merosot dengan menetapkan tingkat prioritas debug. Pengguna telah mengindikasikan bahwa notasi asterisk lebih intuitif.

= Wildcard digunakan untuk membatasi pencatatan ke kelas prioritas yang ditentukan. Ini memungkinkan, misalnya, hanya merutekan pesan debug ke sumber pencatatan tertentu.

Misalnya, baris berikut di syslog.conf akan mengarahkan pesan debug dari semua sumber ke file / usr / adm / debug .

# Contoh syslog.conf *. = Debug / usr / adm / debug

The ! digunakan untuk mengecualikan logging dari prioritas yang ditentukan. Ini mempengaruhi semua (!) Kemungkinan menentukan prioritas.

Misalnya, baris berikut akan mencatat semua pesan dari surat fasilitas kecuali yang memiliki informasi prioritas ke file / usr / adm / mail . Dan semua pesan dari news.info (termasuk) ke news.crit (tidak termasuk) akan dicatat ke file / usr / adm / news .

# Contoh syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; berita.! Crit / usr / adm / berita

Anda dapat menggunakannya secara intuitif sebagai specifier pengecualian. Interpretasi yang disebutkan di atas hanya terbalik. Melakukan itu mungkin Anda gunakan

mail.none

atau

surat.!*

atau

mail.! debug

untuk melewati setiap pesan yang datang dengan fasilitas surat. Ada banyak ruang untuk bermain dengannya. :-)

The - hanya dapat digunakan untuk awalan nama file jika Anda ingin menghilangkan sinkronisasi file setelah setiap menulis untuk itu.

Ini mungkin membutuhkan aklimatisasi bagi individu yang terbiasa dengan perilaku BSD murni tetapi penguji telah mengindikasikan bahwa sintaks ini agak lebih fleksibel daripada perilaku BSD. Perhatikan bahwa perubahan ini seharusnya tidak mempengaruhi file standar syslog.conf (5). Anda harus secara khusus memodifikasi file konfigurasi untuk mendapatkan perilaku yang ditingkatkan.

Dukungan Untuk Pembalakan Jarak Jauh

Modifikasi ini menyediakan dukungan jaringan ke fasilitas syslogd. Dukungan jaringan berarti bahwa pesan dapat diteruskan dari satu node yang menjalankan syslogd ke node lain yang menjalankan syslogd di mana mereka akan benar-benar masuk ke file disk.

Untuk mengaktifkan ini, Anda harus menentukan opsi -r pada baris perintah. Perilaku default adalah syslogd tidak akan mendengarkan jaringan.

Strateginya adalah agar syslogd mendengarkan pada soket domain unix untuk pesan log yang dihasilkan secara lokal. Perilaku ini akan memungkinkan syslogd untuk saling beroperasi dengan syslog yang ditemukan dalam pustaka C standar. Pada saat yang bersamaan, syslogd mendengarkan port syslog standar untuk pesan yang diteruskan dari host lain. Agar berfungsi dengan benar, layanan (5) file (biasanya ditemukan di / etc ) harus memiliki entri berikut:

syslog 514 / udp

Jika entri ini hilang, syslogd tidak dapat menerima pesan jarak jauh atau mengirimnya, karena port UDP tidak dapat dibuka. Sebaliknya, syslogd akan segera mati, meniup pesan kesalahan.

Untuk menyebabkan pesan diteruskan ke host lain, ganti baris file normal di file syslog.conf dengan nama host tempat pesan akan dikirim dengan menggunakan @.

Misalnya, untuk meneruskan SEMUA pesan ke host jarak jauh menggunakan entri syslog.conf berikut:

# Contoh file konfigurasi syslogd ke # pesan ke host jarak jauh maju semua. *. * @hostname

Untuk meneruskan semua pesan kernel ke host remote, file konfigurasi adalah sebagai berikut:

# Contoh file konfigurasi untuk meneruskan semua pesan kernel # ke host jarak jauh. kern. * @hostname

Jika nama host remote tidak dapat diselesaikan saat startup, karena server nama mungkin tidak dapat diakses (mungkin dimulai setelah syslogd) Anda tidak perlu khawatir. Syslogd akan mencoba kembali untuk menyelesaikan nama itu sepuluh kali dan kemudian mengeluh. Kemungkinan lain untuk menghindari ini adalah menempatkan nama host di / etc / hosts .

Dengan syslogd normal Anda akan mendapatkan syslog-loops jika Anda mengirim pesan yang diterima dari host jarak jauh ke host yang sama (atau lebih rumit ke host ketiga yang mengirimnya kembali ke yang pertama, dan seterusnya). Di dalam domain saya (Infodrom Oldenburg) kami secara tidak sengaja mendapatkan satu dan disk kami diisi dengan satu pesan yang sama. :-(

Untuk menghindari hal ini di lain waktu, tidak ada pesan yang diterima dari remote host yang dikirim ke host remote lain (atau yang sama) lagi. Jika ada skenario di mana ini tidak masuk akal, silakan drop saya (Joey) garis.

Jika host remote terletak di domain yang sama dengan host, syslogd sedang berjalan, hanya nama host sederhana yang akan dicatat, bukan seluruh fqdn.

Di jaringan lokal, Anda dapat menyediakan server log pusat untuk menyimpan semua informasi penting pada satu komputer. Jika jaringan terdiri dari domain yang berbeda Anda tidak perlu mengeluh tentang pencatatan nama yang sepenuhnya terkualifikasi daripada nama host sederhana. Anda mungkin ingin menggunakan fitur strip-domain -s dari server ini. Anda dapat memberi tahu syslogd untuk menghapus beberapa domain selain dari yang ada di server dan hanya mencatat nama host sederhana.

Menggunakan opsi -l ada juga kemungkinan untuk mendefinisikan host tunggal sebagai mesin lokal. Ini juga, hasil logging hanya hostname sederhana mereka dan bukan fqdns.

Soket UDP yang digunakan untuk meneruskan pesan ke host jarak jauh atau menerima pesan dari mereka hanya dibuka saat diperlukan. Dalam rilis sebelum 1.3-23 dibuka setiap kali tetapi tidak dibuka untuk membaca atau meneruskan masing-masing.

Output ke Named Pipes (FIFOs)

Versi syslogd ini memiliki dukungan untuk melakukan logging output ke named pipes (fifos). Sebuah pipa fifo atau bernama dapat digunakan sebagai tujuan untuk pesan log dengan menambahkan simbol pipi (`` | '') ke nama file. Ini berguna untuk debugging. Perhatikan bahwa fifo harus dibuat dengan perintah mkfifo sebelum syslogd dimulai.

File konfigurasi berikut mengirimkan pesan debug dari kernel ke fifo:

# Contoh konfigurasi untuk rute kernel debugging # messages HANYA ke / usr / adm / debug yang merupakan pipa # bernama. kern. = debug | / usr / adm / debug

Masalah Instalasi

Mungkin ada satu pertimbangan penting saat menginstal versi syslogd ini. Versi syslogd ini bergantung pada pemformatan pesan yang tepat oleh fungsi syslog. Fungsi fungsi syslog di shared library berubah di suatu tempat di wilayah libc.so.4. [2-4] .n. Perubahan spesifik adalah untuk mengakhiri pesan sebelum mengirimkannya ke soket / dev / log . Fungsi yang tepat dari versi syslogd ini tergantung pada penghentian pesan yang tidak berlaku.

Masalah ini biasanya akan memanifestasikan dirinya jika biner lama yang terhubung secara statis digunakan pada sistem. Binari menggunakan versi lama dari fungsi syslog akan menyebabkan baris kosong untuk dicatat diikuti oleh pesan dengan karakter pertama dalam pesan dihapus. Menghubungkan kembali binari ini ke versi lebih baru dari pustaka bersama akan memperbaiki masalah ini.

Baik syslogd (8) dan klogd (8) dapat dijalankan dari init (8) atau mulai sebagai bagian dari urutan rc. *. Jika dimulai dari init, opsi -n harus diset, jika tidak, Anda akan mendapatkan banyak daemon syslog dimulai. Ini karena init (8) tergantung pada ID proses.

Ancaman Keamanan

Ada potensi daemon syslogd untuk digunakan sebagai saluran untuk serangan penolakan layanan. Terima kasih kepada John Morrison (jmorriso@rflab.ee.ubc.ca) untuk mengingatkan saya pada potensi ini. Program jahat (mer) dapat dengan mudah membanjiri daemon syslogd dengan pesan syslog yang mengakibatkan file log menghabiskan semua ruang yang tersisa di sistem file . Mengaktifkan pencatatan melalui soket domain inet tentu saja akan mengekspos sistem ke risiko di luar program atau individu di komputer lokal.

Ada sejumlah metode untuk melindungi mesin:

  1. Menerapkan firewall kernel untuk membatasi host atau jaringan mana saja yang memiliki akses ke soket 514 / UDP.
  2. Logging dapat diarahkan ke filesystem terisolasi atau non-root yang, jika diisi, tidak akan merusak mesin.
  3. File sistem ext2 dapat digunakan yang dapat dikonfigurasi untuk membatasi persentase tertentu dari suatu sistem file untuk digunakan hanya oleh root. Perhatikan bahwa ini akan membutuhkan syslogd untuk dijalankan sebagai proses non-root. JUGA PERHATIKAN bahwa ini akan mencegah penggunaan pencatatan jarak jauh karena syslogd tidak akan bisa mengikat ke soket 514 / UDP.
  4. Menonaktifkan soket domain inet akan membatasi risiko pada mesin lokal.
  5. Gunakan langkah 4 dan jika masalah tetap ada dan tidak sekunder untuk program jahat / daemon dapatkan pengait batang sepanjang 3,5 kaki (sekitar 1 meter) * dan berbicaralah dengan pengguna yang bersangkutan. Batang pengisap def. --- 3/4, 7/8 atau 1in. batang baja mengeras, laki-laki berulir di setiap ujungnya. Penggunaan utama dalam industri minyak di Western North Dakota dan lokasi lain untuk memompa minyak 'menyedot' dari sumur minyak. Kegunaan sekunder adalah untuk pembangunan banyak pakan ternak dan untuk berurusan dengan individu rekalsitran atau agresif sesekali.

Debugging

Ketika debugging dihidupkan menggunakan opsi -d maka syslogd akan sangat verbose dengan menulis banyak dari apa yang dilakukannya pada stdout. Setiap kali file konfigurasi dibaca ulang dan diurai ulang Anda akan melihat tabular, sesuai dengan struktur data internal. Tabular ini terdiri dari empat bidang:

jumlah

Bidang ini berisi nomor seri yang dimulai dengan nol. Angka ini mewakili posisi dalam struktur data internal (yaitu array). Jika ada satu nomor yang tertinggal maka mungkin ada kesalahan di baris yang sesuai di /etc/syslog.conf .

pola

Bidang ini rumit dan mewakili struktur internal persis. Setiap kolom singkatan fasilitas (lihat syslog (3)). Seperti yang Anda lihat, masih ada beberapa fasilitas yang tersisa gratis untuk penggunaan sebelumnya, hanya yang paling kiri digunakan. Setiap bidang dalam kolom mewakili prioritas (lihat syslog (3)).

tindakan

Bidang ini menjelaskan tindakan tertentu yang terjadi setiap kali pesan diterima yang sesuai dengan pola. Lihat halaman manual syslog.conf (5) untuk semua kemungkinan tindakan.

argumen

Bidang ini menunjukkan argumen tambahan untuk tindakan di bidang terakhir. Untuk file-logging ini adalah nama file untuk file log; untuk penebangan pengguna, ini adalah daftar pengguna; untuk penebangan jarak jauh ini adalah nama host dari mesin untuk masuk; untuk konsol-logging ini adalah konsol yang digunakan; untuk tty-logging ini adalah tty yang ditentukan; dinding tidak memiliki argumen tambahan.

Lihat juga

logger (1), syslog (2), (5)

Kolaborator

Syslogd diambil dari sumber BSD, Greg Wettstein (greg@wind.enjellic.com) melakukan port ke Linux , Martin Schulze (joey@linux.de) memperbaiki beberapa bug dan menambahkan beberapa fitur baru. Klogd awalnya ditulis oleh Steve Lord (lord@cray.com), Greg Wettstein membuat perbaikan besar.

Dr Greg Wettstein
Pengembangan Sistem Enjellic

Fasilitas Komputasi Divisi Penelitian Onkologi
Roger Maris Cancer Centre
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Jurusan Ilmu Komputer
Universitas Edinburgh, Skotlandia
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Penting: Gunakan perintah man ( % man ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.

Artikel Terkait