วางเซิร์ฟเวอร์ linux ทั้งหมดภายใต้การควบคุมแหล่ง (git)


17

ฉันกำลังคิดที่จะวางเซิร์ฟเวอร์ linux ทั้งหมดของฉันภายใต้การควบคุมเวอร์ชันโดยใช้ git เหตุผลเบื้องหลังคือว่าเป็นวิธีที่ง่ายที่สุดในการตรวจจับการแก้ไข / รูทคิทที่เป็นอันตราย ทั้งหมดที่ฉันคิดว่าไร้เดียงสามีความจำเป็นต้องตรวจสอบความสมบูรณ์ของระบบ: ติดตั้งพาร์ทิชัน linux ทุกสัปดาห์หรือมากกว่านั้นโดยใช้ระบบช่วยเหลือตรวจสอบว่าที่เก็บ git นั้นยังไม่ถูกปรับปรุงและออกสถานะ git เพื่อตรวจสอบการเปลี่ยนแปลงใด ๆ .

นอกเหนือจากของเสียที่เห็นได้ชัดในพื้นที่ดิสก์แล้วมีผลข้างเคียงอื่น ๆ อีกหรือไม่?

มันเป็นความคิดที่บ้าอย่างสิ้นเชิง?

มันเป็นวิธีที่ปลอดภัยในการตรวจสอบกับรูทคิทเพราะอย่างน้อยที่สุดฉันจะต้องยกเว้น / dev และ / proc อย่างน้อยที่สุด?


5
ฉันจะลงคะแนนให้กับ "ความคิดที่บ้าโดยสิ้นเชิง" ซึ่งมีนัยยะมากเกินไป การเปลี่ยนแปลงไฟล์จะเกิดขึ้นตลอดเวลาและจะทำให้ขั้นตอนการอัปเกรดเป็นฝันร้าย
forcefsck

@forcefsck - เหตุใดการเปลี่ยนแปลงไฟล์จึงเกิดขึ้นตลอดเวลา พวกเขาไม่ควรเกิดขึ้นระหว่างการอัพเกรดระบบหรือไม่
Tobias Hertkorn

1
แค่คิดทำไมไม่ใช้บางอย่างเช่นdirvishหรือ rsync กับ --link-dest? หากคุณใช้ dirvish เพื่อทำการสำรองข้อมูลมันจะให้รายงานที่ดีสำหรับการสำรองข้อมูลแต่ละรายการซึ่งแสดงว่ามีการเปลี่ยนแปลงอย่างไร คุณสามารถ rsync ใน --dry-run โหมดเพื่อเปรียบเทียบสถานะปัจจุบันกับการสำรองข้อมูลของคุณ หากคุณใช้ความยุ่งยากคุณจะต้องใช้เครื่องมือที่ผ่านการทดสอบอย่างดีว่าเป็นระบบสำรองข้อมูล
Zoredache

คำตอบ:


16

นั่นคือ "ความคิดที่ไม่ดี" (tm) นอกจากพื้นที่เก็บข้อมูลทั้งหมดของคุณจะทำงานช้าเหมือน heck ทั้งหมดและแย่ลงเมื่อเก็บทุกการแก้ไข

ลองการจัดการแบบรวมศูนย์เช่นหุ่นเชิด / cfengine / พ่อครัว สิ่งนั้นจะรักษาสิ่งต่าง ๆ ตามที่คุณคาดหวังและยกเลิกการเปลี่ยนแปลงที่ไม่คาดคิด

ใช้ร่วมกับสิ่งอื่นเช่น iwatch เพื่อรับอีเมลจากการเปลี่ยนแปลงไฟล์ที่ไม่ได้รับอนุญาต

รวมต่อไปด้วยไฟล์ rpm / deb หากจำเป็นในการแผ่ออกแอปพลิเคชันที่กำหนดเอง

โยนบางสิ่งบางอย่างเช่น rkhunter หรือ chkrootkit แล้วสำหรับการเตะและคุณควรจะไปดี

