ที่ปรึกษาผู้ดูแลระบบ Linux ระยะไกล - แนวปฏิบัติที่ดีที่สุด [ปิด]


19

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

อะไรคือวิธีปฏิบัติที่ดีที่สุดในการเปิดใช้ที่ปรึกษาระยะไกลสำหรับงานดังกล่าวซึ่งเราได้รับการคุ้มครองจากกิจกรรมที่ร้ายกาจ

ขอบคุณล่วงหน้า.


66
หากคุณไม่ไว้ใจใครบางคนอย่าให้พวกเขาเข้าถึงเซิร์ฟเวอร์ของคุณ ระยะเวลา จ้างคนที่คุณเชื่อถือได้
EEAA

6
อดไม่ได้ที่จะสงสัยว่านี่เป็นการกระทำที่ได้รับคำสั่งจากอัพระดับสูงหรือไม่และคุณกำลังมองหากระสุน / ข้อโต้แย้งที่ดีหรือไม่?
แมตต์

5
ฮ่า ๆ ... นี่เป็นความคิดที่ดีใช่ไหม
ewwhite

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

3
หวังว่าคุณจะมีการสำรองข้อมูลออฟไลน์ที่ดี
CaffeineAddiction

คำตอบ:


55

อย่า นอกจากนี้คุณกำลังตกอยู่ในอันตรายของความไร้ความสามารถมากพอ ๆกับความอาฆาตพยาบาทจากสิ่งที่ฉันเคยเห็นจากวิธีการทั่วไปของ บริษัท ที่จัดการสิ่งนี้

ฉันอยากจะบอกว่าอาจมีผู้ดูแลระบบที่ดีในอินเดีย แต่วิธีที่หลาย ๆบริษัท ทำสิ่งต่าง ๆ น่ากลัว

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

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

ตอนนี้ฉันจัดการส่วนที่ "ไร้ความสามารถ" แล้ว

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

ดังนั้นให้พิจารณาท้องถิ่น ถ้าไม่ได้พิจารณาคนที่คุณได้รับการตรวจสอบตัวเองและได้รับการว่าจ้างโดยตรง


35
ฉันมีเวลามากพอที่จะให้สิทธิพิเศษในการเข้าถึงคนที่แต่งตัวประหลาดลงประตูเดียวจากฉันปล่อยให้คนอยู่คนเดียว 12 โซนเวลาออกไป ใจของฉันกระเด้งว่าใครก็จะคิดว่านี่เป็นตัวเลือก
EEAA

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

2
ไม่มีใครควรเข้าสู่ระบบ distro Linux ที่ทันสมัย บัญชีรูทไม่ควรมีรหัสผ่าน แต่ควรมีผู้ใช้ที่มีsuสิทธิ์ในการยกระดับตนเองเป็นรูท เมื่อมีคนบอกว่าพวกเขาต้องการ "การเข้าถึงรูท" นี่คือสิ่งที่พวกเขาควรจะถาม ถ้าบุคคลนี้บอกว่าเขาต้องการ "รหัสผ่านรูท" เขาก็ไม่สามารถทำงานได้
Monty Harder

@MontyHarder คุณหมายถึง (แน่นอน) ผู้ใช้ควรมีsudoสิทธิ์ยกระดับตัวเองให้รูทหรือไม่ ถ้าไม่คุณสามารถร่างแนวทางปฏิบัติที่ดีที่สุดของคุณในการใช้suเพื่อยกระดับตัวเองเป็นรูทโดยไม่ต้องใช้รหัสผ่านรูทและแจกจ่ายหรือไม่?
MadHatter สนับสนุนโมนิก้า

2
@ มอนตี้ฮาร์เดอร์ที่มีเหตุผลมากมายมันไม่ใช่สิ่งที่คุณพูดเป็นครั้งแรก sudoและsuเป็นสองสิ่งที่แตกต่างอย่างสิ้นเชิง ขอบคุณสำหรับการชี้แจง
MadHatter สนับสนุนโมนิก้า

