AntoànmậtkhẩutrênhệthốngmạngUNIX
và LINUX
Bài viết này mô tả những cách thức kiểm tra tính antoànmậtkhẩutrên các hệthống
UNIX, LINUX, và các hệthống *.nix nói chung. Như các hệthốngtrên Window, các mật
khẩu *.nix được bảo vệ ngay tại hệthốngvàtrên đường truyền.
Bảo vệ mậtkhẩu của bạn ngay tại hệthống
Mật khẩutrênhệ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ậtkhẩu được mã hoá cho người sử dụng trênhệ 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ậtkhẩ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ậtkhẩu không phải quá khó.
Ví dụ: l0phtCrack có thể sử dụng để crack các mậtkhẩu của Windows, chương trình crack của
Alec Mufet có thể sử dụng để crack mậtkhẩuhệ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ậtkhẩ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ậtkhẩutrênhệthống *.nix trong khi file /etc/passwd là file
có thể đọcvà 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ậtkhẩu
Một vài phương thức cải thiện mậtkhẩu đã được thực hiện cho phương thức antoànmậtkhẩu
trong hệthống *.nix. Đầu tiên được giới thiệu là loại mậtkhẩu bóng (shadow password). Việc
chứa các bảng băm mậtkhẩ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ậtkhẩ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ậtkhẩu bóng được lựa chọn trong các
bước cài đặt hệ thống. Các mậtkhẩ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ậtkhẩ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ênhệthống của
bạn.
Passwd là lệnh mặc định sử dụng cho việc thay đổi mậtkhẩutrên các hệthống *.nix. Lệnh n
ày
cũng hỗ trợ việc kiểm tra tính antoàn tối thiếu đối với các mậtkhẩ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ậtkhẩ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ậtkhẩu mới phải có ít nhất 3 ký tự khác so với mậtkhẩ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ậtkhẩ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ậtkhẩ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ậtkhẩ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ánvà 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ậtkhẩ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ậtkhẩ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ậtkhẩ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ậtkhẩu (ví dụ như loại bỏ các mậtkhẩ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ậtkhẩu bóng có thuật toán mã hoá mạnh, và có bộ lọc mậtkhẩ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ậtkhẩ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ậtkhẩu dưới dạng
text.
Việc bảo vệ các mậtkhẩu được mã hoá được chứa trênhệthống sẽ không còn ý nghĩa nhiều
khi bạn truyền các mậtkhẩ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ậtkhẩu của các hệthống *.nix cả ngay trong hệthốngvà 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 antoà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ậtkhẩ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ôngmậtkhẩumang 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ậtkhẩ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ốngmậtkhẩ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ậtkhẩu của người sử dụng đư
ợc chứa, trong dạng
mẫu được mã hoá, trênhệthống máy chủ.
Mỗi hệthống sử dụng bộ mã tạo mậtkhẩ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ậtkhẩ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ậtkhẩ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ậtkhẩ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ậtkhẩuvà 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ậtkhẩ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ậtkhẩ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ậtkhẩ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ậtkhẩu có độ dài đủ lớn.
Phần kết
An toàn của mậtkhẩ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ậtkhẩuvà 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ậtkhẩ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ậtkhẩ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ậtkhẩ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 độ antoà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ànhệ thống. Toàn
bộ các công cụ được liệt kê trong bảng sau:
Công cụ
kiểm tra
Phiên
bản
hiện
tại
Có sẵn tại
Môi trường
chạy
Crack 5.0a
Trung tâm nghiên cứu giáo dục thuộc
trường đại học Purdue (CERIAS)
*nix; Solaris,
Linux, FreeBSD,
NetBSD, OSF,
and Ultrix
anlpasswd
2.3
Có r
ất nhiều Website cung cấp, gồm cả
server FTP của CERIAS
*nix
npasswd
Thuộc trường đại học Texas tại Austin
và tại một số website khác
BSDI, FreeBSD,
NetBSD, SunOS,
UNIX, and
Ultrix
passwd+ 5.0a
Trường đại học Dartmouth và một số
website khác. Địa chỉ download:
ftp://ftp.dartmouth.edu/pub/security/
*nix
S/KEY
1.1
(phẩn
mềm
miễn
phí)
Bellcore FTP site
FTP của site Bellcore, theo địa chỉ:
ftp://thumper.bellcore.com/pub/nmh/
AIX, BSDI, DG-
UX, Digital
UNIX/Alpha,
FreeBSD, HP-
UX, IRIX,
Linux, NetBSD,
OpenBSD, SCO,
Solaris, SunOS,
and Ultrix
OPIE 2.32 The Inner Net *nix
(Theo Password Security on Unix and Linux Networks của Jennifer Kolde )
. An toàn mật khẩu trên hệ thống mạng UNIX
và LINUX
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à. 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