งานเสร็จแล้ว


+1 สำหรับแนวคิดที่ไม่ดี - การจัดการแบบรวมศูนย์ (หุ่นเชิด / cfengine / chef / radmind / ฯลฯ ) จะช่วยให้คุณมั่นใจได้ว่าระบบของคุณได้รับการกำหนดค่าตามความต้องการที่กำหนดไว้และส่วนใหญ่ยังสามารถใช้เป็น "tripwire" พิมพ์ system เพื่อแจ้งให้คุณทราบเมื่อมีการเปลี่ยนแปลงสิ่งที่ไม่ควรมี
voretaq7

ฉันคิดว่ามันเป็นความคิดที่แย่จริงๆ ตกลงคุณสามารถดูไฟล์ใหม่และที่เปลี่ยนแปลง แต่ถ้าคุณใช้คอมไพล์มันต้องใช้ cpu มากมายในการแกะและคำนวณไฟล์ของคุณ หากคุณทำเช่นนี้กับ mashine ทั้งหมดจะใช้เวลานาน
RenéHöhle

1
ฉันจะโยนอีกอันหนึ่งในรายการนั้น etckeeperจะทำ repo คอมไพล์ยกเว้น / etc เท่านั้น
Shane Madden

ที่เก็บเช่น Git นั้นรวดเร็วขึ้นเรื่อย ๆ และฉันไม่กังวลเกี่ยวกับ CPU หรือ IO เนื่องจากเซิร์ฟเวอร์ที่ฉันมีอยู่ในใจได้กำหนดเวลาหยุดทำงาน (ดังนั้นความเป็นไปได้ที่จะติดตั้งโดยใช้ระบบช่วยเหลือ)
Tobias Hertkorn

สิ่งที่ฉันไม่เข้าใจ: ระบบการจัดการแบบรวมศูนย์รับประกันได้อย่างไรว่าไม่มีผลบวกผิดพลาด - ระบบถูกบุกรุก + เครื่องมือที่ใช้ตรวจสอบระบบถูกบุกรุก = false positive
Tobias Hertkorn

5

อีกทางเลือกหนึ่งคือการตั้งค่าtripwireซึ่งเป็นซอฟต์แวร์ GPL'ed ที่ไปเดอร์ผ่านไฟล์สำคัญทั้งหมดในระบบของคุณและพิจารณาว่าสิ่งใดเปลี่ยนแปลงไปในแบบที่คุณกำหนดว่ายอมรับไม่ได้ การเปลี่ยนแปลงสามารถกำหนดได้อย่างง่ายดายเพียงแค่ mtime ผ่านหมายเลข inode จนถึงจุดตรวจสอบการเข้ารหัสที่แข็งแกร่ง

ต้องใช้การตั้งค่าและการปรับแต่งบางอย่างหากคุณไม่ต้องการรับรายงานจำนวนมากทุกคืนเกี่ยวกับไฟล์ที่ถูกเปลี่ยนใน/var/runการเปลี่ยนแปลงในไฟล์ไคลเอนต์ DHCP /etcและอื่น ๆ ที่คล้ายกัน แต่ถ้าคุณประสบปัญหาดังกล่าว มีประโยชน์มากจริง ๆ

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

หากคุณกำลังจะทำสิ่งนี้เป็นสิ่งสำคัญมากที่จะต้องติดตั้งและใช้งาน tripwire ก่อนที่เครื่องจะถูกปรับใช้กับการผลิตหรือคุณไม่สามารถมั่นใจได้อย่างสมบูรณ์ว่าผู้ใช้ที่ประสงค์ร้ายบางคนไม่มีโอกาสติดเชื้อในเครื่องก่อน ถูก tripwired


3

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


4
กำลังทำ / etc เพียงอย่างเดียว ลองดูkitenet.net/~joey/code/etckeeper (etckeeper)
Tobias Hertkorn

