banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Phòng chống dictionary attack trên Linux như thế nào?  XML
  [Article]   Phòng chống dictionary attack trên Linux như thế nào? 12/12/2010 07:32:25 (+0700) | #1 | 226898
[Avatar]
manthang
Journalist

[Minus]    0    [Plus]
Joined: 30/06/2008 16:36:58
Messages: 140
Offline
[Profile] [PM] [WWW]
Giới thiệu




Theo định nghĩa từ Wikipedia http://en.wikipedia.org/wiki/Dictionary_attack thì:

Dictionary attack là một kỹ thuật (technique) dùng để hạ gục cơ chế mã hóa (cipher) hoặc xác thực (authentication) bằng cách tìm ra khóa giải mã (decryption key) hoặc chuỗi mật khẩu (passphrase). Việc dò tìm này dựa trên các dictionary (hoặc word list) – là một kho cực kỳ đồ sộ gồm hàng ngàn hoặc thậm chí hàng triệu các chuỗi ký tự thuộc nhiều loại như:

- Từ vững trong các ngôn ngữ khác nhau
- Tên người, tên địa danh
- Các mật khẩu phổ dụng như: 123456, iloveu, admin…

Các chương trình bẻ khóa mật khẩu (password cracking) thường được trang bị các bộ dictionary nhằm khai thác khuynh hướng sử dụng các mật khẩu đơn giản, dễ đoán (weak password) của người dùng.

Tuy nhiên, bạn có thể sử dụng các công cụ dictionary attack này để kiểm tra độ an toàn của mật khẩu. Bây giờ chúng ta quay trở lại vấn đề chính trong bài:

Phòng chống dictionary attack trên Linux như thế nào?

Đặt mật khẩu thật phức tạp, khó đoán (strong password) xem ra là cách hữu hiệu nhất để ngăn ngừa khả năng mật khẩu bị dictionary attack tìm ra. Vậy thì thế nào mới gọi là strong password đây? Ví dụ, xem xét một mật khẩu như sau:

#!T()i2@C|-|In4t01; 


Qua đây, có thể thấy một strong password phải thõa mãn các yêu cầu sau:

- Mật khẩu không nằm trong các bộ từ điển có sẵn, không đặt theo tên người, địa danh, thú cưng hoặc thông tin cá nhân như: ngày sinh, số CMND, biệt danh,…

- Chiều dài của mật khẩu đủ lớn, ít nhất là 8 ký tự trở lên và không được có nhiều ký tự được lặp lại nhiều lần trong mật khẩu.

- Bao gồm cả chữ chữ cái in hoa, in thường, chữ số, các ký tự đặc biệt như: ~, !, @, -, +, :, }, |, >, ?,…

Nhưng, đa số người dùng đều không ưa những mật khẩu dài loằng ngoằng và khó nhớ. Họ không biết hoặc thậm chí phớt lờ những chỉ dẫn để tạo strong password như trên. Vậy làm sao để ép buộc họ tuân thủ chặt chẽ chính sách mật khẩu do bạn đề ra khi họ có ý định thay đổi mật khẩu?

Trong Linux, câu trả lời đó đến từ pam_cracklib.so - một PAM module cho phép bạn thiết lập chính sách mật khẩu đủ mạnh để hạn chế dictionary attack. Nó sẽ kiểm tra mật khẩu được nhập vào để đảm bảo rằng người dùng sẽ không được phép đặt lại mật khẩu mới cho tới khi mật khẩu đó thỏa mãn các yêu cầu đặt ra.

Lưu ý: pam_cracklib.so đã được cài sẵn trên Redhat/Fedora/CentOS. Nếu hệ thống Debian/Ubuntu chưa có module này thì gõ lệnh sau để cài đặt nó.

# apt-get install libpam-cracklib 


Dưới đây là cách tinh chỉnh cho module pam_cracklib.so.

- Gõ lệnh sau để mở file cấu hình cho PAM
# vi /etc/pam.d/system-auth

- Tìm dòng bắt đầu bằng password required (hoặc requisite) pam_cracklib.so và sửa lại như sau:
password required pam_cracklib.so retry=2 minlen=12 difok=6 





Lưu và đóng file này lại. Ý nghĩa các tùy chọn là:

retry = 2: nhắc nhở người dùng nhiều nhất 2 lần trước khi trả về thông báo lỗi.

Ví dụ: Sử dụng lệnh passwd để thay đổi mật khẩu.

Nếu ở lần 1 bạn gõ vào mật khẩu mới không thỏa mãn 1 trong các yêu cầu của chính sách mật khẩu, thì bạn sẽ nhận được nhắc nhở và có thêm lần 2 để gõ lại mật khẩu khác.

Nếu ở lần 2 này mật khẩu bạn gõ vào cũng không thỏa mãn yêu cầu thì bạn lại nhận được nhắc nhở nhưng không có thêm lần 3 để bạn gõ tiếp mật khẩu khác và bạn nhận được thông báo như sau:
passwd: Have exhausted maximum number of retries for service 





minlen = 12: Chiều dài tối thiểu của mật khẩu là 12 ký tự.

difok = 6: Số ký tự trong mật khẩu mới có thể trùng với mật khẩu cũ. Ví dụ, người dùng sẽ thấy thông báo lỗi sau

BAD PASSWORD: is too similar to the old one

nếu mật khẩu mới có 6 ký tự (hoặc hơn) trùng với mật khẩu cũ trước đó.

Ngoài ra, bạn có thể áp dụng thêm các tùy chọn sau để tăng độ khó cho mật khẩu:

dcredit=N : Số lượng chữ số.
ucredit=N : Số lượng chữ cái in hoa.
lcredit=N : Số lượng chữ cái thường.
ocredit=N : Số lượng các ký tự đặc biệt khác.

Lưu ý cuối cùng là những tùy chọn rằng buộc này chỉ áp dụng đối với những tài khoản người dùng thông thường. Người dùng root không hề bị ảnh hưởng bởi các yêu cầu về mật khẩu này. Nhưng đối với tài khoản root, bạn lại càng phải đặt mật khẩu phức tạp hơn cho nó…

Hết.
----
keep -security- in -mind-
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|