Cara membatasi jumlah percobaan kata sandi di Linux

Pembaharuan Terakhir: 20/02/2026
penulis: Isaac
  • Linux memungkinkan Anda untuk membatasi upaya login dan memblokir akun menggunakan modul PAM seperti pam_faillock dan pam_tally2, tergantung pada distribusinya.
  • SSH menambahkan perlindungan dengan MaxAuthTries, mengurangi jumlah upaya otentikasi per koneksi tanpa mengunci akun.
  • Kebijakan kata sandi dilengkapi dengan kompleksitas minimum, masa berlaku, dan kontrol percobaan ulang menggunakan pam_cracklib, pam_pwquality, dan login.defs.
  • Kombinasi yang baik dari langkah-langkah ini mengurangi serangan brute-force dan meningkatkan keamanan tanpa mengganggu pengoperasian sistem.

Mengonfigurasi batas percobaan kata sandi di Linux

Mengontrol berapa kali kata sandi dapat gagal di Linux Ini adalah salah satu langkah keamanan yang hampir selalu ditunda hingga "nanti"... sampai suatu hari Anda melihat ribuan upaya login yang gagal dalam log atau pengguna terkunci tanpa alasan yang jelas. Mengkonfigurasi batasan ini dengan benar tidak hanya melindungi dari serangan brute-force, tetapi juga membantu Anda menghindari penguncian yang tidak masuk akal atau masalah dengan layanan penting.

Di Linux, kita memiliki beberapa lapisan di mana upaya otentikasi dapat dibatasi.: modul PAM spesifik seperti pam_faillock y pam_tally2, arahan server SSH seperti MaxAuthTriesparameter dalam /etc/login.defs dan alat kebijakan kata sandi seperti pam_cracklib o pam_pwqualityMemahami bagaimana semuanya saling terkait adalah kunci untuk membangun kebijakan yang koheren dan menghindari kejutan.

Memblokir akun karena upaya login yang gagal di Linux: sebuah tinjauan umum.

Ide dasarnya sederhana: batasi upaya yang gagal dan blokir akun tersebut untuk sementara atau permanen. ketika ambang batas tersebut terlampaui. Praktik ini menjadi lebih rumit karena melibatkan beberapa komponen: PAM, SSH, konfigurasi sistem, dan, tergantung pada distribusinya, berbagai modul.

Pada distribusi tipe Red Hat (RHEL, CentOS, Rocky, Alma…) Pendekatan modern adalah dengan menggunakan modul. pam_faillockyang mencatat kesalahan otentikasi dan menerapkan penguncian otomatis dengan waktu pembukaan kunci yang dapat dikonfigurasi.

Pada lingkungan berbasis Debian dan Ubuntu secara tradisional digunakan pam_tally2 untuk menghitung upaya login yang gagal dan menolak login di atas ambang batas tertentu. Meskipun versi terbaru sedang beralih ke arah tersebut. gagalDi banyak server produksi, pam_tally2 masih menjadi yang paling dominan.

Selain PAM, daemon SSH memiliki arahan MaxAuthTries tersendiri.Ini membatasi jumlah upaya otentikasi yang diizinkan per koneksi. Ini tidak memblokir akun secara langsung, tetapi mengurangi kemampuan penyerang untuk menguji kredensial pada satu saluran SSH.

Terakhir, file-file seperti /etc/login.defs dan modul kualitas kata sandi. Mereka mengontrol aspek-aspek seperti jumlah percobaan ulang saat mengubah kata sandi, kompleksitas minimum, masa berlaku atau panjang kata sandi, dan melengkapi "paket" keamanan akun.

Keamanan dan penguncian akun di Linux

Penguncian akun karena upaya login yang gagal pada Red Hat, CentOS dan turunannya (pam_faillock)

Dalam ekosistem Red Hat, pemblokiran kegagalan otentikasi ditangani dengan modul pam_faillock.Modul ini terintegrasi ke dalam tumpukan PAM secara terpusat. Biasanya dikonfigurasi dalam file-file berikut: /etc/pam.d/system-auth dan, dalam beberapa versi, juga dalam /etc/pam.d/otentikasi-kata-sandi.

