Tải bản đầy đủ (.doc) (74 trang)

An toàn & bảo mật thông tin trên LINUX Hệ thống bảo mật & phát hiện xâm nhập mạng (Nids)

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 (604.33 KB, 74 trang )

an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
1.Lời nói đầu:
Linux đã tạo ra một sự bùng nổ trong lĩnh vực tin học và ngày càng trở nên phổ
biến hiện nay. Rất nhiều các công ty, tổ chức trên thế giới chấp nhận Linux như là một
platform cho sản phẩm của họ, cũng như nhiều công ty, ISPs sử dụng máy chủ Linux như
là các Internet gateway. Vấn đề an toàn an ninh cho hệ thống Linux ngày càng trở nên
quan trọng và bức thiết hơn. Tài liệu này sẽ có một cái nhìn tổng quát về an toàn hệ thống
và những hướng dẫn giúp tăng cường mức độ an toàn cho hệ thống Linux.
Kể từ khi Linux được phát triển một cách rộng rãi và nhanh chóng, đặc biệt là trong các giao dịch
kinh doanh quan trọng, an ninh là một vấn đề quyết định sự sống còn của Linux. Với hàng trăm
công cụ bảo vệ sẵn có, người dùng Linux được trang bị tốt hơn để ngăn chặn và duy trì một hệ
thống an toàn. Linux không những hoạt động tốt mà còn có những tính năng và sản phẩm liên
quan cho phép xây dựng một môi trường tương đối an toàn.
1.1 Những nguy cơ an ninh trên linux
Linux và các ứng dụng trên nó có thể không ít các lỗ hổng an ninh hơn những hệ điều
hành khác. Theo quan điểm của một số chuyên gia máy tính, Linux có tính an toàn cao hơn các hệ
điều hành của Microsoft, vì các sản phẩm của Microsoft không được xem xét kỹ lưỡng và chặt chẽ
bằng các sản phẩm mã nguồn mở như Linux. Hơn nữa, Linux dường như là "miễn nhiễm" với
virus máy tính (hiện tại đã có xuất hiện một vài loại virus hoạt động trên môi trường Linux nhưng
không ảnh hưởng gì mấy đến người dùng Linux). Nhưng một hệ thống Linux được cấu hình không
tốt sẽ tệ hơn nhiều so với một hệ thống Microsoft được cấu hình tốt !!! Khi có được một chính sách
an ninh tốt và hệ thống được cấu hình theo đúng chính sách đó thì sẽ giúp bạn tạo được một hệ
thống an toàn (ở mức mà chính sách của bạn đưa ra).
Nhưng sự an toàn không phải là thứ có thể đạt được như một mục tiêu cuối cùng. Đúng hơn đó là
tập hợp của những cách cài đặt, vận hành và bảo trì một hệ điều hành, mạng máy tính, ... Nó phụ
thuộc vào các hoạt động hàng ngày của hệ thống, người dùng và người quản trị. Bạn phải bắt đầu
từ một nền tảng ban đầu và từ đó cải thiện tính an toàn của hệ thống của bạn nhiều nhất có thể
được mà vẫn đảm bảo các hoạt động bình thường của hệ thống.
1.2 Xem xét chính sách an ninh
Kết nối vào Inernet là nguy hiểm cho hệ thống mạng của bạn với mức an toàn thấp. Từ
những vấn đề trong các dịch vụ TCP/IP truyền thống, tính phức tạp của việc cấu hình máy chủ,


các lỗ hổng an ninh bên trong quá trình phát triển phần mềm và nhiều nhân tố khác góp phần làm
cho những hệ thống máy chủ không được chuẩn bị chu đáo có thể bị xâm nhập và luôn tồn tại
những nguy cơ tiềm tàng về vấn đề an toàn trong đó. Mục đích của một chính sách an toàn hệ
thống là quyết định một tổ chức sẽ phải làm như thế nào để bảo vệ chính nó. Để có được một
chính sách an ninh hiệu quả, người xây dựng các chính sách này phải hiểu và có thể kết hợp tất
cả các thông tin, yêu cầu, ...Khi một tình huống xảy ra nằm ngoài dự kiến, chẳng hạn một sự xâm
nhập trái phép vào hệ thống của bạn, câu hỏi lớn nhất là "sẽ phải làm gì đây ?" Những sai sót
trong chính sách an ninh không chỉ liên quan đến những kẻ xâm nhập, mà còn liên quan đến
những vấn đề bình thường như thời tiết, thiên tai, cháy, nổ, hư hỏng thiết bị,... Do vậy, việc thiết
lập một chính sách an ninh tốt cho việc giải quyết những sự cố phải được lên kế hoạch kỹ lưỡng,
được xem xét và chứng nhận bởi người có quyền hạn trong công ty.
Một chính sách an ninh tốt nên bao gồm các vấn đề sau :
1
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
o Chính sách phục hồi dữ liệu khi có sự cố
o Chính sách phục hồi hệ thống trong trường hợp hư hỏng thiết bị
o Chính sách, cách thức điều tra những kẻ xâm nhập trái phép
o Chính sách, cách thức điều tra khi công ty bị cáo buộc xâm nhập vào các hệ thống
khác
o Cách thức, quy trình và nơi thông báo sự xâm nhập trái phép từ bên ngoài hay
gây ra bởi các nhân viên của mình.
o Chính sách an ninh về mặt vật lý của hệ thống
Chính sách bảo mật:
Một điều quan trọng cần phải chỉ ra là bạn không thể thực hiện việc an toàn và bảo mật hệ
thống nếu bạn chưa xác định được là cần phải bảo vệ những gì, và cho ai. Do vậy bạn cần phải có một
chính sách bảo mật - đó là danh sách những gì mà bạn cho phép quan tâm đến và cũng như những gì mà
bạn không cho phép quan tâm đến và dựa trên cơ sở đó bạn có thể có bất kỳ quyết định nào về việc bảo
mật một cách chính xác. Chính sách cũng nên xác định rõ việc đáp lại của bạn các đối với vi phạm về
việc bảo mật và an toàn. Bạn cũng nên để ý rằng những gì được đề ra khi xây dựng một chính sách bảo
mật sẽ phụ thuộc vào việc bạn đưa ra các định nghĩa về bảo mật. Sau đây là các câu hỏi sẽ cung cấp một

số các chỉ dẫn tổng thể liên quan:
- Làm thế nào bạn phân biệt được các thông tin là nhạy cảm và bí mật?
- Hệ thống có nên chứa đựng các thông tin nhạy cảm và bí mật không?
- Chính xác là bạn cần phải đề phòng ai?
- Những người sử dụng từ xa có thật sự cần thiết truy cập tới hệ thống của bạn không?
- Mật khẩu và giải pháp mã hóa đã đủ bảo vệ hệ thống chưa?
- Bạn có cần phải truy cập Internet không?
- Bạn muốn cho phép hệ thống của bạn có thể được truy cập từ Internet bao nhiêu lần?
- Bạn sẽ làm gì khi phát hiện ra một sự vi phạm trong việc bảo mật của bạn?
2 Giới thiệu chung:
2.1 Ai đang phá hoại hệ thống:
Có hai từ để chỉ kẻ xâm nhập hacker và cracker. Một hacker là chỉ người thích vào
một hệ thống nào đó. Một hacker tốt bụng (benign hacker) là người thích tự xâm nhập vào
máy của mình để hiểu rõ những gì đang diễn ra bên trong và nó đang hoạt động như thế
nào. Một hacker hiểm độc (malicious hacker) là người thích vào hệ thống của người khác.
Benign hacker muốn ngăn chặn tất cả các cuộc phá hoại của các hacker và từ đó ra đời
khái niệm cracker. Thật không may, đã không giống như người ta mong muốn, và trong tất
cả các trường hợp người ta đều dùng một từ để chỉ đó là kẻ xâm nhập ‘intruder’. Kẻ xâm
nhập có thể chia làm 2 loại: Từ bên trong và bên ngoài.
Từ bên ngoài: outsiders:
Xâm nhập từ bên ngoài mạng, tấn công webserver, chuyển thư spam qua
mailserver, … chúng cũng có thể tấn công fire wall để tấn công những máy bên trong
mạng. Kẻ xâm nhập từ bên ngoài có thể đến từ internet, đường dial-up, physical break-ins,
hoặc từ một đối tác (vender, customer, reseller,…)
Từ bên trong ‘insiders’
Kẻ xâm nhập có một tài khoản hợp pháp trong hệ thống mạng và muốn tăng quyền
ưu tiên của mình để phục vụ những mục đích khác nhau.
2
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
2.2 Những kẻ xâm nhập vào hệ thống của ta như thế nào

-Physical Intrusion:
Nếu kẻ xâm nhập có được kết nối vật lý đến hệ thống ( họ có thể sử dụng bàn phím
hay là một phần nào đó của hệ thống) và họ có thể vào trong hệ thống.
- System Intrusion
Kiểu tấn công này xảy ra khi kẻ đột nhập đã có một tài khoản trên hệ thống, nếu hệ
thống không có những chỗ vá bảo mật mới nhất.
- Remote Intrusion
hacker sẽ xâm nhập vào hệ thống thông qua mạng. Kẻ xâm nhập không cần một
đặc quyền nào. Có rất nhiều cách tấn công kiểu này. Kẻ xâm nhập sẽ khó khăn hơn rất
nhiều khi có một firewall.
Chú ý là hệ thống phát hiện xâm nhập mạng có liên quan rất chặt với xâm nhập từ xa.
2.3 Tại sao kẻ xâm nhập có thể vào được hệ thống của chúng ta
Phần mềm luôn có lỗi. Những người quản trị hệ thống và các lập trình viên theo dõi
và nắm được tất cả các lỗi có thể có. Còn những kẻ xâm nhập chỉ cần tìm một lỗi để có thể
xâm nhập vào hệ thống.
2.3.1 Những lỗi phần mềm
Tràn bộ đệm
Hầu như tất cả các lỗ hổng bảo mật đều do lỗi này. Một ví dụ điển hình là các lập
trình viên đều đặt 256 ký tự cho trường username login. Bình thường thì các lập trình viên
sẽ nghĩ không có ai chọn username quá như vậy cả. Nhưng các hacker sẽ nghĩ, chuyện gì
xảy ra nếu tôi nhập vào quá giới hạn đó ? Những ký tự thêm vào sẽ đi đâu ? họ sẽ gửi 300
ký tự bao gồm cả mã thực thi trên server và thế là họ đã vào được. Hacker đã tìm những lỗi
như vậy bằng rất nhiều cách. Đầu tiên phải kể đến là mã nguồn cho rất nhiều dịch vụ đều
có trên mạng. Hacker sẽ nghiên cứu những mã nguồn và tìm lỗi tràn bộ đệm. Thứ hai là
hacker có thể xem chính những chương trình đó mặc dù đọc mã assembly là rất khó. Thứ
ba là hacker có thể kiểm tra bằng rất nhiều dữ liệu ngẫu nhiên. Vấn đề này chủ yếu gặp khi
những chương trình được viết bằng ngôn ngữ C/C++, rất hiếm trong những chương trình
viết bằng Java.
Unexpected combinations
Chương trình thường được xây dựng dựa trên rất nhiều lớp mã, và hệ điều hành có

