لینوکس Syslogd و فرمان یونیکس

Sysklogd دو سرویس سیستم را فراهم می کند که پشتیبانی از ورود به سیستم و ترویج پیام های هسته ای را ارائه می دهد. پشتیبانی از هر سوکت دامنه اینترنتی و یونیکس این بسته ابزار را برای پشتیبانی از ورود و خروج محلی و از راه دور پشتیبانی می کند.

ورود به سیستم توسط یک نسخه syslogd (8) از منابع سهام BSD ارائه شده است. پشتیبانی از ورود به سیستم هسته توسط klogd (8) ارائه شده است که اجازه می دهد تا ورودی های کرنل به صورت مستقل یا به عنوان مشتری syslogd انجام شود.

Syslogd نوعی ورود به سیستم را که بسیاری از برنامه های مدرن استفاده می کند فراهم می کند. هر پیام وارد شده شامل حداقل یک زمان و یک فیلد نام میزبان است، که معمولا یک فیلد نام برنامه است، اما این بستگی به این دارد که چگونه برنامه ورود به سیستم قابل اعتماد است.

در حالی که منابع syslogd به شدت تعدادی از یادداشت ها مرتب اصلاح شده اند. اول از همه، یک تلاش سیستماتیک برای اطمینان از اینکه syslogd به طور پیش فرض، رفتار استاندارد BSD دنبال می کند، وجود دارد. دومین مفهوم مهم برای یادآوری این است که این نسخه از syslogd شفاف با نسخه syslog موجود در کتابخانه های استاندارد ارتباط برقرار می کند. اگر یک باینری مرتبط با کتابخانه های به اشتراک گذاشته استاندارد نتواند به طور صحیح عمل کند، ما نمونه ای از رفتار غیرعادی را می خواهیم.