Untuk mengaktifkan kunci setelah beberapa kali percobaan gagal. Baris-baris seperti ini ditambahkan ke blok-blok auth y rekening dari file PAM tersebut (detail pastinya mungkin berbeda tergantung versinya, tetapi idenya adalah sebagai berikut):

auth required pam_faillock.so preauth silent audit deny=2 unlock_time=120
auth pam_faillock.so authfail audit deny=2 unlock_time=120
account required pam_faillock.so

Parameter-parameter ini mendefinisikan perilaku dasar dari blok tersebut.:

  • Audit: mencatat upaya yang gagal dan kerusakan dalam log sistem, biasanya di / var / log / secure atau jurnal tersebut.
  • tolak=2: memblokir akun setelah 2 percobaan gagal.
  • waktu_buka_buka=120Akun akan terbuka kuncinya secara otomatis setelah 120 detik (2 menit).
  • diam: menyembunyikan dari pengguna bahwa akun terkunci, sehingga menyulitkan penyerang untuk mencoba kata sandi secara sembarangan.

Poin penting: secara default, root biasanya dikecualikan dari blok ini.Jika Anda ingin batasan tersebut juga berlaku untuk akun administrator, Anda perlu menambahkan parameter tersebut. bahkan_menolak_akar sejalan dengan auth, dengan asumsi risiko bahwa kesalahan konfigurasi dapat membuat Anda kehilangan akses jika Anda lupa kata sandi atau gagal mengakses SSH.

Ketika sebuah akun terkunci karena pam_faillock, pengguna akan menerima pesan khusus saat mencoba melakukan autentikasi. jika kita tidak menggunakan opsi tersebut diamIni membantu tim dukungan untuk segera mengidentifikasi bahwa itu bukan perubahan kata sandi, melainkan penguncian sementara karena terlalu banyak upaya yang salah.

Untuk meninjau upaya yang gagal dan status penguncian pengguna. alat tersebut digunakan gagal dalam mode administrator:

  ToxicPanda: Trojan perbankan yang mengancam keamanan perangkat Android

# faillock --user lionel

Perintah tersebut menunjukkan berapa banyak upaya yang telah terkumpul dan dari IP atau TTY manaMempermudah penyelidikan upaya mencurigakan. Dan jika Anda perlu melepaskan pengguna tanpa menunggu waktu_bukaCukup atur ulang penghitung Anda:

# faillock --user lionel --reset

Terdapat juga file konfigurasi /etc/security/faillock.confdi mana parameter global dapat didefinisikan tanpa menyentuh langsung file PAM, misalnya:

deny = 3
fail_interval = 600
unlock_time = 900

Dalam file ini Anda dapat menyesuaikan jumlah percobaan, jendela perhitungan, dan waktu penguncian. dengan cara yang lebih teratur, memusatkan kebijakan tanpa terlalu mengaburkan garis-garis PAM.

Penguncian akun di Debian dan Ubuntu dengan pam_tally2

Batasan jumlah percobaan login di Debian dan Ubuntu

Pada sistem Debian dan Ubuntu klasik, modul yang bertanggung jawab untuk menghitung upaya yang gagal adalah pam_tally2.Modul ini memelihara file penghitung (secara default). /var/log/tallylog) di mana ia menyimpan kegagalan otentikasi berdasarkan pengguna.

Untuk mengaktifkan kebijakan pemblokiran berdasarkan jumlah kegagalan. berkas tersebut biasanya diedit /etc/pam.d/common-auth dan tambahkan baris seperti ini:

auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 audit even_deny_root root_unlock_time=600

