เคล็ดลับในการใช้เซิร์ฟเวอร์การผลิต (UNIX) อย่างสง่างาม


10

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

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

นี่คือรายละเอียด:

  • เซิร์ฟเวอร์ที่ใช้งานจริงหนึ่งเซิร์ฟเวอร์อยู่ในเซิร์ฟเวอร์ฟาร์มในชั้นใต้ดิน เซิร์ฟเวอร์อูบุนตู 9.x อาจมี grsec patches (ข่าวลือที่ฉันได้ยินครั้งล่าสุดที่ฉันถามผู้ดูแลระบบ)
  • เซิร์ฟเวอร์ภายในเครื่องหนึ่งที่มีเอกสารภายในทั้งหมดที่เก็บไฟล์ wikis ฯลฯ อีกครั้งเซิร์ฟเวอร์อูบุนตูอายุไม่กี่ปี

สมมติว่าเซิร์ฟเวอร์ทั้งสองได้รับการติดตั้งและทันสมัยดังนั้นฉันจึงไม่พยายามแฮ็กในแบบของฉันเว้นแต่จะมีเหตุผลที่ดี (เช่นสามารถอธิบายได้กับการจัดการระดับสูง)

เซิร์ฟเวอร์ที่ใช้งานจริงมีเว็บไซต์ไม่กี่โฮสต์ (apache-php-mysql มาตรฐาน), เซิร์ฟเวอร์ LDAP, ชุดอีเมล / เซิร์ฟเวอร์ ZIMBRA และเท่าที่ฉันสามารถบอกเวิร์กสเตชัน vmware สองสามตัวที่ทำงานอยู่ ไม่รู้ว่าเกิดอะไรขึ้นในนั้น น่าจะเป็นที่หนึ่งเป็นหลักของ LDAP แต่นั่นเป็นสิ่งที่เดายาก

เซิร์ฟเวอร์ภายในมี wiki / cms ภายในซึ่งเป็น slave LDAP ที่ทำซ้ำข้อมูลรับรองจากเซิร์ฟเวอร์ที่ใช้งานจริงเวิร์กสเตชัน vmware อีกสองสามตัวและการสำรองข้อมูลที่ทำงานอยู่

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

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

ฉันกำลังมองหาวิธีการแก้ปัญหาที่อยู่ตรงกลาง: การพยายามที่จะให้ทุกอย่างทำงานตามที่มันเป็นในขณะที่การทำความเข้าใจสิ่งที่เกิดขึ้นและวิธีการและที่สำคัญที่สุดการหลีกเลี่ยงวิกฤติหลุมพรางใด ๆ ทิ้งไว้ข้างหลัง

คุณมีข้อเสนอแนะอะไร?

จนถึงตอนนี้ฉันคิดถึงการ 'ฝึก' กับเซิร์ฟเวอร์ภายในตัดการเชื่อมต่อเครือข่ายเริ่มระบบใหม่ด้วยซีดีสดทิ้งระบบไฟล์รากลงในไดรฟ์ USB และโหลดบนเครื่องเสมือนที่ไม่เชื่อมต่อและแยกออกเพื่อทำความเข้าใจวิธีดูแลระบบเดิม กำลังคิด (a-la 'รู้จักศัตรูของคุณ') สามารถดึงเพลงเดียวกันกับเซิร์ฟเวอร์ที่ใช้งานจริง แต่การถ่ายโอนข้อมูลเต็มรูปแบบจะทำให้ใครบางคนสังเกตเห็น บางทีฉันก็สามารถเข้าสู่ระบบในฐานะ root ตรวจสอบ crontab ตรวจสอบ. profile สำหรับคำสั่งใด ๆ ที่เปิดตัวถ่ายโอนข้อมูลล่าสุดและสิ่งที่อยู่ในใจ

และนั่นคือเหตุผลที่ฉันมาที่นี่ คำใบ้ใด ๆ ไม่ว่าเล็กจะได้รับการชื่นชมอย่างมาก