فایل پیکربندی اصلی /etc/syslog.conf یا یک فایل جایگزین با گزینه -f در هنگام راه اندازی خوانده می شود. هر خطی که از علامت هش (`` # '') شروع می شود و خط خالی است نادیده گرفته می شود. اگر خطا در هنگام تجزیه رخ دهد تمام خط نادیده گرفته می شود.

خلاصه داستان

[ -d ] [ -f ] فایل پیکربندی [ -h ] [ -l میزبان ] [ -m فاصله ] [ -n ] [ -p سوکت ] [ -r ] [ -s domainlist ] [ - v ] [ -x ]

گزینه ها

سوکت

با استفاده از این استدلال می توانید سوکت های اضافی را از آن syslogd استفاده کنید تا گوش دهید. اگر میخواهید بعضی از خدمتگزاران در یک محیط chroot () اجرا شوند، این مورد نیاز است. شما می توانید تا 19 سوکت اضافی استفاده کنید. اگر محیط شما نیاز بیشتری داشته باشد، باید نماد MAXFUNIX را در فایل منبع syslogd.c افزایش دهید. یک نمونه برای یک daemon chroot () توسط افرادی از OpenBSD در http://www.psionic.com/papers/dns.html توصیف شده است.

-d

حالت اشکالزدایی را روشن می کند با استفاده از این، daemon یک چنگال (2) را برای تنظیم خود در پسزمینه اجرا نخواهد کرد، بلکه در مقابل آن در پیش زمینه قرار میگیرد و اطلاعات زیادی را درباره اشکالزدایی در tty فعلی بنویسد. برای اطلاعات بیشتر بخش DEBUGGING را ببینید.

-f فایل پیکربندی

به جای /etc/syslog.conf ، که به طور پیش فرض است، یک فایل پیکربندی جایگزین را تعیین کنید.

به طور پیش فرض syslogd پیام هایی را که از میزبان های راه دور دریافت می کنند را نمی فرستد. مشخص کردن این سوئیچ در خط فرمان موجب می شود که daemon دیتابیس را به هر پیامی از راه دور ارسال کند که به میزبانهای تعریف شده منتقل می شود.

-l میزبان

نام میزبان را مشخص کنید که باید فقط با نام میزبان ساده و نه fqdn وارد شود. میزبان چندگانه ممکن است با استفاده از جداکننده کولون (``: '') مشخص شود.

-m فاصله

syslogd به طور منظم زمان نشانه علامت گذاری می کند. فاصله پیش فرض بین دو خط MARK - 20 دقیقه است. این را می توان با این گزینه تغییر داد. تنظیم فاصله تا صفر آن را کاملا خاموش می کند.

-n

اجتناب از پیشگیری خودکار این به ویژه اگر syslogd شروع و کنترل شده توسط init (8) مورد نیاز است.

-p سوکت

شما می توانید سوکت دوم یونیکس جایگزین را به جای / dev / log مشخص کنید .

-r

این گزینه این امکان را برای دریافت پیام از شبکه با استفاده از سوکت دامنه اینترنت با سرویس syslog فراهم می کند (نگاه کنید به (5)). پیش فرض این است که هیچ پیامی از شبکه دریافت نکنید.

این گزینه در نسخه 1.3 بسته sysklogd معرفی شده است. لطفا توجه داشته باشید که رفتار پیش فرض مخالف رفتار نسخه های قدیمی است، بنابراین ممکن است مجبور شوید این را فعال کنید.

فهرست دامنه

یک نام دامنه را مشخص کنید که باید قبل از ورود به آن خراب شود. دامنه های متعدد ممکن است با استفاده از جدا کننده کولون (``: '') مشخص شود. لطفا توجه داشته باشید که هیچ زیر دامنه مشخص نمی شود، بلکه تنها کل دامنه هاست. به عنوان مثال if -s north.de مشخص شده است و ورود به میزبان به satuzinfodrom.north.de برمی گردد و هیچ دامنه ای برش نمی شود، شما باید دو دامنه مانند: -s north.de:infodrom.north.de را مشخص کنید.

-v

نسخه چاپی و خروج

-ایکس

هنگام دریافت پیام های از راه دور، نام های جستجو را غیرفعال کنید. این در حالی است که سرور نامی در همان دستگاهی اجرا می شود که daemon syslog را اجرا می کند، از وقفه ها جلوگیری می کند.

سیگنال ها

Syslogd به مجموعه ای از سیگنال ها واکنش نشان می دهد. شما به راحتی می توانید سیگنال را به syslogd با استفاده از موارد زیر ارسال کنید:

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

Sighup

این اجازه می دهد تا syslogd مقداردهی مجدد را انجام دهد. تمام فایل های باز بسته هستند، فایل پیکربندی (به طور پیش فرض /etc/syslog.conf ) و دوباره syslog (3) دوباره شروع می شود.

SIGTERM

syslogd میمیرد

SIGINT ، SIGQUIT

اگر اشکال زدایی فعال باشد، اینها نادیده گرفته می شوند، در غیر این صورت syslogd می میرد.

SIGUSR1

روشن / خاموش کردن اشکال زدایی این گزینه را می توان تنها با استفاده از syslogd با گزینه -d debug آغاز کرد.

SIGCHLD

در صورتی که بعضی از آنها متولد شده باشند، به خاطر پیام های دیواری، صبر کنید.

پیکربندی تفاوت های نحوی فایل

Syslogd با استفاده از یک سینتکس کمی متفاوت برای فایل پیکربندی آن از منابع اصلی BSD استفاده می کند. در اصل تمام پیامهای یک اولویت خاص و بالاتر به پرونده ورود به سیستم ارسال شد.

برای مثال، خط زیر باعث خروجی ALL از daemons با استفاده از امکانات daemon (اشکالزدایی کمترین اولویت است، بنابراین هر کدام از بالاتر نیز مطابقت دارند) برای رفتن به / usr / adm / daemons :

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

تحت طرح جدید، این رفتار باقی می ماند. تفاوت این است که اضافه کردن چهار مشخص کننده جدید، علامت ستاره ( * )، علامت معادله ( = )، علامت تعجب ( ! ) و علامت منفی ( - ).

* مشخص می کند که تمام پیام های مربوط به امکانات مشخص شده باید به مقصد منتقل شوند. توجه داشته باشید که این رفتار با مشخص کردن یک سطح اولویت اشکالزدایی از بین رفته است. کاربران نشان داده اند که علامت ستاره ای بصری تر است.

= wildcard برای محدود کردن ورود به کلاس به کلاس اولویت مشخص شده استفاده می شود. برای مثال، این اجازه می دهد، فقط پیام های اشکال زدایی را به یک منبع ورودی خاص اختصاص دهد.

برای مثال، خط زیر در syslog.conf پیام های اشکال زدایی را از همه منابع به فایل / usr / adm / debug منتقل می کند.

# Sample syslog.conf *. = debug / usr / adm / debug

این ! برای حذف ثبت از اولویت های مشخص شده استفاده می شود. این همه (!) امکانات تعیین اولویت را تحت تاثیر قرار می دهد.

به عنوان مثال، خطوط زیر تمام پیام های پست الکترونیکی را به جز کسانی که اطلاعات اولویتی را در فایل / usr / adm / mail ثبت می کنند، وارد می کنند. و تمام پیام ها از news.info (از جمله) به news.crit (به غیر از) به فایل / usr / adm / news وارد می شوند.

# Sample syslog.conf mail. *؛ mail!! = info / usr / adm / mail news.info؛ news! crit / usr / adm / news

شما می توانید آن را به طور یکپارچه به عنوان یک استثنا مشخص کنید. تفسیر فوق به سادگی معکوس است. این کار را می توانید انجام دهید

mail.none

یا

پست الکترونیکی. *

یا

ایمیل. اشکال زدایی

برای جست و خیز هر پیام که با امکانات پست الکترونیکی است. اتاق زیادی برای بازی کردن وجود دارد. :-)