Kombinasi opsi tersebut memungkinkan penyesuaian perilaku yang jauh lebih detail.:

  • onerr=gagalJika terjadi kesalahan pada modul (misalnya, masalah dengan tallylog), akses akan ditolak karena alasan keamanan.
  • tolak=3: memblokir akun setelah 3 percobaan gagal.
  • waktu_buka_buka=120Akun akan terbuka kuncinya secara otomatis setelah 120 detik.
  • Audit: mencatat peristiwa di /var/log/auth.log.
  • bahkan_menolak_akar: mencakup pengguna akar dalam kebijakan pemblokiran.
  • waktu_buka_kunci_root=600: menetapkan waktu penguncian yang berbeda untuk root (misalnya 600 detik) meskipun waktu_buka Jadilah orang lain.

Saat akun terkunci, sistem akan menampilkan pesan tertentu. Menunjukkan bahwa jumlah percobaan maksimum telah terlampaui; dengan demikian pengguna tidak melanjutkan upaya dan administrator mengetahui bahwa insiden tersebut bukan sekadar "Saya lupa kata sandi".

Untuk memeriksa penghitung percobaan untuk pengguna tertentu program tersebut digunakan pam_tally2 (tanpa .so) dengan parameter -u:

# pam_tally2 -u lionel

Perintah tersebut menampilkan jumlah kegagalan, apakah akun terkunci, dan sejak kapan.Selain itu, dari alat yang sama kita dapat mengatur ulang penghitung dengan menambahkan opsi tersebut. -mengatur ulangyang membebaskan pengguna tanpa menunggu waktu penguncian berlalu.

Peristiwa yang terkait dengan pam_tally2 biasanya dicatat dalam /var/log/auth.logsehingga mudah untuk mengintegrasikannya ke dalam sistem pemantauan atau SIEM untuk memicu peringatan ketika pola anomali dari upaya yang gagal terdeteksi.

Batasi upaya SSH: MaxAuthTries dan tindakan lainnya

Layanan SSH adalah salah satu gerbang utama menuju server Linux.Oleh karena itu, disarankan untuk memasang beberapa kunci. Salah satu yang paling sederhana adalah kunci pengaman. MaxAuthTries dari daemon SSH itu sendiri, yang dirancang khusus untuk membatasi upaya gagal pada koneksi yang sama.

MaxAuthTries menentukan berapa banyak upaya autentikasi yang dapat dilakukan sebelum server menutup sesi SSH.Hal itu tidak memblokir akun, tetapi memutus koneksi dan memaksa Anda untuk membukanya kembali, yang sangat memperlambat serangan brute-force.

Untuk mengkonfigurasinya, Anda perlu mengedit file konfigurasi SSH. (biasanya / etc / ssh / sshd_config) dan sesuaikan arahan tersebut:

MaxAuthTries 3

Pada banyak sistem, nilai default biasanya adalah 6, yang cukup besar untuk server yang terhubung ke internet.Menguranginya menjadi 3 atau bahkan 2 berarti setiap koneksi hanya mengizinkan sedikit upaya sebelum dipaksa untuk ditutup.

Penting untuk dipahami bahwa MaxAuthTries tidak menggantikan pam_faillock atau pam_tally2.: sistem ini hanya menetapkan batasan per koneksi, sedangkan PAM mempertahankan kontrol global per pengguna dan dapat memblokir akun untuk jangka waktu tertentu.

Selain memodifikasi MaxAuthTries, ada rekomendasi pengerasan SSH dasar lainnya.:

  • Ubah port default (22) ke port yang kurang mencolok.Mengurangi kebisingan dari bot yang memindai internet.
  • Gunakan autentikasi kunci publik. alih-alih menggunakan kata sandi, atau setidaknya mewajibkan kata sandi untuk pengguna administratif.
  • Menggabungkan SSH dengan firewall dan daftar putihhanya mengizinkan akses dari IP atau rentang IP tepercaya.
  • Nonaktifkan login root langsung melalui SSH dan memaksa penggunaan sudo dari akun pribadi.

