تا %60 درصد تخفیف برای تنها 8 نفر با کد 8ATHSL8U + صدور گواهینامه فقط تا
000000

فعال کردن remote logging در لینوکس با استفاده از rsyslog

قبلا در ITPRO بصورت مفصل در خصوص ساختار syslog و همچنین نسخه های مختلفی syslog صحبت کردیم و اشاره کردیم که ساختار syslog تغییر نکرده است و مفاهیم facility و priority همانی هست که بوده است و تغییر نکرده است اما امروزه به جای استفاده از syslog از rsyslog استفاده می شود و در اکثر توزیع های لینوکس شما دیگر چیزی به نام syslog را مشاهده نمی کنید. امروز می خواهیم به شما نحوه فعال کردن و استفاده از rsyslog برای ارسال کردن log ها به یک سرور دیگر و یا دریافت کردن log از سرورهای دیگر را آموزش بدهیم که ما آن را به عنوان remote logging می شناسیم. خوب آموزشی که امروز قرار هست برای شما در ITPRO قرار بدهیم هم در لینوکس های خانواده RedHat و هم در توزیع های Debian قابل استفاده است هر چند در نسخه های مختلف ممکن است کمی تفاوت داشته باشد به هر حال مواردی که امروز آموزش می بینیم به شرح زیر می باشد :

  1. چگونه با استفاده از rsyslog قابلیت remote logging را فعال کنیم ؟
  2. چگونه به سیستم عامل بگوییم که remote syslog message ها را دریافت و قبول کنند ؟
  3. چگونه با استفاده از rsyslog برای یک سیستم دیگر در شبکه syslog ارسال کنیم ؟

خوب قبل از اینکه کاری کنید بایستی مطمئن بشوید که شما rsyslog را روی سیستم نصب شده دارید برای اینکار در سیستم عامل های خانواده RedHat دستور زیر را وارد کنید :

# yum install rsyslog  

خوب در مرحله اول ما بایستی به rsyslog بگوییم که بتوان remote log ها را با استفاده از پورت TCP قبول کند و به همین دلیل بایستی فایل تنظیمات rsyslog به آدرس etc//rsyslog.conf// را باز می کنیم و به دنبال مقادیر زیر می گردیم و آنها را از حالت comment خارج می کنیم ، اگر مقادیر زیر وجود ندارند بایستی بصورت دستی در فایل مربوطه وارد شوند که اینکار معمولا در توزیع های قدیمی تر خانواده RedHat نیاز است :

$ModLoad imtcp
$InputTCPServerRun 514

خوب بعد از اینکه تغییرات بالا را در فایل rsyslog.conf ذخیره کردیم از فایل خارج شده و سرویس rsyslog را با استفاده از دستور زیر restart می کنیم :

 [root@server1 ~]# service rsyslog restart

در توزیع های قدیمی تر لینوکس ابتدا بایستی سرویس syslog را stop کرده و سپس مطابق دستور زیر سرویس rsyslog را restart کنید :

[root@server1 ~]# service syslog stop
[root@server1 ~]# service rsyslog restart

خوب تا اینجا rsyslog server ما فعال شده و قابلیت دریافت rsyslog message ها بر روی پورت TCP را دارد ، اما ما باید تنظیماتی را بر روی کلاینت هایی که قرار هست rsyslog message بفرستند هم انجام بدهیم تا پیام های خودشان را به سمت سرور ارسال کنند ، برای اینکار شما مجددا اینبار روی لینوکس کلاینتی که دارید بایستی همان فایل rsyslog.conf که در مسیر قبلی قرار دارد را باز کرده و در انتهای فایل خطوط زیر را وارد کنید :

# remote host is: name/ip:port, e.g. 172.20.16.1:514, port optional
#*.* @remote-host:514
*.*         @@10.10.10.1:514

خوب دستور بالا به این شکل تحلیل می شود که هر نوع facility با هر نوع priority رو برای آدرس IP به شماره 10.10.10.1 روی پورت 514 از نوع TCP ارسال کن ، دقت کنید که نماد @@ یعنی TCP در اینجا و اگر یک @ باشد یعنی UDP که در ادامه در این خصوص آموزش می دهیم ، اگر قرار هست که فقط یک نوع خاص از facility ها را منتقل کنید دستور به شکل زیر وارد می شود :

*.info      @@10.10.10.1:514

دستور بالا تمامی facility ها را به همراه priority حالت info و بالاتر را برای ادرس IP تعریف شده ارسال می کنند ، بعد از انجام شدن تغییرات ذکر شده بایستی مجددا سرویس rsyslog را در کامپیوتر کلاینت restart کنیم ، برای اینکار دستور زیر را وارد می کنیم :

 [root@server2 ~]# service rsyslog restart

در توزیع های قدیمی تر لینوکس ابتدا بایستی سرویس syslog را stop کرده و سپس مطابق دستور زیر سرویس rsyslog را restart کنید :

