Docstoc

Một số thủ thuật bảo mật linux

Document Sample
Một số thủ thuật bảo mật linux Powered By Docstoc
					Trong bài viết này, chúng tôi xin giới thiệu một số kinh nghiệm
nhằm nâng cao tính an toàn cho một hệ thống Linux (để dễ theo
dõi cho bạn đọc, chúng tôi sẽ minh hoạ bằng RedHat, một phiên
bản Linux rất phổ biến ở Việt Nam và trên thế giới). Hiện nay,
trên môi trường máy chủ, Linux ngày càng chiếm một vị trí quan
trọng. Nguyên nhân khiến Linux dần trở thành một đối thủ tiềm
nǎng của hệ điều hành Microsoft Windows là do tính ổn định, độ
linh hoạt và khả nǎng chịu tải lớn: đây là những đặc điểm quan
trọng hàng đầu của một hệ thống máy phục vụ. Tính bảo mật tốt
cũng là một trong những điểm nổi bật của Linux. Tuy nhiên, để
một hệ thống Linux có khả nǎng chống lại các cuộc tấn công,
người quản trị cũng cần phải nắm được một số kỹ nǎng nhất
định. Trong bài viết này, chúng tôi xin giới thiệu một số kinh
nghiệm nhằm nâng cao tính an toàn cho một hệ thống Linux (để
dễ theo dõi cho bạn đọc, chúng tôi sẽ minh hoạ bằng RedHat,
một phiên bản Linux rất phổ biến ở Việt Nam và trên thế giới).
1.1. Loại bỏ tất cả các account và nhóm đặc biệt Ngay sau khi cài
đặt Linux, người quản trị nên xoá bỏ tất cả các account và nhóm
(group) đã được tạo sẵn trong hệ thống nhưng không có nhu cầu
sử dụng, ví dụ như lp, sync, shutdown, halt, news, uucp,
operator, games, gopher, v.v... (Tuy nhiên bạn đọc cần biết rõ
những account và nhóm nào không cần cho hệ thống của mình
rồi hãy xoá) Thực hiện việc xoá bỏ account với lệnh : # userdel Ví
dụ, nếu không có nhu cầu về in ấn trên hệ thống, có thể xoá
account lp như sau: # userdel lp Tương tự như vậy, có thể thực
hiện việc xoá bỏ các nhóm không cần thiết với lệnh #
groupdel 2.2. Che giấu file chứa mật khẩu Từ lịch sử xa xưa của
Unix và cả Linux, mật khẩu của toàn bộ các account đã từng
được lưu ngay trong file /etc/password, file có quyền đọc bởi tất
cả các account trong hệ thống! Đây là một kẽ hở lớn cho các kẻ
phá hoại: Mặc dù các mật khẩu đều được mã hoá, nhưng việc
giải mã ngược là có thể thực hiện được (và có thể thực hiện khá
dễ dàng, đặc biệt vì cơ chế mã hoã mật khẩu không phải là khó
phá và ngày nay khả nǎng tính toán và xử lý của máy tính rất
mạnh). Vì lí do trên, gần đây các nhà phát triển Unix và Linux đã
phải đặt riêng mật khẩu mã hoá vào một file mà chỉ có account
root mới đọc được: file /etc/shadow. (Khi sử dụng phương pháp
này, để đảm bảo tính tương thích, nơi vốn đặt mật khẩu trong file
/etc/password người ta đánh dấu "x") Nếu bạn đọc đang sử dụng
các phiên bản RedHat gần đây (ví dụ RedHat 6.x hay 7.x) thì nhớ
chọn lựa Enable the shadow password khi cài đặt RedHat để sử
dụng tính nǎng che giấu mật khẩu này (Cũng thật may vì chọn
lựa này là mặc định trong hầu hết các phiên bản Linux đang sử
dụng rộng rãi hiện nay) 3.3. Tự động thoát khỏi shell Người quản
trị hệ thống rất hay quên thoát ra khỏi dấu nhắc shell khi kết thúc
công việc. Bản thân tôi cũng đã từng nhiều lần khi đang thực hiện
việc quản trị với account root thì bỏ đi vì một số công việc khác.
Thật nguy hiểm nếu lúc đó có một kẻ phá hoại ở đó: Kẻ này có
thể dễ dàng có quyền truy xuất hệ thống ở mức cao nhất mà
chẳng cần tốn một chút công sức nào cả. Để giảm nguy cơ này,
người quản trị nên cài đặt tính nǎng tự động thoát ra khỏi shell
khi không có sự truy xuất nào trong một khoảng thời gian định
trước bằng cách đặt một tham số quy định khoảng thời gian hệ
thống vẫn duy trì dấu nhắc shell. Muốn cài đặt tham số này,
người sử dụng biến môi trường TMOUT và gán cho nó một giá trị
số thể hiện khoảng thời gian tính bằng giây hệ thống vẫn duy trì
dấu nhắc. Để thực hiện điều này cho tất cả các account trong hệ
thống, cách đơn giản nhất là đặt nó vào file /etc/profile dòng lệnh
sau: (giả sử ta đặt khoảng thời gian là 600 giây) TMOUT=600
Như vậy là nếu trong khoảng 10 phút người sử dụng không truy
xuất shell, shell sẽ tự động thoát ra. Tuy nhiên cần chú ý: Mẹo
này sẽ không "ǎn" nếu lúc đó người dùng đang chạy một chương
trình nào đó như vi hay mc,... Có nghĩa là người dùng phải đang
làm việc trực tiếp với shell chứ không phải với bất kỳ một chương
trình nào khác. 4.4. Loại bỏ các dịch vụ không sử dụng Một điều
khá nguy hiểm là sau khi cài đặt, hệ thống tự động bật chạy khá
nhiều dịch vụ (và đa số là các dịch vụ không mong muốn), dẫn tới
tốn tài nguyên và gây nên nhiều nguy cơ về bảo mật. Người quản
trị nên loại bỏ ngay lập tức các dịch vụ không dùng tới ngay sau
khi cài máy. Hoặc đơn giản bằng cách xoá bỏ các gói phần
mềm/dịch vụ không sử dụng (qua công cụ quản trị gói phần mềm
rpm của RedHat) hoặc sử dụng công cụ ntsysv để duyệt xem tất
cả các dịch vụ đang cài đặt rồi vô hiệu hoá những dịch vụ không
cần thiết (bằng cách bỏ đánh dấu các dịch vụ không sử dụng với
phím Space). Sau khi thoát ra khỏi ntsysv thì khởi động lại máy:
các dịch vụ không mong muốn sẽ không chạy nữa. 5.5. Không
tiết lộ thông tin về hệ thống qua telnet Dịch vụ cho phép truy xuất
hệ thống từ xa telnet có khả nǎng tiết lộ thông tin về hệ thống, dễ
tạo điều kiện cho những kẻ phá hoại tấn công dựa vào những
điểm yếu đã biết. Điều này rất dễ nhận thấy: Mọi người dùng kết
nối từ xa vào dịch vụ telnet đều nhận được thông tin về tên máy,
phiên bản Linux và phiên bản của nhân (kernel) của máy chủ. Để
tránh điều này, ta cần thực hiện việc kích hoạt telnetd (telnet
server) với tham số -h. (Tham số -h sẽ ngǎn telnet tiết lộ các
thông tin và chỉ in ra dấu nhắc "Login:" cho những người kết nối
từ xa). Do các phiên bản RedHat 7.x khi chạy telnetd không còn
sử dụng inetd nữa (mà sử dụng xinetd - một phiên bản nâng cấp
và có nhiều cải tiến so với inetd) nên cách cấu hình lại telnetd sẽ
khác nhau tuỳ theo phiên bản RedHat đang sử dụng. + Với các
phiên bản RedHat 6.x và trước đó, thực hiện các bước sau:
Trong file /etc/inetd.conf, thay đổi dòng telnet stream tcp nowait
root /usr/sbin/tcpd in.telnetd chuyển thành : telnet stream tcp
nowait root /usr/sbin/tcpd in.telnetd -h Tiếp theo, khởi động lại
inetd bằng câu lệnh: # /etc/rc.d/init.d/inetd restart + Với các phiên
bản RedHat 7.x, thực hiện bước sau: Trong file
/etc/xinetd.d/telnet , thêm chọn lựa: server_args = -h File trên sẽ
có dạng như sau; service telnet { disable = yes flags = REUSE
socket_type = stream wait = no user = root server =
/usr/sbin/in.telnetd log_on_failure += USERID server_args = -h }
Tiếp theo, khởi động lại xinetd bằng câu lệnh: #
/etc/rc.d/init.d/xinetd restart 6.6. Tránh sử dụng các dịch vụ không
mã hoá thông tin trên đường truyền Mặc dù ở trên chúng tôi đã
trình bày cách ngǎn dịch vụ telnet tiết lộ thông tin, nhưng chúng
tôi xin có lời khuyên: Tuyệt đối tránh sử dụng những dịch vụ kiểu
như telnet, ftp (ngoại trừ ftp anonymous) vì những dịch vụ này
hoàn toàn không hề mã hoá mật khẩu khi truyền qua mạng. Bất
kỳ một kẻ phá hoại nào cũng có thể dễ dàng "tóm" được mật
khẩu của bạn bằng những công cụ nghe lén kiểu như sniffer. Ơ'
những trường hợp có thể, nên sử dụng dịch vụ ssh thay thế cho
cả ftp và telnet: dịch vụ SSH (Secure Shell) dùng cơ chế mã hoá
công khai để bảo mật thông tin, thực hiện mã hoá cả mật khẩu
lẫn thông tin chuyển trên đường truyền. Hiện đang được sử dụng
khá rộng rãi, gói phần mềm của SSH cũng được đóng kèm trong
hầu hết các phiên bản gần đây của Linux. Chẳng hạn, các phiên
bản RedHat từ 7.0 trở lên mặc định đều cài OpenSSH, một sản
phẩm mã nguồn mở có thể sử dụng hoàn toàn miễn phí. (Bạn
đọc có thể tham khảo website www.openssh.org về sản phẩm
này). Ngoài ra, những dịch vụ "r" kiểu như rsh, rcp hay rlogin
chúng tôi cũng khuyên nên tuyệt đối tránh sử dụng. Lý do là các
dịch vụ này ngoài việc truyền mật khẩu không mã hoá còn thực
hiện việc kiểm tra quyền truy xuất dựa trên địa chỉ máy kết nối, là
một điều cực kỳ nguy hiểm. Các kẻ phá hoại sử dụng kỹ thuật
spoofing đều có thể dễ dàng đánh lừa được cách kiểm tra này khi
"làm giả" được địa chỉ của máy truy xuất dịch vụ hợp lệ. 7. 7.
Cấm sử dụng account root từ consoles Có thể bạn đọc đều nhận
thấy, ngay sau khi cài đặt RedHat, account root sẽ không có
quyền kết nối telnet vào dịch vụ telnet trên hệ thống (chỉ những
account thường mới có thể kết nối). Nguyên nhân là do file
/etc/securetty quy định những console được phép truy nhập bởi
root chỉ liệt kê những console "vật lý" (tức là chỉ truy xuất được
khi ngồi trực tiếp tại máy chủ) mà bỏ qua những kết nối qua
mạng. Dịch vụ ftp cũng sẽ bị hạn chế này: account root không
được phép truy xuất ftp qua mạng. Để tǎng tính bảo mật hơn
nữa, soạn thảo file /etc/securetty và bỏ đi những console bạn
không muốn root truy nhập từ đó. 8.8. Cấm "su" lên root Trong
Linux, lệnh su (Substitute User) cho phép người dùng chuyển
sang một account khác. Nếu không muốn một người bất kỳ "su"
thành root, thêm hai dòng sau vào nội dung file /etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so debug auth required
/lib/security/Pam_wheel.so group=wheel Như vậy, chỉ có những
người có đǎng ký là thành viên của nhóm wheel mới có quyền
"su" thành root. Để cho phép một người dùng có quyền này,
người quản trị chỉ việc gán account của người này vào nhóm
wheel (qua file /etc/group) 9.9. Hạn chế các thông tin ghi bởi bash
shell Thông thường, tất cả các lệnh được thực hiện tại dấu nhắc
shell của các account đều được ghi vào file ".bash_history" nằm
trong thư mục cá nhân của các account. Điều này cũng gây nên
những nguy hiểm tiềm ẩn, đặc biệt với những ứng dụng đòi hỏi
phải gõ các thông mật như mật khẩu trên dòng lệnh. Người quản
trị nên hạn chế nguy cơ này dựa trên 2 biến môi trường
HISTFILESIZE và HISTSIZE: Biến môi trường HISTFILESIZE xác
định số lệnh (gõ tại dấu nhắc shell) sẽ được lưu lại cho lần truy
nhập sau, còn biến môi trường HISTSIZE xác định số lệnh sẽ
được ghi nhớ trong phiên làm việc hiện thời. Ta có thể giảm giá
trị của HISTSIZE và đặt bằng 0 giá trị HISTFILESIZE để giảm tối
đa những nguy hiểm đã nêu trên. Để thực hiện việc này, chỉ cần
đơn giản thay đổi giá trị hai biến này trong file /etc/profile như
sau: HISTFILESIZE=0 HISTSIZE=20 Như vậy, tại phiên làm việc
hiện thời, shell chỉ ghi nhớ 20 lệnh gần nhất, đồng thời không ghi
lại các lệnh người dùng đã gõ khi người dùng thoát ra khỏi shell.
10.10. Cấm nhòm ngó tới những file script khởi động Linux Khi
khởi động Linux, các file script được đặt tại thư mục
/etc/rc.d/init.d sẽ được thực hiện. Để tránh những sự tò mò không
cần thiết, người quản trị nên hạn chế quyền truy xuất tới những
file này chỉ cho account root bằng lệnh sau: # chmod -R 700
/etc/rc.d/init.d/* 11.11. Xoá bỏ những chương trình SUID/SGID
không sử dụng Thông thường, những ứng dụng được thực hiện
dưới quyền của account gọi thực hiện ứng dụng. Tuy nhiên, Unix
và Linux sử dụng một kỹ thuật đặc biệt cho phép một số chương
trình thực hiện dưới quyền của người quản lý chương trình (chứ
không phải người thực hiện). Đây chính là lý do tại sao tất cả mọi
user trong hệ thống đều có thể đổi mật khẩu của mình trong khi
không hề có quyền truy xuất lên file /etc/shadow: Nguyên nhân vì
lệnh passwd có gán thuộc tính SUID và được quản lý bởi root,
mà chỉ có root mới có quyền truy xuất /etc/shadow. Tuy nhiên,
khả nǎng này có thể gây nên những nguy cơ tiềm tàng: Nếu một
chương trình có tính nǎng thực thi được quản lý bởi root, do thiết
kế tồi hoặc do được cài đặt cố tình bởi những kẻ phá hoại mà lại
có thuộc tính SUID thì mọi điều tồi tệ đều có thể xảy ra. Thực tế
cho thấy, khá nhiều kỹ thuật xâm nhập hệ thống mà không có
quyền root được thực hiện nhờ kỹ thuật này: kẻ phá hoại bằng
cách nào đó tạo được một shell (ví dụ bash) được quản lý bởi
root, có thuộc tính SUID. Sau đó mọi truy xuất phá hoạt sẽ được
thực hiện qua shell này vì mọi lệnh thực hiện trong shell sẽ được
thực hiện dưới quyền của root. Thuộc tính SGID cũng tương tự
như thuộc tính SUID: các chương trình được thực hiện với quyền
nhóm là nhóm quản lý chương trình chứ không phải nhóm của
người chạy chương trình. Như vậy, người quản trị sẽ phải
thường xuyên kiểm tra xem trong hệ thống có những ứng dụng
nào có thuộc tính SUID hoặc SGID mà không được phép không?
Để tìm tất cả các file có thuộc tính SUID/SGID, sử dụng lệnh find
như sau: # find / -type f \( -perm -04000 -o -perm -02000 \) \-exec
ls ưlg {} \; Nếu phát hiện được một file có thuộc tính SUID/SGID
một cách không cần thiết, có thể loại bỏ các thuộc tính này bằng
lệnh: # chmod a-s 12.12. Tǎng tính bảo mật cho nhân (kernel)
của Linux Thực tế cho thấy, Linux không hẳn được thiết kế với
các tính nǎng bảo mật thật chặt chẽ: khá nhiều lỗ hổng có thể bị
lợi dụng bởi những tin tặc thông thạo về hệ thống. Do đó, việc sử
dụng một hệ điều hành với nhân được củng cố là rất quan trọng:
Một khi nhân - phần cốt lõi nhất của hệ điều hành - được thiết kế
tốt thì nguy cơ bị phá hoại sẽ giảm đi rất nhiều. Bạn đọc có thể
xem xét việc củng cố nhân Linux thông qua các miếng vá (patch).
Tôi xin giới thiệu một trong những website tốt nhất chuyên cung
cấp các miếng vá bổ sung cho nhân Linux về bảo mật tại địa chỉ
www.grsecurity.net. Tại đây bạn đọc có thể tìm hiểu thông tin hữu
ích và tải xuống các miếng vá bổ sung cho hệ thống Linux của
mình. Nguyễn Anh Quỳnh Viện Đào tạo Công nghệ Thông tin Đại
học Quốc gia Hà Nội
              10 cách bảo mật máy tính Linux



Một máy tính Linux thƣờng chạy nhanh hơn và bảo mật hơn so với máy tính có cài các hệ
điều hành khác. Đôi khi, cách dễ nhất để bảo mật lại là phƣơng thức dễ quên nhất.

Hãy tham khảo 10 cách sau để có thể bảo vệ một máy Linux. Lƣu ý rằng chúng tôi nêu ra
cách này chỉ áp dụng đối với một máy thông thƣờng, không phải máy chủ. Bảo mật máy
chủ Linux sẽ phải đòi hỏi những cấu hình kiểu khác.

1. Khóa màn hình và log out khỏi hệ thống

Phần lớn ngƣời dùng thƣờng quên rằng Linux là một môi trƣờng máy tính đa ngƣời dùng. Do
đó, bạn phải log out khỏi máy tính để ngƣời khác có thể log in vào máy khi cần dùng. Tất
nhiên việc log out không phải là tùy chọn duy nhất. Nếu chỉ một mình bạn sử dụng máy tính
đó, bạn sẽ phải khóa màn hình lại thay vì log out. Khóa màn hình rất đơn giản là bạn sẽ
phải nhập vào một mật khẩu nếu muốn vào lại màn hình làm việc. Điểm khác ở đây là khi
khóa màn hình thi các ứng dụng trên máy tính vẫn chạy, khi quay trở lại màn hình làm việc,
các chƣơng trình đó sẽ tiếp tục chạy. Thật an toàn và bảo mật.

2. Ẩn các file và thư mục một cách nhanh chóng

Trong Linux, các file và thƣ mục đƣợc ẩn đi bằng cách thêm một dấu chấm “.” trƣớc tên của
file hoặc thƣ mục. Ví dụ nếu một file có tên test đang hiển thị một cách bình thƣờng thì file
.test sẽ bị ẩn đi. Phần lớn mọi ngƣời đều không biết rằng chạy câu lệnh ls –a sẽ hiển thị tất
cả các file và thƣ mục ẩn. Vì vậy, nếu bạn có thƣ mục và file ẩn không muốn đồng nghiệp
sử dụng máy nhìn thấy, chỉ đởn giản là thêm một dấu chấm vào trƣớc tên file và thƣ mục.
Bạn cũng có thể thực hiện việc này từ dòng lệnh: mv test .test.

3. Mật khẩu mạnh

Mật khẩu trên một máy tính Linux chính là chiếc chìa khóa vàng. Nếu bạn đánh mất mật
khẩu hoặc mật khẩu quá đơn giản, chiếc chìa khóa vàng này sẽ trở thành là của tất cả mọi
ngƣời. Và nếu bạn sử dụng Ubuntu thì một mật khẩu sẽ cho ngƣời dùng đƣợc truy cập nhiều
hơn là sử dụng Fedora. Để không gặp phải vấn đề mất dữ liệu với nguyên nhân không đáng
có này, hãy đặt mật khẩu mạnh. Có rất nhiều cách đặt mật khẩu mạnh mà chúng tôi đã giới
thiệu trong nhiều bài trƣớc đây, bạn có thể đọc tham khảo.

4. Tránh cài đặt các ứng dụng chia sẻ file

Rất nhiều ngƣời dùng Linux thƣờng xuyên phải sử dụng việc chia sẻ file. Nếu thực hiện việc
chia sẻ này trong mạng công ty, bạn có thể mở và truy cập vào máy tính của những ngƣời
dùng khác thì ngƣợc lại, họ cũng có thể truy cập vào chính những dữ liệu nhạy cảm trên
máy tính của bạn. Vì vậy, có một luật đƣa ra là không cài đặt các công cụ chia sẻ file.

5. Cập nhật thường xuyên máy tính là một điều sáng suốt

Linux không nhƣ Windows. Với Windows, bạn có thể lấy các bản cập nhật bảo mật khi
Microsoft phát hành ra chúng (có thể mất đến vài tháng mới có một bản vá). Còn với Linux,
một cập nhật bảo mật có thể đƣợc cung cấp ngay sau vài phút hoặc vài giờ từ khi phát hiện
ra lỗ hổng. Cả KDE và GNOME, đều có các applet cập nhật cho Panel. Hãy cập nhật ngay khi
có bản vá bảo mật đƣợc cập nhật. Đừng trì hoãn việc cập nhật bảo mật bởi đó cũng có thể
là nguyên nhân gây nguy hiểm cho máy tính của bạn.

6. Cài đặt chương trình bảo vệ virus

Dù tin hay không thì một chƣơng trình bảo vệ virus trên máy tính Linux là rất cần thiết. Tất
nhiên, khả năng virus gây ra vấn đề trên hệ thống Linux của bạn là rất thấp nhƣng nếu các
email đƣợc forward tới các máy tính Windows khác thì có thể là nguyên nhân gây ra vấn đề.
Một chƣơng trình bảo vệ virus tốt (nhƣ ClamAV) sẽ đảm bảo các email gửi đi từ máy tính
của bạn sẽ không chứa theo bất kỳ mối nguy hại nào có thể quay trở lại phá hoại bạn (hay
công ty bạn).

7. Kích hoạt SELinux

SELinux (Security-Enhanced Linux) đƣợc tạo bởi NSA. Những gì SELinux làm đƣợc là khóa
điều khiển truy cập vào các ứng dụng. Thật tuyệt vời phải không. Chắc chắn SELinux cũng
có một vài điều gây khó chịu cho ngƣời sử dụng nhƣ việc gây chậm cho hệ thống hay khiến
cho một vài ứng dụng trở nên khó cài đặt. Nhƣng những tiện lợi về bảo mật khi sử dụng
SELinux (hoặc Apparmor) vƣợt trôi hơn so với những nhƣợc điểm mà nó có. Bạn có thể kích
hoạt SELunux trong quá trình cài đặt Fedora.

8. Tạo /home trong một partition riêng biệt là phương pháp an toàn

Mặc định Linux cài đặt thƣ mục /home của bạn vào root hệ thống. Chắc chắn điều này
không có gì phiền hà nhƣng 1) Vì đây là chuẩn nên mọi ngƣời đều có truy cập vào hệ thống
và biết chính xác vị trí lƣu dữ liệu của bạn; 2) Nếu máy tính chẳng may gặp sự cố, bạn có
thể bị mất dữ liệu. Để giải quyết vấn đề này, bạn có thể đặt thƣ mục /home sang một ổ
cứng hay một partition khác. Điều này sẽ giúp bạn luôn am tâm với dữ liệu của mình.

9. Sử dụng trình desktop ngoài chuẩn

Sử dụng máy tính với trình quản lý cửa sổ khác (Enlightenment, Blackbox, Fluxbox...)
không chỉ mang lại cho bạn cái nhìn và cảm nhận mới, chúng còn có hệ thống bảo mật đơn
giản trƣớc những ánh mắt tò mò mà bạn chƣa bao giờ để ý. Bạn sẽ làm thế nào? Rất đơn
giản. Tạo một biểu tƣợng desktop của ứng dụng bạn muốn sử dụng. Trừ phi ngƣời dùng biết
làm thế nào để vào dòng lệnh (bằng cách log out hoặc nhấn Ctrl + Alt + F*, với * là biểu
tƣợng trên desktop khác với chƣơng trình mà bạn muốn sử dụng), nếu không sẽ không thể
khởi chạy bất kỳ ứng dụng nào khác ngoài ứng dụng đã đặt trƣớc. Phần lớn ngƣời dùng
không có ý tƣởng về việc xem xét máy bằng mọi cách, họ sẽ không thể biết đến các file của
bạn.

10. Ngừng các dịch vụ

Đây là một máy tính bàn Linux, không phải máy chủ. Vì vậy tại sao bạn phải chạy các dịch
vụ nhƣ httpd, ftpd và sshd? Bạn hoàn toàn không cần chúng và còn làm tăng thêm nguy cơ
bảo mật (trừ khi bạn biết làm thế nào để khóa chúng lại). Vậy thì đừng chạy chúng nữa.
Kiểm tra file /etc/inetd.conf và đảm bảo rằng các dịch vụ không cần thiết đã đƣợc chú thích
là đóng.
      Tăng cường an ninh cho hệ thống Linux

Tăng cường an ninh cho hệ thống Linux (Phần 1)

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ẽ cho bạn 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 của bạn. (Tài liệu này đƣợc
báo cáo tại hội thảo Linux Việt Nam vào tháng 12/2000 nên có một số phần đã cũ so với
hiện nay.)

GIỚI THIỆU

Cùng với sự phát triển không ngừng của truyền thông kỹ thuật số, Internet và sự phát triển
nhảy vọt của nền công nghiệp phần mềm, bảo mật máy tính là một vấn đề ngày càng trở
nên quan trọng. Cần phải hiểu rằng không có hệ thống máy tính nào là an toàn tuyệt đối.
Tất cả những gì bạn có thể làm là giúp cho hệ thống của bạn trở nên an toàn hơn.

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.

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.

XEM XÉT CHÍNH SÁCH AN NINH CỦA BẠN

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 ?"

Không may là có hàng triệu câu trả lời khác nhau cho câu hỏi đó. Nếu một ngƣời mà chƣa
từng phải đối phó với một kẻ xâm nhập trƣớc đây thì kẻ xâm nhập có thể dễ dàng biến mất
vì các dấu vết đã trở nên qúa cũ và không còn hữu ích nữa.

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 :

Chính sách phục hồi dữ liệu khi có sự cố
Chính sách phục hồi hệ thống trong trƣờng hợp hƣ hỏng thiết bị
Chính sách, cách thức điều tra những kẻ xâm nhập trái phép
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
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.
Chính sách an ninh về mặt vật lý của hệ thống
...

Bạn có thể nhờ tƣ vấn của các công ty, tổ chức làm dịch vụ tƣ vấn về an toàn máy tính để
giúp bạn xây dụng một chính sách an ninh tốt. Các công ty này có các chuyên gia về an
toàn máy tính, họ có sẵn các biểu mẫu chính sách an ninh nên có thể thiết lập nhanh chóng
các chính sách mà bao gồm tất cả các mặt trong việc an toàn hệ thống máy tính.

TĂNG CƢỜNG AN NINH CHO KERNEL

Mặc dù thừa hƣởng những đặc tính của hệ thống UNIX và khá an ninh hơn một số hệ điều
hành khác, hệ thống GNU/Linux hiện nay vẫn tồn tại những nhƣợc điểm sau:

Quyền của user „root‟ có thể bị lạm dụng. User „root‟ có thể dễ dàng thay đổi bất kỳ điều gì
trên hệ thống.

Nhiều file hệ thống có thể dễ dàng bị sửa đổi. Nhiều file hệ thống quan trọng nhƣ /bin/login
có thể bị sửa đổi bởi hacker để cho phép đăng nhập không cần mật khẩu. Nhƣng những file
loại này lại hiếm khi nào thay đổi trừ phi khi nâng cấp hệ thống.
Các module có thể đƣợc dùng để chặn kernel. “Loadable Kernel Module” là một thiết kế tốt
để tăng cƣờng tính uyển chuyển, linh hoạt cho kernel. Nhƣng sau khi một module đƣợc nạp
vào kernel, nó sẽ trở thành một phần của kernel và có thể hoạt động nhƣ kernel nguyên
thủy. Vì vậy, các chƣng trình mục đích xấu có thể đƣợc viết dạng module và nạp vào kernel,
rồi sau đó hoạt động nhƣ một virus.
Các process không đƣợc bảo vệ. Các process nhƣ web server có thể trở thành mục tiêu bị
tấn công của hacker sau khi thâm nhập hệ thống.

Để cải thiện tính an ninh cho các server Linux, chúng ta cần có một kernel an toàn hơn.
Điều này có thể thực hiện đƣợc bằng cách sửa đổi kernel nguyên thuỷ bằng các „patch‟ tăng
cƣờng tính an ninh cho hệ thống. Các patch này có các tính năng chính yếu sau:

Bảo vệ – bảo vệ các file hệ thống quan trọng khỏi sự thay đổi ngay cả với user root. Bảo vệ
các process quan trọng khỏi bị ngừng bởi lệnh „kill‟. Chặn các tác vụ truy cập IO mức thấp
(RAW IO) của các chƣơng trình không đƣợc phép.

Phát hiện – Phát hiện và cảnh báo với ngƣời quản trị khi server bị scan. Cũng nhƣ khi có các
tác vụ trên hệ thống vi phạm các luật (rules) định trƣớc.

Đối phó – Khi phát hiện sự vi phạm trên hệ thống, các ghi nhận chi tiết sẽ đƣợc thực hiện
cũng nhƣ có thể ngừng lập tức phiên làm việc gây ra
Một vài công cụ sửa đổi kernel đƣợc sử dụng rộng rãi là LIDS (Linux Intrusion Detection
System), Medusa, ...

Tăng cƣờng an ninh cho hệ thống Linux (Phần 2)

AN TOÀN CHO CÁC GIAO DỊCH TRÊN MẠNG

Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thức văn bản không mã
hoá, nhƣ TELNET, FTP, RLOGIN, HTTP, POP3. Trong các giao dịch giữa ngƣời dùng với máy
chủ, tất cả các thông tin dạng gói đƣợc truyền qua mạng dƣới hình thức văn bản không
đƣợc mã hoá. Các gói tin này có thể dễ dàng bị chặn và sao chép ở một điểm nào đó trên
đƣờng đi. Việc giải mã các gói tin này rất dễ dàng, cho phép lấy đƣợc các thông tin nhƣ tên
ngƣời dùng, mật khẩu và các thông tin quan trọng khác. Việc sử dụng các giao dịch mạng
đƣợc mã hoá khiến cho việc giải mã thông tin trở nên khó hơn và giúp bạn giữ an toàn các
thông tin quan trọng. Các kỹ thuật thông dụng hiện nay là IPSec, SSL, TLS, SASL và PKI.

Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX. Ngƣời quản trị mạng có thể
dễ dàng truy nhập vào hệ thống từ bất kỳ nơi nào trên mạng thông qua các giao thức thông
dụng nhƣ telnet, rlogin. Một số công cụ quản trị từ xa đƣợc sử dụng rộng rãi nhƣ linuxconf,
webmin cũng dùng giao thức không mã hoá. Việc thay thế tất cả các dịch vụ mạng dùng
giao thức không mã hoá bằng giao thức có mã hoá là rất khó. Tuy nhiên, bạn nên cung cấp
việc truy cập các dịch vụ truyền thống nhƣ HTTP/POP3 thông qua SSL, cũng nhƣ thay thế
các dịch vụ telnet, rlogin bằng SSH.

LINUX FIREWALL

An toàn hệ thống luôn luôn là một vấn đề sống còn của mạng máy tính và firewall là một
thành phần cốt yếu cho việc đảm bảo an ninh.

Một firewall là một tập hợp các qui tắc, ứng dụng và chính sách đảm bảo cho ngƣời dùng
truy cập các dịch vụ mạng trong khi mạng bên trong vẫn an toàn đối với các kẻ tấn công từ
Internet hay từ các mạng khác. Có hai loại kiến trúc firewall cơ bản là :
Proxy/Application firewall và filtering gateway firewall. Hầu hết các hệ thống firewall hiện
đại là loại lai (hybrid) của cả hai loại trên.

Nhiều công ty và nhà cung cấp dịch vụ Internet sử dụng máy chủ Linux nhƣ một Internet
gateway. Những máy chủ này thƣờng phục vụ nhƣ máy chủ mail, web, ftp, hay dialup. Hơn
nữa, chúng cũng thƣờng hoạt động nhƣ các firewall, thi hành các chính sách kiểm soát giữa
Internet và mạng của công ty. Khả năng uyển chuyển khiến cho Linux thu hút nhƣ là một
thay thế cho những hệ điều hành thƣơng mại.

Tính năng firewall chuẩn đƣợc cung cấp sẵn trong kernel của Linux đƣợc xây dựng từ hai
thành phần : ipchains và IP Masquerading.

Linux IP Firewalling Chains là một cơ chế lọc gói tin IP. Những tính năng của IP Chains cho
phép cấu hình máy chủ Linux nhƣ một filtering gateway/firewall dễ dàng. Một thành phần
quan trọng khác của nó trong kernel là IP Masquerading, một tính năng chuyển đổi địa chỉ
mạng (network address translation- NAT) mà có thể che giấu các địa chỉ IP thực của mạng
bên trong.

Để sử dụng ipchains, bạn cần thiết lập một tập các luật mà qui định các kết nối đƣợc cho
phép hay bị cấm. Ví dụ:

# Cho phép các kết nối web tới Web Server của bạn
/sbin/ipchains -A your_chains_rules -s 0.0.0.0/0 www -d 192.16.0.100 1024: -j ACCEPT

# Cho phép các kết nối từ bên trong tới các Web Server bên ngoài
/sbin/ipchains -A your_chains_rules -s 192.168.0.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT

# Từ chối truy cập tất cả các dịch vu khác
/sbin/ipchains -P your_chains_rules input DENY

Ngoài ra, bạn có thể dùng các sản phẩm firewall thƣơng mại nhƣ Check Point FireWall-1,
Phoenix Adaptive Firewall, Gateway Guardian, XSentry Firewall, Raptor, ... hay rất nhiều các
phiên bản miễn phí, mã nguồn mở cho Linux nhƣ T.Rex Firewall, Dante, SINUS, TIS Firewall
Toolkit, ...

DÙNG CÔNG CỤ DÕ TÌM ĐỂ KHẢO SÁT HỆ THỐNG

Thâm nhập vào một hệ thống bất kỳ nào cũng cần có sự chuẩn bị. Hacker phải xác định ra
máy đích và tìm xem những port nào đang mở trƣớc khi hệ thống có thể bị xâm phạm. Quá
trình này thƣờng đƣợc thực hiện bởi các công cụ dò tìm (scanning tool), kỹ thuật chính để
tìm ra máy đích và các port đang mở trên đó. Dò tìm là bƣớc đầu tiên hacker sẽ sử dụng
trƣớc khi thực hiện tấn công. Bằng cách sử dụng các công cụ dò tìm nhƣ Nmap, hacker có
thể rà khắp các mạng để tìm ra các máy đích có thể bị tấn công. Một khi xác định đƣợc các
máy này, kẻ xâm nhập có thể dò tìm các port đang lắng nghe. Nmap cũng sử dụng một số
kỹ thuật cho phép xác định khá chính xác loại máy đang kiểm tra.

Bằng cách sử dụng những công cụ của chính các hacker thƣờng dùng, ngƣời qun trị hệ
thống có thể nhìn vào hệ thống của mình từ góc độ của các hacker và giúp tăng cƣờng tính
an toàn của hệ thống. Có rất nhiều công cụ dò tìm có thể sử dụng nhƣ: Nmap, strobe,
sscan, SATAN, ...

Dƣới đây là một ví dụ sử dụng Nmap:

# nmap -sS -O 192.168.1.200
Starting nmap V. 2.54 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on comet (192.168.1.200):
Port State Protocol Service
7 open tcp echo
19 open tcp chargen
21 open tcp ftp
...
TCP Sequence Prediction: Class=random positive increments
Difficulty=17818 (Worthy challenge)
Remote operating system guess: Linux 2.2.13
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds


Tuy nhiên, sử dụng các công cụ này không thể thay thế cho một ngƣời quản trị có kiến
thức. Bởi vì việc dò tìm thƣờng dự báo một cuộc tấn công, các site nên ƣu tiên cho việc theo
dõi chúng. Với các công cụ dò tìm, các nhà quản trị hệ thống mạng có thể phát hiện ra
những gì mà các hacker có thể thấy khi dò trên hệ thống của mình.


PHÁT HIỆN SỰ XÂM NHẬP QUA MẠNG

Nếu hệ thống của bạn có kết nối vào internet, bạn có thể trở thành một mục tiêu bị dò tìm
các lỗ hổng về bảo mật. Mặc dù hệ thống của bạn có ghi nhận điều này hay không thì vẫn
không đủ để xác định và phát hiện việc dò tìm này. Một vấn đề cần quan tâm khác là các
cuộc tấn công gây ngừng dịch vụ (Denial of Services - DoS), làm thế nào để ngăn ngừa,
phát hiện và đối phó với chúng nếu bạn không muốn hệ thống của bạn ngƣng trệ.

Hệ thống phát hiện xâm nhập qua mạng (Network Intrusion Detection System - NIDS) theo
dõi các thông tin truyền trên mạng và phát hiện nếu có hacker đang cố xâm nhập vào hệ
thống (hoặc gây gây ra một vụ tấn công DoS). Một ví dụ điển hình là hệ thống theo dõi số
lƣợng lớn các yêu cầu kết nối TCP đến nhiều port trên một máy nào đó, do vậy có thể phát
hiện ra nếu có ai đó đang thử một tác vụ dò tìm TCP port. Một NIDS có thể chạy trên máy
cần theo dõi hoặc trên một máy độc lập theo dõi toàn bộ thông tin trên mạng.

Các công cụ có thể đƣợc kết hợp để tạo một hệ thống phát hiện xâm nhập qua mạng.
Chẳng hạn dùng tcpwrapper để điều khiển, ghi nhận các dịch vụ đã đƣợc đăng ký. Các
chƣơng trình phân tích nhật ký hệ thống, nhƣ swatch, có thể dùng để xác định các tác vụ dò
tìm trên hệ thống. Và điều quan trọng nhất là các công cụ có thể phân tích các thông tin
trên mạng để phát hiện các tấn công DoS hoặc đánh cắp thông tin nhƣ tcpdump, ethereal,
ngrep, NFR (Network Flight Recorder), PortSentry, Sentinel, Snort, ...

Khi hiện thực một hệ thống phát hiện xâm nhập qua mạng bạn cần phải lƣu tâm đến hiệu
suất của hệ thống cũng nhƣ các chính sách bảo đảm sự riêng tƣ.

KIỂM TRA KHẢ NĂNG BỊ XÂM NHẬP

Kiểm tra khả năng bị xâm nhập liên quan đến việc xác định và sắp xếp các lỗ hổng an ninh
trong hệ thống bằng cách dùng một số công cụ kiểm tra. Nhiều công cụ kiểm tra cũng có
khả năng khai thác một số lỗ hổng tìm thấy để làm rõ quá trình thâm nhập trái phép sẽ
đƣợc thực hiện nhƣ thế nào. Ví dụ, một lỗi tràn bộ đệm của chƣơng trình phục vụ dịch vụ
FTP có thể dẫn đến việc thâm nhập vào hệ thống với quyền „root‟. Nếu ngƣời quản trị mạng
có kiến thức về kiểm tra khả năng bị xâm nhập trƣớc khi nó xảy ra, họ có thể tiến hành các
tác vụ để nâng cao mức độ an ninh của hệ thống mạng.

Có rất nhiều các công cụ mạng mà bạn có thể sử dụng trong việc kiểm tra khả năng bị xâm
nhập. Hầu hết các quá trình kiểm tra đều dùng ít nhất một công cụ tự động phân tích các lỗ
hổng an ninh. Các công cụ này thăm dò hệ thống để xác định các dịch vụ hiện có. Thông tin
lấy từ các dịch vụ này sẽ đƣợc so sánh với cơ sở dữ liệu các lỗ hổng an ninh đã đƣợc tìm
thấy trƣớc đó.

Các công cụ thƣờng đƣợc sử dụng để thực hiện các kiểm tra loại này là ISS Scanner,
Cybercop, Retina, Nessus, cgiscan, CIS, ...

Kiểm tra khả năng bị xâm nhập cần đƣợc thực hiện bởi những ngƣời có trách nhiệm một
cách cẩn thận. Sự thiếu kiến thức và sử dụng sai cách có thể sẽ dẫn đến hậu quả nghiêm
trọng không thể lƣờng trƣớc đƣợc.

ĐỐI PHÓ KHI HỆ THỐNG CỦA BẠN BỊ TẤN CÔNG

Gần đây, một loạt các vụ tấn công nhắm vào các site của những công ty lớn nhƣ Yahoo!,
Buy.com, E-Bay, Amazon và CNN Interactive gây ra những thiệt hại vô cùng nghiêm trọng.
Những tấn công này là dạng tấn công gây ngừng dịch vụ "Denial-Of-Service" mà đƣợc thiết
kế để làm ngƣng hoạt động của một mạng máy tính hay một website bằng cách gửi liên tục
với số lƣợng lớn các dữ liệu tới mục tiêu tấn công khiến cho hệ thống bị tấn công bị ngừng
hoạt động, điều này tƣơng tự nhƣ hàng trăm ngƣời cùng gọi không ngừng tới 1 số điện thoại
khiến nó liên tục bị bận.

Trong khi không thể nào tránh đƣợc mọi nguy hiểm từ các cuộc tấn công, chúng tôi khuyên
bạn một số bƣớc mà bạn nên theo khi bạn phát hiện ra rằng hệ thống của bạn bị tấn công.
Chúng tôi cũng đƣa ra một số cách để giúp bạn bảo đảm tính hiệu qủa của hệ thống an ninh
và những bƣớc bạn nên làm để giảm rủi ro và có thể đối phó với những cuộc tấn công.

Nếu phát hiện ra rằng hệ thống của bạn đang bị tấn công, hãy bình tĩnh. Sau đây là những
bƣớc bạn nên làm:

Tập hợp 1 nhóm để đối phó với sự tấn công:
- Nhóm này phải bao gồm những nhân viên kinh nghiệm, những ngƣời mà có thể giúp hình
thành một kế hoạch hành động đối phó với sự tấn công.

Dựa theo chính sách và các quy trình thực hiện về an ninh của công ty, sử dụng các bƣớc
thích hợp khi thông báo cho mọi ngƣời hay tổ chức về cuộc tấn công.
Tìm sự giúp đỡ từ nhà cung cấp dịch vụ Internet và cơ quan phụ trách về an ninh máy tính:
- Liên hệ nhà cung cấp dịch vụ Internet của bạn để thông báo về cuộc tấn công. Có thể nhà
cung cấp dịch vụ Internet của bạn sẽ chặn đứng đƣợc cuộc tấn công.

- Liên hệ cơ quan phụ trách về an ninh máy tính để thông báo về cuộc tấn công

Tạm thời dùng phƣơng thức truyền thông khác (chẳng hạn nhƣ qua điện thoại) khi trao đổi
thông tin để đảm bo rằng kẻ xâm nhập không thể chặn và lấy đƣợc thông tin.
Ghi lại tất cả các hoạt động của bạn (chẳng hạn nhƣ gọi điện thoại, thay đổi file, ...)
Theo dõi các hệ thống quan trọng trong qúa trình bị tấn công bằng các phần mềm hay dịch
vụ phát hiện sự xâm nhập (intrusion detection software/services). Điều này có thể giúp làm
giảm nhẹ sự tấn công cũng nhƣ phát hiện những dấu hiệu của sự tấn công thực sự hay chỉ
là sự quấy rối nhằm đánh lạc hƣớng sự chú ý của bạn(chẳng hạn một tấn công DoS với
dụng ý làm sao lãng sự chú ý của bạn trong khi thực sự đây là một cuộc tấn công nhằm
xâm nhập vào hệ thống của bạn).
- Sao chép lại tất cả các files mà kẻ xâm nhập để lại hay thay đổi (nhƣ những đoạn mã
chƣơng trình, log file, ...)

Liên hệ nhà chức trách để báo cáo về vụ tấn công.
Những bƣớc bạn nên làm để giảm rủi ro và đối phó với sự tấn công trong tƣơng lai :

Xây dựng và trao quyền cho nhóm đối phó với sự tấn công
Thi hành kiểm tra an ninh và đánh giá mức độ rủi ro của hệ thống
Cài đặt các phần mềm an toàn hệ thống phù hợp để giảm bớt rủi ro
Nâng cao khả năng của mình về an toàn máy tính
Các bƣớc kiểm tra để giúp bạn bảo đảm tính hiệu quả của hệ thống an ninh

Kiểm tra hệ thống an ninh mới cài đặt : chắc chắn tính đúng đắn của chính sách an ninh
hiện có và cấu hình chuẩn của hệ thống.
Kiểm tra tự động thƣờng xuyên : để khám phá sự “viếng thăm” của những hacker hay
những hành động sai trái của nhân viên trong công ty.
Kiểm tra ngẫu nhiên: để kiểm tra chính sách an ninh và những tiêu chuẩn, hoặc kiểm tra sự
hiện hữu của những lỗ hổng đã đƣợc phát hiện (chẳng hạn những lỗi đƣợc thông báo từ nhà
cung cấp phần mềm)
Kiểm tra hằng đêm những file quan trọng: để đánh giá sự toàn vẹn của những file và cơ sở
dữ liệu quan trọng
Kiểm tra các tài khoản ngƣời dùng: để phát hiện các tài khoản không sử dụng, không tồn
tại, ...
Kiểm tra định kỳ để xác định trạng thái hiện tại của hệ thống an ninh của bạn




Red Hat Linux và những kinh nghiệm bảo mật

Hiện nay Linux đang dần trở thành một hệ điều hành khá phổ biến, bởi tính kinh tế, khả
năng bảo mật và sự uyển chuyển cao. Thế nhƣng, mọi hệ thống dù an toàn đến đâu cũng
dễ dàng bị xâm nhập nếu ngƣời dùng (và nhất là ngƣời quản trị - root) không đặt sự bảo
mật lên hàng đầu. Sau đây là một số kinh nghiệm về bảo mật trên hệ điều hành Red Hat tôi
muốn chia sẻ cùng các bạn và hi vọng công việc quản trị của bạn sẽ an toàn hơn.

1. Không cho phép sử dụng tài khoản root từ console

Sau khi cài đặt, tài khoản root sẽ không có quyền kết nối telnet vào dịch vụ telnet trên hệ
thống, trong khi đó tài khoản bình thƣờng lại có thể kết nối, do nội dung tập tin
/etc/securetty chỉ quy định những console đƣợc phép truy nhập bởi root và chỉ liệt kê những
console truy xuất khi ngồi trực tiếp tại máy chủ. Để tăng cƣờng bảo mật hơn nữa, hãy soạn
thảo tập tin /etc/securetty và bỏ đi những console bạn không muốn root truy nhập.

2. Xóa bớt tài khoản và nhóm đặc biệt

Ngƣời quản trị nên xóa bỏ tất cả tài khoản và nhóm đƣợc tạo sẵn trong hệ thống nhƣng
không có nhu cầu sử dụng (ví dụ: lp, sync, shutdown, halt, news, uucp, operator, games,
gopher...). Thực hiện việc xóa bỏ tài khoản bằng lệnh userdel và xóa bỏ nhóm với lệnh
groupdel.

3. Tắt các dịch vụ không sử dụng

Một điều khá nguy hiểm là sau khi cài đặt, hệ thống tự động bật chạy khá nhiều dịch vụ,
trong đó đa số là các dịch vụ không mong muốn, dẫn đến tiêu tốn tài nguyên và sinh ra nên
nhiều nguy cơ về bảo mật. Vì vậy ngƣời quản trị nên tắt các dịch vụ không dùng tới (ntsysv)
hoặc xóa bỏ các gói dịch vụ không sử dụng bằng lệnh rpm.

4. Không cho "su" lên root

Lệnh su (Substitute User) cho phép ngƣời dùng chuyển sang một tài khoản khác. Nếu không
muốn ngƣời dùng "su" thành root thì thêm hai dòng sau vào tập tin /etc/pam.d/su:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/Pam_wheel.so group=tên_nhóm_root

5. Che giấu tập tin mật khẩu

Giai đoạn đầu, mật khẩu toàn bộ tài khoản đã từng đƣợc lƣu trong tập tin /etc/password,
tập tin mà mọi ngƣời dùng đếu có quyền đọc. Đây là kẽ hở lớn trong bảo mật mặc dù mật
khẩu đƣợc mã hóa nhƣng việc giải mã không phải là không thể thực hiện đƣợc. Do đó, hiện
nay các nhà phát triển Linux đã đặt riêng mật khẩu mã hóa vào tập tin /etc/shadow chỉ có
root mới đọc đƣợc, nhƣng yêu cầu phải chọn Enable the shadow password khi cài đặt
RedHat.

6. Luôn nâng cấp cho nhân (kernel) Linux

Linux không hẳn đƣợc thiết kế với các tính năng bảo mật chặt chẽ, khá nhiều lỗ hổng có thể
bị lợi dụng bởi tin tặc. Vì vậy, việc sử dụng một hệ điều hành với nhân đƣợc nâng cấp là rất
quan trọng vì một khi nhân - phần cốt lõi nhất của hệ điều hành - đƣợc thiết kế tốt thì nguy
cơ bị phá hoại sẽ giảm đi rất nhiều. Bạn có thể tham khảo các bài viết trƣớc để biết cách
cập nhật nhân hệ thống.

7. Tự động thoát khỏi shell

Ngƣời quản trị hệ thống và kể cả ngƣời dùng bình thƣờng rất hay quên thoát ra khỏi dấu
nhắc shell khi kết thúc công việc. Thật nguy hiểm nếu có một kẻ phá hoại chờ sẵn và hiển
nhiên kẻ này sẽ có toàn quyền truy xuất hệ thống mà chẳng tốn chút công sức nào cả. Do
vậy ngƣời quản trị nên cài đặt tính năng tự động thoát khỏi shell khi không có sự truy xuất
trong khoảng thời gian định trƣớc bằng cách sử dụng biến môi trƣờng TMOUT và gán một
giá trị quy định số giây hệ thống duy trì dấu nhắc. Tốt nhất, bạn nên đặt vào tập tin
/etc/profile để lệnh luôn có tác dụng trong mọi phiên làm việc.
Bảo mật Linux cơ sở
Thế giới hiện nay vốn tồn tại hai kiểu quan niệm về bảo mật: một bên là những người nghĩ
rằng bảo mật máy tính thật vui và thú vị, còn một bên lại cho rằng nó thật bí ẩn và đáng
sợ. Các chuyên gia quản trị hệ thống chắc chắn sẽ nói bảo mật máy tính thực sự khá buồn tẻ. Bởi
họ phải thường xuyên đọc các file thông tin cơ sở (log file) khô khan và gắn liền với những đêm
dài mất ngủ, tâm trạng hoảng hốt khi liên tục chống lại các cuộc tấn công, nguy cơ xâm nhập hệ
thống và đôi khi còn có cả những hoạt động điên khùng.

Hàng tháng, bạn đọc các file log đều đặn lặp đi lặp lại tin báo giống nhau. Rồi vào một buổi sáng
bỗng dưng một cảnh báo lạ khác xuất hiện. Suy nghĩ đầu tiên của bạn là: "Mình đã bị tấn công!".
Muốn xác định xem liệu cuộc tấn công có thành công hay không, bạn lùng sục trong các bản ghi
log, kiểm tra file hệ thống, tìm kiếm dấu hiệu khác thường. Nhưng rốt cuộc chẳng có gì xảy ra
cả. Cuộc tấn công đã thất bại? Cũng chưa hẳn, có thể kẻ tấn công thông minh hơn bạn. Rồi hàng
ngày, hàng tuần bạn tự hỏi không hiểu hàng rào bảo vệ của mình có bị xâm nhập không. Cuối
cùng, bạn quên nó và đối phó với cuộc khủng hoảng mới.

Bảo mật máy tính, ở một số điểm cũng giống như việc lái xe vậy. Một số người nghĩ rằng lái xe
là thú vị, hồi hộp, nhưng số khác lại cho rằng nó nguy hiểm và đáng sợ. Trong lái xe, tôi luôn
tuân thủ các quy định đường bộ: đeo dây bảo hiểm, tránh đường có hại, luôn quan sát đường đi,
bảo dưỡng định kỳ. Vậy những nguyên tắc tương ứng trong bảo mật trong máy tính thì như thế
nào?

Xin được thông báo điều đầu tiên là: hầu hết chương trình bảo mật máy tính không mang tính kỹ
thuật nặng nề, giống như người lái xe không đòi hỏi phải hiểu chi tiết động cơ hoạt động bên
trong như thế nào. Lái xe tốt cũng có thể chán như lái xe tồi, có thể chẳng vui vẻ gì hơn. Bảo mật
máy tính đòi hỏi nhiều nỗ lực. Bạn phải thực hiện kiểm tra có phương pháp các chi tiết cần thiết
mới có khả năng mang lại hiệu quả cho hệ thống máy tính vốn tẻ nhạt, và có thể dự đoán trước
được. Lái xe an toàn và an toàn trong máy tính đều đòi hỏi khả năng kỹ thuật của bạn. Mục đích
là giúp bạn tránh những điều có hại ngay từ những bước đầu tiên. Bài báo này có thể giống như
một khoá học lái xe an toàn trên đường cao tốc cho bạn vậy.

Bảo hiểm

Hầu hết các nước trên thế giới đều không cho phép bạn lái xe khi không có bảo hiểm, một
phương pháp rất cũ trong việc quản lý và phân phối các nguy hiểm. Leo lên một chiếc ô tô, mức
độ rủi ro nguy hiểm gây chết người và tổn thương nghiêm trọng cho bạn gia tăng. Nhưng hầu hết
mọi người đều lái xe. Cũng giống như thế, kết nối máy tính với mạng đặt bạn trước nguy cơ bị
mất mát hay bị ăn trộm dữ liệu. Nhưng ai cũng đều có vẻ miễn cưỡng nếu buộc phải ngắt kết nối
Internet khi có sự cố xảy ra. Là một quản trị viên hệ thống Linux, có thể bạn không dự đoán
được nguy hiểm, nhưng luôn quản lý được chúng.
                                       Nguồn: tla.ch Trước hết bạn cần biết mức độ tự nhiên
của các mối nguy hiểm rồi mới có thể quản lý được chúng. Bảo hiểm ô tô có thể là các hoá đơn
thuốc, bảo hiểm nguy cơ cho xe ô tô, các kiện cáo liên quan đến tai nạn, trộm cắp xe. Khi đặt
một máy tính vào mạng Internet, những nguy hiểm gì phát sinh cho bạn?

Các chuyên gia bảo mật máy tính nói rằng người dùng và người quản trị nên phát triển mô hình
đe doạ thử nghiệm để nghiên cứu. Bạn muốn bảo vệ khả năng truy cập mạng, khả năng in hay
lưu trữ file? Bạn đang lo lắng về tính cẩn mật của file nào đó trên hệ thống? Bạn đang lo lắng
mọi người có thể chỉnh sửa hay phá huỷ dữ liệu? Bạn có muốn hacker xoá website và đe doạ làm
méo mó hình ảnh của bạn?

Thực thi bảo mật đòi hỏi ít nhất bạn phải hiểu được cái gì đe doạ mình. Các điểm nguy hiểm
trong bảo mật không giống như bảo hiểm.

Sao lưu trong bảo mật máy tính cũng giống như bảo hiểm ở lái xe: Tuỳ thuộc vào mô hình nguy
hiểm và cấu hình hệ thống, các phân vùng khác nhau của thủ tục sao lưu có thể được nhấn mạnh.
Nếu hệ thống đang sử dụng là tiêu chuẩn Linux không dùng đĩa CD với một chút tuỳ chỉnh trong
các file cấu hình, bạn có thể chỉ cần một đĩa nén để sao lưu file trong thư mục gốc. Nếu tuỳ chỉnh
hệ thống mở rộng, bạn cũng có thể sao lưu trong thư mục: /etc và /usr/local. Nếu việc lưu trữ
file với cơ chế cài đặt 'làm tươi' đem lại sự chính xác cho hệ thống, bạn có thể thực hiện cơ chế
sao lưu đầy đủ thông thường.

Luật đường bộ

Hầu hết mọi chính phủ trên thế giới đều đòi hỏi bạn phải học luật khi muốn lái xe. Trước khi cấp
quyền được lái cho ai đó, họ phải vượt qua bài kiểm tra chứng minh khả năng hiểu luật đường
bộ. Còn đối với người dùng mạng, cuốn sách luật cầm tay là các điều khoản dịch vụ trong hợp
đồng với nhà cung cấp ISP. Nếu dùng máy tính cho công việc, bạn cũng phải tuân theo các
hướng dẫn tổng hợp hay các chính sách tổng hợp.

Các điều khoản dịch vụ có thể gồm một mức giới hạn dịch vụ giám sát và thực thi trên mạng,
cùng với các điều khoản yêu cầu luật sở hữu trí tuệ khắt khe. Các chính sách tổng hợp đòi hỏi
phải có mật khẩu an toàn, việc dùng hệ thống cho các hoạt động không liên quan đến công việc,
các hợp đồng bảo mật…

Khi là một quản trị viên hệ thống, bạn phải xây dựng một số chính sách như mật khẩu của tổ
chức, giải mã lưu lượng mạng, quét tìm lỗ hổng bảo mật trên các máy công ty. Nếu bạn nghĩ
rằng đó không phải là vấn đề, hãy đọc về trường hợp của Randal Schwartz và về vụ một số nhân
viên CIA gần đây bị kỷ luật vì sử dụng dịch vụ chat không rõ nguồn gốc. Nếu bạn chưa có một
chính sách nào, hãy đầu tư phát triển chúng.

Hãy thắt dây an toàn

Lời khuyên tốt nhất khi tham gia giao thông là bạn nên ở vai trò của một người bộ hành. Hầu hết
các xâm phạm bảo mật nguy hiểm nhất lại không phải do hacker, đối thủ cạnh tranh hay tổ chức
chính phủ bất chính nào gây ra. Nguyên nhân xuất phát từ chính các nhân viên không thực hiện
điều luật quy định. Họ sử dụng mật khẩu tồi trên laptop, đặt chúng vào mạng bảo hiểm ở nhà
cũng như trong các cuộc họp… Hãy chắc chắn rằng tất cả các nhân viên hiểu được chính sách
của bạn và giúp họ biết được các nguy hiểm cận kề kết hợp với sự xâm phạm của họ. Thậm chí
cho dù các xâm phạm không gây hại trực tiếp nhưng chúng trở thành nguyên nhân làm gia tăng
mức độ nguy hiểm, chính xác đối ngược lại với những gì bạn đang cố gắng thực hiện.

Thắt dây an toàn cũng giống như cân bằng các mối đe doạ: những người bạn luôn nói với tôi về
một người nào đó đã bị giết khi anh ta thắt dây an toàn nhưng thay vào đó là được bảo vệ an
toàn. Cho dù một trong các câu chuyện đó không phải là sự thực, nhưng cũng có những ngoại lệ,
dẫu không phải là nguyên tắc. Những người lái xe thận trọng hay hành khách biết điều đó. Thắt
lưng an toàn đã cứu được nhiều người. Tương tự, thực thi một số tính năng bảo mật máy tính có
thể khiến bạn phải đối mặt với nhiều thách thức hơn. Có khi chúng trở thành đích nhắm thú vị
cho hacker. Một câu hỏi luôn được đặt ra là: "Xét về tổng thể, chừng này làm tăng hay giảm tính
bảo mật?"

Tránh đường xấu




                                        Nguồn: opensource Một chiếc ô tô tốt được thiết kế sao
cho có được sức bền càng lớn càng hay. Sức bền trên Internet cũng tương tự với dòng hằng của
các chương trình quét mức thấp và các máy dò hacker dùng để tìm kiếm hệ thống có thể xâm
nhập. Cách tốt nhất để tránh việc này là giữ một profile thấp. Hầu hết các quản trị viên Linux đều
mở nhiều dịch vụ hơn mức cần thiết trong khu vực làm việc. Tôi đã từng chứng kiến hàng loạt
máy bị hack qua các bản copy lỗi thời của BIND cài đặt trên hệ thống. Hệ thống đó thậm chí
không dùng tên dịch vụ cục bộ. Nếu tính năng 'named' không thực thi, hệ thống sẽ không an
toàn. Hãy tắt bất kỳ dịch vụ thừa và gỡ bỏ phần mềm không cần thiết nếu có thể.

Nhiều chương trình nguy hiểm đến từ inetd. Bạn có thể tắt chúng bằng cách dẫn giải các dòng
phù hợp tương ứng trong thư mục /etc/inetd.conf. Một số hệ thống như Red Hat 7.0 sử
dụng xinetd thay thế cho các file cấu hình xinetd, dễ dàng trong sử dụng và cũng dễ dàng tắt
các dịch vụ này. Nhiều dịch vụ nguy hiểm khác xuất hiện trong các bản script khởi động
ở /etc/rc[1-5].d,/etc/init.d/rc[1-5].d, hay /sbin/rc[1-5].d. (Thư mục này có thể
thay đổi tuỳ thuộc vào hệ thống phân phối của bạn), nhưng tốt nhất là nên giới hạn lượng tối
thiểu vừa đủ.

Cuối cùng là bảo vệ dữ liệu khi được truyền đi trên mạng. Các chương trình như Telnet, FTP
truyền tải tất cả mật khẩu và dữ liệu qua mạng dưới dạng văn bản thuần tuý (cleartext). Bất kỳ ai
có bộ sniffer mạng đều có thể đọc được chúng. Bạn nên thay thế các gói này
bằng OpenSSH hoặc một phần mềm nào đó khác bảo vệ dữ liệu bằng cách sử dụng phương pháp
mã hoá.

Hãy luôn chú ý tới đường đi

Một người lái xe giỏi phải luôn quan sát được chướng ngại vật, biết các nguy cơ có thể xảy đến
và biết cách xử lý chúng ra sao. Trong bảo mật, danh sách mailing là điểm then chốt để thực hiện
điều này.CIAC và CERT sử dụng bộ danh sách mailing mức thấp với thông tin về các nguy cơ
bảo mật cho nhiều công ty phát triển Linux như Red Hat, SuSE, Debian và Mandrake. Nếu bạn
muốn biết cụ thể hơn các vấn đề diễn ra hàng ngày, BugTraq là danh sách mailing hữu hiệu, nơi
nhiều vấn đề bảo mật được đưa ra đầu tiên.

Để luôn quan sát được những gì đang diễn ra, hãy đọc các file log cơ sở. Đó là điều đầu tiên bạn
nên làm mỗi sáng, sau khi kiểm tra e-mail đến. Nếu sử dụng một hệ thống dò tìm xâm nhập
như Snort, bạn cũng nên đọc các file log. Chương trình GIAC (Global Incident Analysis Center)
của học viện SANS Institute cho phép bạn tìm ra hệ thống dò tìm xâm nhập không hoạt động của
người khá. Đọc file log của các admin khác là một cách thông minh để hiểu các vấn đề cơ sở.

Bảo dưỡng định kỳ

Ngay cả những chiếc xe an toàn nhất, hiện đại nhất cũng cần phải được kiểm tra và bảo dưỡng
định kỳ mới có thể luôn duy trì được khả năng hoạt động tốt nhất của mình. Máy tính cũng vậy.
Với các hệ thống Linux, bảo dưỡng định kỳ tức là phải luôn cập nhật bản mới nhất cho phần
mềm trong máy. Như với Red Hat Linux chẳng hạn. Thời gian cập nhật cho các bản update mới
nhất là khá thường xuyên: một hoặc thậm chí hơn các bản update trong một tuần.
                         Nguồn: norman Mặc dù giữ tốc độ cập nhật liên tục cho phần mềm hệ
thống có nhiều thách thức, nhưng điều đó là cần thiết. Hầu hết các hệ thống bị phá hoại xuất phát
từ nguyên nhân khai thác các lỗ hổng bảo mật trong phần mềm chưa được update bản mới nhất.
Bạn có thể ví nó như một cuộc đua: bạn sẽ tìm thấy các lỗ hổng trước khi vá chúng? Nhiều phân
phối Linux hiện nay đều trang bị cơ chế update tự động. Debian và các phân phối liên quan hỗ
trợ lệnh apt-get update, Mandrake có MandrakeUpdate và Red Hat có 'up2date'. Sử dụng các
chức năng này hoặc tự nâng cấp cho tất cả phần mềm trong hệ thống hiện thời của bạn là yếu tố
quan trọng để giành chiến thắng trong cuộc đua chống những kẻ xâm phạm bất hợp pháp.

Giống như lái xe, bảo mật máy tính cũng có những điểm hết sức đáng chán. Để giữ an toàn, bạn
phải tiếp tục thực hiện các nguyên tắc cơ bản sau đây:

• Sao lưu hệ thống như là một hình thức bảo hiểm
• Biết mình đang cố gắng bảo vệ cái gì
• Thực hiện tất cả các chính sách thích hợp (nếu cần thì có thể xây dựng chính sách riêng)
• Biết ước lượng khả năng của mình và giới hạn nó
• Luôn quan sát, theo dõi các mối đe doạ phù hợp
• Luôn cập nhật các bản mới nhất cho phần mềm

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:239
posted:5/24/2011
language:Vietnamese
pages:22