Tải bản đầy đủ (.pdf) (8 trang)

Bảo vệ mật khẩu của bạn ngay tại hệ thống potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (183.38 KB, 8 trang )

Bảo vệ mật khẩu của bạn ngay tại hệ thống :
trang này đã được đọc lần
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:
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:


*nix
S/KEY
1.1
(phẩn
mềm
miễn
phí)
Bellcore FTP site
FTP của site Bellcore, theo địa chỉ:


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


×