ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ Linux ของฉันถูกแฮ็ก


36

อะไรคือสัญญาณบอกเล่าว่าเซิร์ฟเวอร์ Linux ถูกแฮ็ก มีเครื่องมือใดที่สามารถสร้างและส่งอีเมลรายงานการตรวจสอบตามกำหนดเวลาได้หรือไม่?


1
หากรัฐไม่เป็นที่รู้จักก็ไม่มีทาง นั่นเป็นสาเหตุที่สำคัญที่จะต้องใช้แหล่งการติดตั้งที่เชื่อถือได้และตั้งค่าเครื่องมือเช่น Tripwire ก่อนที่จะเปิดเผยสิ่งอื่นนอกเหนือจากตัวมันเอง
Oskar Duveborn


10
คุณหมายถึง "แคร็ก" การแฮ็กคือวิธีที่เราได้ลินุกซ์มาตั้งแต่แรก
gbarry

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

@ Matt Mind บอกเราว่าเครื่องมือใด? ยังคงเหมือนเดิมหรือไม่
Rodrigo

คำตอบ:


34
  1. เก็บสำเนาไฟล์ระบบที่สำคัญ (เช่น ls, ps, netstat, md5sum) ไว้ที่ใดที่หนึ่งด้วย md5sum ของไฟล์เหล่านั้นและเปรียบเทียบกับเวอร์ชันสดเป็นประจำ รูทคิทจะแก้ไขไฟล์เหล่านี้อย่างสม่ำเสมอ ใช้สำเนาเหล่านี้หากคุณสงสัยว่าต้นฉบับถูกโจมตี
  2. เสนาธิการหรือtripwireจะบอกคุณเกี่ยวกับไฟล์ใด ๆ ที่ได้รับการแก้ไข - สมมติว่าฐานข้อมูลของพวกเขาไม่ได้ถูกดัดแปลง
  3. กำหนดค่า syslog เพื่อส่ง logfiles ของคุณไปยังเซิร์ฟเวอร์บันทึกระยะไกลซึ่งผู้บุกรุกไม่สามารถแก้ไขได้ ดูไฟล์บันทึกระยะไกลเหล่านี้สำหรับกิจกรรมที่น่าสงสัย
  4. อ่านบันทึกของคุณเป็นประจำใช้logwatchหรือlogcheckเพื่อสังเคราะห์ข้อมูลที่สำคัญ
  5. รู้ว่าเซิร์ฟเวอร์ของคุณ รู้ว่ากิจกรรมและบันทึกประเภทใดเป็นเรื่องปกติ

8
md5 อ่อนแอลงอย่างรุนแรงถ้าไม่ถูกโยนออกไป คุณอาจต้องการย้ายไปที่ sha512
Broam

12

คุณทำไม่ได้

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

หากระบบของคุณถูกบุกรุกเครื่องมือในระบบของคุณจะไม่สามารถเชื่อถือได้เพื่อเปิดเผยความจริง


5
คุณคิดว่าผู้โจมตีของคุณมีทักษะต้องการหลบ ๆ ซ่อน ๆ ไม่ทางใด ๆ และไม่สนใจที่จะทำลายสแปมและเพิ่ม OC3 ของคุณลงในบ็อตเน็ต วันนี้คุณมักจะพบว่ามีสแปมจำนวนมากออกมาจากเซิร์ฟเวอร์ของคุณโดยปกติจะอยู่ในระบบที่มีการโอเวอร์โหลดซึ่งไม่ควรจะเป็น "แฮ็กเกอร์" ส่วนใหญ่ได้รับแรงจูงใจจากเงินในทุกวันนี้
เออร์นี่

2
เครื่องมือโจมตีขั้นสูงที่สุดต้องใช้ทักษะเป็นศูนย์ในทุกวันนี้และสามารถใช้งานได้ง่ายและบางอันก็ไม่สามารถหลบซ่อนได้โดยค่าเริ่มต้นและจากการออกแบบ Botnets / zombies สามารถใช้งานเป็นเวลานานก่อนที่จะถูกนำมาใช้เพื่อเป็นอันตราย แต่ข้อบกพร่องในเครื่องมือการโจมตีสามารถทำให้เกิดความผิดพลาดที่ไม่พึงประสงค์และพฤติกรรมแปลก ๆ ฯลฯ
Oskar Duveborn

11

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

ระบบตรวจสอบอื่น ๆ เช่นZabbixสามารถกำหนดค่าให้แจ้งเตือนคุณเมื่อมีการเปลี่ยนแปลงไฟล์เช่น / etc / passwd


11