33

ตามที่ได้กล่าวมาอย่าทำเช่นนี้

วิธีเดียวที่คุณจะสามารถป้องกันตัวเองได้คือทำสิ่งนี้:

  1. ยืนยันว่าที่ปรึกษาใช้ระบบจัดการการกำหนดค่าที่คุณเลือก
  2. ที่ปรึกษาจะเขียนการจัดการการกำหนดค่าสำหรับการดำเนินการที่คุณต้องการ
  3. ที่ปรึกษาจะทดสอบรายการในระบบทดสอบ
  4. เมื่อพร้อมแล้วที่ปรึกษาจะส่งโครงร่างไปยังที่เก็บรหัส
  5. การเปลี่ยนแปลงทั้งหมดจะได้รับการตรวจสอบโดยสมาชิกของพนักงานของคุณหรือที่ปรึกษาอื่นที่ไม่มีความเกี่ยวข้องกับเรื่องแรกอย่างแน่นอนและไม่มีวิธีติดต่อกับพวกเขา
  6. เมื่อการเปลี่ยนแปลงถูกลงชื่อออกคุณจะถูกนำไปใช้กับเซิร์ฟเวอร์โดยคุณหรือสมาชิกของพนักงานของคุณ ที่ปรึกษาดั้งเดิมไม่ควรเข้าถึงระบบใด ๆ ของคุณ

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

ตามที่ฉันแนะนำคุณจะดีกว่าที่จะจ้างคนที่รู้จักและเชื่อถือได้


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

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

ดีต้องได้รับความไว้วางใจ :)
ผู้ลี้ภัย

10

อะไรคือวิธีปฏิบัติที่ดีที่สุดในการเปิดใช้ที่ปรึกษาระยะไกลสำหรับงานดังกล่าวซึ่งเราได้รับการคุ้มครองจากกิจกรรมที่ร้ายกาจ

จากมุมมองทางกฎหมาย: ความขยันเนื่องจากก่อนและบทลงโทษที่เข้มงวดสำหรับการละเมิดสัญญา

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

จากนั้นใช้แครอท : ชำระราคายุติธรรมเสนองานที่น่าสนใจเพื่อนร่วมงานที่น่าทึ่งสภาพการทำงานที่ดีและผลประโยชน์อื่น ๆ ( ถ้าคุณจ่ายถั่วลิสงคุณจะได้รับลิง )

และติด : ละเมิดข้อกำหนดของสัญญาการจ้างงาน / บริการของคุณและเราจะป่วยทนายความของเรากับคุณและทำให้คุณล้มละลาย!

น่าเสียดายที่ทั้งสองข้างต้นกลายเป็นเรื่องยากมากขึ้นเมื่อข้ามพรมแดนและเขตเวลา

เมื่อคุณตัดสินใจจ้างคน:

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

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


3
"ถ้าคุณจ่ายถั่วลิสงคุณจะได้ลิง"หรือช้าง แม้ว่าจะลองคิดดูฉันไม่แน่ใจว่ามันจะดีกว่าหรือแย่กว่าลิง
CVN

เพียงแค่เพิ่มส่วน "ติด" ของคำตอบของคุณอาจยากที่จะบังคับใช้หากอีกฝ่ายอยู่ในประเทศอื่น คุณควรปรึกษากับทนายความที่มีความรู้ / ประสบการณ์ก่อนเพื่อดูว่าคุณมีความเป็นไปได้อย่างไรในกรณีที่มีบางอย่างผิดปกติ
user121391

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

7

มีวิธีหนึ่งที่เป็นระบบในการปกป้องตัวคุณเองที่อยู่ในใจซึ่งฉันไม่เคยเห็นมาก่อน

โฮสต์อินสแตนซ์ Linux ของคุณในรูปของ VM บน virtualization hypervisor (VMware, Xenserver, Hyper-V, ฯลฯ )

