GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membatasi pengguna SSH untuk hanya mengizinkan tunneling SSH?

Di sisi server, Anda dapat membatasi ini dengan menyetel shell pengguna mereka ke /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 subset apa pun yang dapat ditawarkan SSH kepada mereka. Jika menawarkan penerusan porta, mereka masih dapat melakukannya.

Di sisi klien, Anda mungkin ingin terhubung dengan -N . Ini menghentikan klien dari MEMINTA perintah jarak jauh seperti shell, itu hanya berhenti setelah bagian otentikasi selesai. Terima kasih kepada pemberi komentar karena telah menunjukkan hal ini.


Berikut ini memiliki keuntungan bahwa penerusan soket agen X11 dan SSH juga tidak diizinkan, yang mungkin masih diizinkan dengan cara Caleb. Keuntungan lainnya adalah, jika pengguna dapat mengubah shell default-nya melalui cara lain, ini masih akan membatasi akses SSH-nya hanya ke penerusan TCP.

Masukkan kode berikut ke dalam /etc/ssh/sshd_config Anda :

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

untuk mengizinkan pengguna that-restricted-guy untuk meneruskan koneksi TCP apa pun melalui mesin Anda yang mendukung SSH (koneksi ke mesin ini, juga ke localhost dan 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-guy untuk hanya meneruskan koneksi ke 127.0.0.1 TCP port 12345 (seperti yang terlihat melalui mesin Anda yang mengaktifkan SSH).

Ketika pengguna biasanya terhubung 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 tetap membuka koneksi penerusan, tambahkan -N tandai ke ssh memerintah. Ini tidak akan mencoba menjalankan perintah apa pun tetapi masih memungkinkan untuk mengatur penerusan TCP.

Contoh perintah teruskan yang seharusnya berfungsi di penyiapan terakhir:

ssh -L 12345:127.0.0.1:12345 -N [email protected]

Anda dapat mengontrol apa yang dapat dilakukan orang di ssh dengan mencocokkan grup dengan asumsi versi ssh Anda cukup baru untuk mendukungnya (openssh 5.x+).

Pada dasarnya, kami memperlakukan mereka seolah-olah mereka adalah pengguna sftp, tetapi mengizinkan penerusan tcp dan opsional menentukan tujuan yang dapat mereka teruskan. Jika Anda memberi mereka direktori home tetapi tidak membuat direktori apa pun di bawahnya, mereka tidak dapat mentransfer file apa pun karena mereka tidak 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 Grup Pencocokan ini blokir untuk setiap grup yang ingin Anda berikan perilaku atau batasan berbeda.

Anda dapat mengontrol lebih jauh ke mana orang ini dapat masuk ke jaringan menggunakan iptables

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Ini mengasumsikan GID grup "orang baik" adalah 500.

Beberapa opsi ssh di atas tersedia di versi openssh yang lebih lama, tetapi tidak dalam bagian Match Group. Grup Pencocokan sangat terbatas di OpenSSH 4.x dan sebelumnya.


Linux
  1. Cara Membatasi Akses SSH untuk Pengguna dengan LShell (Limited Shell)

  2. Cara Menonaktifkan Login Pengguna Root melalui SSH

  3. Ssh – Membatasi Pengguna Ssh/scp/sftp ke Direktori?

  1. Bagaimana Cara Membuat Pengguna Baru Dengan Akses Ssh?

  2. Batasi login SSH ke IP atau host tertentu

  3. Cara Setup Chroot SFTP di Linux (Izinkan Hanya SFTP, bukan SSH)

  1. Cara Membatasi Akses su ke Pengguna Hanya dengan PAM di Linux

  2. Bagaimana mengizinkan hanya pengguna non-root tertentu yang menggunakan crontab

  3. Cara Mengonfigurasi SSH untuk membatasi Pengguna/Grup dengan perintah izinkan dan tolak