Proyek saya membutuhkan saya untuk menonaktifkan sftp untuk beberapa pengguna, tetapi para pengguna itu masih perlu terhubung melalui ssh. Adakah yang tahu cara mengimplementasikan ini?
Saya telah melihat saran untuk mengubah file di /etc/ssh/sshd_config
, tetapi saya tidak yakin apa yang harus diubah.
owner
untuk akses keluar. Ini mengasumsikan Anda akan diuji oleh tim merah. Jika semua orang yang mengakses sistem Anda selalu mematuhi aturan dan tidak pernah memiliki niat buruk, maka pendekatan saya akan sangat sulit dan rumit.Jawaban:
Secara umum melakukan ini adalah praktik keamanan yang buruk karena alasan yang orang lain telah terdaftar. Namun, poin dari tugas Anda, saya pikir, adalah untuk mengajarkan Anda bahwa Anda dapat memiliki bagian konfigurasi bersyarat berdasarkan berbagai kriteria.
Cara untuk melakukan ini adalah menggunakan
Match
blok bersyarat *.Lihat di
sshd_config(5)
bawahMatch
bagian untuk informasi lebih lanjut, dan cocok diGroup
.* Ada lebih dari satu cara untuk melakukannya.
sumber
Ini tidak masuk akal, ini adalah keamanan melalui ketidakjelasan yang tidak berguna. Setiap pengguna yang dapat SSH akan dapat mentransfer file apa pun yang dapat mereka baca melalui sesi SSH. Anda juga dapat menulis, jika Anda memiliki izin untuk melakukannya.
Sebagai contoh, Anda dapat mengunduh / etc / passwd via ssh menggunakan metode berikut (tidak diperlukan sesi scp / sftp): ssh [email protected] "cat / etc / passwd"> passwdcopy
Jika Anda dapat melihatnya di layar Anda melalui SSH, maka Anda dapat dengan mudah menyalinnya sebagai file.
Satu-satunya cara ini masuk akal adalah jika Anda memiliki shell terbatas khusus yang memberlakukan kebijakan keamanan.
Namun, kebalikan dari ini memang masuk akal (menonaktifkan ssh shell tetapi membiarkan leeaving scp / sftp diaktifkan) karena Anda tidak dapat menjalankan perintah sewenang-wenang melalui sftp / scp yang Anda dapat melalui ssh shell.
PS: Saya mengasumsikan shell SSH yang Anda berikan adalah shell standar yang memungkinkan eksekusi sewenang-wenang. Jika ini bukan masalahnya, lihat ini: Cara menonaktifkan subsistem sftp untuk pengguna atau grup tertentu? dan lihat opsi konfigurasi Subsystem dari sshd_config.
sumber
Saya lebih suka menggunakan grup untuk ini.
Berguna dalam kombinasi dengan pengguna yang memiliki shell terbatas. Saya kadang-kadang memberikan akses ssh ke klien sehingga mereka dapat mengakses sql-dump database mereka dengan mengatur shell mereka ke skrip yang membuang data mereka. Memotong mereka dari scp juga tampaknya merupakan ide yang cerdas. Mereka tidak memiliki akses untuk menjalankan
cat
untuk mentransfer file melalui ssh.sumber
Directive 'Subsystem' is not allowed within a Match block
Dimungkinkan untuk mengaktifkan SFTP secara global, dan menonaktifkan SFTP hanya untuk beberapa pengguna.
Ini tidak berfungsi jika Anda ingin pengguna Anda mendapatkan prompt shell biasa. Juga tidak masuk akal, karena Anda bisa mengelak dari banyak hal jika Anda memiliki akses shell. Ini hanya akan berfungsi jika Anda hanya ingin memberikan akses ke program tertentu.
Saya pribadi memerlukan ini karena saya ingin memberikan akses ke beberapa repositori git melalui SSH, dan saya suka menonaktifkan sistem yang tidak diperlukan. Dalam hal ini SFTP tidak diperlukan.
Sesuai
Untuk mencocokkan sekelompok pengguna, Anda dapat mengonfigurasi SSH dengan
Match
kata kunci. Darisshd_config(5)
manual:Beberapa contoh:
Match User eva
cocok dengan pengguna "eva"Match User stephen,maria
cocok dengan pengguna "stephen" dan "maria"Match Group wheel,adams,simpsons
cocok dengan grup "roda", "adams", "simpsons"Jika Anda ingin informasi lebih lanjut, ada banyak
sshd_config(5)
manual.Perintah paksa
Biasanya Anda mendapatkan shell login pengguna ketika Anda terhubung melalui SSH, tetapi SSH dapat dikonfigurasi untuk memaksa perintah tertentu. Perintah ini dipaksakan untuk koneksi SSH, termasuk SFTP, dan dengan demikian Anda mungkin memiliki opsi untuk memaksa perintah yang Anda inginkan.
Perintah untuk memaksa dapat dikonfigurasi dengan
ForceCommand
kata kunci. Darisshd_config(5)
manual:Jadi Anda bisa memaksa perintah terbatas yang ingin Anda gunakan
ForceCommand <your command>
. Sebagai contoh:Contoh
Dalam kasus saya di mana saya ingin memberikan akses git, saya hanya perlu pengguna untuk memiliki akses
git-shell
. Ini adalah bagian yang menonaktifkan SFTP untuk pengguna git saya, bersama dengan beberapa opsi keamanan:sumber
Diuji dan bekerja pada CentOS 6.6. Perhatikan bahwa Subsistem tidak diperbolehkan dengan Cocokkan setidaknya pada versi CentOS yang lebih baru. Halaman manual untuk sshd_config mencantumkan kata kunci terbatas yang diizinkan dengan kondisi Match.
sumber
Anda dapat melihat scponly untuk melakukan yang sebaliknya, izinkan hanya scp / sftp tetapi tidak ada akses shell.
Saya setuju dengan @Nathan di atas, ini tidak masuk akal. Jika Anda mati, coba edit file / etc / ssh / sshd_config Anda dan hapus / beri komentar pada baris berikut:
Subsistem sftp / usr / libexec / openssh / sftp-server
sumber
tidak memberikan direktori home untuk pengguna
Ubah Subsystem sftp / usr / libexec / openssh / sftp-server dalam file / etc / ssh / sshd_config menjadi Subsystem sftp / dev / null / usr / libexec / openssh / sftp-server
Kemudian restart ssh
ini bekerja untuk saya, debian.
sumber
Dalam
~/authorized_key
mengkonfigurasi kunci pengguna sebagai berikut:sumber