ฉันชอบการตั้งค่าต่อไปนี้สำหรับการจัดการการเข้าถึง SSH ซึ่งฉันใช้ที่ทำงานเพื่อจัดการกลุ่มผู้ใช้บนเซิร์ฟเวอร์ขนาดเล็ก ความปลอดภัยและความสะดวกในการจัดการอยู่ในระดับสูงในรายการลำดับความสำคัญของฉัน
คุณสมบัติหลักของมันคือการจัดการสิทธิ์ SSH ได้อย่างง่ายดายผ่านการเป็นสมาชิกกลุ่ม Unix มีการกำหนดสิทธิ์ไว้อย่างแน่นหนาและปลอดภัยโดยค่าเริ่มต้น
การตั้งค่า
ติดตั้งซอฟต์แวร์ (เป็นทางเลือก แต่มีประโยชน์):
yum install members # or apt install members
เพิ่มกลุ่ม:
addgroup --system allowssh
addgroup --system sftponly
ใน/etc/ssh/sshd_config
ตรวจสอบให้แน่ใจว่าการตั้งค่าต่อไปนี้คือNo
:
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
และในตอนท้าย/etc/ssh/sshd_config
เพิ่มสองบทนี้:
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
(อย่าลืมรีสตาร์ท SSH หลังจากแก้ไขไฟล์)
คำอธิบาย
ดังนั้นทั้งหมดนี้ทำอะไร?
- มันปิดใช้งานการเข้าสู่ระบบรูทเสมอซึ่งเป็นมาตรการรักษาความปลอดภัยเพิ่มเติม
- มันปิดการใช้งานการเข้าสู่ระบบด้วยรหัสผ่านเสมอ (รหัสผ่านที่อ่อนแอมีความเสี่ยงสูงสำหรับเซิร์ฟเวอร์ที่ใช้ sshd)
- อนุญาตการล็อกอิน (pubkey) สำหรับผู้ใช้ใน
allowssh
กลุ่มเท่านั้น
- ผู้ใช้ใน
sftponly
กลุ่มไม่สามารถรับเชลล์ผ่าน SSH เพียง SFTP
การจัดการผู้ที่สามารถเข้าถึงได้นั้นทำได้ง่าย ๆ ด้วยการจัดการความเป็นสมาชิกกลุ่ม (การเปลี่ยนแปลงเหล่านี้จะมีผลทันทีไม่ต้องรีสตาร์ท SSH):
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
โปรดทราบว่าผู้ใช้ SFTP ของคุณจะต้องเป็นสมาชิกของทั้งคู่sftponly
(เพื่อให้แน่ใจว่าพวกเขาจะไม่ได้รับเชลล์) และจากallowssh
(เพื่ออนุญาตการเข้าสู่ระบบในตอนแรก)
ข้อมูลเพิ่มเติม
โปรดทราบว่าการกำหนดค่านี้ไม่อนุญาตให้มีการเข้าสู่ระบบรหัสผ่าน ; บัญชีทั้งหมดต้องใช้การตรวจสอบกุญแจสาธารณะ นี่อาจเป็นความปลอดภัยที่ยิ่งใหญ่ที่สุดที่คุณจะได้รับจาก SSH ดังนั้นฉันเถียงว่ามันคุ้มค่ากับความพยายามแม้ว่าคุณจะต้องเริ่มต้นตอนนี้
หากคุณไม่ต้องการสิ่งนี้จริงๆแล้วเพิ่มPasswordAuthentication yes
ไปยังMatch Group allowssh
บทที่ สิ่งนี้จะช่วยให้ pubkey และ password auth สำหรับallowssh
ผู้ใช้งาน
การกำหนดค่านี้ จำกัดsftponly
ผู้ใช้ใด ๆไปยังไดเรกทอรีบ้านของพวกเขา หากคุณไม่ต้องการให้เอาChrootDirectory %h
คำสั่งนั้นออก
หากคุณไม่ต้องการ chrooting ไปทำงานก็เป็นสิ่งสำคัญที่ไดเรกทอรีบ้านของผู้ใช้ (และไดเรกทอรีใด ๆ ข้างต้นนั้น) เป็นเจ้าของroot:root
และไม่สามารถเขียนโดยกลุ่ม / อื่น ๆ ไม่เป็นไรสำหรับไดเรกทอรีย่อยของโฮมไดเร็กตอรี่ที่ผู้ใช้เป็นเจ้าของและ / หรือสามารถเขียนได้
ใช่ไดเรกทอรีภายในบ้านของผู้ใช้จะต้องเป็นเจ้าของโดยผู้ใช้ น่าเศร้าที่มีเหตุผลที่ดีสำหรับข้อ จำกัด นี้ ขึ้นอยู่กับสถานการณ์ของคุณChrootDirectory /home
อาจเป็นทางเลือกที่ดี
การตั้งค่าเชลล์ของsftponly
ผู้ใช้/sbin/nologin
ไม่จำเป็นหรือไม่เป็นอันตรายสำหรับโซลูชันนี้เนื่องจาก SSH ForceCommand internal-sftp
แทนที่เชลล์ของผู้ใช้
การใช้/sbin/nologin
อาจเป็นประโยชน์ในการหยุดพวกเขาเข้าสู่ระบบด้วยวิธีอื่น ๆ (ทางกายภาพ, samba, ฯลฯ ) แม้ว่า
การตั้งค่านี้ไม่อนุญาตให้root
ล็อกอินโดยตรงผ่าน SSH สิ่งนี้ก่อให้เกิดความปลอดภัยเพิ่มขึ้นอีกระดับ หากคุณจริงๆไม่จำเป็นต้องเข้าสู่ระบบรากโดยตรงเปลี่ยนPermitRootLogin
คำสั่ง พิจารณาการตั้งค่าให้forced-commands-only
, prohibit-password
และ yes
(เป็นที่พึ่งสุดท้าย)
สำหรับคะแนนโบนัสให้ดูที่การ จำกัด ใครสามารถsu
รูทได้ เพิ่มกลุ่มระบบที่เรียกว่าwheel
, และเพิ่ม / เปิดในauth required pam_wheel.so
/etc/pam.d/su