Bagaimana cara menggunakan ssh server dengan PAM tetapi tidak mengizinkan kata sandi auth?

13

Banyak tutorial memberitahu Anda untuk mengkonfigurasi server ssh Anda seperti ini:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no 

tetapi dengan pengaturan ini Anda tidak dapat menggunakan PAM, karena saya berencana untuk menggunakan 2 Factor Auth dengan Google Authenticator (OTP Onetime Password) saya perlu PAM.

Jadi bagaimana mengkonfigurasi deamon debian jessie ssh baru, jika saya ingin mencegah login dengan kata sandi normal tetapi masih memungkinkan untuk menggunakan PAM.

mungkin pertanyaan yang tepat adalah bagaimana mengkonfigurasi pam untuk melarang kata sandi?

Detail tentang Otentikasi PAM

Menonaktifkan otentikasi kata sandi berbasis PAM agak tidak intuitif. Ini diperlukan pada hampir semua distribusi GNU / Linux (dengan pengecualian Slackware), bersama dengan FreeBSD. Jika Anda tidak hati-hati, Anda dapat mengatur PasswordAuthentication ke 'tidak' dan tetap masuk hanya dengan kata sandi melalui otentikasi PAM. Ternyata Anda perlu mengatur 'ChallengeResponseAuthentication' ke 'tidak' untuk benar-benar menonaktifkan otentikasi PAM. Halaman manual FreeBSD memiliki ini untuk mengatakan, yang dapat membantu untuk sedikit memperjelas situasi:

Perhatikan bahwa jika ChallengeResponseAuthentication adalah 'ya', dan kebijakan otentikasi PAM untuk sshd termasuk pam_unix (8), otentikasi kata sandi akan diizinkan melalui mekanisme respons-tantangan terlepas dari nilai PasswordAuthentication.

http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html

c33s
sumber

Jawaban:

23

mungkin pertanyaan yang tepat adalah bagaimana mengkonfigurasi pam untuk melarang kata sandi?

Benar. Anda telah menemukan fakta bahwa pengaturan pada UsePAM noumumnya saran yang buruk. Tidak hanya mencegah segala bentuk otentikasi berbasis PAM, tetapi juga menonaktifkan accountdan sessionmodul. Kontrol akses dan konfigurasi sesi adalah hal yang baik.

Pertama, mari kita buat daftar persyaratan:

  • OTP via pam_google_authenticator.so. Ini membutuhkan UsePAM yesdan ChallengeResponseAuthentication yes. Lagi pula, Anda meminta kredensial!
  • Tidak ada bentuk lain dari otentikasi kata sandi melalui PAM. Ini berarti menonaktifkan authmodul apa pun yang mungkin memungkinkan kata sandi dikirimkan melalui keyboard-interactivelogin. (yang harus kami biarkan diaktifkan untuk OTP)
  • Otentikasi berbasis kunci. Kami perlu meminta publickeyotentikasi, dan mungkin gssapi-with-micjika Anda mengonfigurasi Kerberos.

Biasanya, otentikasi dengan kunci sama sekali melewatkan otentikasi berbasis PAM. Ini akan menghentikan kami di trek kami dengan versi openssh yang lebih lama, tetapi Debian 8 (jessie) mendukung AuthenticationMethodsarahan tersebut. Ini memungkinkan kami untuk memerlukan beberapa metode otentikasi, tetapi hanya berfungsi dengan klien yang mengimplementasikan SSHv2.


sshd config

Di bawah ini adalah garis yang saya sarankan untuk /etc/ssh/sshd_config. Pastikan Anda memiliki cara untuk mengakses sistem ini tanpa sshdseandainya Anda merusak sesuatu!

# Require local root only
PermitRootLogin no

# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes

# Not needed for OTP logins
PasswordAuthentication no

# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no


# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive

# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive

Jangan lupa memuat ulang sshdbegitu perubahan ini dilakukan.

Konfigurasi PAM

Kami masih harus mengkonfigurasi PAM. Dengan asumsi instalasi Debian 8 bersih (per pertanyaan Anda):

  • Komentar @include common-authdari /etc/pam.d/sshd.
  • Tinjau /etc/pam.d/sshddan konfirmasikan bahwa tidak ada garis yang dimulai dengan auth. Seharusnya tidak ada jika ini adalah instalasi yang bersih, tetapi yang terbaik adalah aman.
  • Tambahkan authentri untuk pam_google_authenticator.so.

Ingat bahwa kata sandi lokal masih berfungsi.

Kami tidak membuat perubahan apa pun yang akan memengaruhi login melalui konsol lokal, atau mencegah pengguna menggunakan kata sandi untuk meningkatkan hak istimewa mereka melalui sudo.Ini di luar ruang lingkup pertanyaan. Jika Anda memutuskan untuk mengambil tindakan lebih jauh, ingatlah bahwa root harus selalu diizinkan untuk masuk secara lokal melalui kata sandi. Anda berisiko mengunci diri dari sistem secara tidak sengaja.

Andrew B
sumber
belum diuji tetapi terlihat logis dan dengan 5 upvotes saya pikir saya bisa menerimanya.
tahun33
Saya telah menguji diri saya sendiri. jika Anda ingin sepenuhnya menonaktifkan kata sandi, Anda juga harus menetapkan ChallengeResponseAuthentication no. lihat blog.tankywoo.com/linux/2013/09/14/…
anonim
@anonymous Lihat pertanyaan OP dan peluru pertama. Penonaktifan ChallengeResponseAuthenticationmerusak metode otentikasi keyboard-interaktif, yang diperlukan untuk modul otentikasi PAM yang menangani OTP. (diinginkan oleh OP) Menonaktifkan CRA hanya aman untuk dilakukan jika Anda benar-benar memiliki modul PAM nol dalam authtumpukan yang perlu diaktifkan. Jika PasswordAuthenticationdan GSSAPIAuthenticationdinonaktifkan, kata sandi tidak akan diterima kecuali PAM memiliki modul auth aktif yang memintanya.
Andrew B
(Yang mengatakan, itu masih tautan yang bagus)
Andrew B
0

untuk menolak permintaan kata sandi

komentar baris ini

#auth       substack     password-auth

di /etc/pam.d/sshd

dan pastikan untuk tidak memiliki nullok pada akhir baris ini kecuali itu akan baik untuk otentikasi melalui ssh tanpa menggunakan OTP

auth required pam_google_authenticator.so
JOduMonT
sumber