Syslogd Linux ve Unix Komutu

Sysklogd, sistem günlüğü ve çekirdek ileti yakalama için destek sağlayan iki sistem yardımcı programı sağlar. Hem internet hem de unix etki alanı soketlerinin desteği, bu yardımcı paketin hem yerel hem de uzak oturumları desteklemesini sağlar.

Sistem kaydı, stok BSD kaynaklarından türetilen bir syslogd (8) versiyonu ile sağlanır. Çekirdek günlüğü desteği, kernel günlüğünün tek başına veya syslogd istemcisi olarak yürütülmesine izin veren klogd (8) yardımcı programı tarafından sağlanır.

Syslogd, birçok modern programın kullandığı bir çeşit kayıt sağlar. Kayıtlı her mesaj en az bir zaman ve bir ana bilgisayar adı alanı, normalde bir program adı alanı da içerir, ancak bu kayıt programının ne kadar güvenilir olduğuna bağlıdır.

Syslogd kaynakları ağır bir şekilde değiştirilmiş olsa da, birkaç nota sıralanmıştır. Her şeyden önce, syslogd'un standart BSD davranışını takip etmesini sağlamak için sistematik bir girişimde bulunulmuştur. Dikkat edilmesi gereken ikinci önemli kavram, syslogd'un bu versiyonunun standart kütüphanelerde bulunan syslog versiyonu ile şeffaf bir şekilde etkileşime girmesidir. Paylaşılan standart kitaplıklara bağlı bir ikili doğru çalışmıyorsa, anormal davranışın bir örneğini isteriz.

