มันไม่ปลอดภัยที่จะมีผู้ใช้ ansible กับ sudo ไม่มีรหัสผ่านหรือไม่?


10

ฉันใหม่กับ Ansible คู่มือการจัดเตรียม VPS ส่วนใหญ่ที่ฉันเคยเห็นมาแล้ว:

  1. ปิดใช้งานรูทจากการเข้าสู่ระบบ
  2. สร้างผู้ใช้ใหม่ที่สามารถเข้าสู่ระบบด้วยเท่านั้นssh(ไม่ใช่รหัสผ่าน)
  3. เพิ่มผู้ใช้ใหม่ในwheelกลุ่มด้วยสิทธิ์sudoโดยไม่ใช้รหัสผ่าน

ฉันเข้าใจ (1) และ (2) แต่ไม่ใช่ (3)

ไม่มีรหัสผ่านแน่นอนsudoเหมือนเข้าสู่ระบบในเป็นroot? ฉันเข้าใจถึงประโยชน์ (ความสะดวกสบาย) แต่มันไม่ปลอดภัยอย่างนี้หรือ

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


1
Ansible มีไว้สำหรับการดำเนินงานด้านการจัดการโดยอัตโนมัติดังนั้นโดยทั่วไปต้องการการเข้าถึงระดับสูงสุด (root) ในการเข้าถึงดังนั้น "sudoless รหัสผ่าน" หากคุณต้องการใช้เพื่อเรียกใช้ชุดย่อยของคำสั่งที่มีอยู่ในระบบของคุณคุณสามารถล็อคมันลงไปที่คำสั่งเหล่านั้นด้วยการกำหนดค่า sudo โดยละเอียดมากขึ้น รหัสผ่าน sudo ไม่จำเป็นต้องหมายถึงการเข้าถึงทุกสิ่งที่รูททำได้
David Spillett

@DavidSpillett ฉันสงสัยว่า - คือการกำหนดคำสั่ง sudo ที่อนุญาตในไฟล์ sudoers ... แต่ฉันอ่านที่ไหนสักแห่งที่ ansible ทำทุกอย่างโดยการตีความผ่านคำสั่ง python ที่ซับซ้อนและวิธีการนั้นจะยุ่งเหยิงเร็ว
lonix

คำตอบ:


18

หากบัญชีบริการสามารถทำ sudo โดยไม่ใช้รหัสผ่านได้คุณจะต้องป้องกันการเข้าถึงบัญชีนั้น

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


ดังนั้นฉัน "รู้สึก" ถูกต้องในความรู้สึกที่ถูกรบกวนโดยการประชุมนี้ - และนี่คือการประชุมสำหรับการพูดออกมาจากความจำเป็น / การปฏิบัตินิยม
lonix

ดังนั้นคุณกำลังบอกว่าโดยพื้นฐานแล้วฉัน "ย้าย" การรักษาความปลอดภัยหลักจาก VPS ไปยังระบบในพื้นที่ของฉันซึ่งมีคีย์ ssh ของบัญชี ansible? ในกรณีนี้จุดอ่อนไม่ได้เป็น VPS แต่เป็นฉันเอง! และฉันต้องระวังเป็นพิเศษในการปกป้องคีย์ ssh นั้นเพื่อแลกกับความสะดวกสบายที่ ansible ระบบอัตโนมัติให้ฉัน
lonix

6
คีย์ ssh ข้อความรหัสผ่านป้องกันด้วย ssh-agent เป็นข้อมูลประจำตัวที่ดีพอสมควร
John Mahowald

@lonix ระบบที่ปลอดภัยทั้งหมดต้องการข้อมูลประจำตัว ระบบที่ปลอดภัยที่สุดจะมีความปลอดภัยเท่ากับมาตรการที่คุณใช้ในการรักษาความปลอดภัยของข้อมูลรับรองเหล่านี้เนื่องจากการที่ระบบเหล่านั้นให้การเข้าถึง 100% แก่พวกเขา ดังนั้นใช่คุณไม่สามารถคาดหวังความปลอดภัย VPS ของคุณหากคุณไม่ได้รักษาความปลอดภัยคีย์ SSH ของคุณ (หรือรหัสผ่านรูทหรืออะไรก็ตาม) ความจริงที่ว่าคุณกำหนดค่า sudo ไม่มีรหัสผ่านไม่มีความหมายอะไรจากมุมมองนี้การเปิดใช้ sudo ด้วยรหัสผ่านจะไม่เปลี่ยนความจริงที่ว่าคุณจำเป็นต้องรักษาความปลอดภัยคีย์ SSH
Giacomo Alzetta

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

4

ผู้ใช้ใหม่ที่สร้างใน (2) สามารถล็อกอินด้วยคีย์ SSH เท่านั้นไม่มีรหัสผ่าน คีย์ SSH ให้การเข้าถึงรูตทางอ้อม ดังนั้นนี่เท่ากับอนุญาตให้รูทล็อกอินด้วยคีย์

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


2

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


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

ตรงนี้เป็นสิ่งที่ต้องมีก่อนเมื่อทำงานกับระบบที่มีประสิทธิผล
NicoKlaus

1
Ansible มี 'ansible-vault' และปลั๊กอิน / โมดูล / ไลบรารีที่อนุญาตให้จัดเก็บความลับในระบบจัดเก็บข้อมูลลับของบุคคลที่สามหลายแห่งเช่น bitwarden, hashicorp vault, keepass และอื่น ๆ
Zoredache
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.