Bisakah Anda memberikan beberapa kata sandi akun pengguna?

21

Saya ingin menetapkan 2 kata sandi untuk satu akun. Yang ingin saya ketahui adalah 1) apakah ini mungkin, dan 2) apa implikasi keamanan dari ini?

Alasan saya ingin melakukan ini adalah karena saya sedang sibuk dengan beberapa pengujian lokal, dan saya pikir akan lebih mudah dalam beberapa situasi tertentu. Setelah beberapa penelitian saya menemukan sesuatu yang disebut PAM , tetapi saya berjuang untuk menemukan informasi tentang cara kerja instalasi / konfigurasi.

Saya menjalankan Ubuntu 12.04.

agregat1166877
sumber
1
Saya mungkin hanya akan mengatur sudountuk memungkinkan user1 untuk menjalankan perintah sebagai user2. ( sudobukan hanya untuk menjalankan perintah sebagai root; ia dapat menjalankan perintah seperti pengguna mana pun.)
cjm

Jawaban:

16

Ya, meskipun sangat jarang, ini pasti bisa dilakukan.

Alih-alih mencoba mengimplementasikannya sendiri karena /etc/password /etc/shadowmetode otentikasi berbasis default tidak memiliki ketentuan untuk konfigurasi seperti itu, cara yang lebih sederhana adalah dengan mendelegasikan otentikasi ke back-end yang sudah mendukung banyak kata sandi untuk pengguna.

Yang terkenal adalah LDAP yang userPasswordatributnya multinilai menurut RFC4519 :

Contoh kebutuhan untuk beberapa nilai dalam atribut 'userPassword' adalah lingkungan di mana setiap bulan pengguna diharapkan menggunakan kata sandi berbeda yang dihasilkan oleh beberapa sistem otomatis. Selama periode transisi, seperti hari terakhir dan pertama periode, mungkin perlu untuk mengizinkan dua kata sandi untuk dua periode berturut-turut untuk valid dalam sistem.

Meskipun dengan RFC ini, Anda mungkin perlu mengubah konfigurasi kebijakan kata sandi pada sebagian besar implementasi server direktori agar pengaturan ini benar-benar diterima.

Di sisi Linux, tidak ada yang melarang untuk melakukannya (di sini akun bernama testuserdiberi keduanya pass1dan pass2sebagai userPasswordnilai atribut):

$ uname -a
Linux lx-vb 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ grep VERSION /etc/os-release
VERSION="13.04, Raring Ringtail"
$ grep "^passwd" /etc/nsswitch.conf 
passwd: files ldap
$ ldapsearch -LLL -h localhost -p 1389 -D "cn=directory manager" -w xxxxxxxx "uid=testuser" userPassword
dn: uid=testuser,ou=People,dc=example,dc=com
userPassword:: e1NTSEF9b2JWYXFDcjhNQmNJVXZXVHMzbE40SFlReStldC9XNFZ0NU4yRmc9PQ==
userPassword:: e1NTSEF9eDlnRGZ5b0NhKzNROTIzOTFha1NiR2VTMFJabjNKSWYyNkN3cUE9PQ==
$ grep testuser /etc/passwd
$ getent passwd testuser
testuser:*:12345:12345:ldap test user:/home/testuser:/bin/sh
$ sshpass -p pass1 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass2 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass3 ssh testuser@localhost id
Permission denied, please try again.

Berikut adalah beberapa implikasi terkait teknis dan keamanan dari jenis konfigurasi itu:

  • akun pengguna jelas akan lebih rentan terhadap serangan meskipun yang paling penting di sini adalah kualitas dan perlindungan kata sandi lebih dari jumlah mereka.
  • sebagian besar utilitas menganggap pengguna memiliki kata sandi tunggal sehingga tidak akan mengizinkan pengguna untuk memperbarui salah satu kata sandi secara individual. Perubahan kata sandi kemungkinan akan menghasilkan atribut kata sandi tunggal untuk pengguna.
  • jika tujuannya adalah untuk memungkinkan beberapa orang berbagi akun yang sama menggunakan masing-masing kata sandi mereka sendiri, tidak ada mekanisme untuk mengidentifikasi siapa yang benar-benar masuk berdasarkan kata sandi yang digunakan.