thể coi là lớp dưới cùng. Kẻ xâm nhập có thể vào các dữ liệu có thể không có ý nghĩa với
lớp này nhưng mà lại có ý nghĩa với lớp khác. Ngôn ngữ nổi tiếng về xử lý dữ liệu vào của
người dùng là PERL. Chương trình viết bằng PERL thường gửi dữ liệu vào này đến các
chương trình xa hơn. Một cách hacker thường gặp là vào dữ liệu giống như :
“| mail < /etc/passwd” Mã này sẽ thực thi bởi vì PERL sẽ hỏi hệ điều hành chạy chương
trình thêm vào cùng với các dữ liệu đó. Tuy nhiên hệ điều hành đã chạy chương trình mail
và password file đã được gửi cho kẻ xâm nhập.
Unhandled input
Hầu hết các chương trình được viết để vào dữ liệu bằng tay. Và các lập trình viên
không tính đến chuyện gì xảy ra nếu nó không đúng là như vậy.
Race conditions
tất cả các hệ thống ngày nay đều xử lýđa nhiệm và đa luồng. Họ có thể chạy nhiều
chương trình một lúc. Sẽ nguy hiểm nếu hai chương trình cùng truy nhập vào cùng một dữ
liệu trong cùng một thời điểm. race condition xảy ra khi chương trình A đọc 1 file vào bộ
3
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
nhớ, và thay đổi nó ở trong bộ nhớ. Tuy nhiên trước khi A ghi lại file thì chương trình B đã
thực thi xong quá trình thay đổi file . Bây giờ thì chương trình A ghi lại file và tất cả các
thay đổi của B sẽ bị mất. Vì vậy cần phải có thứ tự nối tiếp thích hợp, race condition cũng
rất hiếm khi xảy ra. Kẻ xâm nhập thường phải thử hàng nghìn lần trước khi có thể vào
được hệ thống.
2.3.2 Cấu hình hệ thống :
những cấu hình ngầm định: Hầu hết các hệ thống đều được gửi đến cho khách hàng với
cấu hình ngầm định, một cấu hình dễ sử dụng. Thật không may, dễ sử dụng đồng nghĩa với
dễ xâm nhập.
Lazy administrators
Có một con số đáng kinh ngạc những máy hoặc hệ thống mà không có mật khẩu
cho root hay administrator. Đó là điều đầu tiên mà kẻ xâm nhập sẽ thử khai thác.
Hole creation
Hầu như tất cả các chương trình đều được cấu hình để chạy ở chế độ không bảo

mật. Đôi khi người quản trị vô tình tạo lỗ hổng cho hệ thống của mình. Người quản trị nên
tắt tất cả mọi dịch vụ mà không sử dụng tới, cấp các quyền cho các user vừa đủ cho các
công việc của họ.
Trust relationships
Kẻ xâm nhập thường khai thác các liên kết tin tưởng trên mạng.
2.3.3 Password cracking
Really weak passwords khi pass quá đơn giản để đoán ra khi mà người đó có quan hệ với
bạn. Ví dụ đa số người dùng lấy mật khẩu là tên của mình, tên vợ, tên người yêu, hay số
nhà, số điện thoại, … tất cả đều thể hiện mật khẩu của bạn quá "yếu".
Dictionary attacks tấn công dựa vào các từ có trong từ điển. Hacker có thể thử lần lượt
các từ có trong từ điển và các hoán đổi cho đến khi đúng password.
Brute force attacks tương tự kiểu tấn công sử dụng từ điển. Nó sử dụng tất cả các khả
năng kết hợp của các ký tự.
4
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
3 Gii phỏp an ninh:
3.1 Mt khu :
3.1.1Bo mt BIOS - t mt khu khi ng:
Cú mt li khuyờn rng bn nờn vụ hiu húa vic khi ng (booting) t a
mm ng thi t cỏc mt khu (password) trờn cỏc c tớnh ca BIOS. Bn cú th xem
xột ti liu hng dn v BIOS ca bn hay xem nú khi ng ln k tip nh th no.
Vic vụ hiu húa kh nng khi ng t cỏc a mm v cú ci t mt mt khu truy
cp tớnh nng BIOS s ci tin tớnh an ton bo mt h thng ca bn. iu ny s lm cho
mt s ngi khụng mong i c gng thay i tớnh nng BIOS cho phộp khi ng t
a mm hay khi ng t mỏy server luụn b nhc nh mt khu.
3.1.2Chn mt mt khu (password) ỳng:
im bt u cho mt chuyn tham quan v Linux General Security l mt khu. Nhiu
ngi lu gi cỏc thụng tin v cỏc tp tin ỏng giỏ ca h trờn mt mỏy tớnh, v ch cú mt
vic l ngn chn nhng ngi khỏc khi mun xem cỏc thụng tin hay tp tin ú thỡ yờu cu
gừ vo mt chui di tỏm ký t hoc nhiu hn thng c gi l mt mt khu. Khụng

nh mi ngi ó ngh, khụng th cú mt mt khu no khụng gii c. Vi thi gian v
cụng sc, tt c mt khu u cú th c oỏn ra, k c vic dựng cỏc mu mo trong
cuc sng hay ỏp lc. Dựng nhng mu mo trong cuc sng cú c cỏc mt khu v
cỏc phng phỏp truy cp khỏc vn l cỏch ph bin nht v d nht ginh c quyn
truy cp ti cỏc ti khon v cỏc mỏy server. Chy mt chng trỡnh b khúa mt khu mi
tun mt ln da trờn h thng ca bn l mt ý tng hay. Vic ny giỳp bn tỡm v thay
th cỏc mt khu m nú d dng c oỏn ra hay cú hiu lc kộm. Cng th, mt c ch
kim tra mt khu l nờn cú loi b nhng mt khu kộm hiu lc khi ln u tiờn chn
mt mt khu hay thay i mt mt khu c. Chỳng ta khụng nờn chp nhn mt mt khu
mi vi chui ký t l cỏc t d hiu, hoc l tt c cỏc ký t u cú nh dng in hay
thng ging nhau, hoc khụng cha ng cỏc s hay cỏc ký t c bit.
Chỳng ta nờn tuõn theo cỏc nguyờn tc sau to mt khu mt cỏch hiu qu:
- Cú chiu di ớt nht l sỏu ký t, c a chung nht l tỏm ký t trong ú cú ớt nht
mt ký t s hay ký t c bit.
- Chỳng phi khụng tm thng, mt mt khu tm thng l mt mt khu d dng oỏn
ra v nú thng da trờn tờn, h, ngh nghip hoc mt s c bit cỏ nhõn khỏc ca ngi
s dng.
- Chỳng nờn cú hiu lc trong mt giai on, yờu cu thay i mt khu mi sau mt thi
gian ó nh.
- Chỳng nờn c hy b hay to li sau khi cú mt s ln th khụng thnh cụng.
Chiu di mt khu:
Chiu di ca mt khu ti thiu cú th chp nhn oc mc nh khi bn ci t h
thng Linux l 6. iu ny núi lờn rng khi mt ngi s dng mi thỡ c phộp truy cp
trờn mỏy server, chiu di mt khu ca ngi s dng ú s cú ti thiu l 6 ký t v nú
bao gm cỏc ký t, ký s, ký t c bit v.v... Nh th vn cha m nú phi l 8.
ngn chn nhng ngi cú t tng khụng chỳ trng n bo mt v bt buc h phi
dựng chiờu di password ti thiu 8 ký t, ngi qun tr h thng cng cú th hiu chnh
tp tin quan trng "/etc/login.defs" v thay i dũng sau tr thnh:
PASS_MIN_LEN 6
5

an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
tr thnh
PASS_MIN_LEN 8
"login.defs" l tp tin cu hỡnh cho chng trỡnh login. Bn nờn xem xột li hay thay i
ni dung tp tin ny cho phự hp vi h thng riờng bit ca bn. õy l ni m bn t
cỏc ci t chớnh sỏch bo mt khỏc (ging nh s mc nh ht hn ca mt khu hay
chiu di ti thiu mt khu cú th chp nhn).
3.1.3 Default password
Cỏc nh sn xut hay cỏc sn phm u luụn cú nhng mt khu ngm nh lỳc
u, nu ngi qun tr cha thay i chỳng thỡ s l k h cỏc hacker cú th th u
tiờn. Chỳng thng l:root root, root system, sys sys, sys system, daemon daemon, uucp
uucp, tty tty, test test, unix unix, unix test, bin bin, adm adm, adm admin, admin adm,
admin admin, sysman sysman, sysman sys, sysman system, sysadmin sysadmin, sysadmin
sys, sysadmin system, sysadmin admin, sysadmin adm, who who, learn learn, uuhost
uuhost, guest guest, host host, nuucp nuucp, rje rje, games games, games player, sysop
sysop, root sysop, demo demo,
3.1.4 Tng tớnh an ton ca mt khu v mó hoỏ:
Mt khu trờn h thng *nix c lu trong file /etc/passwd, mt file cha cỏc tờn
ngi s dng, UIDs, GIDs, v cỏc mt khu c mó hoỏ cho ngi s dng trờn h
thng. Ngoi ra, file ny cũn lu cỏc thụng tin khỏc, nh tờn y ca ngi s dng,
ng dn th mc, hay h thng shell. Bt k ai truy cp h thng cng cú th hin th
ni dung ca file /etc/passwd. iu ny to ra kh nng phỏ hoi vi cỏc user v nhng k
tn cụng cú th to ra cỏc l hng bo mt nhn c mt bn sao ca file mt khu
ny. Cỏc h thng *.nix thng s dng thut toỏn mó hoỏ (nh thut toỏn DES) to ra
cỏc bng bm mt khu. DES s dng thut toỏn mó hoỏ 56 bit. Vi thut toỏn ny, DES
ó c s dng nh thut toỏn mó hoỏ ph bin trc õy. Tuy nhiờn, theo thi gian, khi
phn cng phỏt trin v giỏ thnh thit b r i, thut toỏn ny ó tr nờn d dng gii mó
v to li mó. Vỡ vy, vi cỏc h thng tc nhanh s vic crack cỏc mt khu khụng phi
quỏ khú.Vớ d: l0phtCrack cú th s dng crack cỏc mt khu ca Windows, chng
trỡnh crack ca Alec Mufet cú th s dng crack mt khu h thng *.nix. Vic phỏ mó