Jika Anda menggunakan Ubuntu dan ingin mengurangi jumlah permintaan kata sandi saat masuk ke antarmuka grafis,Mengubah nilai MaxAuthTries di SSH tidak akan menyelesaikan masalah: itu adalah masalah yang sepenuhnya terpisah. Dalam hal ini, tumpukan PAM yang digunakan oleh pengelola login (LightDM, GDM, dll.) adalah yang penting, jadi Anda harus memeriksa file konfigurasinya. /etc/pam.d, tidak ada sshd_config.

  Cara mengaktifkan Microsoft Defender Credential Guard dan Exploit Guard

Kebijakan kata sandi: kompleksitas, masa berlaku, dan jumlah percobaan ulang.

Membatasi upaya memasukkan kata sandi yang gagal memang bagus, tetapi jika kata sandinya adalah "123456" atau "qwerty", Anda tidak akan bisa berbuat banyak.Bagian penting dari pengerasan keamanan di Linux adalah menetapkan kebijakan kata sandi yang benar-benar mewajibkan penggunaan kata sandi yang kuat dan, jika perlu, pembaruan berkala.

Tujuan dari kebijakan yang baik adalah untuk mencegah pengguna memilih kata sandi yang mudah ditebak atau digunakan kembali.Hal ini memberlakukan kombinasi minimum dari panjang, kompleksitas, dan periodisitas yang wajar. Ini berlaku untuk pengguna biasa maupun akun layanan istimewa atau kritis.

Poin-poin penting dari kebijakan kata sandi yang baik di Linux mereka biasanya:

  • Buat kata sandi yang kuat: panjang minimum (setidaknya 12 karakter), campuran huruf besar, huruf kecil, angka, dan simbol, serta hindari kata-kata dari kamus.
  • Hindari menggunakan kata sandi yang sama berulang kali.: mencegah pengguna kembali menggunakan kata sandi yang sebelumnya digunakan.
  • Tetapkan tanggal kedaluwarsa yang wajar.Lakukan perubahan secara berkala setiap beberapa hari, tanpa terlalu terobsesi dengan rotasi yang terlalu sering.
  • Batasi jumlah percobaan saat mengubah kata sandi Anda.: mencegah pengguna menghabiskan setengah jam mencoba kata sandi yang lemah sampai salah satunya berhasil.
  • Lengkapi dengan otentikasi multi-faktor jika memungkinkankhususnya pada titik akses eksternal atau panel administrasi.

Dalam lingkungan perusahaan, kebijakan-kebijakan ini sangat penting. Untuk mematuhi peraturan, audit, dan standar keamanan. Pada server pribadi, ini mungkin tampak berlebihan, tetapi ketika Anda menghosting layanan yang dapat diakses dari internet, perbedaan antara kebijakan keamanan yang kuat dan tidak memiliki kebijakan keamanan sama sekali sangat besar.

Konfigurasikan kebijakan kata sandi dengan pam_cracklib dan pam_pwquality

Modul PAM yang khusus menangani kualitas kata sandi memungkinkan kontrol terperinci atas karakteristik kata sandi.Secara historis, ini telah digunakan pam_cracklibNamun hal itu semakin umum terjadi. pam_pwquality, yang menambahkan peningkatan dan opsi tambahan.

Di Debian dan Ubuntu, langkah pertama adalah menginstal pustaka yang sesuai. jika belum ada:

sudo apt install libpam-cracklib libpam-pwquality libpwquality-tools

pam_cracklib biasanya dikonfigurasi dari /etc/pam.d/common-passwordBiasanya akan ada baris seperti ini:

password requisite pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-3 lcredit=-3 dcredit=-3 ocredit=-3

Setiap parameter mengontrol satu aspek dari kata sandi yang dibutuhkan.:

  • mencoba kembali: jumlah percobaan yang diizinkan pengguna untuk memasukkan kata sandi yang valid sebelum perintah gagal.
  • minlen: panjang kata sandi minimum.
  • difok: jumlah minimum karakter berbeda dibandingkan dengan kata sandi sebelumnya.
  • kredit: dengan nilai negatif, dibutuhkan setidaknya jumlah tersebut huruf kapital.
  • kredit: dengan nilai negatif, dibutuhkan minimal huruf kecil.
  • kredit: dengan nilai negatif membutuhkan minimal digit.
  • kredit: dengan nilai negatif memberlakukan nilai minimum simbol atau karakter khusus lainnya.

