Hanya izinkan otentikasi kata sandi ke server SSH dari jaringan internal

22

Saya memiliki server OpenSSH 5.9p1 yang berjalan di Ubuntu Precise 12.04 yang menerima koneksi dari jaringan internal dan Internet. Saya ingin meminta otentikasi kunci publik untuk koneksi dari Internet, tetapi menerima kunci publik atau otentikasi kata sandi untuk koneksi dari jaringan internal. Bisakah saya mengonfigurasi OpenSSH untuk mengimplementasikan ini?

Mgorven
sumber

Jawaban:

34

The Matchdirektif dalam /etc/ssh/sshd_configmemungkinkan Anda untuk selektif menerapkan perintah konfigurasi. Salah satu kriteria kecocokan yang tersedia adalah alamat sumber koneksi, sehingga ini dapat digunakan untuk mengimplementasikan apa yang Anda inginkan. Anda dapat menonaktifkan otentikasi kata sandi secara default, dan kemudian mengaktifkannya untuk koneksi dari rentang IP jaringan internal. (Perhatikan bahwa Anda juga ingin menonaktifkan ChallengeResponseAuthenticationuntuk mencegah kata sandi digunakan.) Contoh ini memungkinkan otentikasi kata sandi dari semua rentang IP pribadi RFC1918. Lihat halaman manual sshd_config untuk lebih jelasnya.

PasswordAuthentication no
ChallengeResponseAuthentication no

Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

Perhatikan bahwa blok Match harus ditambahkan ke akhir file, jika tidak semua yang mengikutinya akan dicocokkan sampai blok Match berikutnya. Penempatan blok Pencocokan yang buruk dapat menyebabkan ketidakmampuan untuk terhubung.

Mgorven
sumber
3
Harap dicatat: jika Anda melakukan ini dan meneruskan SSH dari beberapa mesin yang dapat diakses publik (jumphost) ke mesin dengan konfigurasi di atas (host internal), Anda masih dapat membuka diri untuk diserang karena IP sumber dari jumphost adalah alamat RFC1918 dan izinkan otentikasi kata sandi ke host internal Anda.
c4urself