-et seçeneği ile verilen ana yapılandırma dosyası /etc/syslog.conf veya alternatif bir dosya, başlangıçta okunur. Karma işareti (`` # '') ve boş satırlarla başlayan satırlar yoksayılır. Ayrıştırma sırasında bir hata oluşursa, tüm satır göz ardı edilir.

özet

syslogd [ -a soketi ] [ -d ] [ -f yapılandırma dosyası ] [ -h ] [ -l ana bilgisayar listesi ] [ -m aralığı ] [ -n ] [ -p soketi ] [ -r ] [ -s etki alanı listesi ] [ - v ] [ -x ]

Seçenekler

- bir priz

Bu argümanı kullanarak, syslogd'un dinlemek zorunda olduğu ek soketleri belirtebilirsiniz. Bazı daemonların chroot () ortamında çalışmasına izin vermeniz gerekiyorsa bu gereklidir. En fazla 19 ek yuva kullanabilirsiniz. Ortamınızın daha da fazla ihtiyacı varsa, syslogd.c kaynak dosyasındaki MAXFUNIX sembolünü artırmanız gerekir. Bir chroot () daemon örneği, http://www.psionic.com/papers/dns.html adresindeki OpenBSD'deki kişiler tarafından açıklanmıştır.

-d

Hata ayıklama modunu açar. Bunu kullanarak daemon arka plana kendini koymak için bir çatal (2) ilerlemeyecek, ama ön planda bu kalmanın karşısında ve mevcut tty hakkında çok hata ayıklama bilgisi yazacaktır. Daha fazla bilgi için DEBUGGING bölümüne bakınız.

-f config dosyası

Varsayılan olan /etc/syslog.conf yerine alternatif bir yapılandırma dosyası belirtin.

-h

Varsayılan olarak syslogd, uzak ana bilgisayarlardan aldığı iletileri iletmez. Bu anahtarın komut satırında belirtilmesi, günlük sunucusunun, aldığı ana iletilere gönderilen tüm uzak iletileri iletmesine neden olur.

-l ana bilgisayar listesi

Sadece basit bir ana bilgisayar adı ile kaydedilmesi gereken bir ana bilgisayar adı belirtin, fqdn ile değil. Birden çok ana bilgisayar, kolon (``: '') ayırıcısı kullanılarak belirtilebilir.

-m aralığı

Syslogd düzenli olarak bir işaret zaman damgasını günlüğe kaydeder. İki - MARK - satır arasındaki varsayılan aralık 20 dakikadır. Bu seçenek ile değiştirilebilir. Aralığın sıfıra ayarlanması tamamen kapatır.

-n

Otomatik arkaplandan kaçının. Özellikle syslogd başlatılır ve init (8) tarafından kontrol edilirse bu gereklidir.

-P soketi

/ Dev / log yerine alternatif bir unix etki alanı soketi belirtebilirsiniz.

-r

Bu seçenek, tesisin syslog servisi ile internet etki alanı soketi kullanarak ağdan bir mesaj almasını sağlar (bkz. (5)). Varsayılan, ağdan herhangi bir mesaj almamaktır.

Bu seçenek sysklogd paketinin 1.3 sürümünde tanıtılmaktadır. Varsayılan davranışların, eski sürümlerin nasıl davrandığının tam tersi olduğunu unutmayın, bu nedenle bunu açmanız gerekebilir.

-s etki alanı listesi

Günlüğe kaydetmeden önce çıkarılması gereken bir alan adı belirtin. Birden çok alan, kolon (`` '') ayırıcısı kullanılarak belirtilebilir. Alt alan adlarının belirtilemeyeceğini, yalnızca tüm alan adlarının belirtilemeyeceğini lütfen unutmayın. Örneğin, -s north.de belirtilmişse ve ana bilgisayar günlüğü günlüğe kaydetme satu.infodrom.north.de olarak çözülürse, etki alanı kesilmez, aşağıdaki gibi iki etki belirtmeniz gerekir: -s north.de:infodrom.north.de .

-v

Sürümü yazdırın ve çıkın.

-x

Uzak iletileri alırken isim aramalarını devre dışı bırakın. Bu, nameserver syslog daemon'unu çalıştıran aynı makinede çalışırken kilitlenmelerini önler.

Sinyaller

Syslogd bir dizi sinyale tepki verir. Aşağıdakileri kullanarak syslogd'a kolayca bir sinyal gönderebilirsiniz:

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

SIGHUP

Bu syslogd yeniden başlatma işlemini gerçekleştirir. Tüm açık dosyalar kapatılır, yapılandırma dosyası (varsayılan /etc/syslog.conf ) tekrar okunacak ve syslog (3) tesisi tekrar başlatılacaktır.

SIGTERM

Syslogd ölecek.

SIGINT , SIGQUIT

Hata ayıklama etkinse, bunlar dikkate alınmaz, aksi halde syslogd ölür.

SIGUSR1

Hata ayıklamayı aç / kapat. Bu seçenek sadece syslogd -d hata ayıklama seçeneği ile başlatılmışsa kullanılabilir.

SIGCHLD

Bazıları doğduğunda, duvar mesajlarının neden olduğu oğulları bekle.

Yapılandırma Dosyası Sözdizimi Farklılıkları

Syslogd , yapılandırma dosyası için orijinal BSD kaynaklarından biraz farklı bir sözdizimi kullanır. Başlangıçta, belirli bir öncelik ve üstü olan tüm iletiler günlük dosyasına iletildi.

Örneğin, aşağıdaki satırda daemonların TÜM çıktılarını kullanarak (hata ayıklaması en düşük önceliğe sahiptir, dolayısıyla her bir üst seviye de eşleşir) / usr / adm / daemons :

# Örnek syslog.conf daemon.debug / usr / adm / daemons

Yeni şema altında, bu davranış aynı kalır. Fark, dört yeni belirleyicinin eklenmesi, yıldız ( * ) joker karakteri, denklem işareti ( = ), ünlem işareti ( ! ) Ve eksi işareti ( - ).

* Belirtilen tesisin tüm mesajlarının hedefe yönlendirileceğini belirtir. Bu davranışın, öncelik düzeyindeki hata ayıklama belirtilerek dejenere olduğunu unutmayın. Kullanıcılar yıldız işaretinin daha sezgisel olduğunu belirtmişlerdir.

= Joker karakter, belirtilen öncelik sınıfına giriş yapmak için kullanılır. Bu, örneğin, yalnızca hata ayıklama mesajlarının belirli bir kayıt kaynağına yönlendirilmesine izin verir.

Örneğin, syslog.conf dosyasındaki şu satır, tüm kaynaklardan gelen iletileri ayıklama / usr / adm / debug dosyasına yönlendirir.

# Örnek syslog.conf *. = Hata ayıklama / usr / adm / debug

! belirtilen önceliklerin kaydını hariç tutmak için kullanılır. Bu, önceliklerin belirtilmesiyle ilgili tüm (!) Olasılıkları etkiler.

Örneğin, aşağıdaki satırlar, öncelikli bilgileri olan / usr / adm / mail dosyasına olanlar dışında, tesis postasının tüm mesajlarını günlüğe kaydeder. Ve news.info'dan (dahil olmak üzere) news.crit'e (hariç) gelen tüm iletiler / usr / adm / news dosyasına kaydedilir.

# Örnek syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; haberler.! Crit / usr / adm / news

Bir istisna belirteci olarak sezgisel olarak kullanabilirsiniz. Yukarıda belirtilen yorum basitçe tersine çevrilmiştir. Bunu kullanabiliyorsanız

mail.none

veya

posta.!*

veya

posta.! ayıklama

Bir posta ile gelen her mesajı atlamak için Bununla oynamak için çok yer var. :-)