1
etckeeper ทำงานได้ดีมากฉันคิดว่ามันมีประโยชน์มาก
Zoredache

2

@Sirex ให้คำตอบที่ดีมากอยู่แล้ว แต่ถ้าคุณต้องการเพิ่มความปลอดภัยอีกขั้นหนึ่งวิธีที่ดีที่สุดในการจัดการกับมันคือการป้องกันก่อนจากนั้นจึงทำการตรวจจับ

ลองตั้งค่าระบบด้วย / filesystem mount แบบอ่านอย่างเดียว สร้าง / tmp ramfs แยกที่เมาท์ด้วยตัวเลือก noexec และ nodev เพื่อให้ระบบทำงานได้คุณต้อง / var ติดตั้งแบบอ่าน - เขียนเท่านั้น ดังนั้นภายใต้ / var เมานต์ fs ด้วย rw, noexec, nodev และลบสิทธิ์การเขียนไปยัง / var / tmp (afaik มันไม่ค่อยจำเป็นโดย daemons และควรกำหนดค่าได้) ยังใช้โปรแกรมรักษาความปลอดภัยสำหรับเคอร์เนลของคุณเพื่อ จำกัด การเข้าถึงทรัพยากรโดยผู้ใช้ลอง grsec เช่น ใช้ไฟร์วอลล์ด้วยกฎที่เข้มงวดที่สุดเท่าที่จะเป็นไปได้

ดิสทริบิวชันบางอย่างมีเอกสารมากมายเกี่ยวกับการชุบแข็งระบบ ตัวอย่างเช่น:


0

ฉันคิดว่าเป็นความคิดที่ดีที่จะวิเคราะห์การเปลี่ยนแปลงที่เครื่องมือทำในระบบของคุณ:

  1. ติดตั้ง Linux เปล่าใน VM
  2. เริ่มต้นคอมไพล์ราก
  3. ติดตั้งเครื่องมือที่คุณต้องการวิเคราะห์
  4. ดูการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นในระบบของคุณ

... ลบ VM

คุณจะต้องเพิ่มโฟลเดอร์จำนวนมากลงใน.gitignore ไฟล์เช่น proc เป็นต้น


0

สำหรับสถานการณ์ที่คุณสนใจเก็บโฟลเดอร์ไว้ในระบบไฟล์ทั้งหมดภายใต้การควบคุมเวอร์ชันวิธีต่อไปนี้อาจใช้ได้:

ขั้นแรกให้สร้างที่เก็บ Git ที่/ระดับ:

$ cd /
# git init

จากนั้นสร้าง/.gitignoreบัญชีขาวที่อนุญาตเฉพาะบางโฟลเดอร์เท่านั้นตัวอย่างเช่นในรายการที่อนุญาตเท่านั้น/path/to/versioned/config/folder/(ขึ้นอยู่กับ/programming//a/11018557/320594 ):

/*
!/path/
/path/*
!/path/to/
/path/to/*
!/path/to/versioned/
/path/to/versioned/*
!/path/to/versioned/config/
/path/to/versioned/config/*
!/path/to/versioned/config/folder/
!/.gitignore

จากนั้นสร้างคอมมิชชันแรก:

# git add -A
# git commit -m "Initial commit"

จากนั้นเพิ่มโฟลเดอร์เพิ่มเติมที่คุณต้องการภายใต้การควบคุมเวอร์ชันตามต้องการ

PS:

นอกเหนือจากวิธีการก่อนหน้านี้หากคุณต้องการเก็บ / etc / ภายใต้การควบคุมเวอร์ชันคุณอาจต้องการใช้etckeeper( https://etckeeper.branchable.com/ ) สำหรับการกำหนดเวอร์ชันโฟลเดอร์เฉพาะเนื่องจากมีความเชี่ยวชาญมากกว่าสำหรับวัตถุประสงค์นั้น ( เช่นจะกระทำโดยอัตโนมัติหลังจากติดตั้งแพ็คเกจ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.