ó c phỏt trin theo thi gian, c vit t nm 1991 v hin ti nú ó c phỏt trin
n phiờn bn 5.0a. Vic phỏ mó cú th c cu hỡnh tng thớch vi bt k mụi
trng no; cỏc file cu hỡnh cú th c sa i h tr cho cỏc nh dng file mt khu
khỏc nhau, loi thut toỏn mó hoỏ khỏc nhau, ... Vic phỏ mó s dng danh sỏch t in
nh nn tng cho vic phỏ mó; cỏc file t in ny cng cú th c cu hỡnh li mt cỏch
d dng. Núi chung, lit kờ danh sỏch cu trỳc th mc cho vic th chng trỡnh, bn
cng cú th cu hỡnh tp t in hay cỏc lut to mó nh mt phn trong vic phỏ mó. Cỏc
lut ny cú th bao gm cỏc phng thc nh gn trc hay sau cỏc ký t vo cỏc t
chun, gp ụi hay o ngc cỏc t, thay i cỏc ký t t thng sang hoa ..., hay thay
th mt t ny bng mt t khỏc. Vy lm cỏch no bo v cỏc mt khu trờn h thng
*.nix trong khi file /etc/passwd l file cú th c v s phỏt trin t ca cỏc cụng c crack
mt khu. Mt vi phng thc ci thin mt khu ó c thc hin cho phng thc an
ton mt khu trong h thng *.nix. u tiờn c gii thiu l loi mt khu búng
(shadow password). Vic cha cỏc bng bm mt khu trong file c c /etc/passwd
khụng an ton, vỡ vy cỏc bng bm ny c a vo trong mt file riờng r, file
6
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
/etc/shadow. File ny ch cú th c bi quyn root v vỡ vy cú kh nng bo mt tt hn.
Hai file ny c s dng cựng nhau cung cp vic chng thc cho user. Cỏc file mt
khu búng ó tr nờn thụng dng v c s dng mc nh cho rt nhiu h thng *.nix
nh Sun Solaris. Tuy nhiờn, chỳng khụng phi l mc nh ca ton b cỏc h thng.
Chng hn vi Red Hat Linux, vic s dng mt khu búng c la chn trong cỏc bc
ci t h thng. Cỏc mt khu búng nờn c s dng bt c õu trong h thng. Th
hai, mt s phiờn bn ca *.nix hin ti cung cp thut toỏn mó hoỏ tt hn, (cú th s
dng tu chn trong mó hoỏ), s dng thut toỏn bng bm MD5 thay th cho
DES. Passwd l lnh mc nh s dng cho vic thay i mt khu trờn cỏc h thng
*.nix. Lnh ny cng h tr vic kim tra tớnh an ton ti thiu i vi cỏc mt khu ca
ngi s dng nhng khụng h tr tớnh nng ũi hi ngi s dng thay i mt khu ca
h sau mt khong thi gian. Vớ d lnh passwd trong Sun Solaris h tr tớnh nng trờn, v
cng to ra cỏc kim tra sau:

di ti thiu, m nh qun tr cú th ch nh (mc nh l 6 ký t). Chỳ ý rng
bt chp di mt khu, ch cú 8 ký t u c xem cho mc ớch chng thc.
Phi cha ớt nht 2 ký t (hoa hoc thng) v mt s hay biu tng.
Khụng th l tờn, o ngc tờn truy cp h thng, hay bt c vic dch chuyn ký
t t tờn truy cp h thng.
Cỏc mt khu mi phi cú ớt nht 3 ký t khỏc so vi mt khu c.
npasswd, c vit bi Clyde Hoover, thc hin cỏc kim tra sau:
Kim tra t vng ( di ti thiu); khụng cho phộp cỏc ký t lp li hay cỏc mu
mt khu thụng thng nh cỏc con s thng gp; ũi hi mt khu l s pha trn
gia con s, ký t, biu tng
Kim tra file passwd (khụng cho phộp ly thụng tin t file passwd).
Kim tra t in (khụng cho phộp cỏc mt khu c to t cỏc t c tỡm thy
trong cỏc file t in cu hỡnh).
Kim tra thi im (tu chn - khụng cho phộp s dng cỏc mt khu ó c s
dng gn õy).
Kim tra a phng (tu chn - site cu hỡnh - cỏc kim tra ch nh; mc nh l
khụng cho phộp nhiu tờn hostname trong file .rhosts).
Anlpasswd ca vin nghiờn cu quc gia Argonne v chuyờn ngnh thut toỏn v khoa
hc mỏy tớnh, l mt chng trỡnh vit bng ngụn ng Perl. S ci thin chớnh ca nú l h
tr cho mụi trng NIS v kim tra cỏc mt khu user chng li danh sỏch t in vi
khong 13 t t khi c to bi chng trỡnh crack.
Passwd+, c vit bi Matt Bishop, l mt chng trỡnh rt phc tp, m giỳp bn cu
hỡnh mt s kim tra (da trờn mụ hỡnh mu, xõu, s hay ký t). Mi mt khu phi tho
món ton b cỏc kim tra ny.Nu la chn thay th passwd vi cỏc giỏ tr ny (nhỡn chung
l mt ý tng tt) cn cn xem xột mt s im. u tiờn, kim tra liu cỏc giỏ tr passwd
ca bn cú h tr s dng mt khu búng; ngoi cỏc file mt khu búng, bn phi da vo
mnh ca thut toỏn mó hoỏ v ln ca mt khu (vớ d nh loi b cỏc mt khu
yu) bo v bn. Th hai, nu bn ang chy NIS hay NIS++, m bo rng phn mm
h tr ch mt mụi trng; khụng phi ton b. Cỏc mt khu búng cú thut toỏn mó hoỏ
7

an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
mnh, v cú b lc mt khu tt hn, cung cp tớnh nng bo v tt hn bng cỏch to ra
khú hn cho k tn cụng duy trỡ v crack mt khu ca ngi s dng.
3.1.5 Cỏc mi e do khỏc v cỏc gii phỏp
Cỏc mt khu ti h thng hin ti cú th c bo mt tt hn, nhng mi e do
vn tn ti. iu ny c bit ỳng vi trong cỏc mụi trng h thng *.nix, cú rt nhiu
mi e do ny da trờn cỏc chng trỡnh TCP/IP v cỏc giao thc m khụng xõy dng cỏc
thut toỏn mó hoỏ hay c ch bo v khỏc. Vớ d: telnet v cỏc lnh r* (rsh, rlogin,..) gi
cỏc mt khu di dng text. Vic bo v cỏc mt khu c mó hoỏ c cha trờn h
thng s khụng cũn ý ngha nhiu khi bn truyn cỏc mt khu ny di dng text qua
mng. Cỏc giao thc khụng bo mt nờn c t vi cỏc giao thc bo mt thay th. S
dng secure shell - ssh, m cỏc thụng tin c mó hoỏ truyn ti u cui, c thit k
thay i telnet v rsh; secure copy (scp) cú th c s dng thay th ftp v rcp.
OpenSSH l mt sn phm min phớ c phỏt trin nh mt phn trong ton b d ỏn
OpenBSD. Nú gm cú ssh, scp v cỏc cụng c ssh. Cỏc giỏ tr BSD (OpenBSD, FreeBSD,
BSDi) v mt s cỏc phiờn bn Linux (Debian, SuSE, RedHat, Mandrake). Hin ti,
OpenSSH cú th c s dng nh phn thờm vo cho mi h thng *.nix.
Cỏc gii phỏp khỏc
Do s a dng i vi mt khu ca cỏc h thng *.nix c ngay trong h thng v
khi truyn thụng, mt s phng phỏp khỏc ó c thc hin lm tng tớnh an ton cho
mt khu. Mt trong nhng phng phỏp thụng dng nht l mụ t cỏc mt khu s dng
mt ln v sau ú c hy b. Cỏc h thng ny cú 2 thun li sau:
Chỳng hng ti thc thi cỏc truyn thụng mt khu mang tớnh bo mt, hu ht s
dng vic mó hoỏ trong khuụn dng ca mt giao thc dng challenge/response, vỡ
vy cỏc mt khu khụng bao gi c truyn trờn mng.
Vỡ mt khu c s dng ch mt ln, thm chớ nu chỳng b ly i bi k tn
cụng, nú cng khụng th s dng li.
Cỏc h thng mt khu s dng 1 ln (OTP - Once-Time Password) cú th c thc hin
bi phn cng - nh l cỏc th smart card - hay trong phn mm. Trong khi cỏc gii phỏp
thng mi tn ti, chỳng ta hóy xột n mt s cỏc chng trỡnh dng min phớ. S/KEY,

mt trong nhng h thng da theo mụ hỡnh OTP, c vit bi Bellcore (hin ti vit bi
Telcordia) v c phỏt trin nh mt phn mm mó ngun m. Bellcore gn õy ó bt
u phỏt trin phiờn bn thng mi, nhng phiờn bn min phớ vn c cung cp. Khi
S/KEY tr thnh sn phm thng mi, phn mó ngun m ca chng trỡnh ny vn c
quan tõm v phỏt trin thnh sn phm OPIE. C S/KEY v OPIE s dng mt h thng
challenge/response. Trong mi trng hp, mt khu ca ngi s dng c cha, trong
dng mu c mó hoỏ, trờn h thng mỏy ch. Mi h thng s dng b mó to mt khu
chung da theo thụng tin ngi s dng cung cp lỳc ban u v liờn kt vi mt s tun
t. Mt khu u tiờn ca ngi s dng c to bng cỏch t thụng tin ca ngi s
dng ú qua mt thut toỏn bng bm (nh thut toỏn MD4 cho S/KEY, MD5 cho OPIE)
vi s N mt khu c to. N l s ln trong dóy bng bm ngi s dng cú th truy
8
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
cp. Mt khu k tip c to bng cỏch gim N i 1 v t thụng tin ú trong bng bm
s N-1, v tip tc nh vy. Vi mc ich chng thc, khi mt ngi s dng ng nhp
vo h thng, anh ta s gi tờn truy nhp ca anh ta ti mỏy ch. Mỏy ch s tr li theo
phng thc challenge, bao gm to s tun t ca ngi s dng. Sau khi ngi s dng
gừ mt khu v gi ti mỏy ch, nu mt khu trựng vi mó m mỏy ch ó to trc ú
mt khong thi gian, ngi s dng ú c chp nhn truy cp h thng. (Chỳ ý rng,
mt khu ny ch cú giỏ tr trong mt khong thi gian nht nh. V trong khong thi
gian ny, ngi s dng s khụng th ang nhp li nu h thng khụng c thit lp li
hay khi to li). S/KEY v OPIE ó thc s c thit k bo v cỏc k tn cụng nh
replay attack, vỡ thụng tin mt khu ch cú giỏ tr cho mi phiờn lm vic, nú khụng th b
lõy bi mt cụng c mo danh hay s dng li ti thi im khỏc. Tuy nhiờn, mt thụng tin
mó hoỏ yu cng cú th lm h thng nh S/KEY hay OPIE cú th cú l hng nh mt mt
khu yu. Vỡ vy, ban u, chỳng ta cn quay li ni m chỳng ta xut phỏt: ú chớnh l s
dng cỏc mt khu cú di ln.
3.1.6 Cỏc cụng c:
An ton ca mt khu trờn cỏc h thng *.nix bao gm 3 khớa cnh chớnh: u tiờn, bn
phi to cỏc mt khu v cỏc bng bm vi khú cho cỏc k tn cụng khú cú th phỏ mó