- اگر فقط می خواهید همگام سازی فایل را پس از هر نوشتن به آن انجام دهید، می توانید تنها برای پیشوند یک نام پرونده استفاده کنید.

این ممکن است برخی از تغییرات را برای کسانی که به رفتار خالص BSD مورد استفاده قرار می گیرند، اما آزمایشکنندگان نشان داده اند که این نحو تا حدودی انعطاف پذیر تر از رفتار BSD است. توجه داشته باشید که این تغییرات نباید بر فایلهای استاندارد syslog.conf (5) تاثیر بگذارد. برای به دست آوردن رفتار پیشرفته، باید فایل های پیکربندی را به طور خاص تغییر دهید.

پشتیبانی از ورود به سیستم از راه دور

این اصلاحات پشتیبانی شبکه را به تسهیلات syslogd ارائه می دهد. پشتیبانی شبکه به این معنی است که پیام ها را می توان از یک گره در حال اجرا syslogd به گره دیگری که syslogd را اجرا می کنند، جایی که آنها در واقع به یک فایل دیسک وارد می شوند، ارسال می کنند.

برای فعال کردن این شما باید گزینه -r را در خط فرمان مشخص کنید. رفتار پیش فرض این است که syslogd به شبکه گوش نمی دهد.

استراتژی این است که syslogd را در یک سوکت حوزه یونیکس برای پیام های ورودی محلی ایجاد کنید. این رفتار اجازه خواهد داد که syslogd با syslog موجود در کتابخانه استاندارد C همکاری کند. در همان زمان syslogd در پورت syslog استاندارد برای پیام های فرستاده شده از میزبان های دیگر گوش می دهد. برای این کار به درستی سرویس (5) فایل (معمولا در / etc یافت می شود ) باید ورود زیر:

syslog 514 / udp

اگر این ورودی از بین رفته است syslogd نمی تواند پیام های راه دور را دریافت کند و یا آنها را ارسال نکند زیرا پورت UDP نمی تواند باز شود. در عوض، syslogd بلافاصله میمیرد و پیام خطا را خنثی میکند.

برای اینکه پیام ها به یک میزبان دیگر ارسال شوند، خط فایل معمولی را در فایل syslog.conf با نام میزبان که پیام با یک @ ارسال می شود جایگزین می کند.

برای مثال، برای ارسال ALL پیام به یک میزبان از راه دور با استفاده از ورود syslog.conf زیر:

# نمونه پرونده پیکربندی syslogd را به # پیام به میزبان از راه دور رو به جلو همه. *. * @ hostname

برای ارسال تمام پیام های هسته به یک میزبان از راه دور، فایل پیکربندی به شرح زیر است:

# پرونده پیکربندی نمونه برای انتقال همه پیام های هسته # به یک میزبان از راه دور. kern. * @ hostname

اگر نام راه دور را نمی توان در هنگام راه اندازی حل کرد، زیرا نام سرور ممکن است در دسترس نباشد (ممکن است پس از syslogd شروع شود) لازم نیست نگران باشید. Syslogd مجددا تلاش می کند نام ده بار را حل کند و سپس شکایت کند. یکی دیگر از امکان اجتناب از این، نام میزبان در / etc / hosts است .

