Chuyên cung cấp tài liệu


Từ khóa cần tìm:

Chống xâm nhập bất hợp pháp Linux

Thứ năm - 25/09/2008 00:49

CuÌ€ng với sưÌ£ phát triển của các hêÌ£ thống chaÌ£y Linux trên internet, ngươÌ€i ta đã vaÌ€ đang tiÌ€m ra ngaÌ€y caÌ€ng nhiêÌ€u lỗ hổng bảo mâÌ£t của các phâÌ€n mêÌ€m miễn phí trên các hêÌ£ thống naÌ€y. HiêÌ£n có rất nhiêÌ€u kiểu tấn công, xâm nhâÌ£p hêÌ£ thống Linux như: tấn công gây traÌ€n bôÌ£ đêÌ£m (Buffer Over Flow), tấn công kiểu tưÌ€ chối các diÌ£ch vuÌ£ (Denial of Services), tấn công dưÌ£a vaÌ€o cửa sau (Back door)... MôÌ£t khi kẻ tấn công chiếm đươÌ£c quyêÌ€n ˜root™ (taÌ€i khoản ngươÌ€i duÌ€ng có quyêÌ€n cao nhất trên hêÌ£ thống), toaÌ€n bôÌ£ hêÌ£ thống đó biÌ£ đăÌ£t dưới quyêÌ€n điêÌ€u khiển của kẻ xâm nhâÌ£p. VâÌ£y các nhaÌ€ quản triÌ£ phải laÌ€m giÌ€ để bảo vêÌ£ hêÌ£ thống của miÌ€nh? LaÌ€m sao ngăn chăÌ£n đươÌ£c ngươÌ€i duÌ€ng có quyêÌ€n root phá hoaÌ£i các thaÌ€nh phâÌ€n quan troÌ£ng của hêÌ£ thống?

HêÌ£ thống Linux thông thươÌ€ng có môÌ£t số nhươÌ£c điểm sau:

NgươÌ€i chiếm đươÌ£c quyêÌ€n root sẽ có quyêÌ€n quyết điÌ£nh số phâÌ£n tất cả các thaÌ€nh phâÌ€n của hêÌ£ thống: chấm dứt các tiến triÌ€nh (kill), xoá bỏ bất cứ tâÌ£p tin naÌ€o, thay đổi bất cứ tâÌ£p tin cấu hiÌ€nh naÌ€o. Với ngươÌ€i quản triÌ£ hêÌ£ thống thưÌ£c sưÌ£ thiÌ€ điêÌ€u đó laÌ€ câÌ€n thiết, nhưng với kẻ xâm nhâÌ£p thiÌ€ điêÌ€u naÌ€y vô vuÌ€ng nguy hiểm.

Các tâÌ£p tin quan troÌ£ng của hêÌ£ thống không đươÌ£c bảo vêÌ£ chống truy nhâÌ£p (đoÌ£c/ghi) bất hơÌ£p pháp. Những tâÌ£p tin cưÌ£c kyÌ€ quan troÌ£ng trên hêÌ£ thống như init, login... hay các tâÌ£p tin cấu hiÌ€nh, thiết lâÌ£p tươÌ€ng lửa, thiết lâÌ£p vêÌ€ thông tin maÌ£ng (IP, network, routting, name server...), biÌ£ thay đổi thiÌ€ không thể lươÌ€ng trước đươÌ£c hâÌ£u quả.

Các tiến triÌ€nh không đươÌ£c bảo vêÌ£. Trên các máy chủ Linux, có rất nhiêÌ€u tiến triÌ€nh quan troÌ£ng phải đươÌ£c chaÌ£y thươÌ€ng trưÌ£c để phuÌ£c vuÌ£ khách haÌ€ng: Tiến triÌ€nh httpd thưÌ£c hiêÌ£n chức năng của web server, tiến triÌ€nh ftpd cung cấp truy câÌ£p tâÌ£p tin theo giao thức FTP, tiến triÌ€nh named thưÌ£c hiêÌ£n diÌ£ch vuÌ£ giải nghĩa tên/điÌ£a chỉ máy tính (Domain Name Service)... Nếu ngươÌ€i duÌ€ng có quyêÌ€n thích hơÌ£p (quyêÌ€n root chẳng haÌ£n), hoÌ£ có thể chấm dứt các tiến triÌ€nh bất cứ lúc naÌ€o (ví duÌ£: killall httpd), điêÌ€u naÌ€y gây ảnh hưởng vô cuÌ€ng lớn đối với các hêÌ£ thống phuÌ£c vuÌ£ nhiêÌ€u ngươÌ€i duÌ€ng như máy chủ web, máy chủ thư điêÌ£n tử (mail server), máy chủ giải nghĩa tên (Name Server)...

