Saya suka pengaturan berikut untuk mengelola akses SSH, yang saya gunakan di tempat kerja untuk mengelola sekelompok pengguna pada armada kecil server. Keamanan dan kemudahan manajemen adalah prioritas utama saya.
Fitur utamanya adalah mengelola hak SSH dengan mudah melalui keanggotaan grup Unix, memiliki izin yang ditentukan dengan ketat, dan aman secara default.
Pengaturan
Instal perangkat lunak (opsional tetapi bermanfaat):
yum install members # or apt install members
Tambahkan grup:
addgroup --system allowssh
addgroup --system sftponly
Di /etc/ssh/sshd_config, pastikan bahwa yang berikut ke pengaturan adalah No:
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
Dan di akhir /etc/ssh/sshd_config, tambahkan dua bait ini:
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
(jangan lupa me-restart SSH setelah mengedit file)
Penjelasan
Jadi, apa yang dilakukan semua ini?
- Itu selalu menonaktifkan login root, sebagai langkah pengamanan tambahan.
- Itu selalu menonaktifkan login berbasis kata sandi (kata sandi yang lemah adalah risiko besar bagi server yang menjalankan sshd).
- Itu hanya memungkinkan (pubkey) login untuk pengguna dalam
allowsshgrup.
- Pengguna dalam
sftponlygrup tidak bisa mendapatkan shell di atas SSH, hanya SFTP.
Mengelola yang memiliki akses kemudian dilakukan dengan mengelola keanggotaan grup (perubahan ini segera berlaku, tidak perlu memulai ulang SSH):
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
Perhatikan bahwa pengguna sftp Anda harus menjadi anggota dari keduanya sftponly(untuk memastikan mereka tidak akan mendapatkan shell), dan dari allowssh(untuk mengizinkan login terlebih dahulu).
Informasi lebih lanjut
Harap dicatat bahwa konfigurasi ini tidak mengizinkan login kata sandi ; semua akun harus menggunakan otentikasi kunci publik. Ini mungkin satu-satunya kemenangan keamanan terbesar yang dapat Anda peroleh dengan SSH, jadi saya berpendapat ini sepadan dengan usaha bahkan jika Anda harus mulai sekarang.
Jika Anda benar-benar tidak ingin ini, kemudian juga menambahkan PasswordAuthentication yeske Match Group allowsshbait. Ini akan memungkinkan pubkey dan autentikasi kata sandi untuk allowsshpengguna.
Konfigurasi ini membatasi setiap sftponlypengguna ke direktori home mereka. Jika Anda tidak menginginkannya, hapus ChrootDirectory %harahan.
Jika Anda tidak ingin chrooting bekerja, penting bahwa direktori home user (dan direktori manapun di atasnya) dimiliki oleh root:rootdan tidak dapat ditulis oleh kelompok / lainnya. Tidak masalah jika subdirektori dari direktori home menjadi milik pengguna dan / atau dapat ditulis.
Ya, direktori home pengguna harus dimiliki oleh root dan tidak dapat ditulis oleh pengguna. Sayangnya, ada alasan bagus untuk pembatasan ini. Tergantung pada situasi Anda, ChrootDirectory /homemungkin menjadi alternatif yang baik.
Mengatur shell sftponlypengguna untuk /sbin/nologintidak perlu atau berbahaya untuk solusi ini, karena SSH ForceCommand internal-sftpmenimpa shell pengguna.
Menggunakan /sbin/nologinmungkin berguna untuk menghentikan mereka masuk melalui cara lain (konsol fisik, samba, dll).
Pengaturan ini tidak memungkinkan rootmasuk langsung melalui SSH; ini membentuk lapisan keamanan ekstra. Jika Anda benar - benar membutuhkan login root langsung, ubah PermitRootLogindirektifnya. Pertimbangkan untuk mengaturnya ke forced-commands-only,, prohibit-passworddan (sebagai pilihan terakhir) yes.
Untuk poin bonus, lihat membatasi siapa yang bisa sumelakukan root; menambah grup sistem yang disebut wheel, dan menambahkan / mengaktifkan auth required pam_wheel.sodi /etc/pam.d/su.