วิธีจัดการบันทึกของระบบ (กำหนดค่า หมุนเวียน และนำเข้าสู่ฐานข้อมูล) ใน 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) และลำดับความสำคัญบ่งบอกถึงความรุนแรง ซึ่งอาจเป็นหนึ่งในคำที่อธิบายตนเองได้ต่อไปนี้:
- แก้ปัญหา
- ข้อมูล
- สังเกต
- คำเตือน
- ผิดพลาด
- คริติคอล
- เตือน
- โผล่ออกมา
แม้ว่าจะไม่ใช่ลำดับความสำคัญ แต่คำหลัก ไม่มี หมายถึงไม่มีลำดับความสำคัญในทุกสิ่งอำนวยความสะดวกที่กำหนด
หมายเหตุ: ลำดับความสำคัญที่กำหนดบ่งชี้ว่าข้อความทั้งหมดที่มีลำดับความสำคัญดังกล่าวขึ้นไปควรได้รับการบันทึก ดังนั้น บรรทัดในตัวอย่างด้านบนจะสั่งให้ 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 และในความรับผิดชอบประจำวันของคุณด้วย
และเช่นเคย ความคิดเห็นของคุณก็ยินดีอย่างยิ่ง โปรดใช้แบบฟอร์มด้านล่างเพื่อติดต่อเรา