บางสิ่งที่เคยทำให้ฉันขาดหายไปในอดีต:

  • โหลดสูงบนระบบที่ไม่ได้ทำงาน
  • Segfaults แปลก ๆ เช่น จากยูทิลิตี้มาตรฐานเช่นls(อาจเกิดขึ้นกับชุดคิทรูท)
  • ไดเรกทอรีที่ซ่อนอยู่ใน/หรือ/var/(ตัวย่อสคริปต์ส่วนใหญ่โง่หรือขี้เกียจเกินกว่าที่จะปกปิดเพลงของพวกเขา)
  • netstat แสดงพอร์ตเปิดที่ไม่ควรมี
  • Daemons ในรายการกระบวนการที่ปกติคุณใช้รสชาติที่แตกต่างกันของ (เช่น. bindแต่คุณมักจะใช้djbdns)

นอกจากนี้ฉันได้พบว่ามีสัญญาณที่เชื่อถือได้เพียงกล่องเดียว: หากคุณมีความรู้สึกไม่ดีเกี่ยวกับความขยันหมั่นเพียร (พร้อมอัพเดท ฯลฯ ) ของผู้ดูแลระบบที่คุณได้รับมรดกมาจากระบบ


10

มีวิธีตรวจสอบเซิร์ฟเวอร์ที่แฮ็คผ่านทางkill-

เป็นหลักเมื่อคุณเรียกใช้ "kill -0 $ PID" คุณกำลังส่งสัญญาณ nop ไปยังตัวระบุกระบวนการ $ PID หากกระบวนการกำลังทำงานอยู่คำสั่ง kill จะออกตามปกติ (FWIW เนื่องจากคุณกำลังส่งสัญญาณ nop kill จะไม่มีอะไรเกิดขึ้นกับกระบวนการ) หากกระบวนการไม่ทำงานคำสั่ง kill จะล้มเหลว (สถานะออกน้อยกว่าศูนย์)

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

a) การตรวจสอบนี้ไม่ใช่การตรวจสอบอย่างละเอียดเนื่องจากรูทคิทที่เข้ารหัส / ดีจะทำให้แน่ใจว่าเคอร์เนลจะตอบกลับด้วยการตอบกลับ "กระบวนการไม่มีอยู่" ทำให้การตรวจสอบซ้ำซ้อน b) ไม่ว่าจะด้วยวิธีใดเมื่อเซิร์ฟเวอร์ที่ถูกแฮ็กมีกระบวนการ "ไม่ดี" ทำงานอยู่ PID มักจะไม่แสดงภายใต้ / proc

ดังนั้นหากคุณอยู่ที่นี่จนถึงปัจจุบันวิธีการคือการฆ่า -0 ทุกกระบวนการที่มีอยู่ในระบบ (ทุกอย่างตั้งแต่ 1 -> / proc / sys / kernel / pid_max) และดูว่ามีกระบวนการที่ทำงานอยู่หรือไม่ แต่ไม่ได้รายงาน ใน / proc

หากกระบวนการบางอย่างเกิดขึ้นทำงาน แต่ไม่ได้รายงานใน / proc คุณอาจมีปัญหาในแบบที่คุณเห็น

นี่คือสคริปต์ทุบตีว่าการดำเนินการทั้งหมดที่ - https://gist.github.com/1032229 บันทึกไว้ในไฟล์บางไฟล์และดำเนินการหากคุณพบกระบวนการที่ไม่ได้รายงานใน proc คุณควรมีโอกาสในการเริ่มขุด

HTH


นั่นเป็นประโยชน์อย่างยิ่งสำหรับ homeserver ของฉันที่ฉันไม่มีเวลาในการบำรุงรักษาระบบเหมือนระบบการทำงานที่มีประสิทธิผล อย่างไรก็ตามฉันสามารถใช้สิ่งนี้ในสภาพแวดล้อมแบบมืออาชีพและเป็น "ญาติ" แน่นอนเกี่ยวกับผลลัพธ์หรือไม่ และสำหรับคำตอบที่มีอายุ 3 ปี: นี่ยังเป็นวิธีที่ถูกต้องในการตรวจหาการติดเชื้อทั่วไปในปี 2014 หรือไม่?
ฮับ

7

ฉันจะสองคำตอบที่ได้รับที่นี่และเพิ่มหนึ่งของฉันเอง

find /etc /var -mtime -2

สิ่งนี้จะบอกให้คุณทราบอย่างรวดเร็วหากไฟล์เซิร์ฟเวอร์หลักของคุณมีการเปลี่ยนแปลงใน 2 วันที่ผ่านมา

นี่คือจากบทความเกี่ยวกับการตรวจจับการแฮ็ก วิธีการตรวจสอบว่าเซิร์ฟเวอร์ของคุณถูกแฮ็ค


1
ฉันคิดว่า - ครั้งแทนที่จะเป็น - ครั้ง ไม่สามารถยุ่งเกี่ยวกับ -ctime
Tillebeck

5

