Monday, 15 September 2014

Configuring RSYSLOG Server and RSYSLOG Client in RHEL 6

Configuring RSYSLOG Server and RSYSLOG Client
==========================================
একটি প্রোডাকশন নেটওয়ার্কে অসংখ্য নেটওয়ার্ক ডিভাইস যেমনঃ সুইচ, রাউটার, সার্ভার থাকতে পারে। এই সব ডিভাইসসমূহে প্রতিনিয়ত বিভিন্ন কনফিগারেশন পরিবর্তন করতে হয়, প্রতিদিন অসংখ্য বার ইন্টারফেস আপ-ডাউন হয়, পোর্টে ACL ভায়োলেশন হয়। এ রকম আরো অনেক কারণে প্রতিটি ডিভাইস প্রতিদিন শত শত Log জেনারেট করে। এই Log গুলো দেখা ও এ্যানালাইজ করা নেটওয়ার্ক সিকিউরিটির একটি অন্যতম গুরুত্বপূর্ণ বিষয়। ডিভাইসের Log দেখে বুঝা যায় ডিভাইসসমূহে অস্বাভাবিক কিছু ঘটছে কিনা। এই Log দেখেই পরবর্তী করণীয় ব্যবস্থা গ্রহন করা সহজ হয়। কিন্তু সমস্যা হলো যে, এই অসংখ্য ডিভাইসসমূহের Log আলাদা আলাদাভাবে দেখা অনেক কঠিন একটি কাজ। প্রতিটি ডিভাইসের টার্মিনাল ওপেন করে এদের Log মনিটর করা ভাল কোন সমাধানও নয়। এই ধরণের সমস্যার সমাধান হিসেবে ব্যবহার করা যেতে পারে RSYSLOG সার্ভার।
.
RSYSLOG এমন এক ধরণের সার্ভার যার কাছে নেটওয়ার্কের সকল RSYSLOG ক্লায়েন্ট ডিভাইসসমূহ এদের নিজস্ব Log পাঠায়। RSYSLOG সার্ভার প্রাপ্ত Log সমূহ নিজের টার্মিনালে দেখায় এবং ভবিষ্যতের রেকর্ড হিসেবে সংরক্ষনও করে থাকে। যখন Cisco ডিভাইসসমূহে Console/VTY পোর্টের মাধ্যমে কানেক্ট হয়ে কাজ করা হয় তখন ডিভাইসসমূহ বিভিন্ন সময়ে Log জেনারেট করে যা আমরা টার্মিনালে দেখতে পাই। এই Log সমূহ ডিভাইসের বাফারে জমা থাকে, এগুলোকে স্থায়ীভাবে সংরক্ষণ করা যায় না। কোন কারণে ডিভাইস রিবুট হলে Log গুলো হারিয়ে যায়। কিন্তু এক্ষেত্রে যদি আমরা RSYSLOG সার্ভার ব্যবহার করি তাহলে Log সমূহ সংরক্ষন করা সম্ভব এবং প্রয়োজনে পরবর্তীতে এ্যানালাইজ করা সম্ভব।
.
জেনারেট হওয়া Log সমূহের আটটি লেভেল রয়েছে। যেমনঃ
i. Level 0: Emergencies
ii. Level 1: Alerts
iii. Level 2: Critical
iv. Level 3: Errors 
v. Level 4: Warning
vi. Level 5: Notification
vii. Level 6: Informational
viii. Level 7: Debugging
.
এই লেভেলসমূহকে Severity Level বলা হয়ে থাকে। লেভেলের ভ্যালু যত কম হবে লেভেলের গুরুত্ব তত বেশি হবে।

