You are on page 1of 5

An toàn mật khẩu trên hệ thống mạng UNIX và LINUX

Tác
Jennifer Kolde
giả:
Bản
http://www.quantrimang.com/inc_contents.asp?Cat_ID=5&news_id=1758
gốc:
Bài viết này mô tả những cách thức kiểm tra tính an toàn mật khẩu trên các hệ thống UNIX,
LINUX, và các hệ thống *.nix nói chung. Như các hệ thống trên Window, các mật khẩu *.nix
được bảo vệ ngay tại hệ thống và trên đường truyền.
Bảo vệ mật khẩu của bạn ngay tại hệ thống
Mật khẩu trên hệ thống *nix được lưu trong file /etc/passwd, một file chứa các tên người sử
dụng, UIDs, GIDs, và các mật khẩu được mã hoá cho người sử dụng trên hệ thống. Ngoài ra, file
này còn lưu các thông tin khác, như tên đầy đủ của người sử dụng, đường dẫn thư mục, hay hệ
thống shell.
Bất kỳ ai truy cập hệ thống cũng có thể hiển thị nội dung của file /etc/passwd. Điều này tạo ra
khả năng phá hoại với các user và những kẻ tấn công có thể tạo ra các lỗ hổng bảo mật để nhận
được một bản sao của file mật khẩu này.
Các hệ thống *.nix thường sử dụng thuật toán mã hoá (như thuật toán DES) để tạo ra các bảng
băm mật khẩu. DES sử dụng thuật toán mã hoá 56 bit. Với thuật toán này, DES đã được sử dụng
như thuật toán mã hoá phổ biến trước đây. Tuy nhiên, theo thời gian, khi phần cứng phát triển và
giá thành thiết bị rẻ đi, thuật toán này đã trở nên dễ dàng giải mã và tạo lại mã. Vì vậy, với các
hệ thống tốc độ nhanh sẽ việc crack các mật khẩu không phải quá khó.
Ví dụ: l0phtCrack có thể sử dụng để crack các mật khẩu của Windows, chương trình crack của
Alec Mufet có thể sử dụng để crack mật khẩu hệ thống *.nix. Việc phá mã đã được phát triển
theo thời gian, được viết từ năm 1991 và hiện tại nó đã được phát triển đến phiên bản 5.0a.
Việc phá mã có thể được cấu hình để tương thích với bất kỳ môi trường nào; các file cấu hình có
thể được sửa đổi hỗ trợ cho các định dạng file mật khẩu khác nhau, loại thuật toán mã hoá khác
nhau, ... Việc phá mã sử dụng danh sách từ điển như nền tảng cho việc phá mã; các file từ điển
này cũng có thể được cấu hình lại một cách dễ dàng. Nói chung, để liệt kê danh sách cấu trúc thư
mục cho việc thử chương trình, bạn cũng có thể cấu hình tập từ điển hay các luật tạo mã như
một phần trong việc phá mã. Các luật này có thể bao gồm các phương thức như gắn trước hay
sau các ký tự vào các từ chuẩn, gấp đôi hay đảo ngược các từ, thay đổi các ký tự từ thường sang
hoa ..., hay thay thế một từ này bằng một từ khác.
Vậy làm cách nào để bảo vệ các mật khẩu trên hệ thống *.nix trong khi file /etc/passwd là file có
thể đọc và sự phát triển ồ ạt của các công cụ crack mật khẩu.
Tăng tính an toàn của mật khẩu
Một vài phương thức cải thiện mật khẩu đã được thực hiện cho phương thức an toàn mật khẩu
trong hệ thống *.nix. Đầu tiên được giới thiệu là loại mật khẩu bóng (shadow password). Việc
chứa các bảng băm mật khẩu trong file đọc được /etc/passwd không an toàn, vì vậy các bảng
băm này được đưa vào trong một file riêng rẽ, file /etc/shadow. File này chỉ có thể đọc bởi quyền
root và vì vậy có khả năng bảo mật tốt hơn. Hai file này được sử dụng cùng nhau để cung cấp
việc chứng thực cho user.