จากฉันสามารถตรวจสอบการบุกรุกที่ไม่พึงประสงค์บนเซิร์ฟเวอร์ของฉันได้อย่างไร

  • ใช้ IDS

    SNORT®เป็นระบบป้องกันและตรวจจับการบุกรุกเครือข่ายโอเพนซอร์ซโดยใช้ภาษาที่ขับเคลื่อนด้วยกฎซึ่งรวมข้อดีของวิธีการตรวจสอบลายเซ็นโปรโตคอลและความผิดปกติ ด้วยการดาวน์โหลดหลายล้านครั้งจนถึงปัจจุบัน Snort เป็นเทคโนโลยีตรวจจับและป้องกันการบุกรุกที่มีการใช้งานกันอย่างแพร่หลายมากที่สุดทั่วโลกและกลายเป็นมาตรฐานที่แท้จริงสำหรับอุตสาหกรรม

    Snort อ่านทราฟฟิกเครือข่ายและสามารถมองหาสิ่งต่าง ๆ เช่น "ไดรฟ์ด้วยการทดสอบปากกา" ซึ่งมีคนเพียงแค่เรียกใช้การสแกน metasploit ทั้งหมดกับเซิร์ฟเวอร์ของคุณ ดีใจที่ได้ทราบสิ่งเหล่านี้ในความคิดของฉัน

  • ใช้บันทึก ...

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

  • ตรวจสอบการกำหนดค่าของคุณ - ฉันเก็บ / etc ทั้งหมดในการโค่นล้มเพื่อให้ฉันสามารถติดตามการแก้ไข

  • เรียกใช้การสแกน เครื่องมือเช่นLynisและRootkit Hunterสามารถแจ้งเตือนคุณถึงช่องโหว่ด้านความปลอดภัยที่เป็นไปได้ในแอปพลิเคชันของคุณ มีโปรแกรมที่รักษาแฮชหรือแฮชทรีของถังขยะทั้งหมดและสามารถแจ้งเตือนคุณถึงการเปลี่ยนแปลงได้

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


2

ฉันแค่อยากจะเพิ่มไปนี้:

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

ตรวจสอบล่าสุด ไม่ว่าคุณจะเห็น IP ที่ไม่รู้จักหรือมันจะดูว่างเปล่า

จากนั้นตามคำตอบที่ระบุไว้ไฟล์ระบบมักจะถูกเปลี่ยนตรวจสอบวันที่แก้ไข อย่างไรก็ตามพวกเขามักจะยุ่งเกี่ยวกับวันที่แก้ไข

พวกเขามักจะติดตั้ง ssh รุ่นอื่นที่ทำงานบนพอร์ตแบบสุ่ม สิ่งนี้มักถูกซ่อนอยู่ในสถานที่แปลก ๆ หมายเหตุโดยปกติจะถูกเปลี่ยนชื่อเป็นอย่างอื่นที่ไม่ใช่ ssh ดังนั้นให้ตรวจสอบ netstat (อาจใช้งานไม่ได้เพราะมันมักจะถูกแทนที่) และใช้ iptables เพื่อบล็อกพอร์ตที่ไม่รู้จัก

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

จดสิ่งต่อไปนี้เพื่อป้องกันเซิร์ฟเวอร์ของคุณจากการถูกบุกรุก

  1. เปลี่ยนพอร์ต ssh
  2. ป้องกันไม่ให้รูทเข้าสู่ระบบได้
  3. อนุญาตเฉพาะผู้ใช้บางคน
  4. ป้องกันการเข้าสู่ระบบด้วยรหัสผ่าน
  5. ใช้คีย์ ssh, รหัสผ่านป้องกันที่ดีกว่า
  6. ในกรณีที่บัญชีดำเป็นไปได้ ip ทั้งหมดและรายการที่ปลอดภัยที่จำเป็น ips
  7. ติดตั้งและกำหนดค่า fail2ban
  8. ใช้ tripwire เพื่อตรวจจับการบุกรุก
  9. ตรวจสอบจำนวนผู้ใช้ที่ล็อกอินด้วย Nagios หรือ zabbix แม้ว่าคุณจะได้รับการแจ้งเตือนทุกครั้งที่คุณลงชื่อเข้าใช้ แต่อย่างน้อยคุณก็จะรู้ว่ามีใครบางคนกำลังเล่นอยู่
  10. หากเป็นไปได้ให้เซิร์ฟเวอร์ของคุณอยู่ใน vpn และอนุญาตให้ ssh ผ่าน vpn ip เท่านั้น รักษาความปลอดภัย VPN ของคุณ

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

มันเป็นโลกที่น่าเกลียดที่นั่นฉันขอย้ำการป้องกันดีกว่ารักษา



0

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

เหนือสิ่งอื่นใดมันฟรีสำหรับเซิร์ฟเวอร์สูงสุด 5 เครื่อง

ตรวจสอบที่นี่:

https://www.scriptrock.com/


นี่เป็นบริการคลาวด์ที่บันทึกไว้ในเครื่องของคุณด้วยสิทธิ์รูทหรือไม่? จะเกิดอะไรขึ้นถ้าบริการถูกโจมตี?
ฮับ

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