อย่าให้สิทธิ์การเข้าถึงระดับผู้ดูแลระบบแก่ผู้ดูแลระบบจากระยะไกลในไฮเปอร์ไวเซอร์ ผู้ดูแลระบบระยะไกลจะได้รับการเข้าถึงรูทของ VM เท่านั้น

ใช้ระบบสำรองข้อมูลที่ใช้ไฮเปอร์ไวเซอร์ (Unitrends, Veeam, vSphere Data Protection, ฯลฯ )

ทำอย่างน้อยหนึ่ง snapshot ต่อวันของแต่ละ Linux VM ย้อนกลับไปในเวลาที่คุณรู้สึกว่าจำเป็น

อย่าให้ผู้ดูแลระบบระยะไกลเข้าถึงการเขียนไปยังที่เก็บข้อมูลสำรอง

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

สิ่งนี้จะไม่ได้รับการพิสูจน์จากการโจมตีช่องทางด้านไฮเปอร์ไวเซอร์ซึ่งอาจถูกติดตั้งจากภายใน VM ที่ผู้โจมตีสามารถเข้าถึงรูทได้

หากการสำรองข้อมูลของคุณไม่ย้อนเวลากลับไปสิ่งนี้จะไม่ป้องกันคุณ

คุณต้องเชื่อใจผู้ที่อยู่ภายใต้การควบคุมของไฮเปอร์ไวเซอร์และโครงสร้างพื้นฐานการสำรองข้อมูลอย่างละเอียด

หากคุณทำสิ่งนี้ในคลาวด์ (AWS, Azure ฯลฯ ) รายละเอียดการใช้งานจะแตกต่างกัน แต่แนวคิดทั่วไปจะเหมือนกัน

โดยพื้นฐานแล้วแบ่งความรับผิดชอบระหว่างฝ่ายที่ไม่ได้เป็นหุ้นส่วนทางธุรกิจด้วยนอกเหนือจากการว่าจ้างคนที่คุณไว้วางใจเท่านั้น


1
เมื่อถึงเวลาที่คุณทำทั้งหมดคุณก็เป็นผู้ดูแลระบบอยู่แล้วและคุณจ้างคนขาดงานระยะไกลหรือ PFY
Criggie

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

1
แม้ว่าแนวคิดทั่วไปจะดี แต่ก็ช่วยป้องกันความไม่สามารถ / ข้อผิดพลาด (ลบฐานข้อมูลการผลิตและอื่น ๆ ) ไม่ใช่ต่อความอาฆาตพยาบาท (เว้นแต่คุณจะตรวจสอบการเปลี่ยนแปลงทุกวันทุกวันและเปรียบเทียบเนื้อหาของการเปลี่ยนแปลง นอกจากนี้ความเสียหายอาจไม่เกี่ยวข้องกับข้อมูลทางเทคนิคเช่นข้อมูลลูกค้าหรือความลับทางการค้าที่เลิกใช้แล้วที่ไม่สามารถทำได้ด้วยวิธีนี้เนื่องจากเป็นเพียงปฏิกิริยาเท่านั้น
user121391

@ user121391: ฉันไม่เห็นด้วยจริงๆโดยเฉพาะอย่างยิ่งกับปัญหาข้อมูล exfiltratiion เมื่อข้อมูลถูกนำมาใช้จะไม่สามารถควบคุมได้ทั้งหมด
เครก

-1

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


3
การมีสิทธิ์ในการกำหนดค่าและรีสตาร์ท Apache ที่ทำงานอยู่ในขณะที่รูทนั้นให้สิทธิ์การรูทเป็นหลัก มันง่ายพอที่จะมีไบนารีโดยพลการดำเนินการโดยกระบวนการ apache เช่นไปป์ไลน์ที่ ตั้งค่า Apache ให้ดียิ่งขึ้นเพื่อให้สามารถทำงานในลักษณะที่ไม่ใช่รูทและยังเชื่อมโยงกับพอร์ตที่มีสิทธิพิเศษ นั่นคือสิ่งที่ฉันทำในสถานการณ์นี้ในอดีต
MvG
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.