Kredit positif berfungsi sebagai sistem "bonus"Kata sandi dapat sedikit lebih pendek jika diimbangi dengan kompleksitas yang lebih besar pada kelas karakter lainnya. Sebaliknya, bentuk negatif menunjukkan persyaratan wajib: "setidaknya X huruf kapital," dan sebagainya.

pam_pwquality menambahkan lebih banyak opsi lagi, yang dikonfigurasi di /etc/security/pwquality.confdi mana parameter-parameter seperti berikut ini dapat disesuaikan:

  • difok: jumlah karakter berbeda dibandingkan dengan kata sandi sebelumnya.
  • minlen: panjang minimum.
  • dcredit, ucredit, lcredit, ocredit: kredit per jenis karakter, sama seperti di cracklib.
  • kelas kecil: jumlah minimum kelas huruf yang berbeda (huruf kecil, huruf besar, angka, simbol) yang dibutuhkan.
  • ulangi maksimal: jumlah maksimum karakter yang diulang secara berurutan.
  • maxclassrepeat: jumlah maksimum karakter berurutan dari kelas yang sama.
  • periksa Gecos: menolak kata sandi yang berisi data dari kolom GECOS pengguna (nama lengkap, dll.).
  • jalur diktat: rute ke kamus untuk memblokir kata-kata yang terlalu jelas.
  • kata-kata buruk: daftar spesifik kata-kata terlarang.

Modul ini bahkan dapat mendeteksi palindrom, perubahan kecil pada huruf besar/kecil, atau kata sandi yang hampir identik dengan kata sandi sebelumnya.menghindari jebakan umum seperti "Saya hanya menambahkan angka 1 di akhir dan selesai".

Salah satu alat yang sangat berguna yang menyertai pwquality adalah pwscore.yang memungkinkan Anda mengukur kualitas kata sandi berdasarkan konfigurasi saat ini:

# echo 123 | pwscore
Falló la comprobación de calidad de la contraseña:
La contraseña tiene menos de 8 caracteres

Dengan kata sandi yang sangat kompleks, pwscore memberikan skor tinggi.Biasanya hingga 100, yang berfungsi untuk memvalidasi bahwa kebijakan yang telah Anda tetapkan tidak terlalu longgar atau tidak mungkin untuk dipatuhi.

Kelola masa berlaku dan usia kata sandi: ubah, /etc/shadow dan login.defs

Selain kompleksitas, hal umum yang dilakukan adalah memantau berapa lama kata sandi dapat bertahan sebelum perlu diubah.Di Linux, informasi ini disimpan dalam file. / etc / shadow dan mudah dikelola dengan perintah tersebut. mengubah dan arahan dari /etc/login.defs.

  Cara melindungi orang lanjut usia dari risiko internet

