Berjalan SSH
di port alternatif tidak lagi dianggap sebagai keamanan. Ini hanya menambah sedikit ketidakjelasan, dan menambah kerumitan bagi pengguna Anda. Ini menambahkan nol hambatan bagi orang yang ingin merusak jaringan Anda, yang menggunakan pemindai port otomatis dan tidak peduli port apa yang sedang berjalan.
Jika Anda ingin meningkatkan keamanan pada sistem yang memungkinkan SSH inbound berbasis internet jarak jauh, kendalikan pengguna Anda sshd_config
seperti yang ditunjukkan @Anthon, dan kemudian terapkan keamanan langsung di PAM.
Buat dua grup, lusers
dan rusers
. Tambahkan pengguna seluler jarak jauh ke rusers
grup. Gunakan modul PAM pam_succeed_if.so untuk mengizinkan akses ke pengguna tersebut. Tambahkan baris ke konfigurasi pam Anda untuk ssh:
account sufficient pam_succeed_if.so user ingroup lusers
account sufficient pam_succeed_if.so user ingroup rusers
Beberapa modul pam_succeed_if.so mungkin mengharuskan Anda menggunakan sintaks yang sedikit berbeda, seperti group = lusers
.
Kemudian, tidak hanya sshd
membatasi pengguna yang dapat terhubung, tetapi jika ada bug sshd
, Anda masih memiliki perlindungan yang ditawarkan pembatasan berbasis PAM.
Satu langkah tambahan untuk pengguna jarak jauh adalah untuk memaksa penggunaan ssh_keys dengan frasa sandi. Jadi, pengguna lokal dapat masuk dengan kunci atau kata sandi, tetapi pengguna jarak jauh harus memiliki kunci, dan jika Anda membuat kunci untuk mereka, Anda dapat memastikan kunci tersebut memiliki kata sandi yang terkait. Sehingga membatasi akses ke lokasi yang benar-benar memiliki kunci SSH dan frasa sandi. Dan membatasi vektor serangan potensial jika kata sandi pengguna dikompromikan.
Dalam sshd_config
:
ubah 2 pengaturan:
ChallengeResponseAuthentication yes
dan
PasswordAuthentication yes
untuk:
ChallengeResponseAuthentication no
dan
PasswordAuthentication no
Jadi, standarnya adalah sekarang hanya mengizinkan otentikasi kunci. Kemudian untuk pengguna lokal, Anda dapat menggunakan match
pengaturan konfigurasi untuk mengubah default untuk pengguna lokal. Dengan asumsi jaringan pribadi lokal Anda adalah 192.168.1.0/24, tambahkan ke sshd_config
:
Match Address 192.168.1.0/24
PasswordAuthentication yes
Sekarang, pengguna lokal dapat terhubung dengan kata sandi atau kunci, dan pengguna jarak jauh akan dipaksa untuk menggunakan kunci. Terserah Anda untuk membuat kunci dengan frasa sandi.
Sebagai manfaat tambahan, Anda hanya perlu mengelola satu sshd_config
, dan Anda hanya perlu menjalankan ssh pada satu port, yang memudahkan manajemen Anda sendiri.
sunting 2017-01-21 - Membatasi penggunaan authorized_keys
file.
Jika Anda ingin memastikan bahwa pengguna tidak dapat secara mandiri membuat kunci ssh, dan menggunakannya dengan authorized_keys
file untuk masuk, Anda dapat mengontrolnya dengan mengatur lokasi tertentu agar sshd akan mencari kunci yang diotorisasi.
Di /etc/ssh/sshd_config
, ubah:
AuthorizedKeysFile %h/ssh/authorized_keys
untuk sesuatu seperti:
AuthorizedKeysFile /etc/.ssh/authorized_keys/%u
Menunjuk ke direktori terkontrol yang pengguna tidak memiliki izin untuk menulis berarti mereka tidak dapat membuat kunci mereka sendiri dan menggunakannya untuk bekerja di sekitar aturan yang Anda buat.
lusers
grup tetapi tidak dalamrusers
grup menghasilkan keypair dan memperbarui mereka~/.ssh/authorized_keys
, mereka akan dapat login dari jarak jauh.