ค้นหาเว็บไซต์

วิธีจัดการบันทึกของระบบ (กำหนดค่า หมุนเวียน และนำเข้าสู่ฐานข้อมูล) ใน RHEL 7 - ส่วนที่ 5


เพื่อให้ระบบ RHEL 7 ของคุณปลอดภัย คุณจำเป็นต้องทราบวิธีตรวจสอบกิจกรรมทั้งหมดที่เกิดขึ้นบนระบบดังกล่าวโดยการตรวจสอบไฟล์บันทึก ดังนั้น คุณจะสามารถตรวจจับกิจกรรมที่ผิดปกติหรืออาจเป็นอันตราย และดำเนินการแก้ไขปัญหาระบบหรือดำเนินการอื่นที่เหมาะสมได้

ใน RHEL 7 rsyslogd daemon มีหน้าที่รับผิดชอบในการบันทึกระบบและอ่านการกำหนดค่าจาก /etc/rsyslog.conf (ไฟล์นี้ระบุตำแหน่งเริ่มต้นสำหรับบันทึกระบบทั้งหมด) และ จากไฟล์ภายใน /etc/rsyslog.d ถ้ามี

การกำหนดค่า Rsyslogd

การตรวจสอบ rsyslog.conf อย่างรวดเร็วจะเป็นประโยชน์ในการเริ่มต้น ไฟล์นี้แบ่งออกเป็น 3 ส่วนหลัก: โมดูล (เนื่องจาก rsyslog เป็นไปตามการออกแบบโมดูลาร์), คำสั่ง Global (ใช้เพื่อตั้งค่าคุณสมบัติโกลบอลของ rsyslogd daemon) และ กฎ. ดังที่คุณอาจเดาได้ ส่วนสุดท้ายนี้ระบุสิ่งที่ถูกบันทึกหรือแสดง (หรือที่เรียกว่าตัวเลือก) และที่ใด และเราจะมุ่งเน้นตลอดบทความนี้

บรรทัดทั่วไปใน rsyslog.conf เป็นดังนี้:

ในภาพด้านบน เราจะเห็นว่าตัวเลือกประกอบด้วยคู่ Facility:Priority อย่างน้อย 1 คู่ คั่นด้วยเครื่องหมายอัฒภาค โดยที่ Facility อธิบายประเภทของข้อความ (โปรดดูหัวข้อ 4.1.1 ใน RFC 3164 เพื่อดู รายการสิ่งอำนวยความสะดวกทั้งหมดที่มีสำหรับ rsyslog) และลำดับความสำคัญบ่งบอกถึงความรุนแรง ซึ่งอาจเป็นหนึ่งในคำที่อธิบายตนเองได้ต่อไปนี้:

  1. แก้ปัญหา
  2. ข้อมูล
  3. สังเกต
  4. คำเตือน
  5. ผิดพลาด
  6. คริติคอล
  7. เตือน
  8. โผล่ออกมา

แม้ว่าจะไม่ใช่ลำดับความสำคัญ แต่คำหลัก ไม่มี หมายถึงไม่มีลำดับความสำคัญในทุกสิ่งอำนวยความสะดวกที่กำหนด

หมายเหตุ: ลำดับความสำคัญที่กำหนดบ่งชี้ว่าข้อความทั้งหมดที่มีลำดับความสำคัญดังกล่าวขึ้นไปควรได้รับการบันทึก ดังนั้น บรรทัดในตัวอย่างด้านบนจะสั่งให้ rsyslogd daemon บันทึกข้อความที่มีข้อมูลลำดับความสำคัญทั้งหมดหรือสูงกว่า (โดยไม่คำนึงถึงสิ่งอำนวยความสะดวก) ยกเว้นข้อความที่เป็นของ mail, authpriv และบริการ cron (ไม่มีข้อความที่มาจากสิ่งอำนวยความสะดวกนี้จะถูกนำมาพิจารณา) ไปยัง /var/log/messages

คุณยังสามารถจัดกลุ่มอาคารสถานที่หลายแห่งโดยใช้เครื่องหมายโคลอนเพื่อใช้ลำดับความสำคัญเดียวกันกับสถานที่ทั้งหมดได้ ดังนั้นบรรทัดนี้:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

