ฉันชอบการตั้งค่าต่อไปนี้สำหรับการจัดการการเข้าถึง 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