c. Bn cú th thc hin iu ny s dng cỏc file mt khu, nh hn ch quyn truy cp
hn l thay i file chun /etc/passwd file. Th hai, bn phi mó hoỏ mt khu khi truyn
tin. Thay th cỏc giao thc s dng vic chng thc dng text vi cỏc dng chng thc
c mó hoỏ. Th ba, m bo rng thut toỏn mó hoỏ, bn thõn nú l an ton. Khụng cú
phng thc mó hoỏ no l hon ho; s dng thut toỏn mó hoỏ mnh nhng ni cú
th (MD5 hay MD4 hay th tc mó hoỏ crypt). Thm chớ khi bn s dng thut toỏn mó
hoỏ, cỏc mt khu mnh vn l phng thc tt nht bo v vic phỏ mó hay oỏn mt
khu. Cui cựng, vic kim tra cỏc mt khu ca bn (vớ d: vi quyn truy cp) l mt
trong nhng cỏch tt nht nõng cao an ton cho h thng ca bn. Cỏc cụng c nh
Crack rt hu ớch khụng ch cho nhng k tn cụng m cũn cho c nhng ngi qun tr
an ton h thng. Ton b cỏc cụng c c lit kờ trong bng sau:
Cụng c
kim tra
Phiờn bn
hin ti
Cú sn ti Mụi trng chy
Crack 5.0a
Trung tõm nghiờn cu giỏo dc thuc
trng i hc Purdue (CERIAS)
*nix; Solaris, Linux, FreeBSD,
NetBSD, OSF, and Ultrix
anlpasswd 2.3
Cú rt nhiu Website cung cp, gm c
server FTP ca CERIAS
*nix
npasswd
Thuc trng i hc Texas ti Austin v
ti mt s website khỏc
BSDI, FreeBSD, NetBSD,
SunOS, UNIX, and Ultrix

passwd+ 5.0a
Trng i hc Dartmouth v mt s
website khỏc. a ch download:
/>*nix
9
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
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
3.2 Cấu hình hệ thống
3.2.1 Tài khoản root:
Tài khoản root là được gán quyền nhiều nhất trên một hệ thống Unix. Taì khoản "root" không
có một hạn chế bảo mật nào. Điều này có nghĩa là hệ thống cho rằng bạn biết những gì bạn đang làm, và
sẽ thực hiện chính xác những gì bạn yêu cầu - không có câu hỏi nào được đặt ra về những điều đó.
Chính vì vậy, nó rất rễ dàng với một câu lệnh nhập sai có thể sẽ xóa sạch tất cả các tập tin hệ thống. Vì
vậy khi sử dụng tài khoản này bạn phải tuyệt đối cẩn thận tránh những lỗi lầm đáng tiếc. Để phục vụ
cho các lý do bảo mật không cần phải log-in vào máy server của bạn như là "root". Hơn nữa, nếu bạn
không có làm việc trên máy server của bạn, thì đừng nên vào và ra khỏi hệ thống như là "root"- điều này
là rất dở.
Đặt thời gian time-out login cho tài khoản root:

Mặc dù được lưu ý là không nên vào hệ thống với account là "root" và logout khi không làm
việc trên máy server, tuy nhiên vẫn có những người quản trị hệ thống vẫn còn lưu lại màn hình login
như "root" hay quên ra khỏi hệ thống (logout) sau khi kết thúc công việc của họ hoặc rời khỏi các máy
trạm không cùng với tài khoản nào. Để giải quyết vấn đề này ta tạo một bash shell tự động logout sau
khi không được dùng trong một khoảng thời gian. Để thực hiện điều đó, bạn phải đặc biến đặc biệt của
Linux được đặt tên là "TMOUT" tới thời gian tính bằng giây không có thao tác nào được nhập vào
trước khi logout.
Chỉnh sửa tập tin profile của bạn "vi /etc/profile" và thêm dòng sau vào một nơi nào đó bên dưới dòng
chứa "HISTFILESIZE=" trong tập tin này:
TMOUT=7200
Giá trị mà chúng ta nhập vào cho biến "TMOUT=" là được tính bằng giây và biểu thị 2 giờ
(60*60=3600*2=7200 giây). Điều quan trọng là hãy ghi chú rằng nếu bạn quyết định đặt dòng trên vào
trong tập tin "/etc/profile", khi đó việc tự động logout sau 2 giờ nếu không có các hành động nào sẽ
được áp dụng cho tất cả mọi người sử dụng trên hệ thống. Nếu bạn thích điều khiển việc tự động logout
chỉ cho một user cụ thể nào đó bạn có thể đặt biến này trong tập tin riêng ".bashrc" của họ.
Sau khi tham số này đã được đặt lại trên hệ thống, bạn phải logout và login lại lần nữa (như root) cho
việc thay đổi có tác dụng.
3.2.2 Tập tin "/etc/exports"
Nếu bạn đang xuất ra các hệ thống tập tin dùng dịch vụ NFS, thì bảo đảm cấu hình tập tin
"/etc/exports" với hạn chế truy cập tối đa. Điều này có nghĩa là không dùng các ký tự đại
10
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
diện (wild-cards), không cho phép root truy xuất ghi, và chỉ mount dưới dạng chỉ đọc khi
có thể.Soạn thảo tập tin exports (vi /etc/exports) và thêm vào:
Lấy một ví dụ:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
Trong đó "dir/to/export" là thư mục mà bạn muốn xuất ra (export),
host#.mydomain.com là máy được phép login và thư mục, tùy chọn <ro> nghĩa là mount
chỉ đọc và tùy chọn <root_squash> là không cho phép root truy xuất ghi trong thư mục

