Linux Intrusion Detection System (LIDS)

Một phần của tài liệu 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) (Trang 43 - 47)

Gồm bản sửa đổi cho mó nguồn Linux và cụng cụ quản trị nhằm tăng cường tớnh bảo mật cho hệ thống bằng cỏch kiểm soỏt và hạn chế truy cập lờn cỏc thành phần được bảo vệ, kể cả với user root.

Giới thiệu

Cựng với sự phỏt triển của cỏc hệ thống chạy Linux trờn Internet, người ta đó và đang tỡm ra ngày càng nhiều cỏc 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 Linux. Hiện cú rất nhiều kiểu tấn cụng, xõm nhập khỏc nhau từ cỏc hacker bờn ngoài vào cỏc hệ thống Linux như: Tấn cụng gõy tràn bộ đệm (Buffer OverFlow), tấn cụng kiểu từ chối cỏc dịch vụ (Denial of Services), tấn cụng dựa vào cỏc cửa hậu (Backdoor)... Một khi kẻ tấn cụng chiếm được quyền root (tài khoản người dựng cú quyền tối đa trờn hệ thống), toàn bộ hệ thống đú bị đặt dưới quyền điều khiển của kẻ xõm nhập. Tất nhiờn, với cỏc chớnh sỏch bảo mật tốt, một người nào đú cú thể núi hệ thống của mỡnh là bất khả xõm phạm. Nhưng cõu núi đú chỉ cú tớnh tương đối, vỡ thật ra, khụng cú một bức tường lửa nào là an toàn mói mói trờn Internet, khụng cú một hệ thống nào là bất khả xõm phạm mói mói... Vậy cỏc nhà quản trị phải làm gỡ để bảo vệ hệ thống của mỡnh ? Làm sao ngăn chặn được người dựng cú quyền root phỏ huỷ cỏc thành phần quan trọng của hệ thống ?? Một hệ thống Linux thụng thường cú một số nhược điểm sau:

• Một người chiếm được quyền root, anh ta cú quyền quyết định số phận tất cả cỏc thành phần của hệ thống, anh ta cú thể chấm dứt cỏc tiến trỡnh (kill) xoỏ bỏ bất cứ file nào trờn hệ thống, thay đổi bất cứ file cấu hỡnh nào. Với người quản trị hệ thống thực sự thỡ điều đú là cần thiết, với kẻ xõm nhập thỡ cú nghĩa là bạn đó bị chĩa sỳng vào đầu.

• Cỏc file quan trọng của hệ thống khụng được bảo vệ khỏi truy nhập (đọc/ghi) bất hợp phỏp. Cú những file được gọi là cực kỳ quan trọng trờn hệ thống như init, login.. Nếu bị kẻ xõm nhập thay thể bởi file khỏc do chỳng tạo ra, chỳng cú thể làm cho chức năng của cỏc chương trỡnh trờn hoàn toàn khỏc đi. Ngoài ra, cỏc file cấu hỡnh cũng cực kỳ quan trọng, cỏc thiết lập cho bức tường lửa, cỏc thiết lập về thụng tin mạng (IP,Network, Routting, Name Server..) nếu cỏc file này bị thay đổi thỡ khụng thể lường trước được hậu quả.

• Cỏc tiến trỡnh khụng được bảo vệ. Trờn cỏc mỏy chủ Linux, cú rất nhiều tiến trỡnh quan trọng luụn phải được chạy để phục vụ khỏch hàng: Tiến trỡnh httpd thực hiện chức năng của web server, tiến trỡnh ftpd cung cấp truy cập file theo giao thức FTP, tiến trỡnh named thực hiện dịch vụ giải nghĩa tờn/địa chỉ mỏy tớnh (Domain Name Service).. Nếu là người dựng cú quyền thớch hợp (quyền root chẳng hạn), họ cú thể chấm dứt nú bất cứ lỳc nào (vớ dụ: killall httpd), điều này gõy một ảnh hưởng vụ cựng lớn đối với cỏc hệ thống phục vụ nhiều người dựng như cỏc mỏy chủ web, cỏc mỏy chủ thư điện tử (mail server), cỏc mỏy chủ giải nghĩa tờn (Name Server). Cỏc nhược điểm trờn cú là vỡ Linux thừa hưởng cỏc kiến trỳc, thiết kế cơ bản từ hệ thống UNIX núi chung. Rất may, do lợi ớch của cỏc phần mềm mó nguồn mở đem lại, người ta đó nhanh chúng khắc phục nhược điểm này bằng một sự thay đổi đụi chỳt trong mó nguồn của nhõn Linux, tớch hợp vào đú cỏc tớnh năng mới nhằm khắc phục cỏc nhược điểm trờn và cung cấp một số cụng cụ quản trị, thiết đặt cỏc tớnh năng mới đú, nú được đặt tờn là LIDS - Linux Intrusion Detection System. Mó nguồn của LIDS và cỏc tài liệu cú liờn quan cú tại website http://www.lids.org/ Mặc dự cho đến nay, Linus Torvard và những người cú trỏch

