ทำไมผู้ใช้ 'bin' จึงจำเป็นต้องมีเชลล์ล็อกอิน?


27

ในระหว่างการตรวจสอบจาก/var/log/auth.logหนึ่งในเว็บเซิร์ฟเวอร์สาธารณะของฉันฉันพบสิ่งนี้:

Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure; 
    logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53  user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53 
    port 50647 ssh2

เมื่อเริ่มแรกให้ดูเหมือนว่าจะเป็นsshสแปมเข้าสู่ระบบทั่วไปจากแฮกเกอร์แบบสุ่ม อย่างไรก็ตามเมื่อฉันมองใกล้ ๆ ฉันก็สังเกตเห็นอย่างอื่น /var/log/auth.logรายการที่ล้มเหลวส่วนใหญ่พูดinvalid userในรายการเช่นนี้

Jan  9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales 
    from 123.212.43.5 port 10552 ssh2

สิ่งที่น่าผิดหวังเกี่ยวกับข้อความเข้าสู่ระบบที่ล้มเหลวสำหรับbinคือมันเป็นผู้ใช้ที่ถูกต้องใน/etc/passwdที่แม้จะมีเปลือกเข้าสู่ระบบ:

[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh

ฉันคิดว่าฉันได้ครอบคลุมทุกชื่อผู้ใช้เริ่มต้นที่จะเข้าสู่ระบบจากระยะไกลเมื่อผมปิดการใช้งานPermitRootLoginใน/etc/ssh/sshd_config; การค้นพบรายการนี้เปิดโอกาสใหม่ในใจหวาดระแวงของฉัน หากมีบริการใดบริการbinอยู่ในระยะไกลอาจเป็นไปได้ว่าใครบางคนสามารถแทรกคีย์ ssh ลงในbinไดเรกทอรีของผู้ใช้จากบริการที่กำลังทำงานอยู่ในกล่องดังนั้นฉันจึงต้องการปิดใช้งานการเข้าสู่ระบบสำหรับbinผู้ใช้อย่างสมบูรณ์ถ้าเป็นไปได้

คำถาม

  • เซิร์ฟเวอร์นี้มีระยะไกลและมีราคาแพงในการแก้ไข (เช่นฉันจะจ่ายเงินสำหรับมือระยะไกลเพื่อขอใช้งาน KVM รวมถึงการเช่า KVM) ฉันกำลังพยายามคิดออกว่าฉันจะทำอะไรผิดถ้าฉันเปลี่ยน/etc/passwdรายการให้binเป็นแบบนี้:

    bin:x:2:2:bin:/bin:/bin/false

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

    $ sudo find / -group bin

    $ sudo find / -user bin

  • มีผู้ใช้รายอื่นที่ควรตั้งค่าการเข้าสู่ระบบเปลือกหอยของพวกเขา/bin/false? FYI ผมมีอยู่แล้วใน/bin/falsewww-data

  • ฉันกำลังหวาดระแวงเกินไปหรือไม่

ฉันกำลังเรียกใช้ Debian ถ้าเป็นเช่นนั้น


คำถามที่เกี่ยวข้องคือunix.stackexchange.com/questions/485505
JdeBP

คำตอบ:


22

ผู้ใช้ที่มีเชลล์ที่ถูกต้องและไม่มีรหัสผ่านยังคงสามารถเข้าสู่ระบบได้โดยวิธีการที่ไม่ใช่รหัสผ่านซึ่งส่วนใหญ่เป็นคีย์ ssh เชลล์ที่ถูกต้องเป็นสิ่งจำเป็นในการรันงาน cron เชลล์ที่ถูกต้องเป็นสิ่งจำเป็นสำหรับsu bin -c 'wibble'การทำงาน (บน Linux อย่างน้อยsu bin -s /bin/sh -c 'wibble'ก็ใช้ได้เช่นกัน)

ในกรณีของbinระบบส่วนใหญ่ไม่เคยรันคำสั่งเหมือนbinในการทำงานปกติดังนั้นการตั้งค่าเชลล์ให้/bin/falseเป็น ok

ไม่มีความเสี่ยงของการโจมตีโดยตรงที่อนุญาตให้binลงชื่อเข้าใช้ผ่าน SSH เพราะนั่นจะต้องสร้าง/bin/.ssh/authorized_keysในฐานะผู้ใช้binหรือในฐานะรูท กล่าวอีกนัยหนึ่งวิธีเดียวที่จะเข้าไปได้คือการมีเชลล์ที่ถูกต้องจะเพิ่มความเสี่ยงต่อการกำหนดค่าผิดพลาด นอกจากนี้ยังสามารถอนุญาตการโจมตีระยะไกลด้วยบริการอื่นนอกเหนือจาก SSH ตัวอย่างเช่นผู้ใช้รายงานว่าผู้โจมตีสามารถตั้งรหัสผ่านสำหรับdaemonSamba จากระยะไกลจากนั้นใช้รหัสผ่านนั้นเพื่อเข้าสู่ระบบผ่าน SSH

คุณสามารถเสียบรู SSH โดยแสดงรายชื่อผู้ใช้ระบบในDenyUsersคำสั่ง/etc/ssh/sshd_config(แต่น่าเสียดายที่คุณไม่สามารถใช้ช่วงตัวเลข) หรือในทางกลับกันคุณสามารถกำหนดAllowGroupsคำสั่งและอนุญาตเฉพาะกลุ่มที่มีผู้ใช้ทางกายภาพเท่านั้น (เช่นusersหากคุณให้สิทธิ์การเป็นสมาชิกกลุ่มผู้ใช้ทางกายภาพทั้งหมด)

มีข้อผิดพลาดเกี่ยวกับปัญหานี้ใน Debian ( # 274229 , # 330882 , # 581899 ) ปัจจุบันเปิดและจัดประเภทเป็น“ สิ่งที่ปรารถนา” ฉันมักจะยอมรับว่าสิ่งเหล่านี้เป็นข้อบกพร่องและผู้ใช้ระบบควรมี/bin/falseเป็นเปลือกของพวกเขาจนกว่าจะมีความจำเป็นต้องทำอย่างอื่น


6

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

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

คุณไม่จำเป็นต้องกังวลเกี่ยวกับผู้ใช้เหล่านี้ กังวลเฉพาะผู้ใช้ที่คุณสร้าง (และผู้ที่มีแฮชใน "/ etc / shadow")


1
จุดยุติธรรมเกี่ยวกับการไม่แฮช/etc/shadowแต่ถ้าบริการทำงานเป็นผู้ใช้มันเป็นไปได้ในทางทฤษฎีสำหรับคนที่จะใส่sshรหัสเข้าสู่ระบบไม่?
Mike Pennington

เฉพาะเมื่อพวกเขาลงชื่อเข้าใช้บัญชีของคุณด้วยสิทธิ์พิเศษ ... ซึ่งในกรณีนี้ผู้ใช้เหล่านี้เป็นกังวลน้อยที่สุดของคุณ :-P
Chris

ฉันไม่แน่ใจว่าฉันเห็นด้วยกับข้อ จำกัด ทั้งหมดที่คุณระบุไว้ ถ้านั่นเป็นเรื่องจริงrpcdพอร์ตที่เปิดจะไม่มีปัญหา อย่างไรก็ตามฉันเองเห็นผลลัพธ์ของการใช้ประโยชน์จากระยะไกลบนเครื่องโซลาริสเก่าที่ผู้โจมตีเข้าถึงได้ผ่านrpcช่องโหว่นี้ rhostsถูกเปิดใช้งานและสามารถเขียนได้โดยrpcผู้ใช้รายนั้น (ไม่สามารถจดจำรายละเอียดเพิ่มเติมได้ ... มันเป็นเวลาหลายปีที่ผ่านมา) ... เช่นเดียวกันหากพวกเขาสามารถสร้าง~/.ssh/authorized_keysผู้ใช้ที่สามารถเข้าสู่ระบบได้ รหัสผ่านใน/etc/shadow)
Mike Pennington

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

1
ขออภัยวิ่งออกจากห้อง การเปลี่ยนเชลล์ที่โปรแกรมสามารถเข้าถึง DOES แก้ไขปัญหานั้น แต่มันทำให้เกิดปัญหามากขึ้นกับสิ่งที่โปรแกรมควรทำจริง ๆ ฉันคิดว่าคุณหมายถึงเดิมว่าผู้ใช้ที่เป็นอันตรายสามารถใช้ SSH ผ่านผู้ใช้รายนั้นซึ่งพวกเขาไม่สามารถทำได้ (เว้นแต่พวกเขาจะตั้งรหัสฉันเชื่อตามที่คุณพูด) คุณสามารถแก้ปัญหาเล็ก ๆ ได้โดยใน sshd_config ให้ใส่ "AllowUsers <username> <username> ... " เพื่ออนุญาตการเข้าถึง SSH เฉพาะผู้ใช้
Chris

1

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

หากคุณต้องการคุณสามารถปิดใช้งานวิธีการตรวจสอบสิทธิ์ทั้งหมดสำหรับbinผู้ใช้ในการกำหนดค่าของ sshd โดยใช้MatchUserบล็อก

ที่กล่าวว่าดูเหมือนว่าผู้ใช้ถังขยะจะไม่ได้ใช้กับระบบ Debian ที่ทันสมัยและเป็นพยักหน้ารับประเพณีหรือมีการปฏิบัติตามมาตรฐานบางอย่าง

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