เวลาเป็นปัญหาเช่นกัน: อาจมีสิ่งกระตุ้นเกิดขึ้นในอีกไม่กี่ชั่วโมงหรือไม่กี่สัปดาห์ รู้สึกเหมือนเป็นหนึ่งในภาพยนตร์ฮอลลีวู้ดที่ไม่ดีใช่ไหม?


5
เหตุใดจึงดูแลระบบถูกยิง? ดูเหมือนว่าสถานการณ์จะไม่ชนะ หากคุณไม่แน่ใจว่าต้องทำอย่างไรและอะไรคือสิ่งที่อยู่บนเซิร์ฟเวอร์สิ่งนี้จะไม่จบลงด้วยดี
cstamas

@cstamas sysadmin ถูกไล่ออกเพราะทุกคำขอที่เราทำ (เช่นเพิ่มผู้ใช้ไปยังรายชื่อผู้รับจดหมายหรือสร้างชื่อแทนอีเมล ฯลฯ ) เวลาที่ใช้เป็นตัวแปรสุ่มระหว่าง t = 1 วันและ t = 2 เดือน ( รวม) และเขาไม่เคยยอมรับว่า บวกกับพฤติกรรมที่ไม่ดีอื่น ๆ อีกมากมายที่ฉันจะไม่ลงรายละเอียดที่นี่
lorenzog

@lorenzog ตอนนี้มันทำให้รู้สึก ดูเหมือนว่ามันจะไม่ใช่เรื่องง่าย มีคำตอบที่ดีอยู่แล้ว โชคดี!
cstamas

1
@serverhorror: ไม่พวกเขาจ้างเขาก่อนที่ฉันจะเข้าร่วม บริษัท นี้และตอนนี้เขากลับกลายเป็นว่าไม่ดีพอ ตั้งแต่ฉันรู้จักเขามาก่อนหน้านี้ฉันจึงมีหน้าที่ในการ 'จัดการกับเขา' ระมัดระวังกับสมมติฐานของคุณ
lorenzog

1
@lorenzog: นี่ไม่เกี่ยวกับคุณ ประเด็นก็คือว่ามันเป็นความผิดของผู้จัดการ (ใครก็ตามที่เป็น) ว่าสถานการณ์ของโครงสร้างพื้นฐานที่ไม่มีเอกสารอาจเกิดขึ้นได้ - อย่างที่ฉันบอกว่า: ไม่มีความผิดเพียงสังเกต (ได้รับการสังเกตส่วนตัว)
Martin M.

คำตอบ:


12

อย่างที่คนอื่นพูดว่ามันดูเหมือนสถานการณ์ที่หลวม

(เริ่มต้นที่จุดสิ้นสุด)

  • การปรับใช้ใหม่อย่างสมบูรณ์

แน่นอนว่าคุณไม่สามารถถอดเซิร์ฟเวอร์ออกและปล่อยให้ผู้ติดตั้งทำสิ่งมหัศจรรย์