nhiệm duy trỡ sự phỏt triển của nhõn Linux, vẫn chưa quyết định tớch hợp chớnh thức cỏc tớnh năng đú vào phiờn bản nhõn Linux hiện tại, nhưng LIDS đó được một số nhà phõn phối Linux sử dụng chớnh thức trong cỏc sản phẩm của họ, điển hỡnh là EnGarde (http://www.engardelinux.com/).

Download LIDS và Linux kernel source từ Internet

Cũng như Linux và cỏc phần mềm theo luật bản quyền GPL, LIDS sẵn cú mó nguồn tại http://www.lids.org/. Khi download mó nguồn của lids, bạn phải download phiờn bản phự hợp với phiờn bản của Linux kernel.

Vớ dụ kernel-2.4.18 bạn phải download phiờn bản lid cú phần cuối của version là 2.4.18. Hơn nữa, 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/, do đú, cỏc phiờn bản Linux kernel do cỏc nhà phõn phối cung cấp, cú thể sẽ khụng phự hợp với lids.

Cỏc thành phần và 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 vào mó nguồn của

kernel)

• Cụng cụ quản trị cú tờn là lidsadm (LIDS Admin Tool) cựng một số file cấu hỡnh trong thư mục /etc/lids/...dựng để thiết lập, thay đổi cấu hỡnh của LIDS

LIDS cho phộp người quản trị hệ thống:

• Bảo vệ cỏc file, thư mục trờn hệ thống (khụng phụ thuộc vào kiểu hệ thống file chứa file/thư mục đú là ext2, ext3 hay vfat..) khỏi sự truy cập bất hợp phỏp, kể cả root và cỏc chương trỡnh hệ thống.

• Bảo vệ cỏc tiến trỡnh khụng bị chấm dứt (kill) bởi cỏc tiến trỡnh khỏc do bất cứ người dựng nào thực hiện.

• Kiểm soỏt và ngăn chặn cỏc thao tỏc vào ra mức thấp (RAW I/O) do cỏc chương

trỡnh khụng mong muốn thực hiện. Nú cú thể bảo vệ sự thay đổi về cấu trỳc phõn vựng đĩa, bảo vệ Master Boot Record..

Cài đặt LIDS

Tớch hợp LIDS vào mó nguồn của Linux Kernel Sau khi download mó nguồn của LIDS và Linux kernel, giải nộn 2 file đú vào cỏc thư mục nào đú. Nờn để mó nguồn của Linux Kernel tại thư mục /usr/srv/linux để cỏc chương trỡnh khỏc cú thể cần đến nú. Bung nộn LIDS (tại một thư mục khỏc), bạn sẽ thấy trong đú cú một file cú đuụi là .patch, copy file này vào thư mục /usr/src/linux và thực hiện lệnh sau:

# patch -p1

Prompt for development and/or incomplete code/drivers Sysctl support

Linux Intrusion Detection System support (EXPERIMENTAL) (NEW).

Tiến hành biờn dịch kernel:

# make dep # make bzImage # make modules

# make modules_install

Quỏ trỡnh biờn dịch diễn ra nhanh hay chậm phụ thuộc vào cấu hỡnh mỏy tớnh, phiờn bản của kernel và cỏc tuỳ chọn mà ta chọn khi cấu hỡnh kernel.