با استفاده از syslogd نرمال syslog- cops ها را دریافت می کنید اگر پیام هایی را که از یک میزبان از راه دور به همان میزبان دریافت کرده اید (یا پیچیده تر به یک میزبان سوم که آن را به اولین بفرستد و غیره ارسال می کند). در دامنه من (Infodrom Oldenburg) ما به طور تصادفی یکی و دیسک های ما با یک پیام تک تک پر شده است. :-(

برای جلوگیری از این در زمانهای دیگر هیچ پیامی از میزبان از راه دور دریافت نمی شود تا دیگر (یا همان) میزبان از راه دور دیگر ارسال شود. اگر سناریوهایی وجود داشته باشد که در آن این معنی ندارد، لطفا یک خط را به من بدهید (Joey).

اگر میزبان از راه دور در همان دامنه به عنوان میزبان واقع شود، syslogd در حال اجرا است، فقط نام میزبان ساده به جای تمام fqdn ثبت می شود.

در یک شبکه محلی شما می توانید یک سرور مرکزی ارسال کنید تا تمام اطلاعات مهمی را در یک دستگاه ذخیره شود. اگر شبکه متشکل از حوزه های مختلف باشد، مجبور نیستید به جای نام نام میزبان ساده، وارد شوید. ممکن است بخواهید از ویژگی نوار دامنه این سرور استفاده کنید. شما می توانید syslogd را برای جدا کردن چندین دامنه دیگر از سرور که در آن قرار دارد را وارد کنید و تنها نام های میزبان ساده را وارد کنید.

با استفاده از گزینه -l نیز امکان تعریف میزبان تنها به عنوان ماشین های محلی وجود دارد. این نیز باعث می شود فقط نام های ساده ی خود را وارد کنید و نه fqdns.

سوکت UDP برای ارسال پیام به میزبان های از راه دور و یا دریافت پیام از آنها تنها زمانی باز می شود که لازم باشد. در انتشارات قبل از 1.3-23 هربار باز شد اما برای خواندن و یا ارسال به ترتیب باز نشد.

خروجی به نام لوله (FIFOs)

این نسخه از syslogd پشتیبانی از ورود خروجی به نام لوله (fifos) است. با استفاده از پیشوند یک نماد pipy (`| | '') به نام فایل به عنوان یک مقصد برای پیام های ورودی می توان یک pipe یا نامیده شده نامیده می شود. این برای اشکال زدایی مفید است. توجه داشته باشید که fifo باید با دستور mkfifo قبل از شروع syslogd ایجاد شود.

فایل پیکربندی زیر، خطاهای اشکالزدایی از هسته را به fifo میفرستد:

# پیکربندی نمونه برای راهاندازی خطای هسته ای # پیام فقط به / usr / adm / debug که # pipe نامیده می شود. kern. = debug | / usr / adm / debug

نگرانی های نصب

در هنگام نصب این نسخه از syslogd احتمالا یکی از مهمترین موارد است. این نسخه از syslogd وابسته به قالب بندی مناسب پیامها توسط تابع syslog است. عملکرد عملکرد syslog در کتابخانه های به اشتراک گذاشته شده جایی در منطقه libc.so.4 تغییر کرده است. [2-4] .n. تغییر خاصی برای خالی کردن پیام قبل از ارسال آن به سوکت / dev / log بود . عملکرد مناسب این نسخه از syslogd وابسته به خاتمه دادن خالی پیام است.

این مسئله به طور معمول ظاهر خواهد شد اگر قدیمی باینری مرتبط با استاتیک در سیستم استفاده شود. باینری هایی که از نسخه های قدیمی عملکرد تابع syslog استفاده می کنند، خطوط خالی را وارد می کنند و پیام را با اولین کاراکتر پیام حذف می کنند. تغییر این دوچرخه ها به نسخه های جدیدتر از کتابخانه های به اشتراک گذاشته شده این مشکل را اصلاح می کند.

هر دو syslogd (8) و klogd (8) می توانند از init (8) اجرا شوند یا به عنوان بخشی از دنباله rc. * شروع شوند. اگر از init شروع شود، گزینه -n باید تنظیم شود، در غیر این صورت، شما می توانید تعداد زیادی از daemons syslog را شروع کنید. این به این دلیل است که init (8) به ID فرایند بستگی دارد.

تهدیدات امنیتی

پتانسیل برای استفاده از daemon syslogd به عنوان یک کانال برای حمله انکار سرویس وجود دارد. با تشکر از جان موریسون (jmorriso@rflab.ee.ubc.ca) برای اطلاع من به این پتانسیل. یک برنامه مخرب (mer) می تواند بسیار راحت باشد که daemon syslogd را با پیام های syslog وارد می کند و در نتیجه فایل های log که تمام فضای باقیمانده را در سیستم فایل ذخیره می کنند . فعال سازی ورود به سیستم از سوکت های دامنه inet، قطعا یک سیستم را در معرض خطرات خارج از برنامه ها یا افرادی که در دستگاه محلی قرار دارند قرار می دهد.

تعدادی از روش های حفاظت از ماشین وجود دارد:

  1. اجرای فایروال کرنل برای محدود کردن اینکه چه میزبان یا شبکه ها به سوکت 514 / UDP دسترسی دارند.
  2. ورود به سیستم را می توان به یک فایل سیستم جداگانه یا غیر ریشه هدایت کرد که اگر آن را پر کند، دستگاه را مختل نخواهد کرد.
  3. سیستم فایل ext2 می تواند مورد استفاده قرار گیرد که می تواند برای محدود کردن یک درصد معینی از یک سیستم فایل برای استفاده از ریشه تنها پیکربندی شود. توجه داشته باشید که این کار نیاز به انجام syslogd به عنوان فرآیند غیر ریشه دارد. همچنین توجه داشته باشید که این امر از ورود به سیستم از راه دور جلوگیری خواهد کرد زیرا syslogd قادر به اتصال به سوکت 514 / UDP نخواهد بود.
  4. سوکت های غیر فعال کردن سوکت های دامنه inet باعث محدود کردن ریسک به دستگاه های محلی می شود.
  5. از مرحله 4 استفاده کنید و اگر مشکلی ادامه پیدا کند و به یک برنامه سوگوار ثانوی نباشد، فاصله کوتاهی از 3.5 متر (حدود 1 متر) از مچ پا را فراهم می کند. سوار خاردار --- 3/4، 7/8 یا 1in. میله های فولادی سخت شده، در هر انتهای نخ ریسی. استفاده اولیه از صنعت نفت در غرب داکوتای شمالی و سایر نقاط برای پمپاژ "روغن مکش" از چاه های نفتی. استفاده های ثانوی برای ساخت تعداد زیادی از گاوهای خوراکی و برای مقابله با فرد گاه و بیگاه و سرکش است.

اشکال زدایی

وقتی اشکال زدایی در استفاده از گزینه -d استفاده می شود، syslogd با نوشتن بسیاری از آنچه که در stdout انجام می شود خیلی متبحر است. هر گاه فایل پیکربندی را دوباره خواندید و مجددا تجزیه کردید، یک جدول با توجه به ساختار داده های داخلی خواهید دید. این جدول شامل چهار زمینه است:

عدد

این فیلد شامل شماره سریالی با صفر است. این شماره موقعیت در ساختار داده های داخلی (یعنی آرایه) را نشان می دهد. اگر یک عدد خارج شود، ممکن است یک خطا در خط مربوط به /etc/syslog.conf وجود داشته باشد.

الگو

این رشته پیچیده است و دقیقا نشان دهنده ساختار داخلی است. هر ستون یک تسهیلات است (به syslog (3) مراجعه کنید). همانطور که می بینید، هنوز هم امکانات دیگری وجود دارد که برای استفاده سابق از آنها استفاده می شود، بیشتر از چپ بیشتر استفاده می شود. هر فیلد در ستون نشان دهنده اولویت است (به syslog (3) مراجعه کنید).

عمل

این قسمت عملیات خاصی را که هر زمانی که پیام دریافت شده با الگو مطابقت می یابد، نشان می دهد. برای تمام اقدامات احتمالی به manpage syslog.conf (5) مراجعه کنید.

استدلال

این فیلد آرگومان بیشتری را برای اعمال در آخرین فیلد نشان می دهد. برای ثبت نام فایل این نام فایل برای logfile است؛ برای ورود به سیستم کاربر یک لیست از کاربران است؛ برای ورود به سیستم از راه دور این نام میزبان دستگاه برای ورود به سیستم است؛ برای کنسول logging این کنسول مورد استفاده است؛ برای tty logging این tty مشخص شده است؛ دیوار هیچ استدلالی اضافی ندارد

همچنین مشاهده کنید

logger (1)، syslog (2)، (5)

همکاران

Syslogd از منابع BSD گرفته شده است، Greg Wettstein (greg@wind.enjellic.com) پورت را برای لینوکس انجام داد ، مارتین شولز (joey@linux.de) برخی از اشکالات را ثابت کرد و چندین ویژگی جدید را اضافه کرد. Klogd در اصل توسط استیو لرد (lord@cray.com) نوشته شده است، گرگ Wettstein پیشرفت های عمده ساخته شده است.

دکتر گرگ Wettstein
انجلسی سیستم های توسعه

بخش انکولوژی بخش تحقیقاتی
مرکز سرطان راجر ماریس
فارگو، نیویورک
greg@wind.enjellic.com

استفن تودی
گروه علوم کامپیوتر
دانشگاه ادینبورگ، اسکاتلند
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

شین آلدرتن
shane@ion.apana.org.au

مارتین شولزز
Infodrom Oldenburg
joey@linux.de

مهم: از دستور man ( ٪ man ) برای دیدن نحوه استفاده از دستور در رایانه خاص خود استفاده کنید.

مقالات مرتبط