này.Để việc thay đổi này có tác dụng bạn sẽ cần chạy lệnh sau trên máy trạm của bạn:
[root@deep] # /usr/sbin/exportfs -a
Ghi chú: Bạn nên nhớ rằng, mặc định có một dịch vụ NFS có sẵn trên hệ thống có thể có một rủi ro
về bảo mật.
3.2.3 Vô hiệu hóa việc truy cập chương trình console
Trong một môi trường an toàn nơi mà chúng ta chắc chắn rằng console được bảo mật bởi vì các mật
khẩu cho BIOS và LILO đã được thiết lập và tất cả các công tắc nguồn và reset của hệ thống đã bị vô
hiệu hóa, nó có thể có lợi để vô hiệu hóa hoàn toàn tất cả các console-equipvalent truy xuất tới các
chương trình như tắt hẳn hệ thống (shutdown), khởi động lại hệ thống (reboot), và treo hệ thống (halt)
cho những người sử dụng hợp lệ trên máy server của bạn.
Để làm việc này , chạy dòng lệnh sau:
[root@deep /]# rm -f /etc/security/console.apps/<servicename>
Trong đó (servicename> là tên của chương trình mà bạn muốn vô hiệu hóa truy cập
console-equivalent. Tuy nhiên, trừ khi bạn dùng xdm, hãy cẩn thận không xóa tập tin
xserver hoặc là không ai ngoài root có thể khởi động hệ thống xserver. (Nếu bạn luôn dùng
xdm để khởi động xserver, root là người sử dụng duy nhất cần để khởi động X, trong
trường hợp này, bạn thật sự muốn xóa tập tin xserver.
Như ví dụ sau:
[root@deep /]# rm -f /etc/security/console.apps/halt
[root@deep /]# rm -f /etc/security/console.apps/poweroff
[root@deep /]# rm -f /etc/security/console.apps/reboot
[root@deep /]# rm -f /etc/security/console.apps/shutdown
[root@deep /]# rm -f /etc/security/console.apps/xserver (nếu xóa bỏ,chỉ root là người có thể khởi động X).
Việc này sẽ vô hiệu hóa console-equivalent truy cập tới các chương trình halt, poweroff, reboot và
shutdown. Một lần nữa, chương trình xserver chỉ áp dụng khi mà bạn đã cài đặt giao diện Xwindow trên
hệ thống của bạn.
Ghi chú: Nếu cài đặt theo các bước của chương trình, thì giao diện Xwindow không được cài đặt trên
máy server và tất cả các tâpj tin được mô tả sẽ không xuất hiện trong thư mục " / etc / security". do
vậy đừng chú ý các bước trên.
Vô hiệu hóa tất cả truy cập console

Thư viện Linux-PAM được cài đặt mặc định trên hệ thống của bạn cho phép các người quản trị hệ
thống chọn cách để các ứng dụng xác nhận những người sử dụng như thế nào, vi dụ như truy cập
11
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
console. truy cập tập tin và chương trình. Để vô hiệu hóa tất cả các truy cập này cho những người sử
dụng, bạn phải đánh dấu # vào đầu tất cả các dòng có tham chiếu tới pam_console.so trong thư mục
"/etc/pam.d" (nghĩa là bạn chuyển các dòng đó thành ghi chú (comment line). Đoạn script sau sẽ thực
hiện mánh lới một cách tự động. Đăng nhập như "root", tạo tập tin script disabling.sh (gõ disabling.sh)
và thêm các dòng sau vào bên trong:
# !/bin/sh
cd /etc/pam.d
for i in * ; do
sed '/[^#].*pam_console.so/s/^/#/' < $i > foo $$ mv foo $i
done
Làm script này có thể thực thi với lệnh sau và thi hành nó:
[root@deep /]# chmod 700 disabling.sh
[root@deep /]# ./disabling.sh
Việc này sẽ đánh dấu là dòng ghi chú (comment line) lên tất cả các dòng tham chiếu đến
"pam_console.so" trong tất cả các tập tin nằm trong thư mục /etc/pamd. Sau khi script được thi hành, có
thể xóa nó khỏi hệ thống.
3.2.4 Tập tin "/etc/inetd.conf"
Inetd cũng được gọi là "super server", sẽ nạp một chương trình mạng dựa trên một
yêu cầu từ một hệ thống mạng. Tập tin "inetd.conf" báo cho inetd biết cổng (port) nào
dùng để lắng nghe và server nào khởi động cho mỗi port. Việc đầu tiên cần xem xét là khi
mà bạn đặt hệ thống Linux của bạn lên bất kỳ mạng nào thì các dịch vụ (service) nào mà
bạn cần đưa ra. Các dịch vụ mà bạn không cần đưa ra nên vô hiệu hóa và gỡ bỏ, như vậy
bạn sẽ có rất ít điều lo ngại về nó, và những kẻ tấn công sẽ có ít cơ hội để tìm kiếm lỗ hổng
trên hệ thống của bạn. Nhìn vào tập tin "/etc /inetd.conf" để xem những dịch vụ nào mà nó
được cung cấp bởi chương trình inetd của bạn. Vô hiệu hóa những gì mà bạn không cần
bằng cách thêm một dấu # ở ngay đầu dòng, và sau đó gửi đến tiến trình inetd của bạn một

lệnh SIGHUP để cập nhập nó tới tập tin "inetd.conf" hiện hành.
Bước 1.
Thay đổi các quyền hạn trên tập tin này là 600.
[root@deep /]# chmod 600 /etc/inetd.conf
Bước 2.
Bảo đảm rằng người sở hữu là root.
[root@deep /]# stat /etc/inetd.conf
File: "/etc/inetd.conf"
Size: 2869 Filetype: Regular File
Mode: (0600/-rw--------) Uid: ( 0/ root) Gid: ( 0/root)
Device: 8,6 Inode: 18219 Links: 1
Access: Web Sep 22 16:24:16 1999(00000.00:10:44)
Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Change: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Bước 3.`
Chỉnh sửa tập tin inetd.conf (vi /etc/inetd.conf) và vô hiệu hóa các dịch vụ như sau:
ftp, telnet, shell, login, exec, talk, imap, pop-2, finger, auth, v.v.. trừ khi bạn có kế hoạch
dùng nó. Nếu nó bị tắt thì nó sẽ bớt rủi ro.
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcp in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
12
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd

#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -| -e -o
# End of inetd.conf
Ghi chú: Đừng quên gửi tới tiến trình inetd một tín hiệu SIGHUP (killall -HUP inetd) sau khi thực
hiện các thay đổi trên tập tin inetd.conf. Các dịch vụ kích hoạt trên một host được chọn phụ thuộc vào
các chức năng mà bạn muốn host cung cấp. Các chức năng có thể hỗ trợ dịch vụ mạng được chọn,
các dịch vụ khác được host trên máy tính này, hay việc phát triển và bảo trì của hệ điều hành và các
ứng dụng.
[root@deep /]# killall -HUP inetd
Bước 4:
Một biện pháp bảo mật nữa mà bạn có thể áp dụng để bảo mật tập tin "inetd.conf" là đặt nó không thay
đổi, dùng lệnh chattr. Để đặt tập tin không thay đổi gì, thi hành lệnh sau:
[root@deep /]# chattr +i /etc/inetd.conf
Việc này sẽ ngăn chặn bất kỳ sự thay đổi (xảy ra bất ngờ hay trong các trường hợp khác) với tập tin
"inetd.conf". Một tập tin với thuộc tính không thay đổi "i" sẽ làm cho tập tin không thể hiệu chỉnh, xóa
hay đổi tên, không có mối liên kết nào có thể được tạo cho tập tin này và không dữ liệu nào có thể được
ghi đến nó. Chỉ có một người có thể đặt hay xóa thuộc tính này là super-user root.
Nếu bạn muốn hiệu chỉnh tập tin inetd.conf bạn sẽ cần phải gỡ bỏ cờ hiệu không được thay đổi :
- Để gỡ cờ hiệu không được thay đổi, đơn giản thi hành lệnh sau:
[root@deep /]# chattr -i /etc/inetd.conf
3.2.5 TCP_WARPPERS
Mặc nhiên Red Hat Linux cho phép tất cả các yêu cầu dịch vụ. Dùng TCP_WARPPERS
thực hiện bảo mật các máy server của bạn để chống sự xâm phạm từ bên ngoài thì đơn giản
và dễ dàng hơn rất nhiều những gì bạn suy nghĩ. Từ chối tất cả các host bằng cách đặt
"ALL:ALL@ALL, PARANOID" trong tập tin "/etc/hosts.deny" và đồng thời liệt kê tường
minh danh sách các host đáng tin cậy đã được phép truy cập tới máy của bạn vào trong tập
tin "/etc/hosts.allow". Đây là cách cấu hình an toàn tốt nhất. TCP_WRAPPERS được điểu
khiển từ hai tập tin và việc tìm kiếm dừng lại ở lần thấy đầu tiên.

/etc/hosts.allow
/etc/hosts.deny
- Quyền truy cập được gán khi một cặp (daemon, client) xứng hợp với một mục trong tập
tin /etc/hosts.allow.
- Bằng không, quyền truy cập bị từ chối khi một cặp (daemon, client) xứng hợp với một
mục trong tập tin /etc/hosts.deny.
13
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
- Còn lại, quyền truy cập sẽ được gán.
Bước 1:
Soạn thảo tập tin hosts.deny (vi /etc/hosts.deny) và thêm vào các dòng sau:
Access is denied by default.
# Deny access to everyone.
ALL: ALL@ALL, PARANOID # Matches any host whose name does not
# match its address, see bellow
Điều này có ý nghĩa cho tất cả các dịch vụ, tất cả các vị trí, do vậy bất kỳ dịch vụ nào đều
bị ngăn chặn lại, trừ khi chúng được phép truy cập một cách tường minh bởi các mục trong
tập tin allow.
Ghi chú: Về tham số "PARANOID"; Nếu có ý định muốn chạy các dịch vụ telnet hoặc ftp
trên máy server, đừng quên thêm vào tên máy client và địa chỉ IP trong tập tin " / etc /
hosts" trên server hay có thể chờ đợi trong nhiều phút cho việc tìm kiếm DNS tới thời gian
time out, trước khi có được một dấu nhắc login.
Bước 2:
Soạn thảo tập tin hosts.allow (vi /etc/hosts.allow) và giả sử thêm vào dòng sau:
# Host được ủy quyền rõ ràng thì được liệt kê trong tập tin allow.
# Như ví dụ sau:
sshd: 208.164.186.1 gate.openna.com
Đối với máy client: 208.164.186.1 là địa chỉ IP và gate.openna.com host của một trong
client của bạn được phép dùng dịch vụ sshd.
Bước 3"

Chương trình tcpdchk là trình kiểm tra cấu hình tcpd wrapper. Nó thăm dò cấu hình tcp
wrappepr và báo về tất cả các vấn đề hiện có hay vấn đề tiềm ẩn mà nó tìm ra được.
- Sau khi việc cấu hình hoàn tất, chạy chương trình tcpdchk.
[root@deep /]# tcpdchk
Ghi chú: Các thông điệp lỗi trông giống như thế này: warning: / etc / hosts.allow, line 6:
can't verify hostname: gethostbyname(win.openna.com) failed. Nếu nhận kiểu thông điệp
lỗi này, hãy kiểm tra trong tập tin cấu hình DNS để biết sự tồn tại của hostname.
Đừng để hiển thị các tập tin thông tin hệ thống. Nếu không muốn hiển thị các tập tin thông
tin hệ thống khi mọi người log-in từ xa, ta có thể thay đổi tùy chọn telnet trong tập tin
"/etc/inetd.conf" trông giống như thế:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
Thêm vào cờ hiệu "-h" ở cuối dòng lệnh sẽ cho daemon không hiển thị bất kỳ thông tin hệ
thống nào và chỉ hiện dấu nhắc login cho người sử dụng. Mẹo vặt này chỉ cần thiết nếu
dùng một telnet daemon trên máy server (khuyên dùng SSH).
3.2.6 Tập tin "/etc/host.conf"
Linux sử dụng một thư viện phân giải để lấy một địa chỉ IP tương ứng với một host name. Tập tin
"/etc/host.conf" chỉ rõ các tên được phân giải như thế nào. Các mục trong tập tin "etc/host.conf" để bảo
các thư viện phân giải các dịch vụ nào cần dùng, và sắp theo thứ tự nào để phân giải các tên.
Soạn thảo tập tin host.conf (vi /etc/host.conf) và thêm vào các dòng sau:
# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We have machines with multiple IP addresses.
14
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
multi on
# Check for IP address spoofing.
nospoof on
Tùy chọn order chỉ rõ thứ tự của các dịch vụ. Ví dụ mẫu này chỉ rõ ràng như việc phân giải đầu tiên
nên tham khảo các name server để phân giải một tên (name) và sau đó kiểm tra tập tin "/etc/hosts". Để
đạt hiệu quả cao và bảo mật tốt hơn thì nên đặt thư viện phân giải theo thứ tự đầu tiên là kiểm tra name

server (bind) sau đó tập tin hosts (hosts) cho việc thực thi và bảo mật được tốt hơn trên tất cả các máy
server. Dĩ nhiên phải có phần mềm DNS/BIND được cài đặt sẵn hay việc cấu hình sẽ không làm việc.
Tùy chọn multi xác định một host trong tập tin "/etc/hosts" có thể có nhiều địa chỉ IP (multiple interface
ethN). Các host mà có nhiều hơn một địa chỉ IP được biết đến là multiomed, bởi vì sự hiện diện của
nhiều địa chỉ IP bao hàm rằng host có nhiều giao tiếp mạng. Lấy một ví dụ, một Gateway Server sẽ luôn
có nhiều địa chỉ IP và phải có tùy chọn này được đặt là ON. Tùy chọn nospoof chỉ rõ hãy cẩn thận
không được phép ngụy trang trên máy này. IP-Spoofing là môt thành tích bảo mật chói lọi, nó làm việc
bởi các mẹo văt máy tính trong một mối quan hệ đáng tin cậy mà bạn là một người nào đó mà thật sự
không phải vậy. Trong loại hình tấn công này, một máy được cài đặt như một server hợp pháp và khi đó
sinh ra các kết nối và các loại hoạt động mạng khác tới các hệ thống đầu cuối hợp pháp, các server khác
hay các hệ thông lưu trữ dữ liệu lớn. Tùy chọn này phải được đạt ON cho tất cả các loại server.
3.2.7 Tập tin "/etc/services"
Các số cổng (port number) được dùng cho các dịch vụ chuẩn được đưa ra trong RFC 1700 "Assigned
Numbers". Tập tin "/etc/services" cho phép các chương trình server và client để chuyển đổi tên dịch vụ
tới các số port này. Danh sách này thì được lưu giữ trong mỗi host trong tập tin "/etc/services". Chỉ
người sử dụng "root" là được phép thay đổi nội dung tập tin này và rất hiếm khi phải chỉnh sửa tập tin
"/etc/services" để tạo sự thay đổi kể từ khi nó đã chứa đựng nhiều tên dịch vụ tương ứng tới các số port.
Để cải tiến việc bảo mật, chúng ta có thể làm tập tin này trở nên không bị chỉnh sửa (immunize) để ngăn
chặn việc xóa hay thêm vào các dịch vụ mà không được ủy quyền.
- Để định cho tập tin "/etc/services" không thay đổi, dùng lệnh:
[root@deep /]# chattr +i /etc/services
3.2.8 Tập tin "/etc/securetty"
Tập tin "/etc/securetty" cho phép bạn chỉ rõ các thiết bị TTY nào mà người sử dụng "root" được phép
login vào. Tập tin "/etc/securetty" được đọc bởi chương trình login (thường là "/bin/login"). Định dạng
của nó là một danh sách các tên thiết bị tty được phép và đối với tất cả các thứ khác thì được chú giải
hoặc không xuất hiện trong tập tin này, đăng nhập với root thì không được phép.
Vô hiệu hóa bất kỳ tty mà bạn không cần đến bằng cách đặt dấu chú giải (#) cho chúng (dấu # ở đầu
dòng).
Chỉnh sửa tập tin securetty (vi /etc/securetty) và đặt dấu chú giải lên các dòng sau:
tty1

#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
15
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
Có nghĩa là root chỉ được phép login vào tty1. Đây là lời khuyên của chúng tôi, cho phép "root" chỉ
login vào môt thiết bị tty và dùng lệnh "su" để chuyển sang "root" nếu bạn cần nhiều quyền hơn. Các
thiết bị phải log-in như "root"
3.2.9 Các tài khoản đặc biệt:
Có một điều quan trọng là cần vô hiệu hóa tất cả các tài khoản mặc định của
nhà sản xuất mà không dùng trong hệ thống (một số tài khoản tồn tại mặc nhiên ngay cả
khi không cài đặt các dịch vụ liên quan trên máy server). Việc này nên được kiểm tra sau
mỗi lần nâng cấp hay cài đặt phần mềm mới. Linux cung cấp các tài khoản này cho các
hoạt động hệ thống khác nhau,có thể không cần nếu các dịch vụ không được cài đặt trên hệ
thống server. Nếu không cần các tài khoản nào, thì xóa chúng. ta có càng nhiều tài khoản
thì việc truy cập hệ thống sẽ dễ dàng hơn. Để xóa người sử dụng trên hệ thống, dùng lệnh:
[root@deep /]# userdel username
- Để xóa nhóm người sử dụng trên hệ thống của bạn, dùng lệnh:
[root@deep /] # groupdel groupname
Bước 1:
Gõ các lệnh sau trên máy terminal của bạn để xóa các người sử dụng được liệt kê bên
dưới:
[root@deep /]# userdel adm
[root@deep /]# userdel Ip
[root@deep /]# userdel sync
[root@deep /]# userdel shutdown

[root@deep /]# userdel halt
[root@deep /]# userdel news
[root@deep /]# userdel uucp
[root@deep /]# userdel operator
[root@deep /]# userdel games (Xóa user này khi không dùng X Window).
[root@deep /]# userdel gopher
[root@deep /]# userdel ftp (Xóa user này khi không dùng ftp anonymous server).
Ghi chú: Mặc định, lệnh "userdel" sẽ không xóa một thư mục home của người sử dụng.
Nếu muốn thư mục home của các tài khoản cũng được xóa, thì phải thêm tùy chọn "-r" vào
lệnh userdel.
Bước 2:
Gõ các lệnh sau trên máy terminal để xóa nhóm các người sử dụng được liệt kê bên dưới:
[root@deep /]# groupdel adm
[root@deep /]# groupdel Ip
[root@deep /]# groupdel news
[root@deep /]# groupdel uucp
[root@deep /]# groupdel games (Xóa group này khi khong dùng X Window).
[root@deep /]# groupdel dip
[root@deep /]# groupdel ppusers
[root@deep /]# groupdel popusers (xóa group này khi không dùng pop server cho email).
[root@deep /]# groupdel slipusers
Bước 3:
Thêm các người sử dụng cần thiết vào hệ thống:
[root@deep /]# useradd admin
[root @deep /]# passwd admin
Bước 4:
Bit không thay đổi có thể được dùng để ngăn chặn việc xóa ngẫu nhiên hay ghi chồng lên
một tập tin cân được bảo vệ. Nó cũng ngăn chặn một ai đó tạo một biểu tượng liên kết tới
16
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)

tập tin này, mà nó là nguồn tấn công xoay quanh việc xóa "/etc/passwd", "/etc/group" hay
"/etc/gshadow".
- Để đặt bit không thay đổi trên các mật khẩu và các nhóm tập tin , dùng lệnh sau:
[root@deep /[# chattr +i /etc/passwd
[root@deep /[# chattr +i /etc/shadow
[root@deep /[# chattr +i /etc/group
[root@deep /[# chattr +i /etc/gshadow
Ghi chú: Trong tương lai, nếu có ý định thêm hay xóa các người sử dụng, tập tin passwd,
các nhóm người sử dụng, hay các tập tin group, thì phải gõ bỏ bit không làm thay đổi trên
tất cả các tập tin đó, nếu không sẽ không thể thay đổi được gì. Nếu như ta cũng có dự định
cài đặt một chương trình RPM sẽ tự động thêm một người sử dụng mới vào các tập tin
passwd hay group đã đặt bit không thay đổi, ta sẽ nhận được một thông điệp lỗi suốt quá
trình cài đặt, khi không gỡ bỏ bit không làm thay đổi từ các tập tin đó.
3.2.10 Ngăn chặn bất kỳ người sử dụng nào chuyển thành root bằng lệnh "su".
Lệnh su cho phép trở thành những người sử dụng tồn tại trên hệ thống, Ví dụ có thể trở thành
"root" tạm thời và thi hành các lệnh như một super-user "root". Nếu không muốn bất kỳ ai chuyển thành
root hay hạn chế "su" với một số người sử dụng nào đó, ta thêm vào hai dòng như sau vào đầu tập tin
cấu hình "su" trong thư mục "/etc/pam.d". Nên giới hạn những người được phép chạy lệnh "su" để thành
tài khoản root.
Bước 1:
Soạn thảo tập tin su (vi /etc/pam.d/su) và thêm vào hai dòng sau vào phía trên đầu tập tin:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
Sau khi thêm vào các dòng trên, tập tin "/etc/pam.d/su" sẽ trông giống như thế này:
#%OAM-1.0
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so

password required /lib/security/pam_pwdb.so shadow use_authtok nullok
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_xauth.so
Có nghĩa là chỉ có những người sử dụng là thành viên của nhóm "wheel" có thể dùng lệnh
su chuyển thành root; nó cũng bao gồm logging.Chú ý rằng nhóm "wheel" là một tài khoản
đặc biệt trên hệ thống mà cũng có thể được dùng cho mục đích này. Không thể dùng bất
kỳ tên nhóm để thực hiện mánh khóe này. Mánh khóe này được kết hợp với việc chỉ rõ các
thiết bị TTY nào mà root được phép login vào sẽ cải tiến rất nhiều việc bảo mật trên hệ
thống.
3.2.11 Securing Your Files
Bảo mật từ cấp độ quyền truy cập file. Khi không muốn sự tò mò từ những người
khác, ta có thể tạo file mặt nạ để có quyền bảo mật file tối đa. Tất nhiên việc bảo mật này
17
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
ch cú ý ngha khi cú nhiu hn mt ngi s dng trong h thng. Khi cú rt nhiu ngi
s dng thỡ ch quyn c ghi v khụng bt k quyn no cho cỏc user khỏc.
3.2.12 Bo v th mc trờn web server
Nhiu web servers, trong ú cú Apache thng dựng file .htaccess bo v cỏc
th mc trờn web server. Nu mt th mc no ú trờn web server cú lu file .htaccess, khi
duyt qua th mc ny, web server s popup mt hp thoi yờu cu nhp username v mt
khu. Ch khi no nhp vo mt username v mt khu ỳng, ta mi cú th xem c trong
th mc ú cú nhng gỡ. Danh sỏch cỏc username v mt khu ca .htaccess thng c
lu trong file .htpasswd. Ti sao phi dựng du chm trc trong tờn file '.htaccess'. Cỏc
file cú tờn bt u l mt du chm '.' s c cỏc web servers xem nh l cỏc file cu
hỡnh. Cỏc file ny s b n i(hidden) khi bn xem qua th mc ó c bo v bng file
.htaccess
Bc 1: chun b username v mt khu cho .htaccess
[t@localhost /]# htpasswd -c ./users vicki
New password: tyt
Re-type new password: tyt

Adding password for user vicki
-c to file mi
Sau khi chy dũng lnh trờn, trong th mc hin ti s xut hin file users vi ni dung nh
sau:
vicki:JNSQVx3F3/n0c
File lu username v mt khu cú dng nh sau:
<username1>:<encrypted-password1>
<username2>:<encrypted-password2>
...
<usernamen>:<encrypted-passwordn>
Password thng c mó húa bng thut toỏn DES(Data Encryption Standard).
DES c dựng rt ph bin trờn Unix/Linux(*nix), c bit l trong cỏc files
/etc/passwd hoc /etc/shadow. DES rt khú b crack.
Ngoi cỏch encrypt password bng htpasswd nh trờn, cng cú th dựng Perl code
sau encrypt:
...
$encpass = &encrypt($password);
...
sub encrypt {
my($plain) = @_;
my(@salt);
@salt = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
srand(time() ^ ($$ + ($$ << 15)) );
return crypt($plain, $salt[int(rand(@salt))] . $salt[int(rand(@salt))] );
}
18
an toµn vµ b¶o mËt th«ng tin trªn linux HÖ thèng b¶o mËt vµ ph¸t hiÖn x©m nhËp m¹ng (Nids)
Bước 2: tạo 1 file .htaccess với nội dung như sau:
AuthName "Khu vực cấm"
AuthType Basic

AuthUserFile /somepaths/users
require user vicki
# nếu bạn đang dùng Apache Server, hãy thêm các dòng sau vào
# để ngăn chặn users download các files .htaccess & .htpasswd
<files .htaccess>
Order allow,deny
Deny from all
</files>
<files .htpasswd>
Order allow,deny
Deny from all
</files>
AuthName "Khu vực cấm" // tiêu đề của hộp thoại sẽ được popup
AuthUserFile /var/www.users // đường dẫn đầy đủ đến file lưu username & mật khẩu
require user vicki // danh sách các username được phép
Bước 3: tạo 1 thư mục trên web server, chẳng hạn như 'security', upload file .htaccess vào
thư mục này, chmod 644 cho file .htaccess và users. Thử upload vài files khác vào
'security'
Bước 4: mở trình duyệt web và vào thư mục 'security', http://localhost/security/ sẽ nhận
được một hộp thông báo yêu cầu nhập username & password. Thử dùng username=vicki &
password=tyt, sẽ thấy được các files trong 'security' directory.
Hack .htaccess & .htpasswd
1/ Một số người sơ ý không chmod đúng cho files .htaccess và .htpasswd. Vì vậy hacker có
thể dễ dàng download chúng về máy tính của mình. Sau đó hacker tìm một công cụ crack
DES bằng tự điển như John the Ripper hoặc CrackJack để crack file .htpasswd
2/ Sử dụng các công cụ hack tự động
hacker có thể sử dụng WWWHack ( hoặc Brutus
( để hack các websites được bảo vệ bằng files .htaccess và
.htpasswd. Đây là các công cụ tấn công bằng tự điển gọn nhẹ nhưng đa năng, có hổ trợ
proxy, rất dễ sử dụng. Tuy nhiên, nếu password quá khó hoặc tốc độ đường truyền của

websites không tốt, phải hàng giờ để WWWHack hoặc Brutus hoàn thành nhiệm vụ.
WWWHack và Brutus làm việc như thế nào? DES(Data Encryption Standard) dường như
rất khó bị crack, chỉ có một cách duy nhất và cũng là dễ nhất là dùng tự điển. WWWHack
và Brutuslàm việc gần giống như nhau. Chúng sẽ chọn một password bất kì trong tự điển,
sau đó gởi đến website. Nếu nhận được HTML status code 401 - Authorization Required,
"Access Denied", "Enter your password again" có nghĩa là password không đúng, chúng sẽ
thử lại với một password khác có trong tự điển. Nếu nhận được HTML status code 200
OK, ... có nghĩa là password đúng, hay nói cách khác là đã bị crack.
19
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
3.2.13 XWindows Security
Motivation / introduction.
Tính bảo mật của XWindows rất kém. Trên một mạng máy tính Unix, bất cứ ai
cũng có thể kết nối và mở một màn hình X, đọc các cú gõ phím, chụp trạng thái màn
hình, chạy các ứng dụng không đợc bảo vệ...Dù rằng đấy là những sự việc đợc cảnh
báo nhiều trong thế giới bảo mật Unix.
How open X displays are found.
Làm thế nào để mở một cửa sổ XWindows từ xa? Nếu Server không bị Disabled
XWindows thì ta chỉ việc gõ lệnh:
$ xhost +
Cụ thể có thể kết nối đến một Server đơn lẻ với màn hình XWindows bằng lệnh:
$ xhost + ZZZ.ZZZ.ZZZ.ZZZ
Z là địa chỉ IP hay Hostname của Server mà bạn Connect. Sự điều khiển truy nhập có
thể đợc chấp nhận khi phát lệnh:
$ xhost -
Trong câu lệnh trên không có Host, nhng một kết nối đến local-host có thể đợc thiết
lập. Nếu Display chạy ở trạng thái "xhost -". Thì ta đang ở trạng thái an toàn từ những
chơng trình, cũng nh hớng tới những màn hình XWindows cha đợc bảo vệ. Bạn có thể
kiểm tra sự truy nhập của màn hình X của bạn bằng cách gõ "xhost" từ Shell lệnh.
Mặc định các Server chạy X đều bị vô hiệu hoá quyền điều khiển truy nhập. Dễ dàng

phát hiện ra các Server nào đang chạy X bằng vô số các Tool trên Internet (NSS).
The localhost problem
Chạy màn hình X với sự điều khiển truy nhập đợc cho phép bởi lệnh "xhost -" sẽ
bảo vệ từ XOpenDisplay thông qua Port 6000, đó cũng chính là cách mà các Hacker
có thể qua mặt các hệ thống bảo vệ. Nếu bạn có thể đăng nhập vào mục tiêu cần tấn
công, thì bạn có thể kết nối tới X của local-host. Cách này thật đơn giản, chỉ bằng vài
dòng lệnh bạn có thể dump xuống đợc trạng thái màn hình X của Host cần tấn công:
$ rlogin target
$ xwd -root -display localhost:0.0 > ~/snarfed.xwd
$ exit
$ xwud -in ~/snarfed.xwd
Dĩ nhiên, trong trờng hợp này bạn phải có một Acc hợp lệ trên hệ thống cần Attack,
phải đăng nhập đợc vào hệ thống và quan trọng là hệ thống đó phải chạy X. Ngoài
việc Dump màn hình, bạn còn có thể run đợc các ứng dụng ko đợc bảo vệ trên X
Server và chụp các cú gõ phím trên X Server....
Snooping techniques - dumping windows
Cách đơn giản nhất để chụp, dump vào các màn hình X từ các X Server là cách
sử dụng công cụ xwd.
20
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
Xwd: Là một công cụ phục vụ việc dump xuống các màn hình X. Nó cho phép Xusers
chụp lại các trạng thái của màn hình X rồi lu dới định dạng đặc biệt. Cửa sổ cần chụp
sẽ đợc lựa chọn bởi một cú nhấn Mouse. Nó còn có thể chụp ngay cả các cú gõ bàn
phím. Một công cụ khác là xwud. Ngoài các tính năng nh xwd nó còn có khả năng
đọc các file dump đợc lu giữ bởi các định dạng của các Tool khác. Bây giờ chúng ta
cùng xem xét dump màn hình X bằng cách sử dụng kết hợp: xwd và xwud.
Để dump toàn bộ màn hình X từ một host ta dùng lệnh:
$ xwd -root localhost:0.0 > file
Để xem những kết quả vừa thu đợc ở trên chúng ta cần phải đọc nó bằng lệnh:
$ xwud -in file

Những cửa sổ Xterm thì hơi khác. Bạn không thể chỉ rõ tên cũng nh sau đó dump nó
xuống. Tuy nhiên để dump Xternm bạn gõ lệnh:
$ xwd -name xterm
Toàn bộ cửa sổ X và Xternm sẽ đợc dump xuống và đọc bởi xwud.
Snooping techniques - reading keyboard
Nếu có thể kết nối đến một màn hình. Ta cũng có thể log vào hệ thống cũng nh
có thể chộp đợc những cú nhấn phím trên X Server. Một chơng trình lu hành trên
mạng, gọi xkey. Chơng trình đó có tên ttysnoop.c
Nh đã nói, các Hacker còn có thể đọc các cú nhấn phím của các cửa sổ đặc biệt.
Chẳng hạn nh cửa sổ ID đặc biệt của Root có thể đợc tóm bởi cách gọi hàm
XquerryTree(). Thờng thì Windows Manager thờng đợc dùng để điều khiển
Windows-ID, cũng nh những cú nhấn phím trong những khoảng thời gian xác định.
Việc sử dụng Windows Manager kết hợp với chức năng Xlib, những cú nhấn phím có
thể đợc tóm và KeySyms có thể đợc biến chuyển vào những đặc tính bởi cách tiếp tục
gọi đến Xlookstrin. Thậm chí hacker có thể gửi Keysims đến cho một cửa sổ. Hacker
không chỉ rình mò trên các hoạt động của nạn nhân, còn có thể gửi những sự kiện bàn
phím tới các quá trình, tơng tự nh là dùng bàn phím trên chính máy đó vậy!. Hacker
có thể đọc và ghi các sự kiện gõ phím của một cửa sổ Xtern từ xa.
Trojan X clients - xlock and X based logins
Bạn có nghĩ đến một chơng trình thích hợp hơn để thiếp lập một chú ngựa thành
Trojan chop mật khẩu tốt hơn xlock? Với vài dòng thêm vào xlock.c , password mỗi
ngời dùng sử dụng phiên bản Trojan biến thể của xlock có thể đợc lu giữ trong một
file và đợc sử dụng sau này bởi các Hacker. Nếu một User có một th mục Home
Directory có thể viết (./home) trong biến môi trờng đờng dẫn của mình, thì rất dễ bị
tấn công kiểu này. Để lấy đợc Password của họ hacker chỉ việc đặt phiên bản Xlock
biến thể (Trojan) vào Home Directory của họ và chờ hứng Password thôi. Thờng thì
trong trờng hợp này User không biết đợc rằng mật khẩu của mình đã bị tóm. Các biến
thể mang tính Trojan của Xlock cũng nh các chơng trình khác nh login...Có rất nhiều
trên các Site Hacking Unix.
3.2.14 TNG CNG AN NINH CHO KERNEL

Mc dự tha hng nhng c tớnh ca h thng UNIX v khỏ an ninh hn mt s
h iu hnh khỏc, h thng GNU/Linux hin nay vn tn ti nhng nhc im sau:
21
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
o Quyn ca user root cú th b lm dng. User root cú th d dng thay
i bt k iu gỡ trờn h thng.
o Nhiu file h thng cú th d dng b sa i. Nhiu file h thng quan
trng nh /bin/login cú th b sa i bi hacker cho phộp ng nhp
khụng cn mt khu. Nhng nhng file loi ny li him khi no thay i
tr phi khi nõng cp h thng.
o Cỏc module cú th c dựng chn kernel. Loadable Kernel Module l
mt thit k tt tng cng tớnh uyn chuyn, linh hot cho kernel.
Nhng sau khi mt module c np vo kernel, nú s tr thnh mt phn
ca kernel v cú th hot ng nh kernel nguyờn thy. Vỡ vy, cỏc chng
trỡnh mc ớch xu cú th c vit dng module v np vo kernel, ri sau
ú hot ng nh mt virus.
o Cỏc process khụng c bo v. Cỏc process nh web server cú th tr
thnh mc tiờu b tn cụng ca hacker sau khi thõm nhp h thng.
ci thin tớnh an ninh cho cỏc server Linux, chỳng ta cn cú mt kernel an ton hn.
iu ny cú th thc hin c bng cỏch sa i kernel nguyờn thu bng cỏc patch
tng cng tớnh an ninh cho h thng. Cỏc patch ny cú cỏc tớnh nng chớnh yu sau:
o Bo v bo v cỏc file h thng quan trng khi s thay i ngay c vi
user root. Bo v cỏc process quan trng khi b ngng bi lnh kill. Chn
cỏc tỏc v truy cp IO mc thp (RAW IO) ca cỏc chng trỡnh khụng
c phộp.
o Phỏt hin Phỏt hin v cnh bỏo vi ngi qun tr khi server b scan.
Cng nh khi cú cỏc tỏc v trờn h thng vi phm cỏc lut (rules) nh
trc.
o i phú Khi phỏt hin s vi phm trờn h thng, cỏc ghi nhn chi tit s
c thc hin cng nh cú th ngng lp tc phiờn lm vic gõy ra

Mt vi cụng c sa i kernel c s dng rng rói l LIDS (Linux Intrusion Detection
System), Medusa, ...
3.2.15 AN TON CHO CC GIAO DCH TRấN MNG
Cú rt nhiu dch v mng truyn thng giao tip thụng qua giao thc vn bn
khụng mó hoỏ, nh TELNET, FTP, RLOGIN, HTTP, POP3. Trong cỏc giao dch gia
ngi dựng vi mỏy ch, tt c cỏc thụng tin dng gúi c truyn qua mng di hỡnh
thc vn bn khụng c mó hoỏ. Cỏc gúi tin ny cú th d dng b chn v sao chộp
mt im no ú trờn ng i. Vic gii mó cỏc gúi tin ny rt d dng, cho phộp ly
c cỏc thụng tin nh tờn ngi dựng, mt khu v cỏc thụng tin quan trng khỏc. Vic s
dng cỏc giao dch mng c mó hoỏ khin cho vic gii mó thụng tin tr nờn khú hn v
giỳp bn gi an ton cỏc thụng tin quan trng. Cỏc k thut thụng dng hin nay l IPSec,
SSL, TLS, SASL v PKI. Qun tr t xa l mt tớnh nng hp dn ca cỏc h thng UNIX.
Ngi qun tr mng cú th d dng truy nhp vo h thng t bt k ni no trờn mng
thụng qua cỏc giao thc thụng dng nh telnet, rlogin. Mt s cụng c qun tr t xa c
s dng rng rói nh linuxconf, webmin cng dựng giao thc khụng mó hoỏ. Vic thay th
22
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
tt c cỏc dch v mng dựng giao thc khụng mó hoỏ bng giao thc cú mó hoỏ l rt khú.
Tuy nhiờn, bn nờn cung cp vic truy cp cỏc dch v truyn thng nh HTTP/POP3
thụng qua SSL, cng nh thay th cỏc dch v telnet, rlogin bng SSH
3.2.16 Open SSH
Gii thiu.
Open SSH l mt chng trỡnh mó ngun m (Open Source) c s dng
Encrypt (mó hoỏ) cỏc giao dch gia cỏc Host vi nhau bng cỏch s dng Secure Shell
(SSH). Nú l mt s thay th an ton cho nhng chng trỡnh c s dng kt ni
nh: Telnet, rlogin, rsh...Bi nú luụn luụn Encrypt tt c cỏc giao dch, n i, che du User
v Password c s dng cho nhng phiờn ng nhp t xa. Sau khi phiờn ng nhp
c thc hin, nú s tip tc Encrypt tt c nhng d liu giao dch gia 2 Host.
D ỏn OpenSSH c phỏt trin da trờn nn tng ca d ỏn Open BSD (mt OS thuc h
Unix). Nú c thit k s dng nhng thut toỏn mó hoỏ mnh nõng cao tớnh an

ton v ngn chn s phỏ hoi ca cỏc Hacker. Mc dự nú c xõy dng v phỏt trin bi
nn tng OpenBSD. Nhng nú cng cú kh nng tng thớch vag cú th hot ng trờn hu
ht cỏc OS thuc dũng h Unix: Linux, HP-UX, AIX, Irix, SCO, MacOS X, Cygwin,
Digital Unix/Tru64/OSF, SNI/Reliant Unix, NeXT, Solaris...
OpenSSH khụng phi l mt chng trỡnh. Nú l mt b cỏc chng trỡnh kt ni an ton:
- OpenSSH Client (ssh): Chng trỡnh c s dng cho cỏc ng nhp t xa. Vi s an
ton v Encrypt trong mi phiờn ng nhp mc cao. Nú l s thay th an ton cho:
rlogin v telnet ó t ra li thi v kộm an ton.
- Secure Copy Program (scp): c s dng cho vic Copy file t xa, Copy cỏc file t cỏc
Host khỏc nhau trờn Internet. Nú h tr User v Password.
- Secure File Transfer Program (sftp): c s dng phc cỏc yờu cu FTP mt cỏch an
ton.
- OpenSSH Deadmon (shhd): c OpenSSH chy ch Deadmon trờn cỏc h thng
Unix.
....
Trờn õy l nhng Tools chớnh khụng th thiu trong b OpenSSH. Ngoi ra cũn
rt nhiu Tools, Plugin, Addin na...
Ci t
ly OpenSSH lờn Homepage:
Down mt Version phự hp vi h thng ca mỡnh. Dựng Linux s Down gúi *.rpm. Sau
ú phỏt lnh:
#: rpm -Uvh *.rpm
Nu bn s dng cỏc h thng khỏc thỡ vic ci t nú cng tng t. Bn Down gúi phự
hp vi h thng ca mỡnh. Nú cú th l *.tar, *.tar.gz, *.gz...etc. Bung nộn nú vo mt th
mc.
#: ./configure
#: make
#: make install
Cỏc tớnh ni bt ca Open SSH
Open SSH cung cp khỏ nhiu tớnh nng giỳp cho vic truyn thụng gia 2 Host

23
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
tr lờn an ton. Di õy l mt s tớnh ni bt:
Kh nng mó hoỏ mnh bi vic s dng chun mó hoỏ 3 DES v Blowfish: C 2 chun
mó hoỏ trờn u uc cung cp min phớ v s dng rng rói nhiu nc trờn th gii.
3DES cung cp kh nng mó hoỏ chng thc thi gian. Blowfish cung cp kh nng mó
hoỏ nhanh hn. Cng nh nhng chun mó hoỏ khỏc c 2 chun nờu trờn u cung cp kh
nng mó hoỏ cỏc d trc khi nú c a vo ng truyn mt cỏch an ton.
Kh nng chng thc mnh bi vic s dng cỏc c ch Public Key, OPTs (One Time
Password), Keberos: Cú tỏc dng bo v chng li tớnh d tn thng trong quỏ trỡnh
chng thc bi vic khai thỏc v s dng cỏc k thut nh: IP Spoof, DNS Spoof, Fake
RouterCú 4 phng phỏp chng thc c Open SSH s dng :
- Ch chng thc Public Key
- S chng thc Host bi vic s dng Public Key kt hp vi .rhost
- S chng thc da trờn OPTs kt hp vi s/key
- S chng thc da trờn c ch Keberos
Mó hoỏ giao thc X11 cho vic s dng X Windows: Mó hoỏ d liu trong quỏ trỡnh s
dng X Windows gia 2 Host. c s dng chng li nhng cuc tn cụng t xa
nhm vo xterm nh Snooping, Hjacking
Mó hoỏ cho quỏ trỡnh chuyn i cng (Port Forwarding): Cho phộp quỏ trỡnh chuyn
i cỏc Port TCP/IP ti mt h thng khỏc thụng qua mt kờnh c mó hoỏ. Nú c s
dng cho nhng giao thc Internet chun khụng cung cp kh nng mó hoỏ d liu trờn
ng truyn nh: SMTP, POP, FTP, Telnet
i din chuyn tip cho nhng ng nhp vo cỏc mng n: Mt Key chng thc
ca ngi dựng cú th v thng c lu gi trờn PC ca h, nú cú th tr thnh mt
trm i din chng thc. Khi ngi s dng h thng truy cp t mt h thng mng
khỏc. Kt ni ca h s c chuyn ti cho trm i din chng thc ny. Nú cú tỏc dng
cho phộp ngi s dng truy cp n h thng ca bn mt cỏch an ton t bt k h thng
no.
Nộn d liu: Cung cp kh nng nộn d liu mt cỏch an ton. Nú rt cú ý ngha trờn

nhng h thng mng khụng c nhanh.
Chng thc chung cho Keberos v Andrew File System bng cỏch s dng Ticket:
Nhng ngi s dng Keberos v AFS s c cung cp mt Password chung s dng
v truy cp 2 dch v trờn trong mt thi gian nht nh.
Nguyờn lý hot ng ca Open SSH
Trc ht chỳng ta cựng tỡm hiu v c ch chng thc cho cỏc lnh *r (rlogin, rsh,
rcp). Khi s dng rlogin, iu kin u tiờn l ngi dựng ú phi cú mt Acc trờn h
thng m h mun ng nhp t xa ú. Chng hn trờn h thng cú Acc phongnv. Nu Log
vo trờn h thng cc b khi kt ni ti mt Host t xa s khụng cú bt c yờu cu hi
Password no khi truy nhp vo h thng t xa. n gin bi Acc phongnv ó c xỏc
nhn bi file .rhost c t trong th mc /home/phonnv trờn h thng t xa. File .rhost
cha ng Hostname v Username yờu cu cho cỏc Acc cn s dng ng nhp ti h
thng. Chng hn Hostname ca ta l vnzone.net v Username l phongnv. truy cp
n h thng khụng cn Passowd thỡ cỏc thụng tin v mỡnh trong file .rhost cú dng nh
sau:
Hostname Username
i vi Hostname phi l Hostname y ca h thng. i vi User phi l cỏc
24
an toàn và bảo mật thông tin trên linux Hệ thống bảo mật và phát hiện xâm nhập mạng (Nids)
User hp l ang tn ti trờn h thng m bn mun nh ngha. Mt vớ d c th: nu
mun s dng rlogin thỡ Admin phi to mt file .rhost trong /home/phongnv vi ni dung:
domain.com phongnv
Bõy gi khi ta mun ng nhp vo h thng ch vic phỏt lnh:
$: rlogin -l phongnv vnzone.net
Hn ch ca giao thc ny l cỏc d liu thụng tin i n Host khụng h c mó hoỏ. Nú
rt cú th b ỏnh hi c bi cỏc Sniffer. c bit l rt d b tn thng bi cỏc cuc
tn cụng: IP Spoof, DNS Spoof, Router SpoofVỡ nhng tớnh d tn thng trờn cỏc
Security khuyn cỏo bn nờn vụ hiu hoỏ cỏc r Service (rlogin, rsh). Thụng thng thỡ
trờn cỏc h thng Linux cu hỡnh tng th hot ng chung cho cỏc Service c cu hỡnh
trong file /etc/xinet.d , vụ hiu hoỏ cỏc r Service:

- Bn dựng vi, emacshay bt c trỡnh son tho vn bn no m bn mun m
/etc/init.d/xinet.d
- Tỡm on service login xoỏ chỳng i. Ghi li mi s thay i v thoỏt trỡnh son tho.
- Khi ng li xinetd.d Deadmon : /etc/init.d/xinet.d restart
- Nu cú th bn hóy vụ hiu hoỏ luụn Telnet Service bng cỏch trờn. Sau ú thay th
chỳng bng Open SSH.
Chỳng ta ó tỡm hiu qua nguyờn lý hot ng ca r Service. Bõy gi chỳng ta s
tỡm hiu v nguyờn lý hot ng ca Open SSH. iu u tiờn khng nh l : Open SSH
cung cp mt c ch chng thc khỏ an ton bi vic s dng nhng Public Key. Cỏc
Public Key li tip tc s dng cỏc Public Key hay Private Key cho s chng thc an ton.
Cỏc Private Key ch c s dng bi ngi dựng, cũn Public Key cú th c s dng
bi mi ngi . Mun Open SSH to ra cỏc DSA Private/Public Key bn dựng lnh:
shh-keygen -d
Cỏc DSA Private Key thng c lu tr /root/.ssh/id_dsa file. Cũn cỏc DSA Public
Key thng c lu tr /root/.ssh/id_dsa.pub Cỏc Public Key cn phi c i tờn
v Copy n th mc thớch hp trờn h thng xa mun s dng Open SSH. Di õy lit
kờ v trớ cng nhng Public Key m Open SSH s dng trong quỏ trỡnh chng thc:
SSH Version 2 Keys Local System Default Location Remote Host Location
Private Key $HOME/.ssh/id_dsa
Public Key $HOME/.ssh/id_dsa.pub $HOME/.ssh/authorized_keys2
SSH Version 1 Key Local System Default Location Remote Host Location
Private Key $HOME/.ssh/identity
Public Key $HOME/.ssh/identity.pub $HOME/.ssh/authorized_keys
Nhng file quan trng c Open SSH s dng xỏc nh nhng Public Key:
- $HOME/.ssh/known_hosts: Danh sỏch cỏc Public Key cho tt c cỏc Host cú User ng
nhp. Thng thỡ cỏc danh sỏch cỏc Host Public Key c lit kờ /etc/ssh_known_hosts
- /etc/ssh_known_hosts: Cha danh sỏch cỏc RSA Generated Public Key cho tt c cỏc
Host m h thng c bit. Bt c Host no mun ng nhp n h thng u phi cú
Public Key c lit kờ trong file ny. Admin trờn h thng ca bn cn phi lit kờ cỏc
Public Key ca nhng ngi s dng trong h thng mng ú

- /etc/ssh_known_hosts2: Cng nh ssh_know_host nú cha danh sỏch cỏc DSA Generated
25

×