File /etc/shadow menyimpan, untuk setiap pengguna, kata sandi terenkripsi dan data masa berlaku.Kolom kata sandi disusun sebagai berikut: $id$salt$hashDimana id menunjukkan algoritma yang digunakan (misalnya, $ 6 $ (untuk SHA-512). Kolom lain menunjukkan perubahan kata sandi terakhir, hari berlaku, hari peringatan sebelum kedaluwarsa, hari tidak aktif setelah kedaluwarsa, dll.

Perintah ubah memungkinkan Anda untuk melihat dan memodifikasi nilai-nilai ini pada tingkat pengguna individual.Beberapa opsi utama:

  • -l: menampilkan informasi masa berlaku akun.
  • -m: jumlah hari minimum antara perubahan kata sandi.
  • -M: jumlah maksimum hari kata sandi tersebut berlaku.
  • -W: jangka waktu pemberitahuan sebelum berakhir.
  • -ETanggal kedaluwarsa akun.
  • -I: jumlah hari tidak aktif setelah masa berlaku habis sebelum akun dinonaktifkan.

Contoh tipikal dari sebuah kueri adalah::

# chage -l pepe
Last password change : Apr 18, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 5

Untuk menentukan nilai default bagi pengguna baru, gunakan /etc/login.defs, di mana arahan global ditetapkan seperti:

  • LULUS_MAX_DAYS: jumlah maksimum hari kata sandi dapat digunakan (misalnya, 90).
  • LULUS_MIN_HARI: jumlah hari minimum antara perubahan kata sandi.
  • PASS_WARN_AGE: pemberitahuan beberapa hari sebelum masa berlaku berakhir.
  • PASS_MIN_LEN dan PASS_MAX_LEN: panjang minimum dan maksimum, meskipun dalam praktiknya hal ini biasanya didelegasikan ke PAM.
  • PERCOBAAN_PERUBAHAN_KATA_SANDI: jumlah maksimum upaya perubahan kata sandi jika kunci ditolak karena lemah.
  • ENCRYPT_METHOD: algoritma hash yang digunakan (misalnya, SHA512).
  • LOGIN_RETRIES: Upaya login ulang diperbolehkan sebelum dibatalkan.
  • WAKTU LOGIN HABIS: waktu maksimum dalam detik untuk memasukkan kredensial.

Detail penting: arahan login.defs memengaruhi pengguna yang dibuat setelah arahan tersebut dimodifikasi.Saldo rekening yang sudah ada tetap sama dan harus disesuaikan accordingly. mengubah jika kita ingin mereka mematuhi kebijakan baru tersebut.

Integrasikan batasan percobaan dengan kebijakan dan praktik terbaik perusahaan.

Di lingkungan profesional, menetapkan beberapa parameter dan berharap semuanya berjalan lancar saja tidak cukup.Kebijakan kata sandi dan upaya login yang gagal harus diselaraskan dengan realitas organisasi dan dengan platform identitas seperti... gantungan kunci dan dengan dampak berupa pemblokiran akun layanan atau pengguna utama.

Sebagai contoh, memblokir secara agresif akun layanan yang menjalankan proses penting. Seluruh sistem dapat menjadi tidak berfungsi jika sebuah skrip macet dalam sebuah perulangan karena mencoba kredensial yang salah. Dalam kasus ini, perlu dinilai apakah akun tersebut harus dikecualikan dari pemblokiran atau menerapkan mekanisme perlindungan alternatif.

Penting juga untuk mempertimbangkan rekomendasi terkini dari organisasi seperti NIST.Sistem ini memprioritaskan panjang dan kompleksitas kata sandi daripada rotasi kata sandi paksa yang terlalu sering. Memaksa perubahan setiap 90 hari umumnya wajar, tetapi melakukannya setiap 30 hari dapat menyebabkan kata sandi yang mudah ditebak seperti "Password01", "Password02", dan seterusnya.

Pelatihan pengguna adalah aspek yang sering diabaikan.Seberapa pun bagusnya konfigurasi PAM Anda, jika orang terus menulis kata sandi mereka di catatan tempel yang ditempelkan di monitor mereka, semua upaya Anda akan sia-sia. Menjelaskan alasan di balik kebijakan tersebut membantu orang untuk lebih mudah mematuhinya.

Terakhir, kombinasi dari semua langkah ini dengan otentikasi dua faktor. Jika memungkinkan (VPN, panel, SSH dengan OTP, dll.), ini meningkatkan keamanan tanpa terlalu bergantung pada kata sandi yang sempurna.

Dengan menggabungkan batasan jumlah percobaan kata sandi, penguncian sementara, dan kebijakan kompleksitas dan masa berlaku yang wajar.Dengan memperkuat akses SSH, tercipta ekosistem yang jauh lebih tangguh terhadap serangan brute-force dan kesalahan manusia, tanpa mengubah kehidupan sehari-hari pengguna menjadi mimpi buruk yang mustahil.

Microsoft Authenticator untuk login tanpa kata sandi.
Artikel terkait:
Microsoft Authenticator untuk login tanpa kata sandi.