Các file mật khẩu bóng đã trở nên thông dụng và được sử dụng mặc định cho rất nhiều hệ thống
*.nix như Sun Solaris. Tuy nhiên, chúng không phải là mặc định của toàn bộ các hệ thống.
Chẳng hạn với Red Hat Linux, việc sử dụng mật khẩu bóng được lựa chọn trong các bước cài đặt
hệ thống. Các mật khẩu bóng nên được sử dụng ở bất cứ đâu trong hệ thống.
Thứ hai, một số phiên bản của *.nix hiện tại cung cấp thuật toán mã hoá tốt hơn, (có thể sử dụng
tuỳ chọn trong mã hoá), sử dụng thuật toán bảng băm MD5 thay thế cho DES.
Thứ ba, các chính sách mật khẩu, như được thảo luận trong các bài viết trước, có thể tăng tính
bảo mật bằng cách đòi hỏi độ dài tối thiếu cho mật khẩu, thay đổi mật khẩu đều đặn,... Các tuỳ
chọn này có sẵn và phụ thuộc vào hệ thống *.nix và phiên bản của passwd trên hệ thống của
bạn.
Passwd là lệnh mặc định sử dụng cho việc thay đổi mật khẩu trên các hệ thống *.nix. Lệnh này
cũng hỗ trợ việc kiểm tra tính an toàn tối thiếu đối với các mật khẩu của người sử dụng nhưng
không hỗ trợ tính năng đòi hỏi người sử dụng thay đổi mật khẩu của họ sau một khoảng thời
gian. Ví dụ lệnh passwd trong Sun Solaris hỗ trợ tính năng trên, và cũng tạo ra các kiểm tra sau:
• Độ dài tối thiểu, mà nhà quản trị có thể chỉ định (mặc định là 6 ký tự). Chú ý rằng bất
chấp độ dài mật khẩu, chỉ có 8 ký tự đầu được xem cho mục đích chứng thực.
• Phải chứa ít nhất 2 ký tự (hoa hoặc thường) và một số hay biểu tượng.
• Không thể là tên, đảo ngược tên truy cập hệ thống, hay bất cứ việc dịch chuyển ký tự từ
tên truy cập hệ thống.
• Các mật khẩu mới phải có ít nhất 3 ký tự khác so với mật khẩu cũ.
npasswd, được viết bởi Clyde Hoover, thực hiện các kiểm tra sau:
• Kiểm tra từ vựng (độ dài tối thiểu); không cho phép các ký tự lặp lại hay các mẫu mật
khẩu thông thường như các con số thường gặp; đòi hỏi mật khẩu là sự pha trộn giữa con
số, ký tự, biểu tượng
• Kiểm tra file passwd (không cho phép lấy thông tin từ file passwd).
• Kiểm tra từ điển (không cho phép các mật khẩu được tạo từ các từ được tìm thấy trong
các file từ điển cấu hình).
• Kiểm tra thời điểm (tuỳ chọn - không cho phép sử dụng các mật khẩu đã được sử dụng
gần đây).
• Kiểm tra địa phương (tuỳ chọn - site cấu hình - các kiểm tra chỉ định; mặc định là không
cho phép nhiều tên hostname trong file .rhosts).
Anlpasswd của viện nghiên cứu quốc gia Argonne về chuyên ngành thuật toán và khoa học máy
tính, là một chương trình viết bằng ngôn ngữ Perl. Sự cải thiện chính của nó là hỗ trợ cho môi
trường NIS và kiểm tra các mật khẩu user chống lại danh sách từ điển với khoảng 13 tỷ từ khi
được tạo bởi chương trình crack.
Passwd+, được viết bởi Matt Bishop, là một chương trình rất phức tạp, mà giúp bạn cấu hình
một số kiểm tra (dựa trên mô hình mẫu, xâu, số hay ký tự). Mỗi mật khẩu phải thoả mãn toàn bộ
các kiểm tra này.
Nếu lựa chọn thay thế passwd với các giá trị này (nhìn chung là một ý tưởng tốt) cần cần xem xét
một số điểm. Đầu tiên, kiểm tra liệu các giá trị passwd của bạn có hỗ trợ sử dụng mật khẩu bóng;
ngoài các file mật khẩu bóng, bạn phải dựa vào độ mạnh của thuật toán mã hoá và độ lớn của
mật khẩu (ví dụ như loại bỏ các mật khẩu yếu) để bảo vệ bạn. Thứ hai, nếu bạn đang chạy NIS
hay NIS++, đảm bảo rằng phần mềm hỗ trợ chỉ một môi trường; không phải toàn bộ. Các mật
khẩu bóng có thuật toán mã hoá mạnh, và có bộ lọc mật khẩu tốt hơn, cung cấp tính năng bảo vệ
tốt hơn bằng cách tạo ra độ khó hơn cho kẻ tấn công duy trì và crack mật khẩu của người sử
dụng.
Các mối đe doạ khác và các giải pháp khác
Các mật khẩu tại hệ thống hiện tại có thể được bảo mật tốt hơn, nhưng mối đe doạ vẫn tồn tại.
Điều này đặc biệt đúng với trong các môi trường hệ thống *.nix, có rất nhiều mối đe doạ này dựa
trên các chương trình TCP/IP và các giao thức mà không xây dựng các thuật toán mã hoá hay cơ
chế bảo vệ khác. Ví dụ: telnet và các lệnh r* (rsh, rlogin,..) gửi các mật khẩu dưới dạng text.
Việc bảo vệ các mật khẩu được mã hoá được chứa trên hệ thống sẽ không còn ý nghĩa nhiều khi
bạn truyền các mật khẩu này dưới dạng text qua mạng. Các giao thức không bảo mật nên được
đặt với các giao thức bảo mật thay thế. Sử dụng secure shell - ssh, mà các thông tin được mã hoá
truyền tới đầu cuối, được thiết kế thay đổi telnet và rsh; secure copy (scp) có thể được sử dụng
để thay thế ftp và rcp. OpenSSH là một sản phẩm miễn phí được phát triển như một phần trong
toàn bộ dự án OpenBSD. Nó gồm có ssh, scp và các công cụ ssh. Các giá trị BSD (OpenBSD,
FreeBSD, BSDi) và một số các phiên bản Linux (Debian, SuSE, RedHat, Mandrake). Hiện tại,
OpenSSH có thể được sử dụng như phần thêm vào cho mỗi hệ thống *.nix.
Các giải pháp khác
Do sự đa dạng đối với mật khẩu của các hệ thống *.nix cả ngay trong hệ thống và khi truyền
thông, một số phương pháp khác đã được thực hiện để làm tăng tính an toàn cho mật khẩu. Một
trong những phương pháp thông dụng nhất là mô tả các mật khẩu sử dụng một lần và sau đó
được hủy bỏ. Các hệ thống này có 2 thuận lợi sau:
• Chúng hướng tới thực thi các truyền thông mật khẩu mang tính bảo mật, hầu hết sử dụng
việc mã hoá trong khuôn dạng của một giao thức dạng challenge/response, vì vậy các mật
khẩu không bao giờ được truyền trên mạng.
• Vì mật khẩu được sử dụng chỉ một lần, thậm chí nếu chúng bị lấy đi bởi kẻ tấn công, nó
cũng không thể sử dụng lại.
Các hệ thống mật khẩu sử dụng 1 lần (OTP - Once-Time Password) có thể được thực hiện bởi
phần cứng - như là các thẻ smart card - hay trong phần mềm. Trong khi các giải pháp thương mại
tồn tại, chúng ta hãy xét đến một số các chương trình dạng miễn phí.
S/KEY, một trong những hệ thống dựa theo mô hình OPT, được viết bởi Bellcore (hiện tại viết
bởi Telcordia) và được phát triển như một phần mềm mã nguồn mở. Bellcore gần đây đã bắt đầu
phát triển phiên bản thương mại, nhưng phiên bản miễn phí vẫn được cung cấp. Khi S/KEY trở
thành sản phẩm thương mại, phần mã nguồn mở của chương trình này vẫn được quan tâm và
phát triển thành sản phẩm OPIE. Cả S/KEY và OPIE sử dụng một hệ thống challenge/response.
Trong mỗi trường hợp, mật khẩu của người sử dụng được chứa, trong dạng mẫu được mã hoá,
trên hệ thống máy chủ.
Mỗi hệ thống sử dụng bộ mã tạo mật khẩu chung dựa theo thông tin người sử dụng cung cấp lúc
ban đầu và liên kết với một số tuần tự. Mật khẩu đầu tiên của người sử dụng được tạo bằng cách
đặt thông tin của người sử dụng đó qua một thuật toán bảng băm (như thuật toán MD4 cho
S/KEY, MD5 cho OPIE) với số N mật khẩu được tạo. N là số lần trong dãy bảng băm để người
sử dụng có thể truy cập. Mật khẩu kế tiếp được tạo bằng cách giảm N đi 1 và đặt thông tin đó
trong bảng băm số N-1, và tiếp tục như vậy.
Với mục đich chứng thực, khi một người sử dụng đăng nhập vào hệ thống, anh ta sẽ gửi tên truy
nhập của anh ta tới máy chủ. Máy chủ sẽ trả lời theo phương thức challenge, bao gồm tạo số tuần
tự của người sử dụng. Sau khi người sử dụng gõ mật khẩu và gửi tới máy chủ, nếu mật khẩu
trùng với mã mà máy chủ đã tạo trước đó một khoảng thời gian, người sử dụng đó được chấp
nhận truy cập hệ thống. (Chú ý rằng, mật khẩu này chỉ có giá trị trong một khoảng thời gian nhất
định. Và trong khoảng thời gian này, người sử dụng sẽ không thể đang nhập lại nếu hệ thống
không được thiết lập lại hay khởi tạo lại).
S/KEY và OPIE đã thực sự được thiết kế để bảo vệ các kẻ tấn công như replay attack, vì thông
tin mật khẩu chỉ có giá trị cho mỗi phiên làm việc, nó không thể bị lây bởi một công cụ mạo
danh hay sử dụng lại tại thời điểm khác.
Tuy nhiên, một thông tin mã hoá yếu cũng có thể làm hệ thống như S/KEY hay OPIE có thể có
lỗ hổng như một mật khẩu yếu. Vì vậy, ban đầu, chúng ta cần quay lại nơi mà chúng ta xuất
phát: đó chính là sử dụng các mật khẩu có độ dài đủ lớn.
Phần kết
An toàn của mật khẩu trên các hệ thống *.nix bao gồm 3 khía cạnh chính:
Đầu tiên, bạn phải tạo các mật khẩu và các bảng băm với độ khó cho các kẻ tấn công khó có thể
phá mã được. Bạn có thể thực hiện điều này sử dụng các file mật khẩu, như hạn chế quyền truy
cập hơn là thay đổi file chuẩn /etc/passwd file.
Thứ hai, bạn phải mã hoá mật khẩu khi truyền tin. Thay thế các giao thức sử dụng việc chứng
thực dạng text với các dạng chứng thực được mã hoá.
Thứ ba, đảm bảo rằng thuật toán mã hoá, bản thân nó là an toàn. Không có phương thức mã hoá
nào là hoàn hảo; Để sử dụng thuật toán mã hoá mạnh nhưng nơi có thể (MD5 hay MD4 hay thủ
tục mã hoá crypt). Thậm chí khi bạn sử dụng thuật toán mã hoá, các mật khẩu mạnh vẫn là
phương thức tốt nhất bảo vệ việc phá mã hay đoán mật khẩu.
Cuối cùng, việc kiểm tra các mật khẩu của bạn (ví dụ: với quyền truy cập) là một trong những
cách tốt nhất để nâng cao độ an toàn cho hệ thống của bạn. Các công cụ như Crack rất hữu ích
không chỉ cho những kẻ tấn công mà còn cho cả những người quản trị an toàn hệ thống. Toàn bộ
các công cụ được liệt kê trong bảng sau:

Phiên
Công cụ bản
Có sẵn tại Môi trường chạy
kiểm tra hiện
tại

Trung tâm nghiên cứu giáo dục thuộc *nix; Solaris, Linux,
Crack 5.0a trường đại học Purdue (CERIAS) FreeBSD, NetBSD,
OSF, and Ultrix

Có rất nhiều Website cung cấp, gồm cả


anlpasswd 2.3 *nix
server FTP của CERIAS

Thuộc trường đại học Texas tại Austin và


tại một số website khác BSDI, FreeBSD,
npasswd NetBSD, SunOS,
UNIX, and Ultrix

passwd+ 5.0a Trường đại học Dartmouth và một số *nix


website khác. Địa chỉ download:
ftp://ftp.dartmouth.edu/pub/security/
AIX, BSDI, DG-UX,
1.1 Digital UNIX/Alpha,
(phẩn Bellcore FTP site FreeBSD, HP-UX,
S/KEY mềm FTP của site Bellcore, theo địa chỉ: IRIX, Linux,
miễn ftp://thumper.bellcore.com/pub/nmh/ NetBSD, OpenBSD,
phí) SCO, Solaris,
SunOS, and Ultrix
OPIE 2.32 The Inner Net *nix

You might also like