Cài đặt kernel mới (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi quỏ trỡnh trờn kết thỳc, copy file bzImage trong thư mục

/usr/src/linux/boot/arch/i386 (nếu CPU là Intel-based) vào thư mục /boot và đổi tờn nú nếu cần (chẳng hạn là secu_kernel). Nếu dựng lilo để khởi động hệ thống, soạn lại file

/etc/lilo.conf và thờm một mục mới như sau: image=/boot/secu_kernel

label=secu read-only root=/dev/hda2

(/dev/hda2 là phõn vựng chứa thư mục gốc /, nờn thay nú bằng tờn phõn vựng gốc, nếu khụng biết phõn vựng gốc, gừ lệnh mount khụng tham số, ta sẽ nhận được danh sỏch cỏc phõn vựng đang được kết gỏn, trong đú cú cả phõn vựng gốc) Sau đú thực hiện lệnh /sbin/lilo để cập nhật mục mới đú.

Biờn dịch cỏc cụng cụ quản trị của lids

Chuyển vào thư mục chứa mó nguồn của lids, thực hiện cấu hỡnh, biờn dịch và cài đặt lids

# configure # make

# make install

Thụng thường lidsadm được cài đặt vào thư mục /sbin, cỏc file cấu hỡnh được cài đặt trong thư mục /etc/lids. Bạn cú thể thay đổi cỏc file cấu hỡnh này và thực hiện lệnh:

# lidsadm -U

để cập nhật sự thay đổi đú

Khởi động lại hệ thống với kernel mới (secu_kernel) bằng cỏch chọn secu tại dấu nhắc lilo.

Sử dụng LIDS Bảo vệ hệ thống

Sau khi hệ thống khởi động xong, ta kớch hoạ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, cú thể thờm lệnh đú vào file /etc/rc.d/rc.local hoặc file nào đú tương tự trờn bản Linux của mỡnh.

Thay đổi chế độ

Sau khi hệ thống được bảo vệ, nếu cần chuyển sang chế độ thụng thường để thay đổi cỏc file cấu hỡnh, cỏc file được bảo vệ, ta dựng lệnh:

# /sbin/lidsadm -S -- -LIDS

Sau đú kớch hoạt lại hệ thống bảo vệ bởi lệnh: # /sbin/lidsadm -S -- +LIDS

Nếu thay đổi cỏc file cấu hỡnh của lids, sử dụng lệnh sau để nạp cỏc thụng tin đú vào vựng bộ nhớ của kernel:

# /sbin/lidsadm -S -- +RELOAD_CONF

Cỏc file cấu hỡnh của LIDS:

lids.conf: file này định nghĩa cỏc đối tượng được bảo vệ và hành động bảo vệ mà lids cần thực hiện, cú thể thờm, bớt cỏc đối tượng bằng lidsadm

lids.cap: file này chứa cỏc tớnh năng được lids sử dụng, 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: file này định nghĩa cỏch thức mà lids sẽ gửi email cho ta khi cú sự kiện gỡ đú sảy ra trờn hệ thống, nú chứa tờn mail server, địa chỉ, tiờu đề của bức thư... File này cần cú khi biờn dịch kernel với tuỳ chọn cầu hỡnh là “Send security alerts through network” .

lids.pw: file này chứa mật khẩu của nhà quản trị, dựng để kớch hoạt lệnh lidsadm. File này cần cú khi biờn dịch kernel với tựy chọn “Allow switching LIDS protections” Sử dụng lệnh lidsadm -P để thay đổi passwd của lidsadm.

Bảo vệ file/thư mục

Để bảo vệ một file, thư mục nào đú, vớ dụ file /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/shadow -j DENY Cập nhật lại lại cấu hỡnh bằng lệnh: # /sbin/lidsadm -S -- +RELOAD_CONF Ta sẽ khụng thể thấy file /etc/lilo: # cat /etc/lilo.conf

cat: /etc/lilo.conf: No such file or directory (adsbygoogle = window.adsbygoogle || []).push({});

Ngoài tuỳ chọn DENY, cú thể thay vào đú cỏc tuỳ chọn bảo vệ khỏc như:

• READ: Chỉ được đọc

• WRITE: Cú thể đọc, ghi

• APPEND: Chỉ cú thể thờm vào cỏc dữ liệu mới ở cuối file (cú ớch với cỏc file log như /var/log/message,/var/log/secure,...)

Cho phộp một file, thư mục nào đú được một chương trỡnh nào đú đọc hoặc ghi:

Vớ dụ, bạn cấm tất cả cỏc đối tượng khỏc đọc/ghi thư mục /var/www/html vỡ nú là thư mục chứa cỏc tài liệu web quan trọng. Nhưng nú cần được web server (chương trỡnh httpd) sử dụng để cung cấp cỏc thụng tin cho mọi người: (Cấm tất cả mọi người đọc/ghi)

# lidsadm -A -o /home/httpd -j DENY Cho phộp web server đọc

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

Bảo vệ cỏc tiến trỡnh

Cỏc tiến trỡnh là tiến trỡnh con của init cú thể được bảo vệ khỏi bị kill bởi tuỳ chọn: -29:CAP_INIT_KILL trong file /etc/lids/lids.cap

Ngoài ra, bạn cú thể giấu một tiến trỡnh nào đú khi chạy bởi lệnh: # lidsadm -A -s -t -o CAP_HIDDEN -j INHERIT

Vớ dụ, che giấu tiến trỡnh httpd (web server):

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

Cỏc tiến trỡnh được che dấu sẽ khụng thể nhỡn thấy được bởi lệnh ps hoặc bị lưu lại tại file nào đú trong thư mục /proc. Ngoài ra cũ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 vào ra cấp thấp, thay đổi cấu hỡnh mạng.. Bạn nờn xem chi tiết trong phiờn bản lids của mỡnh. Phỏt hiện kẻ xõm nhập và thụng bỏo cho người quản trị Kẻ xõm nhập cú thể bị phỏt hiện bởi một trong cỏc hành động sau:

• Sử dụng cụng cụ quột cổng (scanner) như nmap, satan, super scan,.. • Sử dụng cỏc thao tỏc vào ra cấp thấp với cỏc cổng truy nhập,..

• Thực hiện cỏc thao tỏc trỏi phộp với cỏc đối tượng đó được lids bảo vệ..

Cỏc hành động trờn sẽ được ghi lại trong hệ thống thụng qua cỏc file log, lids cũn cho phộp gửi cỏc thụng bỏo trờn tới người quản trị thụng qua email (khai bỏo trong file

/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 hoạt động của phiờn làm việc đú.

Cỏc cụng cụ bảo mật tốt nhất thỡ vẫn là chỉ là cỏc cụng cụ và nú cú thể bị bẻ gẫy bởi một hacker nào đú. Việc lập một chớnh sỏch bảo mật tốt và cú quy trỡnh giỏm sỏt, theo dừi chặt chẽ của con người vẫn là điều quan trọng hơn cả

Một phần của tài liệu 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) (Trang 43 - 47)