สามารถเขียนใหม่ได้เป็น

*.info;mail,authpriv,cron.none                /var/log/messages

กล่าวอีกนัยหนึ่ง สิ่งอำนวยความสะดวก mail, authpriv และ cron จะถูกจัดกลุ่มไว้ และคำหลัก ไม่มี จะถูกนำไปใช้กับ สามคน

การสร้างไฟล์บันทึกที่กำหนดเอง

หากต้องการบันทึกข้อความ daemon ทั้งหมดไปที่ /var/log/tecmint.log เราจำเป็นต้องเพิ่มบรรทัดต่อไปนี้ใน rsyslog.conf หรือในไฟล์แยกต่างหาก (จัดการได้ง่ายกว่า ) ภายใน /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

มารีสตาร์ท daemon กัน (โปรดทราบว่าชื่อบริการไม่ได้ลงท้ายด้วย d):

systemctl restart rsyslog

และตรวจสอบเนื้อหาของบันทึกแบบกำหนดเองของเราก่อนและหลังรีสตาร์ท daemons สุ่มสองตัว:

เพื่อเป็นแบบฝึกหัดการเรียนรู้ด้วยตนเอง ฉันขอแนะนำให้คุณลองใช้สิ่งอำนวยความสะดวกและลำดับความสำคัญ และบันทึกข้อความเพิ่มเติมลงในไฟล์บันทึกที่มีอยู่หรือสร้างข้อความใหม่ดังในตัวอย่างก่อนหน้านี้

การหมุนบันทึกโดยใช้ Logrotate

เพื่อป้องกันไม่ให้ไฟล์บันทึกเติบโตอย่างไม่มีที่สิ้นสุด ยูทิลิตี logrotate จะใช้ในการหมุน บีบอัด ลบ หรือบันทึกเมล ซึ่งจะทำให้การดูแลระบบที่สร้างไฟล์บันทึกจำนวนมากทำได้ง่ายขึ้น

แนะนำให้อ่าน: วิธีการตั้งค่าและจัดการการหมุนเวียนบันทึกโดยใช้ Logrotate ใน Linux

Logrotate ทำงานทุกวันเป็นงาน cron (/etc/cron.daily/logrotate) และอ่านการกำหนดค่าจาก /etc/logrotate .conf และจากไฟล์ที่อยู่ใน /etc/logrotate.d หากมี

เช่นเดียวกับกรณีของ rsyslog แม้ว่าคุณจะสามารถรวมการตั้งค่าสำหรับบริการเฉพาะเจาะจงไว้ในไฟล์หลักได้ การสร้างไฟล์การกำหนดค่าแยกกันสำหรับแต่ละบริการจะช่วยจัดระเบียบการตั้งค่าของคุณได้ดีขึ้น

มาดู logrotate.conf ทั่วไปกัน:

ในตัวอย่างข้างต้น logrotate จะดำเนินการต่อไปนี้สำหรับ /var/loh/wtmp: พยายามหมุนเวียนเดือนละครั้งเท่านั้น แต่เฉพาะในกรณีที่ไฟล์เป็นอย่างน้อย 1 MB จากนั้นสร้างไฟล์บันทึกใหม่โดยตั้งค่าสิทธิ์เป็น 0664 และมอบสิทธิ์การเป็นเจ้าของแก่ผู้ใช้รูทและกลุ่ม utmp จากนั้น ให้เก็บบันทึกที่เก็บถาวรไว้เพียงรายการเดียว ตามที่ระบุไว้ในคำสั่งการหมุนเวียน:

ตอนนี้เรามาดูอีกตัวอย่างที่พบใน /etc/logrotate.d/httpd:

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการตั้งค่าสำหรับ logrotate ได้ในหน้าคู่มือ (man logrotate และ man logrotate.conf) ทั้งสองไฟล์มีให้พร้อมกับบทความนี้ในรูปแบบ PDF เพื่อความสะดวกในการอ่านของคุณ

