Bagaimana membatasi pengguna SSH hanya mengizinkan tunneling SSH?
31
Bagaimana saya bisa membatasi pengguna di server SSH untuk mengizinkan mereka hanya hak istimewa untuk SSH TUNNELING ? yaitu Jadi mereka tidak dapat menjalankan perintah bahkan jika mereka masuk melalui SSH.
Server Linux saya adalah Ubuntu 11.04 dan OpenWrt.
Di sisi server, Anda dapat membatasi ini dengan mengatur shell pengguna mereka /bin/true. Ini akan memungkinkan mereka untuk mengotentikasi, tetapi tidak benar-benar menjalankan apa pun karena mereka tidak mendapatkan shell untuk menjalankannya. Ini berarti mereka akan terbatas pada apa pun yang dapat ditawarkan oleh SSH. Jika ia menawarkan penerusan porta, mereka masih bisa melakukan itu.
Di sisi klien, Anda mungkin ingin terhubung dengan -N. Ini menghentikan klien dari MEMINTA untuk perintah jarak jauh seperti shell, itu hanya berhenti setelah bagian otentikasi selesai. Terima kasih kepada komentator untuk menunjukkan ini.
Untuk menambah jawaban Caleb, Anda mungkin juga harus memberi tahu klien untuk tidak mengeksekusi shell. Dengan baris perintah openssh, ini dilakukan dengan flag -N. Ada opsi serupa di Putty, tapi saya tidak ingat nama persisnya.
Bill B
hmm, itu pada dasarnya keamanan sisi klien, bukan? Saya mencari pengaturan keamanan sisi server, tapi terima kasih!
LanceBaynes
2
Maaf, saya tidak jelas - maksud saya dikombinasikan dengan pengaturan server. Sudah pengalaman saya di masa lalu bahwa jika Anda mengatur shell ke sesuatu yang bukan shell, Anda tidak dapat terhubung sama sekali karena mencoba membuka shell tetapi tidak bisa. Jadi keamanan ditegakkan di sisi server (menggunakan metode Caleb) tetapi jika Anda memiliki masalah menghubungkan setelah itu, Anda mungkin perlu mengatur saklar sisi klien.
Bill B
3
Anda membuat pengguna dengan useradd sshtunnel -m -d /home/sshtunnel -s /bin/true.
fracz
14
Berikut ini memiliki keuntungan bahwa penerusan soket agen X11 dan SSH juga tidak diizinkan, yang mungkin masih diizinkan dengan cara Calebs. Keuntungan lain adalah, bahwa jika pengguna dapat mengubah shell default-nya melalui cara lain, ini masih akan membatasi akses SSH-nya hanya untuk penerusan TCP.
Masukkan yang berikut ke dalam Anda /etc/ssh/sshd_config:
Match User that-restricted-guy
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
untuk memungkinkan pengguna that-restricted-guymeneruskan koneksi TCP melalui mesin berkemampuan SSH Anda (koneksi ke mesin ini, juga ke localhostdan bahkan koneksi dari mesin ini ke mesin lain).
Jika Anda menginginkannya lebih ketat (yang merupakan ide bagus) Anda juga dapat melakukan hal berikut:
Match User even-more-restricted-guy
PermitOpen 127.0.0.1:12345
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
Ini akan memungkinkan pengguna even-more-restricted-guyuntuk hanya meneruskan koneksi ke 127.0.0.1 TCP port 12345 (seperti yang terlihat melalui mesin berkemampuan SSH Anda).
Ketika pengguna biasanya menghubungkan dia sekarang akan langsung terputus karena /bin/falseperintah akan dipicu yang tidak melakukan apa-apa selain langsung keluar dengan kode 1. Jika Anda ingin menghindari ini dan menjaga koneksi forwarding Anda tetap terbuka, tambahkan -Nbendera ke sshperintah. Ini tidak akan mencoba menjalankan perintah apa pun tetapi masih memungkinkan untuk mengatur penerusan TCP.
Contoh perintah penerusan yang harus bekerja di pengaturan yang terakhir:
Saya mengulangi jawaban itu sebagai solusi yang lebih baik daripada jawaban Caleb.
aef
Yakin. Saya membersihkan juga. Bagus melihat kesalahpahaman terpecahkan. Selamat malam.
Jakuje
1
Anda dapat mengontrol apa yang dapat dilakukan orang dalam ssh dengan mencocokkan grup dengan menganggap versi ssh Anda cukup baru untuk mendukungnya (openssh 5.x +).
Pada dasarnya, kami memperlakukan mereka seolah-olah mereka adalah pengguna sftp, tetapi memungkinkan penerusan tcp dan secara opsional menentukan tujuan yang mungkin mereka teruskan. Jika Anda memberi mereka direktori home tetapi tidak membuat direktori di bawahnya, mereka tidak dapat mentransfer file apa pun karena mereka tidak akan memiliki izin untuk melakukannya.
Match Group nicepeople
PubkeyAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
GatewayPorts no
ChrootDirectory /opt/dummy_location/%u
ForceCommand internal-sftp
AllowTcpForwarding yes
PermitOpen 192.168.0.8:22
PermitOpen 192.168.0.5:8080
# Or leave out the PermitOpen to allow forwarding to anywhere.
HostbasedAuthentication no
RhostsRSAAuthentication no
AllowAgentForwarding no
Banner none
Anda dapat mengulangi blok Kelompok Pencocokan ini untuk setiap grup yang ingin Anda berikan perilaku atau batasan berbeda.
Anda selanjutnya dapat mengontrol di mana orang ini dapat pergi di jaringan menggunakan iptables
Ini mengasumsikan GID grup "nicepeople" adalah 500.
Beberapa opsi ssh di atas tersedia di versi openssh yang lebih lama, tetapi tidak di dalam bagian Match Group. Match Group sangat terbatas pada OpenSSH 4.x dan sebelumnya.
useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
.Berikut ini memiliki keuntungan bahwa penerusan soket agen X11 dan SSH juga tidak diizinkan, yang mungkin masih diizinkan dengan cara Calebs. Keuntungan lain adalah, bahwa jika pengguna dapat mengubah shell default-nya melalui cara lain, ini masih akan membatasi akses SSH-nya hanya untuk penerusan TCP.
Masukkan yang berikut ke dalam Anda
/etc/ssh/sshd_config
:untuk memungkinkan pengguna
that-restricted-guy
meneruskan koneksi TCP melalui mesin berkemampuan SSH Anda (koneksi ke mesin ini, juga kelocalhost
dan bahkan koneksi dari mesin ini ke mesin lain).Jika Anda menginginkannya lebih ketat (yang merupakan ide bagus) Anda juga dapat melakukan hal berikut:
Ini akan memungkinkan pengguna
even-more-restricted-guy
untuk hanya meneruskan koneksi ke 127.0.0.1 TCP port 12345 (seperti yang terlihat melalui mesin berkemampuan SSH Anda).Ketika pengguna biasanya menghubungkan dia sekarang akan langsung terputus karena
/bin/false
perintah akan dipicu yang tidak melakukan apa-apa selain langsung keluar dengan kode 1. Jika Anda ingin menghindari ini dan menjaga koneksi forwarding Anda tetap terbuka, tambahkan-N
bendera kessh
perintah. Ini tidak akan mencoba menjalankan perintah apa pun tetapi masih memungkinkan untuk mengatur penerusan TCP.Contoh perintah penerusan yang harus bekerja di pengaturan yang terakhir:
sumber
Anda dapat mengontrol apa yang dapat dilakukan orang dalam ssh dengan mencocokkan grup dengan menganggap versi ssh Anda cukup baru untuk mendukungnya (openssh 5.x +).
Pada dasarnya, kami memperlakukan mereka seolah-olah mereka adalah pengguna sftp, tetapi memungkinkan penerusan tcp dan secara opsional menentukan tujuan yang mungkin mereka teruskan. Jika Anda memberi mereka direktori home tetapi tidak membuat direktori di bawahnya, mereka tidak dapat mentransfer file apa pun karena mereka tidak akan memiliki izin untuk melakukannya.
Anda dapat mengulangi blok Kelompok Pencocokan ini untuk setiap grup yang ingin Anda berikan perilaku atau batasan berbeda.
Anda selanjutnya dapat mengontrol di mana orang ini dapat pergi di jaringan menggunakan iptables
Ini mengasumsikan GID grup "nicepeople" adalah 500.
Beberapa opsi ssh di atas tersedia di versi openssh yang lebih lama, tetapi tidak di dalam bagian Match Group. Match Group sangat terbatas pada OpenSSH 4.x dan sebelumnya.
sumber