อะไรคือทางออกที่ดีที่สุดในการจัดการรหัสผ่านรูทของเซิร์ฟเวอร์นับพัน


12

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

บางครั้งเราจำเป็นต้องใช้รหัสผ่านรูทตัวอย่างเช่นเมื่อเซิร์ฟเวอร์ไม่ทำงานเราจำเป็นต้องใช้ iLO เพื่อพิจารณาเหตุผล

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

แก้ไข:

สิ่งที่ฉันต้องการจากโซลูชันการจัดการรหัสผ่านคือ:

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

ดังนั้นจึงไม่ใช่ความคิดที่ดีที่จะตั้งค่ารหัสผ่านรูทเป็นสตริงที่ยาวและสุ่มแม้ว่ามันจะสร้างจากคำสั่งที่รู้จัก (เช่นopenssl passwd) มันยากที่จะจำได้และบางครั้งก็ยากที่จะสร้าง (โดยไม่ต้องใช้แล็ปท็อปของฉัน)


1
คุณใช้ระบบการจัดการการกำหนดค่าเช่นหุ่นเชิดหรือไม่? คุณใช้อะไร
Zoredache

Puppet ++ สำหรับสิ่งนี้
Tom O'Connor

เราใช้ cfengine :-)
yegle

คำตอบ:


5

คุณสามารถใช้Puppetเพื่อผลักดันการเปลี่ยนรหัสผ่านไปยังเซิร์ฟเวอร์ทั้งหมดของคุณ คุณจะกำหนดrootโดยใช้userประเภทดังนี้:

    user { 'root':
            ensure => present,
            password => '$1$blablah$blahblahblahblah',
    }

ในการสร้างรหัสผ่านที่เข้ารหัส:

openssl passwd -1 -salt "blah"

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


3

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

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

หลักสูตรนี้อาจหมายความว่าคุณควรหาวิธีป้องกันด้วยรหัสผ่านสำหรับบูตโหลดเดอร์ของคุณแทน


0

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

ต่อไป: คำถามคือความถี่ที่เซิร์ฟเวอร์ออฟไลน์

ดังนั้นคุณสามารถคิดถึงการตั้งค่าต่อไปนี้:

ใช้โซลูชัน OTP ที่จัดการจากส่วนกลางเช่น privacyidea ( http://www.privacyidea.org ) คุณสามารถกำหนดโทเค็น OTP ต่าง ๆ ให้กับผู้ใช้รูทได้ โทเค็นแต่ละอันมีรหัส OTP ที่แตกต่างกันและเป็นอุปกรณ์ที่แตกต่างกัน ดังนั้นเพื่อนร่วมงานของคุณทุกคนสามารถเข้าสู่ระบบในฐานะผู้ใช้รูท แต่ในบันทึกการตรวจสอบคุณจะเห็นว่าโทเค็นใดรับรองความถูกต้องเพื่อให้คุณสามารถรู้ว่าเพื่อนร่วมงานคนใดที่เข้าสู่ระบบในเวลานั้น

บนเซิร์ฟเวอร์คุณต้องกำหนดค่า pam_radius เพื่อส่งคำขอการตรวจสอบสิทธิ์ไปยัง RADIUS และ privacyIDEA

คนเกียจคร้าน ตอนนี้เซิร์ฟเวอร์ของคุณออฟไลน์ ในกรณีนี้คุณควรเล่นกับ pam stack ของคุณ ฉันคิดได้บางอย่างเช่น:

auth sufficient pam_unix.so
auth required pam_radius.so use_first_pass

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

เห็นนี้ HOWTO https://www.howtoforge.com/manage-two-factor-authentication-in-your-serverfarm-with-privacyidea

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