- Her bir yazma işleminden sonra dosyayı senkronize etmek istemiyorsanız sadece dosya adını öneklemek için kullanılabilir.

Bu, saf BSD davranışı için kullanılan bireyler için biraz iklime ihtiyaç duyabilir, ancak test ediciler bu sözdiziminin BSD davranışından biraz daha esnek olduğunu belirtmişlerdir. Bu değişikliklerin standart syslog.conf (5) dosyalarını etkilememesi gerektiğini unutmayın. Gelişmiş davranışı elde etmek için yapılandırma dosyalarını özellikle değiştirmeniz gerekir.

Uzak Kayıt için Destek

Bu değişiklikler syslogd tesisine ağ desteği sağlar. Ağ desteği, mesajların syslogd çalıştıran bir düğümden syslogd çalıştıran başka bir düğüme yönlendirilebileceği anlamına gelir;

Bunu etkinleştirmek için komut satırında -r seçeneğini belirtmeniz gerekir. Varsayılan davranış, syslogd'un ağı dinlememesidir.

Strateji, syslogd'un yerel olarak oluşturulmuş günlük iletileri için bir unix alan soketinde dinlemesini sağlamaktır. Bu davranış, syslogd'un standart C kütüphanesinde bulunan syslog ile çalışmasını sağlar. Aynı zamanda syslogd, diğer ana bilgisayarlardan iletilen iletiler için standart syslog bağlantı noktasını dinler. Bunun doğru şekilde çalışması için (5) dosyaları (genellikle / etc içinde bulunur ) aşağıdaki girdiye sahip olmalıdır:

syslog 514 / udp

Eğer bu giriş syslogd değilse, UDP portu açılmayacağı için uzak mesajlar alamaz ve gönderemezler. Bunun yerine, syslogd hemen bir hata mesajı göndererek ölecektir.

İletilerin başka bir ana bilgisayara iletilmesine neden olmak için, syslog.conf dosyasındaki normal dosya satırını, iletilerin bir @ ile eklendiği iletinin adıyla değiştirin.

Örneğin, aşağıdaki syslog.conf girdisini kullanarak TÜM iletileri uzaktaki bir ana bilgisayara iletmek için:

# Örnek syslogd konfigürasyon dosyası # mesajları bir uzak ana bilgisayara iletin. *. * @hostname

Tüm çekirdek iletilerini uzak bir ana bilgisayara iletmek için yapılandırma dosyası aşağıdaki gibi olur:

# Tüm çekirdek # mesajlarını uzaktaki bir ana bilgisayara iletmek için örnek yapılandırma dosyası. kern. * @hostname