[root@server1 ~]# service syslog stop
[root@server1 ~]# service rsyslog restart

خوب در حال حاضر هر syslog message ای بر روی server1 ما ایجاد شود در قالب TCP به server2 ارسال خواهد شد و server2 هم پذیرای این مسئله خواهد بود ، اما همیشه پیام های ما TCP نیستند و ما می توانیم پیام های UDP نیز ارسال کنیم ، برای اینکه کاری کنیم که پیام های UDP نیز ارسال و دریافت شوند مجددا بر روی server2 وارد شده و فایل rsyslog.conf را باز می کنیم اینبار دنیال مقادیر زیر می گردیم و آنها را از حالت Comment خارج می کنیم :

# Provides UDP syslog reception  
$ModLoad imudp
$UDPServerRun 514

بعد از اینکه تغییرات بالا را ذخیره کردیم از فایل مورد نظر خارج شده و سرویس rsyslog را یکبار restart می کنیم :

[root@server1 ~]# service rsyslog restart

خوب حالا از server2 خارج شده و روی سرور کلاینت یا server1 می رویم و مجددا فایل rsyslog.conf را باز می کنیم و مقادیر زیر را در انتهای فایل وارد می کنیم :

# remote host is: name/ip:port, e.g. 172.16.1.1:514, port optional
#*.* @remote-host:514
*.*         @10.10.10.1:514

خوب دستور بالا به این شکل تحلیل می شود که هر نوع facility با هر نوع priority رو برای آدرس IP به شماره 10.10.10.1 روی پورت 514 از نوع UDP ارسال کن ، دقت کنید که نماد @ یعنی TCP در اینجا و اگر دو @@ باشد یعنی TCP ، اگر قرار هست که فقط یک نوع خاص از facility ها را منتقل کنید دستور به شکل زیر وارد می شود :

*.info      @10.10.10.1:514

دستور بالا تمامی facility ها را به همراه priority حالت info و بالاتر را برای ادرس IP تعریف شده ارسال می کنند ، بعد از انجام شدن تغییرات ذکر شده بایستی مجددا سرویس rsyslog را در کامپیوتر کلاینت restart کنیم ، برای اینکار دستور زیر را وارد می کنیم :

[root@server2 ~]# service rsyslog restart

خوب حالا کار ما تقریبا تمام شده است ، ما کاری کردیم که هر نوع syslog message ای از هر نوع facility و با هر درجه priority از server1 به سمت server2 منتقل شود. حالا نوبت آن است که اینها را تست کنیم ، برای تیت کردن تنظیمات ما از server1 با استفاده از دستور logger می توانیم بصورت دستی ثبت log کنیم که در server2 ثبت خواهند شد ، به دستور پایین دقت کنید :

[root@server1 ~]# logger This is www.tosinso.com  

حالا بر روی server2 که rsyslog server ما هست وارد قسمت messages در مسیر زیر می شویم و پیام بالا را مشاهده می کنیم :

[root@server2 ~]# tail /var/log/messages  
Dec 25 00:00:01 server2 root: This is www.tosinso.com

خوب همانطور که مشاهده می کنید log ها به سمت سرور مورد نظر ارسال شده اند ، دقت کنید که محل قرارگیری log ها در سرور syslog بستگی به نوع log دارد ، طبیعی است که در این شرایط خاص log های ما در قسمت messages قرار خواهد گرفت. شما زمانیکه از یک روتر استفاده می کنید و اندازه حافظه داخلی آن کم است می توانید از syslog برای لاگ برداری استفاده کنید. امیدوارم مورد توجه شما قرار گرفته باشد. ITPRO باشید

نویسنده : محمد نصیری

منبع : ITPRO

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

4 نظر
محمد عابدینی

فقط یک سوال در این روش فکر می کنم که اطلاعات ارسال شده در سمت سرور به صورت متن و بدون رمزگذاری ارسال میشه که می تونه در نوع خودش خطرناک باشه.

آیا روشی وجود داره که ارتباط بین سرور و کلاینت رو کد کرد تا در شبکه به صورت رمزنگاری شده اطلاعات ارسال بشه؟

محمد نصیری

تا جاییکه بنده میدونم این مکانیزم Hashing کارش و اساس سیستمی که داره Local Authentication هست ، طبیعتا برای بحث Remote Authentication ما پروتکل های ترکیبی داریم ، یا میایم Session رو Secure می کنیم مثلا SSH می زنیم و Login می کنیم یا اینکه از پروتکل های احراز هویت از راه دور مثل CHAP و PEAP استفاده می کنیم.

محمد عابدینی

روشی وجود داره تا بشه از طریق ssl بشه اطلاعات رو به صورت کد شده ارسال بشه.

یکی از معایب استفاده از remote syslog server همین مطلبه.

محمد نصیری

تو لینک زیر روشی رو توضیح داده برای استفاده از rsyslog به همراه ssl ولی خودم استفاده نکردم :

http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر