ทำไม su ถึงรูทแทนที่จะเข้าสู่ระบบในฐานะ root


33

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


2
คุณกำลังคิดถึงการเข้าสู่ระบบ ssh หรือเข้าสู่ระบบจากเครื่องทางกายภาพ?
Telemachus

คำตอบ:


43

การอนุมานนั้นเป็นไปเฉพาะsuหรือsudoเมื่อจำเป็น

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

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

sudo มักจะแนะนำเพราะจะช่วยให้คุณปรับละเอียดและตรวจสอบการใช้สิทธิ์ดังกล่าว

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


1
คุณช่วยอธิบายได้ไหมว่าทำไมการล็อกอินรูทระยะไกลจึงเป็น "ช่องโหว่ที่ใหญ่พอสมควร"
thepocketwade

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

2
ข้อดีอีกประการของ sudo: การบันทึกคำสั่งที่เรียกใช้งาน
Manuel Faux

นั่นคือการตรวจสอบ)
Dan Carley

1
ในขณะที่sudoดีกว่าsuยังช่วยให้คุณใช้การ-mตั้งค่าสถานะเพื่อให้ตัวแปรสภาพแวดล้อมเหมือนกันในขณะที่อยู่ในเทอร์มินัลรูท ไม่มีอะไรทำให้ฉันเป็นบ้าอีกต่อไปแล้วเพื่อsuจะหยั่งรากเพียงเล็กน้อยเท่านั้นที่จะทำอะไรบางอย่าง~ในชื่อไดเรกทอรีและใช้ไม่ได้
tj111

27

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

รวมทั้งสร้างความรับผิดชอบ :)


+1 สั้นและตรงประเด็น
lexu

15

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


หลังจากที่มีผู้ใช้งานรูทแล้วคุณจะทราบได้อย่างไรว่าคำสั่งนั้นรันอย่างไร นี่ถูกบันทึกไว้ที่ไหนสักแห่ง?
Dobes Vandermeer

10

sudo โดยอัตโนมัติยังบันทึกทุกคำสั่งเพื่อ syslog และคุณสามารถกำหนดคำสั่งที่ผู้ใช้แต่ละคนสามารถใช้


3
สำหรับการบันทึก: นี่เป็นกรณีสำหรับทุกคำสั่งที่นำหน้าด้วย 'sudo' แต่ในกรณีที่ใช้ sudo เพื่อยกระดับรูทเชลล์คำสั่งจะถูกบันทึกในพื้นที่ดั้งเดิมเท่านั้น (ประวัติเชลล์โดยเฉพาะ)
Zenham

2
แน่นอนsudo vim foo.txtแล้ววางลงในเปลือกจากภายในเป็นกลุ่มจะให้เปลือกหอยคุณโดยไม่ต้องบันทึก sudo ปกติ
Ophidian

หรือเพียงแค่sudo -iจะได้รับการโต้ตอบเซสชั่น ...
Kamil Kisiel

ฉันไม่เข้าใจปัญหากับ sudo vim foo.txt ฉันวิ่งไปที่นั้นออกเป็นกลุ่มแล้วยังเป็นตัวของฉันเอง
thepocketwade

คุณสามารถ "หลอก" sudo เพื่อให้เชลล์ด้วยการพิมพ์ sudo su - หรือ sudo vim จากนั้นไปที่ subshell ใหม่ แต่ถ้าคุณใช้ sudo เพราะคุณต้องการให้ทุกอย่างเข้าสู่ระบบใน syslog (ส่วนกลาง) และคุณรู้ว่ามันสามารถใช้เพื่อรับ subshell อีกครั้งจากนั้นฉันก็ไม่เห็นอะไรผิดปกติมันเป็นโบนัสตราบเท่าที่ ฉันไม่ได้ขึ้นอยู่กับมันเท่านั้น
Jure1873

9

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


4

หากคุณต้องการสร้างหลักฐานการตรวจสอบและไม่ต้องการตกเป็นเหยื่อของปัญหา "sudo su -" หรือ "sudo vim foo.txt" ที่กล่าวถึงที่นี่คุณสามารถใช้ "sudosh" แจกการเข้าถึงรูทผ่าน sudo แต่ทำเพียงคำสั่งที่อนุญาตให้เรียกใช้ "sudosh" เท่านั้น

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


นั่นคือสมมติว่า sudosh มีอยู่ในระบบ ฉันเพิ่งตรวจสอบและฉันไม่ได้อยู่ในกล่อง Linux ของฉัน
John Gardeniers

คุณยังสามารถใช้ ksh93 ใหม่ด้วยการเปิดใช้งานการบันทึกการตรวจสอบ ตรวจสอบบทความนี้ที่ IBM developerWorks: ibm.com/developerworks/aix/library/au-korn93/...
พ.ค.

ค่อนข้างง่ายที่จะข้ามโดยเพียงแค่เรียกใช้เชลล์สคริปต์ (ซึ่งคุณจะทำการลบหลังจากนั้น) สร้างสคริปต์ภายใต้ชื่อที่ไร้เดียงสาในฐานะผู้ใช้ที่ไม่ผ่านการตรวจสอบ (หรือสคริปมันขึ้นมาจากเวิร์กสเตชันของคุณ) จากนั้น sudo และเรียกใช้ คุณสามารถซ่อนมันได้ด้วยการตั้งชื่อมันว่า 'ls' หรือ somesuch แล้ววางไว้ใน $ PATH (เปลี่ยน $ PATH ถ้าจำเป็น) และทำให้มันทำงานสกปรกในขณะที่เรียกใช้ / bin / ls ดังนั้นมันจึงดูเป็นปกติ เช็ดมันในภายหลัง บันทึกการตรวจสอบจะไม่ทราบว่า / home / anthony / bin ใช้เพื่อบรรจุ 'ls'
Derobert

ใช่มันไม่สมบูรณ์แบบ เรารู้สิ่งนี้ - แต่มันเป็นเว็บไซต์ที่น่ากลัวดีกว่า "sudo su -" IMHO และใช่มันไม่ได้ติดตั้งโดยค่าเริ่มต้นที่ใดก็ได้ AFAIK อย่างไรก็ตามมันทำงานบน Solaris และ Linux ได้อย่างง่ายดาย
mibus

1

คุณควรฝึกความปลอดภัยในเชิงลึก

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

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

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


0

แนวคิดคือการปิดใช้งานการเข้าสู่ระบบรูทดังนั้นจึงไม่มีบัญชีผู้ดูแลระบบเริ่มต้น วิธีนี้ผู้โจมตีจะต้องเดาทั้งชื่อผู้ใช้และรหัสผ่าน (ไม่ใช่เฉพาะรหัสผ่าน)


0

หากคุณใช้รูทเป็นประจำการอนุญาตของคุณอาจไม่ถูกต้องหรือคุณอาจต้องให้สิทธิ์ sudo หรือสิทธิ์กลุ่มใหม่เพื่อ r / w / x ไฟล์หรือไดเรกทอรี

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

อย่าให้ฉันเริ่มต้นด้วยสิ่งที่ Ubuntu ทำ!


-2

มันช่วยให้คุณไม่ต้องเรียกใช้ rm -r -f / ฉันเพิ่งจะเรียกใช้เมื่อ 2 วันที่ผ่านมา (ในฐานะผู้ใช้ที่ไม่มีสิทธิ์ฉันหมายถึงการเรียกใช้ rm -r -f *)


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