Skip to main content

Syslogd Linux dan Perintah Unix

Como crear un Script de mantenimiento en Linux (Februari 2025)

Como crear un Script de mantenimiento en Linux (Februari 2025)
Anonim

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 darisyslogd(8) berasal dari sumber stock BSD. Dukungan untuk logging kernel disediakan olehklogd(8) utilitas yang memungkinkan logging kernel dilakukan baik dengan 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.

Selagisyslogd sumber telah banyak dimodifikasi beberapa catatan dalam urutan. 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-f pilihan, dibaca saat startup. Setiap garis yang dimulai dengan tanda pagar (`` # '') dan garis kosong diabaikan. Jika kesalahan terjadi selama parsing seluruh garis diabaikan.

Ringkasan

syslogd -Sebuah stopkontak -d -f file konfigurasi -h -l daftar host -m selang -n -p stopkontak -r -s daftar domain -v -x

Pilihan

-Sebuah stopkontak

Menggunakan argumen ini Anda dapat menentukan soket tambahan dari itusyslogd harus mendengarkan. 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 lambangMAXFUNIX 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 melanjutkangarpu(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 sebagai ganti /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 selang

Itusyslogd mencatat cap waktu mark secara teratur. Defaultnya selang antara dua - MARK - garis adalah 20 menit. Ini dapat diubah dengan opsi ini. Pengaturan selang ke nol akan mematikannya sepenuhnya.

-n

Hindari latar belakang otomatis. Ini diperlukan terutama jikasyslogd dimulai dan dikontrol olehinit(8).

-p stopkontak

Anda dapat menentukan alternatif soket domain unix, bukan / 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 daftar domain

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. Misalnya 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 satu set sinyal. Anda dapat dengan mudah mengirim sinyal kesyslogd menggunakan yang berikut:

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

Sighup

Ini memungkinkansyslogd melakukan inisialisasi ulang. Semua file yang terbuka ditutup, file konfigurasi (standarnya adalah /etc/syslog.conf ) akan dibaca ulang dansyslog(3) fasilitas dimulai lagi.

SIGTERM

Itusyslogd akan mati.

SIGINT, SIGQUIT

Jika debugging diaktifkan, ini diabaikan, sebaliknyasyslogd akan mati.

SIGUSR1

Mengaktifkan / menonaktifkan debug. Opsi ini hanya dapat digunakan jikasyslogd dimulai dengan-d opsi 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, jadi setiap 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 (-).

Itu* menetapkan 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.

Itu= 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 / usr / adm / debug mengajukan.

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

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

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

# 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. :-)

Itu- 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 memengaruhi standarsyslog.conf(5) file. 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-r opsi pada baris perintah. Perilaku defaultnya adalah itusyslogd 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 ini berfungsi dengan benarjasa(5) file (biasanya ditemukan di / etc ) harus memiliki entri berikut:

syslog 514 / udp

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

Untuk menyebabkan pesan diteruskan ke host lain menggantikan baris file normal di syslog.conf file dengan nama host yang akan dikirimi pesan dengan menggunakan @.

Misalnya, untuk majuSEMUA pesan ke host jarak jauh menggunakan yang berikut ini syslog.conf masuk:

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

Untuk meneruskan semuainti pesan ke host remote file konfigurasi akan menjadi seperti 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 normalsyslogdAnda akan mendapatkan syslog-loops jika Anda mengirim pesan yang diterima dari remote host 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 jarak jauh berada di domain yang sama dengan host,syslogd sedang berjalan, hanya nama host sederhana yang akan dicatat, bukan keseluruhan 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 server ini. Anda bisa memberi tahusyslogd untuk menanggalkan beberapa domain selain dari yang ditempatkan di server dan hanya log hostname sederhana.

Menggunakan-l pilihan juga ada 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 mengakhiri pesan sebelum mengirimkannya ke / dev / log stopkontak. 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.

Keduanyasyslogd(8) danklogd(8) dapat dijalankan dari init (8) atau dimulai sebagai bagian dari urutan rc. *. Jika dimulai dari init opsi -n harus diatur, jika tidak, Anda akan mendapatkan banyak daemon syslog dimulai. Hal ini karenainit(8) tergantung pada ID proses.

Ancaman Keamanan

Ada potensi daemon syslogd untuk digunakan sebagai saluran untuk serangan penolakan layanan. Terima kasih kepada John Morrison ([email protected]) 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.CATATAN bahwa ini akan membutuhkan syslogd untuk dijalankan sebagai proses non-root. JUGA MENCATAT 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-d pilihan itusyslogd akan sangat verbose dengan menulis banyak dari apa yang dilakukannya di 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 satu nomor dibiarkan keluar maka mungkin ada kesalahan pada baris yang sesuai /etc/syslog.conf .

pola

Bidang ini rumit dan mewakili struktur internal persis. Setiap kolom singkatan fasilitas (lihatsyslog(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 (lihatsyslog(3)).

tindakan

Bidang ini menjelaskan tindakan tertentu yang terjadi setiap kali pesan diterima yang sesuai dengan pola. Mengacu kepadasyslog.conf(5) manual 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 ([email protected]) melakukan port ke Linux, Martin Schulze ([email protected]) memperbaiki beberapa bug dan menambahkan beberapa fitur baru.Klogdawalnya ditulis oleh Steve Lord ([email protected]), Greg Wettstein membuat perbaikan besar.

Dr Greg WettsteinPengembangan Sistem Enjellic

Fasilitas Komputasi Divisi Penelitian OnkologiRoger Maris Cancer CentreFargo, ND[email protected]

Stephen TweedieJurusan Ilmu KomputerUniversitas Edinburgh, Skotlandia[email protected]

Juha Virtanen[email protected]

Shane Alderton[email protected]

Martin SchulzeInfodrom Oldenburg[email protected]

Penting: Menggunakan pria perintah ( % pria ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.

Artikel Terkait

  • sysklogd - Perintah Linux - Perintah Unix
  • rwall - Apa rwa