Uzak ana makine adı, başlangıçta çözülemiyorsa, ad sunucusu erişilebilir olmayabilir (syslogd'dan sonra başlatılabilir), endişelenmenize gerek yoktur. Syslogd , adı on kez çözmek ve sonra şikayet etmek için tekrar dener. Bunu önlemek için başka bir olasılık, ana makine adını / etc / hosts içine yerleştirmektir .

Normal syslogd ile uzak bir ana bilgisayardan aynı ana bilgisayara (veya birincisine geri gönderen üçüncü bir sunucuya daha karmaşık bir şekilde) gönderilen iletileri gönderirseniz syslog döngüleri alırsınız. Benim alanımda (Infodrom Oldenburg) yanlışlıkla bir tane aldık ve disklerimiz aynı tek mesajla doldu. :-(

Bunu daha fazla önlemek için uzak bir ana bilgisayardan alınan mesajlar artık başka bir (veya aynı) uzak ana bilgisayara gönderilmez. Bunun mantıklı olmadığı senaryolar varsa, lütfen beni (Joey) bir satır bırakın.

Uzak ana bilgisayar, ana bilgisayarla aynı etki alanında bulunuyorsa, syslogd çalışıyorsa, tüm fqdn yerine yalnızca basit ana bilgisayar adı kaydedilir.

Yerel bir ağda, bir makinede saklanan tüm önemli bilgilere sahip olmak için merkezi bir günlük sunucusu sağlayabilirsiniz. Ağ farklı alanlardan oluşuyorsa, basit ana makine adları yerine tam nitelikli adların kaydedilmesi konusunda şikayette bulunmak zorunda kalmazsınız. Bu sunucunun şerit etki alanı özelliklerini kullanmak isteyebilirsiniz. Syslogd'a , sunucunun bulunduğu alanın dışındaki birkaç etki alanını kesmesini ve yalnızca basit ana bilgisayar adlarını günlüğe kaydetmesini söyleyebilirsiniz.

-l seçeneğini kullanarak, tek ana bilgisayarları yerel makineler olarak tanımlama olanağı da vardır. Bu da, yalnızca basit ana bilgisayar adlarını ve fqdns'ı kaydetme ile sonuçlanır.

İletileri uzak ana bilgisayarlara iletmek veya bunlardan ileti almak için kullanılan UDP soketi yalnızca gerektiğinde açılır. 1.3-23'ten önceki sürümlerde, her seferinde açıldı, ancak sırasıyla okuma veya yönlendirme için açılmadı.

Adlandırılmış Borulara Çıkış (FIFO)

Syslogd'un bu sürümü, çıktıları adlandırılmış yöneltmelere (fifos) kaydetme desteğine sahiptir. Bir fifo veya adlandırılmış boru, dosya adına bir piper sembolü (`` | '') hazırlayarak günlük iletileri için bir hedef olarak kullanılabilir. Bu hata ayıklama için kullanışlıdır. Syslogd başlatılmadan önce fifo'nun mkfifo komutuyla oluşturulması gerektiğini unutmayın.

Aşağıdaki yapılandırma dosyası yolları, çekirdekten gelen iletileri bir fifo'ya ayıklar:

# Kernel hata ayıklama # mesajlarını SADECE # adında bir boru olan / usr / adm / debug dizinine yönlendirmek için örnek yapılandırma. kern. = hata ayıklaması | / usr / adm / debug

Kurulum endişeleri

Bu syslogd sürümünü yüklerken muhtemelen önemli bir nokta vardır. Syslogd'un bu sürümü, syslog işlevi tarafından mesajların doğru biçimlendirilmesine bağlıdır. Paylaşılan kütüphanelerde syslog işlevinin işleyişi libc.so.4 [2-4] .n. Özel değişiklik mesajı / dev / log soketine iletmeden önce mesajı sonlandırmaktı. Bu syslogd sürümünün düzgün çalışması, iletinin sıfır sonlandırılmasına bağlıdır.

Bu sorun, sistemde eski statik olarak bağlanmış ikili dosyalar kullanılıyorsa, genellikle kendini gösterecektir. Syslog işlevinin eski sürümlerini kullanan binary'ler, boş satırların günlüğe kaydedilmesini ve mesajın kaldırılan ilk karakterdeki mesajın takip edilmesini sağlar. Bu ikili dosyaları paylaşılan kitaplıkların daha yeni sürümleriyle yeniden ilişkilendirmek bu sorunu giderecektir.

Hem syslogd (8) hem de klogd (8), init (8) 'den çalıştırılabilir veya rc. * Dizisinin bir parçası olarak başlatılabilir. Eğer init'ten başlatılırsa -n ayarlanmalıdır, aksi takdirde, syslog daemonlarının başlamasına başlayacaksınız. Bunun nedeni, init (8) işlem kimliğine bağlı olmasıdır.

Güvenlik tehditleri

Syslogd daemon'un bir hizmet reddi saldırısı için bir kanal olarak kullanılması için potansiyel vardır. Teşekkürler beni bu potansiyeli uyarmak için John Morrison (jmorriso@rflab.ee.ubc.ca) gidin. Bir haydut programı (mer), syslogd daemon'unu dosya sistemindeki tüm kalan alanı tüketen günlük dosyalarına neden olan syslog mesajlarıyla kolayca taşabilir. Inet etki alanı soketlerinin üzerinden oturum açmayı etkinleştirme elbette bir sistemi yerel makinedeki programlar veya bireyler dışındaki risklere maruz bırakacaktır.

Bir makineyi korumaya yönelik çeşitli yöntemler vardır:

  1. Hangi hostların veya ağların 514 / UDP soketine erişime sahip olduğunu sınırlamak için çekirdek güvenlik duvarını uygulayın.
  2. Günlüğe kaydetme, eğer dolu ise, makineyi bozmayacak, izole edilmiş ya da olmayan bir dosya sistemine yönlendirilebilir.
  3. Bir dosya sisteminin belirli bir yüzdesini sadece root tarafından kullanılmak üzere sınırlamak üzere yapılandırılabilen ext2 dosya sistemi kullanılabilir. Bu, syslogd'un root olmayan bir işlem olarak çalıştırılmasını gerektirecektir. Ayrıca , syslogd'un 514 / UDP soketine bağlanamayacağı için bunun uzaktan günlüğe kaydetme kullanımını önleyeceğini unutmayın.
  4. Inet alan adı soketlerini devre dışı bırakmak, yerel makinenin riskini sınırlar.
  5. 4. adımı kullanın ve sorun devam ederse ve bir haydut programı / artalanına ikincil değilse, 3.5 ft (yaklaşık 1 metre) uzunlukta bir emici çubuğu * alın ve söz konusu kullanıcıyla sohbet edin. Enayi çubuk def. --- 3/4, 7/8 veya 1in. Sertleştirilmiş çelik çubuk, erkek her uçta dişli. Batı Kuzey Dakota'da petrol endüstrisinde birincil kullanım ve petrol kuyularından 'emmek' yağını pompalamak için başka yerler. İkincil kullanımlar, büyükbaş hayvan yemlerinin yapımında ve zaman zaman geri kalmış veya savaşan bir bireyle ilgilenmek içindir.

Hata ayıklama

Hata ayıklama, -d seçeneğini kullanarak açıldığında, syslogd , stdout'ta ne yaptığını yazarak çok ayrıntılı olacaktır. Yapılandırma dosyası yeniden okunduğunda ve yeniden ayrıştırıldığında, iç veri yapısına karşılık gelen bir tablo görürsünüz. Bu tablo, dört alandan oluşur:

numara

Bu alan sıfır ile başlayan bir seri numarası içerir. Bu sayı dahili veri yapısındaki (yani dizi) pozisyonu temsil eder. Bir sayı kalmazsa , /etc/syslog.conf dosyasında karşılık gelen satırda bir hata olabilir.

Desen

Bu alan zor ve iç yapıyı tam olarak temsil eder. Her sütun bir tesis anlamına gelir ( syslog'a (3) bakınız). Gördüğünüz gibi, hala eski kullanım için ücretsiz olarak bırakılmış bazı tesisler var, sadece en çok kullanılanlar kullanılıyor. Bir sütundaki her alan öncelikleri temsil eder ( syslog'a (3) bakın).

aksiyon

Bu alan, desene uyan bir mesaj alındığında gerçekleşen belirli eylemi açıklar. Tüm olası eylemler için syslog.conf (5) kılavuzuna bakın.

argümanlar

Bu alan, son alandaki eylemlere ek argümanlar gösterir. Dosya günlüğü için bu, log dosyasının dosya adıdır; kullanıcı-kayıt için bu kullanıcıların listesidir; Uzak kayıt için bu oturum açmak için makinenin ana bilgisayar adıdır; konsol günlüğü için bu kullanılan konsoldur; tty-logging için bu belirtilen tty'dir; duvarın ek argümanları yoktur.

Ayrıca bakınız

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

İşbirlikçiler

Syslogd BSD kaynaklarından alınmıştır, Greg Wettstein (greg@wind.enjellic.com) limanı Linux'a yapmış , Martin Schulze (joey@linux.de) bazı hataları düzeltmiş ve birkaç yeni özellik eklenmiştir. Klogd aslında Steve Lord (lord@cray.com) tarafından yazılmıştır, Greg Wettstein büyük gelişmeler yaptı.

Greg Wettstein
Enjellic Sistem Geliştirme

Onkoloji Araştırma Bölümü Bilgi İşlem Tesisi
Roger Maris Kanser Merkezi
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
bilgisayar Bilimleri Bölümü
Edinburgh Üniversitesi, İskoçya
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Önemli: Komutunuzun belirli bir bilgisayarda nasıl kullanıldığını görmek için man komutunu ( % adam ) kullanın.

İlgili Makaleler