একটি Log Message এর তিনটি অংশ রয়েছে। 
i. Timestamp:
ii. Log Message Name and Severity Level
iii. Message Text
.
Configuring RSYSLOG Server
--------------------------------------
RSYSLOG এর পূর্ণরূপ হলো Rocket-fast System for Log Processing । এই RSYSLOG সার্ভারের মাধ্যমে বিভিন্ন ধরণের ডিভাইস থেকে Log রিসিভ করা যায়।
.
প্রথমে একটি Red Hat 6 মেশিনে আমরা rsyslog প্যাকেজটি ইনস্টল করবো।
[root@rsyslog ~]# yum install rsyslog* -y
.
প্যাকেজ ইন্সটল করা শেষ হলে আমরা /etc/rsyslog.conf ফাইলের মধ্যে কয়েকটি লাইনকে নিচের মতো করে এডিট করবো। লাইনগুলো ফাইলের মধ্যে লেখাই থাকে, শুধুমাত্র লাইনের শুরুতে # ক্যারেক্টারটি তুলে দিতে হবে।
.
[root@rsyslog ~]# vi /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514
.
# Provides TCP syslog reception
$ModLoad imtcp.so 
$InputTCPServerRun 514
.
অতঃপর আমরা /etc/sysconfig/rsyslog ফাইলটিতে নিচের মতো করে একটি লাইন লিখে ফাইলটি সেভ করবো।
.
[root@rsyslog ~]# vi /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-r -m 0"
.
ফাইলটি এডিট করা শেষ হলে আমরা rsyslog সার্ভিসটি স্টার্ট করবো
.
[root@rsyslog ~]# /etc/init.d/rsyslog start
Starting system logger: [ OK ]
[root@rsyslog ~]# chkconfig rsyslog on
.
যদি সার্ভারটিতে iptables সার্ভিস চলমান থাকে তাহলে সার্ভারটি যেন ক্লায়েন্ট ডিভাইসসমূহ থেকে Syslog Message গ্রহন করতে পারে সেজন্য আমরা TCP ও UDP 514 নম্বর পোর্টটিকে iptables এ Allow করবো এবং iptables সার্ভিসটি রিস্টার্ট দিব। 
.
[root@rsyslog ~]# iptables -I INPUT -p tcp --dport 514 -j ACCEPT
[root@rsyslog ~]# iptables -I INPUT -p udp --dport 514 -j ACCEPT
[root@rsyslog ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
.
সবশেষে যে ক্লায়েন্ট ডিভাইসসমূহ সার্ভারের কাছে Log পাঠাবে সেই ডিভাইসসমূহের আই.পি এবং হোষ্টনেমগুলো আমরা সার্ভার মেশিনের /etc/hosts ফাইলের মধ্যে এন্ট্রি দিব। ফাইলটির মধ্যে সার্ভারের নিজের আই.পি এবং হোষ্টনেমও থাকবে।
.
[root@rsyslog ~]# vi /etc/hosts
192.168.10.5 rsyslog.example.com server
192.168.10.11 router1.example.com router1
192.168.10.12 router2.example.com router2
192.168.10.13 www.example.com www
.
এই পর্যন্ত আমাদের RSYSLOG সার্ভার কনফিগার করার কাজ আপাতত শেষ। এখন আমরা দেখবো Cisco রাউটারকে কিভাবে RSYSLOG ক্লায়েন্ট হিসেবে কনফিগার করতে হয়।
.
প্রথমে আমরা রাউটারটির আই.পি এ্যাড্রেস, হোষ্টনেম, ডোমেইন ইত্যাদি কনফিগার করবো।
.
RT#configure terminal
RT(config)‪#‎hostname‬ Router1
Router1(config)‪#‎ip‬ domain-name example.com
Router1(config)‪#‎interface‬ fastEthernet 0/0
Router1(config-if)#ip address 192.168.10.11 255.255.255.0
Router1(config-if)‪#‎no‬ shutdown
Router1(config-if)‪#‎exit‬
.
একটি রাউটারে একাধিক ইন্টারফেস থাকতে পারে। এখন আমরা রাউটারটি এর কোন ইন্টারফেস দিয়ে সার্ভারের কাছে Log Message পাঠাবে তা নির্ধারণ করে দিবো।
.
Router1(config)‪#‎logging‬ source-interface fastEthernet 0/0
.
অতঃপর আমরা Log সমূহের Severity Level নির্ধারণ করবো। যেমনঃ আমরা যদি Severity Level হিসেবে 5 নির্ধারণ করি তাহলে রাউটার 0 থেকে 5 পর্যন্ত লেভেলের Log গুলো সার্ভারের কাছে পাঠাবে।
.
Router1(config)#logging trap 5
.
সবশেষে আমরা রাউটারের Logging অপশনটি এনাবল করবো।
.
Router1(config)#logging on
.
আমাদের RSYSLOG ক্লায়েন্ট কনফিগার করার কাজ শেষ। আমরা চাইলে ঠিক একইভাবে নেটওয়ার্কের আরো অনেক ডিভাইসকে RSYSLOG ক্লায়েন্ট হিসেবে কনফিগার করতে পারি।
.
আমরা যখন নেটওয়ার্কে একটি RSYSLOG সার্ভার ও একটি RSYSLOG ক্লায়েন্ট কনফিগার করবো তখন ক্লায়েন্ট ডিভাইসটি এর জেনারেট হওয়া Log গুলো সার্ভারের কাছে পাঠাবে। এখন আমরা RSYSLOG সার্ভারের টার্মিনাল থেকে ক্লায়েন্টের বিভিন্ন Log দেখতে পারবো। এই Log গুলো বাই ডিফল্ট RSYSLOG সার্ভারের /var/log/message ফাইলের মধ্যে জমা হয়। আমরা যদি পুরো ফাইলের কনটেন্ট দেখতে চাই তাহলে cat /var/log/message কমান্ডটি ব্যবহার করতে হবে। আর যদি ফাইলে শেষ দশটি লাইন দেখতে চাই তাহলে নিচের কমান্ডটি দিতে হবে।
[root@syslog ~]# tail -f /var/log/messages
.
Sep 11 23:03:14 router1.example.com 14: *Mar 1 00:09:07.747:
%SYS-5-CONFIG_I: Configured from console by console
Sep 11 23:03:47 router1.example.com 15: *Mar 1 00:09:40.563:
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
Sep 11 23:03:47 router1.example.com 16: *Mar 1 00:09:41.563: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
Sep 11 23:04:06 router1.example.com 17: *Mar 1 00:10:00.215:
%SYS-5-CONFIG_I: Configured from console by console
Sep 11 23:08:11 router1.example.com 9: *Mar 1 00:00:14.651:
%SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 192.168.10.5 started - CLI initiated
Sep 11 23:08:12 router1.example.com 10: *Mar 1 00:00:14.719:
%LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
Sep 11 23:08:13 router1.example.com 11: *Mar 1 00:00:15.367: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Sep 11 23:08:13 router1.example.com 12: *Mar 1 00:00:15.723: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
.
নেটওয়ার্কে যতগুলো RSYSLOG ক্লায়েন্ট ডিভাইস থাকবে ততগুলো ডিভাইসের Log ই FIFO এর ভিত্তিতে RSYSLOG সার্ভারের /var/log/message ফাইলের মধ্যে একের পর এক জমা হবে এবং আমরা তা দেখতে পারবো।


No comments:

Post a Comment