กระบวนการทั่วไป

  • รับงบประมาณสำหรับเซิร์ฟเวอร์สำรอง (สำรองตามที่จัดเก็บข้อมูล)
  • สร้างสแน็ปช็อตของข้อมูลและวางไว้ที่นั่นก่อนทำอะไร
  • ลงนามโดยผู้บริหาร!
  • รวบรวมรายการข้อกำหนด (เป็นวิกิที่จำเป็นซึ่งใช้อินสแตนซ์ VMWare, ... )
    • จากการจัดการและ
    • จากผู้ใช้
  • ลงนามโดยผู้บริหาร!
  • ปิดบริการที่ไม่อยู่ในรายการเป็นเวลาหนึ่งสัปดาห์ ( บริการครั้งละหนึ่งรายการ - iptables อาจเป็นเพื่อนของคุณหากคุณต้องการปิดบริการภายนอก แต่มีข้อสงสัยว่าอาจยังคงใช้จากแอปพลิเคชันบนโฮสต์เดียวกัน)
    • ไม่มีปฏิกิริยา? -> การสำรองข้อมูลขั้นสุดท้ายลบออกจากเซิร์ฟเวอร์
    • ปฏิกิริยา? -> พูดคุยกับผู้ใช้บริการ
    • รวบรวมข้อกำหนดใหม่และ Geet ที่ลงชื่อโดยผู้บริหาร!
  • บริการทั้งหมดที่ไม่อยู่ในรายการลดลงหนึ่งเดือนและไม่มีการตอบสนอง -> rm -rf $service(ฟังดูแย่ แต่สิ่งที่ฉันหมายถึงคือยกเลิกการให้บริการ)
  • รับงบประมาณสำหรับเซิร์ฟเวอร์สำรอง
  • โยกย้ายบริการหนึ่งครั้งไปยังอะไหล่
  • รับการลงชื่อโดยผู้บริหาร!
  • ปิดเซิร์ฟเวอร์ที่ย้ายข้อมูล (ปิดเครื่อง)
  • ค้นหาคนอื่น ๆ กำลังกรีดร้องใส่คุณ -> ใช่คุณเพิ่งพบสิ่งที่เหลืออยู่
  • รวบรวมข้อกำหนดใหม่
  • เริ่มต้นอีกครั้งและโอนย้ายบริการ
  • ทำซ้ำ 4 ขั้นตอนสุดท้ายจนกว่าจะไม่มีคนมาหลังจากคุณเป็นเวลาหนึ่งเดือน
  • ปรับใช้เซิร์ฟเวอร์อีกครั้ง (และจัดการโดยลงชื่อ!
  • ล้างและทำซ้ำกระบวนการทั้งหมด
    • เซิร์ฟเวอร์ที่ปรับใช้ใหม่เป็นอุปกรณ์ใหม่ของคุณ

คุณได้อะไร

  • สินค้าคงคลังของบริการทั้งหมด (สำหรับคุณและการจัดการ)
  • เอกสารประกอบ (หลังจากทั้งหมดที่คุณต้องเขียนลงในการจัดการทำไมไม่ทำอย่างถูกต้องและทำบางสิ่งบางอย่างสำหรับคุณและการจัดการ)

เคยทำมาแล้วมันไม่สนุกเลย :(

ทำไมคุณต้องลงทะเบียนโดยการจัดการ ?

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

โอ้และนำเสนอแผนโดยรวมให้กับพวกเขาก่อนที่คุณจะเริ่มด้วยการประมาณการบางอย่างเกี่ยวกับสิ่งที่จะเกิดขึ้นในกรณีที่เลวร้ายที่สุดและดีที่สุด

มันจะเสียค่าใช้จ่ายเป็นจำนวนมากเวลาโดยไม่คำนึงถึงการสับเปลี่ยนกำลังคนถ้าคุณไม่ได้มีเอกสาร ไม่จำเป็นต้องนึกถึงแบ็คเฮด IMHO ถ้าคุณไม่มีเอกสารการโยกย้ายการโยกย้ายเป็นวิธีเดียวที่จะเข้าถึงสถานะที่มีสติซึ่งจะส่งมอบคุณค่าให้กับ บริษัท


นั่นเป็นมุมมองที่ดีมาก ขอบคุณ. แน่นอนฉันจะทำตามคำแนะนำของคุณอีกครั้ง: รับสิ่งที่ลงชื่อออกจากการจัดการและทำการปรับใช้เซิร์ฟเวอร์ช้า มันจะเจ็บ แต่มันฟังดูเป็นการกระทำที่สมเหตุสมผลที่สุด
lorenzog

โดยเอกสารที่เหมาะสมฉันแนะนำสิ่งนี้: serverfault.com/questions/25404/ … (ดูหัวข้อทั่วไป) ทำงานได้ดีมาก (อย่างน้อยสำหรับฉัน)
Martin M.

4

คุณมีเหตุผลที่จะเชื่อหรือไม่ว่าผู้ดูแลระบบคนก่อนหน้าทิ้งสิ่งที่ไม่ดีไว้เบื้องหลังหรือคุณแค่ดูหนังเยอะ ๆ ?

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

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

ไม่ว่าคุณจะทำอะไรให้พิจารณาสิ่งต่อไปนี้:

ถ่ายภาพของระบบ r ight ในขณะนี้ ก่อนที่คุณจะทำอะไรอีก ในความเป็นจริงใช้เวลาสองอย่างและวางแยกไว้และอย่าแตะต้องอีกจนกว่าคุณจะรู้ว่ามีอะไรเกิดขึ้นกับระบบของคุณนี่คือบันทึกของคุณว่าระบบเป็นอย่างไรเมื่อคุณเข้ามา

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


ฉันมีเหตุผลที่ต้องสงสัยว่าอาจมีบางอย่างที่ซุ่มซ่อนอยู่เนื่องจากเราไม่ได้มีส่วนร่วมในแง่ที่ดีที่สุด ดูแลระบบก่อนหน้านี้เป็นเพื่อนที่ดีเราเป็นเพื่อนร่วมห้องระหว่างวิทยาลัยและฉัน "สอนเขา" หลายเทคนิคที่เขาใช้ในภายหลังกลายเป็นดูแลระบบในขณะที่ฉันใช้เส้นทางของการพัฒนาซอฟต์แวร์และการจัดการโครงการ เนื่องจากมีความรู้สึกส่วนตัวเกี่ยวข้อง (เขากล่าวหาว่าฉันจัดการเพื่อให้เขาถูกไล่ออก) ฉันไม่สามารถคาดหวังพฤติกรรมที่เหมาะสม ถือว่าเป็นความสัมพันธ์แบบพ่อ / ลูกซึ่งลูกชายต้องการพิสูจน์ความดีงามของเขาต่อพ่อในระดับหนึ่ง
lorenzog

4

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

ถอดเซิร์ฟเวอร์และบู๊ตเข้าสู่โหมดผู้ใช้คนเดียว (init = / bin / sh หรือ 1 ที่ grub) เพื่อตรวจสอบคำสั่งที่ทำงานในการเข้าสู่ระบบของรูท การหยุดทำงานเป็นสิ่งจำเป็นที่นี่ทำให้ชัดเจนต่อการจัดการว่าไม่มีทางเลือก แต่ต้องหยุดทำงานหากต้องการให้แน่ใจว่าพวกเขาจะได้รับการเก็บข้อมูล

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

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

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

แก้ไข: ฉันเดาว่าฉันไม่ได้ตอบคำถามของคุณอย่างดีเท่าที่ควร ขั้นตอนแรก (เข้าสู่โหมดผู้ใช้คนเดียวเพื่อตรวจสอบกับดักการเข้าสู่ระบบ) อาจถูกข้ามไป - ระบบเก่าดูแลระบบให้รหัสผ่านรูทและตั้งค่าการเข้าสู่ระบบเพื่อทำrm -rf /แบบเดียวกันกับที่จะลบไฟล์ทั้งหมดเอง อาจไม่มีจุดในการทำเช่นนั้น ตามส่วนการสำรองข้อมูล: ลองใช้rsyncโซลูชันที่มีพื้นฐานเพื่อให้คุณสามารถทำการสำรองข้อมูลเริ่มต้นส่วนใหญ่ทางออนไลน์และลดเวลาหยุดทำงาน


0

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


0

คุณกำลังหวาดระแวงเกี่ยวกับความปลอดภัย ไม่จำเป็นต้องได้รับหวาดระแวง (b'cos คุณพูดคุยเกี่ยวกับกับดัก booby) ผ่านรายการซอฟต์แวร์ที่ติดตั้ง ดูว่าบริการใดกำลังทำงานอยู่ (netstat, ps, ฯลฯ ) ดูงาน cron ปิดการใช้งานบัญชีผู้ใช้ sys admin ก่อนหน้าโดยไม่ต้องลบบัญชี (ทำได้ง่าย ๆ โดยการชี้เชลล์ไปที่ nologin) ดูผ่านไฟล์บันทึก ฉันคิดว่าด้วยขั้นตอนเหล่านี้และจากความรู้เกี่ยวกับความต้องการของ บริษัท ของคุณซึ่งคุณสามารถคาดเดาการใช้เซิร์ฟเวอร์ได้ฉันคิดว่าคุณควรจะสามารถดูแลรักษาเซิร์ฟเวอร์เหล่านี้ได้


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