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
allowssh
grup.
- Pengguna dalam
sftponly
grup 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 yes
ke Match Group allowssh
bait. Ini akan memungkinkan pubkey dan autentikasi kata sandi untuk allowssh
pengguna.
Konfigurasi ini membatasi setiap sftponly
pengguna ke direktori home mereka. Jika Anda tidak menginginkannya, hapus ChrootDirectory %h
arahan.
Jika Anda tidak ingin chrooting bekerja, penting bahwa direktori home user (dan direktori manapun di atasnya) dimiliki oleh root:root
dan 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 /home
mungkin menjadi alternatif yang baik.
Mengatur shell sftponly
pengguna untuk /sbin/nologin
tidak perlu atau berbahaya untuk solusi ini, karena SSH ForceCommand internal-sftp
menimpa shell pengguna.
Menggunakan /sbin/nologin
mungkin berguna untuk menghentikan mereka masuk melalui cara lain (konsol fisik, samba, dll).
Pengaturan ini tidak memungkinkan root
masuk langsung melalui SSH; ini membentuk lapisan keamanan ekstra. Jika Anda benar - benar membutuhkan login root langsung, ubah PermitRootLogin
direktifnya. Pertimbangkan untuk mengaturnya ke forced-commands-only
,, prohibit-password
dan (sebagai pilihan terakhir) yes
.
Untuk poin bonus, lihat membatasi siapa yang bisa su
melakukan root; menambah grup sistem yang disebut wheel
, dan menambahkan / mengaktifkan auth required pam_wheel.so
di /etc/pam.d/su
.