ในฐานะวิศวกรระบบ มันค่อนข้างขึ้นอยู่กับคุณในการตัดสินใจว่าจะจัดเก็บบันทึกไว้นานเท่าใดและอยู่ในรูปแบบใด ขึ้นอยู่กับว่าคุณมี /var ในพาร์ติชันแยกต่างหาก /< โลจิคัลวอลุ่ม มิฉะนั้น คุณจะต้องพิจารณาลบบันทึกเก่าออกเพื่อประหยัดพื้นที่จัดเก็บข้อมูล ในทางกลับกัน คุณอาจถูกบังคับให้เก็บบันทึกต่างๆ ไว้สำหรับการตรวจสอบความปลอดภัยในอนาคตตามนโยบายภายในของบริษัทหรือลูกค้าของคุณ

การบันทึกบันทึกลงในฐานข้อมูล

แน่นอนว่าการตรวจสอบบันทึก (แม้จะใช้เครื่องมือเช่น grep และนิพจน์ทั่วไป) อาจกลายเป็นงานที่ค่อนข้างน่าเบื่อได้ ด้วยเหตุนี้ rsyslog จึงอนุญาตให้เราส่งออกไปยังฐานข้อมูล (RDBMS ที่รองรับ OTB ได้แก่ MySQL, MariaDB, PostgreSQL และ Oracle

บทช่วยสอนในส่วนนี้จะถือว่าคุณได้ติดตั้งเซิร์ฟเวอร์และไคลเอนต์ MariaDB ในกล่อง RHEL 7 เดียวกันกับที่มีการจัดการบันทึก:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

จากนั้นใช้ยูทิลิตี mysql_secure_installation เพื่อตั้งรหัสผ่านสำหรับผู้ใช้รูทและข้อควรพิจารณาด้านความปลอดภัยอื่นๆ:

หมายเหตุ: หากคุณไม่ต้องการใช้ผู้ใช้รูท MariaDB เพื่อแทรกข้อความบันทึกลงในฐานข้อมูล คุณสามารถกำหนดค่าบัญชีผู้ใช้อื่นได้ ที่จะทำเช่นนั้น การอธิบายวิธีการทำเช่นนั้นอยู่นอกขอบเขตของบทช่วยสอนนี้ แต่มีการอธิบายโดยละเอียดในฐานความรู้ MariaDB ในบทช่วยสอนนี้ เราจะใช้บัญชีรูทเพื่อความเรียบง่าย

จากนั้น ให้ดาวน์โหลดสคริปต์ createDB.sql จาก GitHub และนำเข้าสคริปต์ดังกล่าวไปยังเซิร์ฟเวอร์ฐานข้อมูลของคุณ:

mysql -u root -p < createDB.sql

สุดท้าย เพิ่มบรรทัดต่อไปนี้ใน /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

รีสตาร์ท rsyslog และเซิร์ฟเวอร์ฐานข้อมูล:

systemctl restart rsyslog 
systemctl restart mariadb

การสืบค้นบันทึกโดยใช้ไวยากรณ์ SQL

ตอนนี้ดำเนินการบางอย่างที่จะแก้ไขบันทึก (เช่น การหยุดและเริ่มต้นบริการ) จากนั้นเข้าสู่ระบบเซิร์ฟเวอร์ DB ของคุณ และใช้คำสั่ง SQL มาตรฐานเพื่อแสดงและค้นหาในบันทึก:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

สรุป

ในบทความนี้ เราได้อธิบายวิธีตั้งค่าการบันทึกระบบ วิธีหมุนบันทึก และวิธีเปลี่ยนเส้นทางข้อความไปยังฐานข้อมูลเพื่อให้ค้นหาได้ง่ายขึ้น เราหวังว่าทักษะเหล่านี้จะเป็นประโยชน์เมื่อคุณเตรียมตัวสำหรับการสอบ RHCE และในความรับผิดชอบประจำวันของคุณด้วย

และเช่นเคย ความคิดเห็นของคุณก็ยินดีอย่างยิ่ง โปรดใช้แบบฟอร์มด้านล่างเพื่อติดต่อเรา