Jlliagre
sumber
1
Bisakah Anda jelaskan mengapa ini tidak memiliki implikasi keamanan? Kesan pertama saya adalah bahwa hal itu akan meningkatkan peluang akun dikompromikan, terutama jika satu kata sandi secara signifikan lebih lemah daripada yang lain.
Joseph R.
1
@ JosephephR. Anda benar. Saya baru saja memperbarui balasan saya setelah menerapkan apa yang saya sarankan dan alami dengannya.
jlliagre
Jawaban yang sangat bagus, bekerja seperti pesona sekarang. Terima kasih :)
aggregate1166877
7

Saya hanya mencoba membuat 2 entri untuk pengguna dalam /etc/shadowfile dan itu tidak berhasil. Entri yang pertama kali adalah entri kata sandi yang digunakan.

Contoh

Dibuat pengguna uji.

$ useradd -d /home/newuser newuser

Setel kata sandi ke "super123":

$ passwd newuser

Edit /etc/shadowfile secara manual dan buat entri kedua:

newuser:$6$....password #1...:15963:0:99999:7:::
newuser:$6$....password #2...:15963:0:99999:7:::

Kemudian cobalah masuk dengan akun menggunakan 2 kata sandi.

su - newuser

Entri pertama /etc/shadowadalah yang digunakan, entri di posisi kedua tidak pernah berfungsi, jika Anda membalik seperti ini:

newuser:$6$....password #2...:15963:0:99999:7:::
newuser:$6$....password #1...:15963:0:99999:7:::

Kemudian kata sandi kedua berfungsi dan yang pertama tidak.

Gunakan sudo

Pendekatan ini adalah peretasan total, saya hanya akan menggunakan sudo, itu sebagian mengapa sudoada.

Anda dapat menambahkan entri ini ke file sudoers Anda ( /etc/sudoers) yang akan memungkinkan pengguna untuk melakukan apa pun seperti Anda:

joe ALL=(yourusername) ALL
slm
sumber
Saya benar-benar lupa yang sudobisa melakukan itu .. +1
aggregate1166877
4

Jika Anda bisa melakukan ini, Anda mungkin seharusnya tidak melakukannya.

Konfigurasi PAM agak rumit dan ada satu kebenaran tentang mekanisme otentikasi: ada satu set terbatas konfigurasi yang benar tetapi satu set tak terbatas konfigurasi tidak aman. Ini membuatnya hampir pasti bahwa jika Anda mencoba mengubah sesuatu dan tidak tahu persis apa yang Anda lakukan, Anda akan mengacaukan semuanya.

Jika pilihannya antara keamanan dan "nyaman dalam beberapa situasi tertentu", pilih yang pertama.

msw
sumber
Memberi +1 untuk "keamanan atas kenyamanan" (yang saya setujui sepenuhnya), tetapi saya adalah tipe orang yang ingin menguji segalanya meskipun hanya untuk pengalaman, jadi bukan 100% jawaban yang saya cari.
aggregate1166877
2

Anda dapat menetapkan dua nama pengguna yang berbeda, masing-masing dengan kata sandi, untuk akun yang sama. Jalankan vipwuntuk mengedit /etc/passwdsecara manual, menduplikasi baris yang ada untuk akun yang Anda minati dan mengubah nama pengguna (dan jika Anda suka bidang Gecos , direktori home dan shell). Jalankan vipw -sdan duplikat baris untuk pengguna itu di /etc/shadow. Masuk di bawah nama pengguna baru dan jalankan passwduntuk mengubah kata sandi untuk nama pengguna baru. Anda sekarang memiliki dua nama pengguna yang berbeda, dengan kata sandi yang berbeda, untuk akun yang sama (ID pengguna adalah yang menentukan akun).

Ini mungkin bukan ide yang bagus. Bergantung pada apa yang Anda coba lakukan, pendekatan lain mungkin lebih tepat:

  • Buat akun lain dan bagikan file dengan melakukan dan memeriksa dari kontrol versi.
  • Buat akun lain, buat grup yang menjadi milik kedua akun pengguna, dan berikan akses tulis grup ke file yang ingin Anda bagikan.
  • Buat akun lain dan berikan akun pertama hak untuk menjalankan perintah seperti akun dengan sudo:

    user1 ALL = (user2) ALL
    
  • Buat kunci SSH untuk akun yang hanya memungkinkan menjalankan satu perintah tertentu .
Gilles 'SANGAT berhenti menjadi jahat'
sumber
maukah Anda menyalin ini ke sinihttp: //askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind