Saya memiliki sejumlah pengguna yang hanya perlu mengunggah file ke homedir mereka. Saya pikir sftp sudah cukup, tetapi saya tidak ingin mereka login melalui shell. Jadi mungkinkah? Platform saya adalah centos 7, homedir pengguna disimpan, katakanlah / personal / $ user
Saya membuat pengguna dengan pengaturan ini
useradd -m -d /personal/user1 -s /sbin/nologin
memberikan pengguna passwd, maka ketika saya menggunakan sftp untuk login ke mesin, katanya tidak bisa terhubung.
Jawaban:
Edit
/etc/ssh/sshd_config
untuk mengandung:Mulai ulang
sshd
. Jika Anda memiliki banyak pengguna, letakkan semuanya di baris yang sama dengan yang dipisahkan oleh koma seperti:Kunci untuk mengonfigurasi
sftp
agar tidak mengizinkan akses shell adalah membatasi pengguna melaluiForceCommand
opsi.sumber
Match User [SFTP user]
ForceCommand internal-sftp
saja, tanpa melakukan chroot.chroot
para pengguna sehingga mereka tidak dapat menavigasi keluar dan keluar dari "penjara" yang AndaSaya 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):
Tambahkan grup:
Di
/etc/ssh/sshd_config
, pastikan bahwa yang berikut ke pengaturan adalahNo
:Dan di akhir
/etc/ssh/sshd_config
, tambahkan dua bait ini:(jangan lupa me-restart SSH setelah mengedit file)
Penjelasan
Jadi, apa yang dilakukan semua ini?
allowssh
grup.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):
Perhatikan bahwa pengguna sftp Anda harus menjadi anggota dari keduanya
sftponly
(untuk memastikan mereka tidak akan mendapatkan shell), dan dariallowssh
(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
keMatch Group allowssh
bait. Ini akan memungkinkan pubkey dan autentikasi kata sandi untukallowssh
pengguna.Konfigurasi ini membatasi setiap
sftponly
pengguna ke direktori home mereka. Jika Anda tidak menginginkannya, hapusChrootDirectory %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 SSHForceCommand 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, ubahPermitRootLogin
direktifnya. Pertimbangkan untuk mengaturnya keforced-commands-only
,,prohibit-password
dan (sebagai pilihan terakhir)yes
.Untuk poin bonus, lihat membatasi siapa yang bisa
su
melakukan root; menambah grup sistem yang disebutwheel
, dan menambahkan / mengaktifkanauth required pam_wheel.so
di/etc/pam.d/su
.sumber
chown root:root
danchmod og-w
ubah saja shell default mereka ke / sbin / nologin. Dengan asumsi sebagian besar varietas Linux:
sumber
Subsystem sftp internal-sftp
) (atau mungkinForceCommand internal-sftp
). Jika ada yang umumSubsystem sftp /path/to/sftp-server
,nologin
bahkan akan mencegah SFTP.Anda bisa menggunakan tftp. apapun yang melebihi ssh akan memerlukan beberapa auth (key | pass).
sementara tftp dapat diamankan, mungkin ada baiknya meninjau kembali keputusan untuk menyediakan akses ke apa pun tanpa otentikasi.
http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html
sumber