Các nhươÌ£c điểm trên laÌ€ do Linux thưÌ€a hưởng kiến trúc, thiết kế cơ bản tưÌ€ hêÌ£ thống UNIX. Rất may, nhơÌ€ lơÌ£i ích của phâÌ€n mêÌ€m mã nguôÌ€n mở, ngươÌ€i ta đã nhanh chóng khắc phuÌ£c nhươÌ£c điểm naÌ€y băÌ€ng cách thay đổi trong mã nguôÌ€n của nhân (kernel) Linux, tích hơÌ£p vaÌ€o đó các tính năng mới vaÌ€ cung cấp môÌ£t số công cuÌ£ quản triÌ£, đươÌ£c đăÌ£t tên laÌ€ LIDS (Linux Intrusion Detection System). Mã nguôÌ€n của LIDS vaÌ€ các taÌ€i liêÌ£u có liên quan có taÌ£i website
http://www.lids.org.

MăÌ£c duÌ€ cho đến nay Linus Torvard vaÌ€ những ngươÌ€i có trách nhiêÌ£m duy triÌ€ sưÌ£ phát triển của nhân Linux vẫn chưa chính thức quyết điÌ£nh tích hơÌ£p các tính năng mới vaÌ€o phiên bản Linux kernel hiêÌ£n taÌ£i, nhưng LIDS đã đươÌ£c môÌ£t số nhaÌ€ phân phối Linux chính thức sử duÌ£ng trong sản phẩm của miÌ€nh, điển hiÌ€nh laÌ€ EnGarde (
http://www.engardelinux.com).

Các ThaÌ€nh PhâÌ€n VaÌ€ Tính Năng Của Lids

LIDS bao gôÌ€m:

- MôÌ£t phâÌ€n mã đươÌ£c tích hơÌ£p trong Linux kernel, đươÌ£c patch vaÌ€o mã nguôÌ€n của kernel

- Công cuÌ£ quản triÌ£ có tên laÌ€ lidsadm (LIDS Admin Tool) cuÌ€ng môÌ£t số tâÌ£p tin cấu hiÌ€nh trong thư muÌ£c /etc/lids/ duÌ€ng để thiết lâÌ£p, thay đổi cấu hiÌ€nh của LIDS.

LIDS cho phép ngươÌ€i quản triÌ£ hêÌ£ thống:

- Bảo vêÌ£ các tâÌ£p tin, thư muÌ£c trên hêÌ£ thống (không phuÌ£ thuôÌ£c vaÌ€o kiểu hêÌ£ thống tâÌ£p tin chứa tâÌ£p tin/thư muÌ£c đó laÌ€ ext2, ext3 hay vfat..) khỏi sưÌ£ truy câÌ£p bất hơÌ£p pháp, kể cả ngươÌ€i sử duÌ£ng có quyêÌ€n root.

- Bảo vêÌ£ các tiến triÌ€nh không biÌ£ chấm dứt (kill) bởi các tiến triÌ€nh khác do bất cứ ngươÌ€i duÌ€ng naÌ€o thưÌ£c hiêÌ£n.

- Kiểm soát vaÌ€ ngăn chăÌ£n các thao tác vaÌ€o ra mức thấp do các chương triÌ€nh không mong muốn thưÌ£c hiêÌ£n.

CaÌ€i ĐăÌ£t Lids

Khi tải vêÌ€ mã nguôÌ€n LIDS, baÌ£n phải choÌ£n phiên bản phuÌ€ hơÌ£p với phiên bản của Linux kernel. Ví duÌ£, với kernel-2.4.18 baÌ£n phải tải vêÌ€ phiên bản LIDS có phâÌ€n version laÌ€ 2.4.18. LIDS đươÌ£c phát triển dưÌ£a trên các bản Linux kernel chính thức tưÌ€
http://www.kernel.org.

Tích hơÌ£p LIDS vaÌ€o mã nguôÌ€n của Linux kernel:

Tải vêÌ€ mã nguôÌ€n của LIDS vaÌ€ Linux kernel. Nên để mã nguôÌ€n của Linux Kernel taÌ£i thư muÌ£c /usr/src/linux để các chương triÌ€nh khác có thể truy câÌ£p đến. Giải nén LIDS (taÌ£i môÌ£t thư muÌ£c khác), baÌ£n sẽ thấy trong đó có môÌ£t tâÌ£p tin có đuôi laÌ€ .patch, chép tâÌ£p tin naÌ€y vaÌ€o thư muÌ£c /usr/src/linux vaÌ€ chuyển vaÌ€o thư muÌ£c chứa mã nguôÌ€n Linux kernel để tiến haÌ€nh patch vaÌ€ biên diÌ£ch laÌ£i.

#cd /usr/src/linux

#patch -p1 < lids_version-kernel_version.patch

(lids_version laÌ€ phiên bản của LIDS, kernel_version laÌ€ phiên bản của Linux kernel)

Cấu hiÌ€nh các tính năng của kernel:

#make menuconfig hoăÌ£c make config (make xconfig nếu baÌ£n đang ở trong môi trươÌ€ng X Window)

Nhớ bâÌ£t các tuyÌ€ choÌ£n:

<*>Prompt for development and/or incomplete code/drivers

<*>Sysctl support

<*>Linux Intrusion Detection System support (EXPERIMENTAL) (NEW).

Biên diÌ£ch kernel:

#make dep

#make bzImage

#make modules

#make modules_install

Quá triÌ€nh biên diÌ£ch diễn ra nhanh hay châÌ£m phuÌ£ thuôÌ£c vaÌ€o cấu hiÌ€nh máy tính, phiên bản của kernel vaÌ€ các tuyÌ€ choÌ£n maÌ€ baÌ£n choÌ£n khi cấu hiÌ€nh kernel.

CaÌ€i đăÌ£t kernel mới:

Sau khi quá triÌ€nh trên kết thúc, chép tâÌ£p tin bzImage trong thư muÌ£c /usr/src/linux/boot/arch/i386 (nếu CPU laÌ€ Intel) vaÌ€o thư muÌ£c /boot vaÌ€ có thể đổi tên, ví duÌ£ như secu_kernel.

Nếu duÌ€ng lilo để khởi đôÌ£ng hêÌ£ thống, baÌ£n phải soaÌ£n laÌ£i tâÌ£p tin /etc/lilo.conf vaÌ€ thêm môÌ£t muÌ£c mới như sau:

image=/boot/secu_kernel

label=secu

read-only

root=/dev/hda2

(/dev/hda2 laÌ€ phân vuÌ€ng chứa thư muÌ£c gốc / , baÌ£n thay nó băÌ€ng tên phân vuÌ€ng gốc của baÌ£n, nếu không biết phân vuÌ€ng gốc, gõ lêÌ£nh mount không tham số, baÌ£n sẽ nhâÌ£n đươÌ£c danh sách các phân vuÌ€ng đang đươÌ£c kết gán, trong đó có cả phân vuÌ€ng gốc).

Sau đó thưÌ£c hiêÌ£n lêÌ£nh /sbin/lilo để câÌ£p nhâÌ£t muÌ£c mới đó.

Biên diÌ£ch các công cuÌ£ quản triÌ£ của LIDS:

Chuyển vaÌ€o thư muÌ£c chứa mã nguôÌ€n của LIDS, thưÌ£c hiêÌ£n cấu hiÌ€nh, biên diÌ£ch vaÌ€ caÌ€i đăÌ£t LIDS.

#configure

#make

#make install

Thông thươÌ€ng lidsadm đươÌ£c caÌ€i đăÌ£t vaÌ€o thư muÌ£c /sbin, các tâÌ£p tin cấu hiÌ€nh đươÌ£c caÌ€i đăÌ£t trong thư muÌ£c /etc/lids. BaÌ£n có thể thay đổi các tâÌ£p tin cấu hiÌ€nh naÌ€y vaÌ€ thưÌ£c hiêÌ£n lêÌ£nh:

#lidsadm -U để câÌ£p nhâÌ£t sưÌ£ thay đổi đó.

Khởi đôÌ£ng laÌ£i hêÌ£ thống với kernel mới (secu_kernel) băÌ€ng cách choÌ£n secu taÌ£i dấu nhắc lilo.

Sử DuÌ£ng Lids

Bảo vêÌ£ hêÌ£ thống:

Sau khi hêÌ£ thống khởi đôÌ£ng xong, baÌ£n kích hoaÌ£t chế đôÌ£ bảo vêÌ£ của LIDS băÌ€ng lêÌ£nh

#lidsadm -I

Để lêÌ£nh trên đươÌ£c thưÌ£c hiêÌ£n mỗi khi khởi đôÌ£ng hêÌ£ thống, baÌ£n có thể thêm lêÌ£nh đó vaÌ€o tâÌ£p tin /etc/rc.d/rc.local hoăÌ£c tâÌ£p tin naÌ€o đó tương tưÌ£ trên bản Linux của baÌ£n.

Thay đổi chế đôÌ£:

Sau khi hêÌ£ thống đươÌ£c bảo vêÌ£, nếu baÌ£n câÌ€n chuyển sang chế đôÌ£ thông thươÌ€ng để thay đổi các tâÌ£p tin cấu hiÌ€nh, các tâÌ£p tin đươÌ£c bảo vêÌ£, baÌ£n duÌ€ng lênh:

# /sbin/lidsadm -S ” -LIDS

Sau đó kích hoaÌ£t laÌ£i hêÌ£ thống bảo vêÌ£:

# /sbin/lidsadm -S ” +LIDS

Nếu baÌ£n thay đổi các tâÌ£p tin cấu hiÌ€nh của lids, sử duÌ£ng lêÌ£nh sau để naÌ£p các thông tin đó vaÌ€o vuÌ€ng bôÌ£ nhớ của kernel:

# /sbin/lidsadm -S ” +RELOAD_CONF

Các tâÌ£p tin cấu hiÌ€nh của LIDS:

- lids.conf: điÌ£nh nghĩa các đối tươÌ£ng đươÌ£c bảo vêÌ£ vaÌ€ haÌ€nh đôÌ£ng bảo vêÌ£ maÌ€ LIDS câÌ€n thưÌ£c hiêÌ£n; có thể thêm, bớt các đối tươÌ£ng băÌ€ng lidsadm.

- lids.cap: chứa các tính năng đươÌ£c lids sử duÌ£ng; baÌ£n có thể thêm, bớt các tính năng băÌ€ng cách đăÌ£t dấu + hoăÌ£c - trước tên các tính năng đó.

- lids.net: điÌ£nh nghĩa cách thức maÌ€ LIDS sẽ gửi email cho baÌ£n khi có sưÌ£ kiêÌ£n giÌ€ đó xảy ra trên hêÌ£ thống maÌ€ baÌ£n câÌ€n quan tâm, nó chứa tên mail server, điÌ£a chỉ của baÌ£n, tiêu đêÌ€ của bức thư... TâÌ£p tin naÌ€y câÌ€n có khi baÌ£n biên diÌ£ch kernel với tuyÌ€ choÌ£n câÌ€u hiÌ€nh laÌ€ Send security alerts through network.

- lids.pw: chứa mâÌ£t khẩu của nhaÌ€ quản triÌ£, duÌ€ng để kích hoaÌ£t lêÌ£nh lidsadm. TâÌ£p tin naÌ€y câÌ€n có khi baÌ£n biên diÌ£ch kernel với tuÌ€y choÌ£n Allow switching LIDS protections.

Sử duÌ£ng lêÌ£nh lidsadm -P để thay đổi passwd của lidsadm.

Bảo vêÌ£ tâÌ£p tin/thư muÌ£c:

LêÌ£nh sau cho phép bảo vêÌ£ môÌ£t tâÌ£p tin, thư muÌ£c naÌ€o đó, ví duÌ£ tâÌ£p tin /etc/lilo.conf, không cho ai biết sưÌ£ có măÌ£t của nó trên hêÌ£ thống, kể cả root:

# lidsadm -A -o /etc/lilo.conf -j DENY

CâÌ£p nhâÌ£t laÌ£i cấu hiÌ€nh băÌ€ng lêÌ£nh:

# /sbin/lidsadm -S ” +RELOAD_CONF

BaÌ£n sẽ không thể thấy tâÌ£p tin /etc/lilo:


#cat /etc/lilo.conf

cat: /etc/lilo.conf: No such file or directory

NgoaÌ€i tuyÌ€ choÌ£n DENY, baÌ£n có thể thay vaÌ€o đó các tuyÌ€ choÌ£n bảo vêÌ£ khác như:

READ: Chỉ đươÌ£c đoÌ£c

WRITE: Có thể đoÌ£c, ghi

APPEND: Chỉ có thể thêm vaÌ€o các dữ liêÌ£u mới ở cuối tâÌ£p tin (có ích với các tâÌ£p tin log như /var/log/message ,/var/log/secure...)

Cho phép môÌ£t tâÌ£p tin, thư muÌ£c naÌ€o đó đươÌ£c môÌ£t chương triÌ€nh naÌ€o đó đoÌ£c hoăÌ£c ghi:

Ví duÌ£: BaÌ£n cấm tất cả các đối tươÌ£ng khác đoÌ£c/ghi thư muÌ£c /var/www/html viÌ€ nó laÌ€ thư muÌ£c chứa các taÌ€i liêÌ£u web quan troÌ£ng. Nhưng nó câÌ€n đươÌ£c web server sử duÌ£ng để cung cấp các thông tin cho moÌ£i ngươÌ€i:

(Cấm tất cả moÌ£i ngươÌ€i đoÌ£c/ghi)

# lidsadm -A -o /home/httpd -j DENY

(Cho phép web server đoÌ£c)

# lidsadm -A -s /usr/sbin/httpd -o /var/www/html -j READ


Bảo vêÌ£ các tiến triÌ€nh:

Các tiến triÌ€nh laÌ€ tiến triÌ€nh con của init có thể đươÌ£c bảo vêÌ£ khỏi biÌ£ kill với tuyÌ€ choÌ£n: -29:CAP_INIT_KILL trong tâÌ£p tin /etc/lids/lids.cap

NgoaÌ€i ra, baÌ£n có thể giấu môÌ£t tiến triÌ€nh naÌ€o đó khi chaÌ£y băÌ€ng lêÌ£nh:



#lidsadm -A -s <đươÌ€ng dẫn tới chương triÌ€nh> -t -o CAP_HIDDEN -j INHERIT


Ví duÌ£, che giấu tiến triÌ€nh httpd:

#lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j INHERIT


Các tiến triÌ€nh đươÌ£c giấu sẽ không thể nhiÌ€n thấy đươÌ£c băÌ€ng lêÌ£nh ps hoăÌ£c biÌ£ lưu laÌ£i taÌ£i tâÌ£p tin naÌ€o đó trong thư muÌ£c /proc.

NgoaÌ€i ra coÌ€n nhiêÌ€u tính năng hữu ích nữa đươÌ£c thiết lâÌ£p trong /etc/lids/lids.cap để bảo vêÌ£ các thao tác vaÌ€o ra cấp thấp, thay đổi cấu hiÌ€nh maÌ£ng... BaÌ£n nên xem chi tiết trong phiên bản LIDS của miÌ€nh.

Phát hiêÌ£n kẻ xâm nhâÌ£p vaÌ€ thông báo cho ngươÌ€i quản triÌ£:

Kẻ xâm nhâÌ£p có thể biÌ£ phát hiêÌ£n bởi môÌ£t trong các haÌ€nh đôÌ£ng sau:

- Sử duÌ£ng công cuÌ£ quét cổng như nmap, satan, super scan...

- Sử duÌ£ng thao tác vaÌ€o ra cấp thấp với các cổng truy nhâÌ£p...

- ThưÌ£c hiêÌ£n thao tác trái phép với các đối tươÌ£ng đã đươÌ£c LIDS bảo vêÌ£...

Các haÌ€nh đôÌ£ng trên sẽ đươÌ£c ghi laÌ£i trong hêÌ£ thống thông qua các tâÌ£p tin log, LIDS coÌ€n cho phép gửi các thông báo trên tới ngươÌ€i quản triÌ£ thông qua email (khai báo trong tâÌ£p tin /etc/lids/lids.net)

Nếu kẻ xâm nhâÌ£p chiếm đươÌ£c truy nhâÌ£p mức console, LIDS sẽ chấm dứt hoaÌ£t đôÌ£ng của phiên laÌ€m viêÌ£c đó.

LơÌ€i Kết

Công cuÌ£ bảo mâÌ£t tốt nhất vẫn chỉ laÌ€ công cuÌ£ vaÌ€ nó có thể biÌ£ bẻ gẫy bởi môÌ£t hacker naÌ€o đó. Không có môÌ£t bức tươÌ€ng lửa naÌ€o laÌ€ an toaÌ€n mãi mãi trên internet, không có môÌ£t hêÌ£ thống naÌ€o laÌ€ bất khả mãi mãi xâm phaÌ£m... ViêÌ£c lâÌ£p chính sách bảo mâÌ£t tốt vaÌ€ có quy triÌ€nh giám sát, theo dõi chăÌ£t chẽ của con ngươÌ€i vẫn laÌ€ điêÌ€u quan troÌ£ng hơn cả.

Tác giả bài viết: Quang Tùng - GiangVien.Net

Tổng số điểm của bài viết là: 0 trong 0 đánh giá
Click để đánh giá bài viết
Comment addGửi bình luận của bạn
Mã chống spamThay mới

Những tin mới hơn

Những tin cũ hơn

 
(Chú ý: Website đang trong giai đoạn hoạt động thử nghiệm, đang định xin giấy phép MXH của Bộ TT & TT)
Lên đầu trang
Array
(
    [type] => 8192
    [message] => preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
    [file] => /home/pwhqfmvb/GiangVien/includes/countries.php
    [line] => 435
)