การเฝ้าดูความสมบูรณ์ตอบคำถามที่ทั้งแอนติไวรัสและไฟร์วอลล์ไม่ตอบ: ตั้งแต่สัปดาห์ที่แล้วมีอะไรเปลี่ยนไปบนเซิร์ฟเวอร์นี้ ตัวสแกนลายเซ็นมองหาสิ่งที่รู้ว่าไม่ดี AIDE ไม่รู้อะไรเลยเรื่องความไม่ดี มันรู้แค่ว่าไฟล์นี้เมื่อวานเป็นอีกอย่าง สำหรับการหาประตูหลังที่แนบท้ายไฟล์ที่มีอยู่แล้ว นั่นคือวิธีเดียวที่ได้ผล
AIDE ติดตั้งได้ในสองคำสั่ง การตั้งค่าให้รายงานของมันถูกอ่านคือส่วนที่ยากกว่า — และนั่นคือสิ่งที่มักฆ่ามัน: รายงานแรกมาพร้อมหมื่นบรรทัด ไม่มีใครเปิดฉบับที่สอง และอีกหนึ่งเดือนงานนั้นก็ถูกลบทิ้ง
การติดตั้งและฐานข้อมูลแรก
sudo apt install aide aide-common
sudo aideinit
การเริ่มต้นใช้เวลาไม่กี่นาทีถึงครึ่งชั่วโมง: มีการคำนวณแฮชของไฟล์ทุกไฟล์ ผลลัพธ์ถูกวางไว้ข้างฐานข้อมูลที่ใช้งานพร้อมส่วนต่อท้าย .new และต้องถูกนำมาใช้งาน:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
จากนั้นการตรวจสอบรันด้วย:
sudo aide --check
ควรยกเว้นอะไรเพื่อให้รายงานอ่านได้
การตั้งค่าอยู่ใน /etc/aide/aide.conf และในไดเรกทอรี /etc/aide/aide.conf.d/ การตั้งค่ามาตรฐานของ Debian ตรวจมากเกินไป และสิ่งแรกที่ต้องทำคือเอาสิ่งที่เปลี่ยนแปลงเองตลอดเวลาออก:
/var/log— เปลี่ยนทุกวินาที;- ทั้ง
/var/lib— ฐานข้อมูล สถานะแพ็กเกจ สถานะบริการ; /var/cache,/tmp,/proc,/sys,/run;- ไดเรกทอรีอัปโหลดและแคชของเว็บไซต์ — เนื้อหาของมันถูกผู้เข้าชมเปลี่ยน
สิ่งที่ควรตรวจด้วยการตั้งค่าที่เข้มงวดที่สุดคือรายการแคบ ๆ:
/bin,/sbin,/usr/bin,/usr/sbin— ไฟล์ปฏิบัติการของระบบ;/lib,/usr/lib— ไลบรารี;/etc— ไฟล์ตั้งค่า;/root/.sshและไดเรกทอรี.sshของผู้ใช้ของคุณ;- โค้ดของเว็บไซต์ แต่ไม่รวมไดเรกทอรีอัปโหลดและแคช
เกณฑ์วัด: รายงานรายวันตามปกติควรพอดีกับหนึ่งหน้าจอ ถ้ายาวกว่านั้นแปลว่าการยกเว้นยังไม่พอและมันจะเลิกถูกอ่าน
เก็บฐานข้อมูลไว้ที่ไหน
ประเด็นสำคัญที่มักถูกมองข้าม ถ้าคนอื่นมี root การแทนที่ไฟล์แล้วอัปเดตฐานข้อมูลของ AIDE ทันทีนั้นไม่ยากเลยสำหรับเขา — และการตรวจหลังจากนั้นก็จะรายงานว่าทุกอย่างเรียบร้อย ฐานข้อมูลที่อยู่บนเครื่องเดียวกันและเขียนได้ป้องกันได้แค่อุบัติเหตุเท่านั้น
ขั้นต่ำที่สมเหตุสมผลสำหรับเซิร์ฟเวอร์เครื่องเดียว:
- คัดลอกฐานข้อมูลไปเครื่องอื่นหลังการอัปเดตทุกครั้ง แล้วรันการตรวจโดยวางสำเนานั้นกลับเข้าที่;
- หรืออย่างน้อยเก็บ checksum ของฐานข้อมูลไว้แยกต่างหากและตรวจสอบก่อนการตรวจ:
sha256sum /var/lib/aide/aide.db
แม้มาตรการเรียบง่ายเพียงนั้นก็เปลี่ยนการแทนที่แบบเงียบ ๆ ให้กลายเป็นเหตุการณ์ที่สังเกตเห็นได้
การอัปเดตฐานข้อมูลเป็นการกระทำที่ต้องตั้งใจ
หลังการเปลี่ยนแปลงที่ชอบธรรม — การอัปเดตระบบ การปล่อยเว็บไซต์เวอร์ชันใหม่ — ฐานข้อมูลจะถูกสร้างใหม่:
sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
ทำเมื่อไรนั้นสำคัญ วิธีที่ถูก: อ่านรายงาน ทำให้แน่ใจว่าทุกการเปลี่ยนแปลงอธิบายได้ แล้วจึงอัปเดต วิธีที่ผิดและพบบ่อยมาก: รัน aide --update ตามตารางเวลาเพื่อให้รายงานออกมาสะอาด ในกรณีที่สองระบบทำงาน รายงานมาถึง และการเปลี่ยนแปลงถูกบันทึกว่าเป็นเรื่องปกติในวินาทีที่มันเกิดขึ้นพอดี — ซึ่งแปลว่าความหมายทั้งหมดสูญไปแล้ว
ตารางเวลาและภาระ
แพ็กเกจ aide-common ติดตั้งงานรายวันมาให้เอง การตรวจสร้างภาระให้ดิสก์และโปรเซสเซอร์หลายนาที จึงควรรันในชั่วโมงที่เงียบและด้วยลำดับความสำคัญที่ลดลง:
0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check
อ่านรายงานอย่างไร
สามส่วน: ไฟล์ที่เพิ่ม ถูกลบ และถูกเปลี่ยน สำหรับการเปลี่ยนแปลงแต่ละรายการมันแสดงว่าอะไรกันแน่ที่ต่างไป: เนื้อหา สิทธิ์ เจ้าของ เวลา
ควรตอบสนองต่ออะไรก่อน:
- การเปลี่ยนแปลงของไฟล์ใด ๆ ใน
/bin,/sbin,/usr/binนอกช่วงเวลาการอัปเดต; - ไฟล์ใหม่ในไดเรกทอรีระบบ;
- การเปลี่ยนแปลงใน
authorized_keys,/etc/passwd,/etc/sudoers,/etc/crontabและ/etc/cron.d; - ไฟล์
/etc/ld.so.preloadที่ปรากฏขึ้น — มันไม่เคยปรากฏขึ้นเอง
ไฟล์ที่เปลี่ยนไปร้อยไฟล์ทันทีหลัง apt upgrade เป็นเรื่องปกติ และเวลาในรายงานก็ยืนยันเรื่องนั้น แต่ไฟล์ที่เปลี่ยนไปสามไฟล์ใน /usr/bin ในวันพุธที่ไม่มีการอัปเดตใด ๆ คือเหตุให้หยุดและตรวจสอบ
AIDE กับ debsums
เครื่องมือทั้งสองแก้ปัญหาที่อยู่ข้างเคียงกัน แต่มาตรฐานเทียบของพวกมันต่างกัน AIDE เทียบกับสแนปช็อตของคุณเอง — จึงเห็นการเปลี่ยนแปลงของไฟล์ใด ๆ รวมถึงโค้ดของเว็บไซต์ debsums เทียบกับ checksum ในแพ็กเกจของดิสทริบิวชัน — จึงเห็นไฟล์ระบบที่ถูกแทนที่โดยไม่ต้องตั้งค่าอะไรล่วงหน้าเลย แต่ไม่รู้อะไรเลยเกี่ยวกับสิ่งที่คุณติดตั้งนอกแพ็กเกจ การเก็บไว้ทั้งคู่นั้นสมเหตุสมผล ในทางปฏิบัติ debsums มักถูกติดตั้งก่อน เพราะมันไม่ต้องการทั้งการตั้งค่าและฐานข้อมูล
พวกมันยังมีจุดอ่อนร่วมกันหนึ่งอย่าง: รายงานมาทางเมล และเมลก็หายไป ดังนั้นสิ่งสำคัญไม่ใช่ว่าการตรวจได้รันไปแล้ว แต่คือการมีที่ที่มองเห็นผลลัพธ์ล่าสุดของมันได้ ภาพนั้นเป็นอย่างไรดูได้ที่หน้าเดโมด้านล่าง