2. Lựa chọn giải pháp cho hệ thống giám sát
2.1. Phân tích các nguy cơ tấn công xâm nhập webserver trái phép
Mô hình hoạt động của một ứng dụng web như mô tả trên hình 29.
Hình 29. Hoạt động của một ứng dụng Web
Các hacker có thể lợi dụng các lỗi ứng dụng web để thực hiện các cuộc tấn công. Điển hình là một số cách tấn công SQL Inject thông dụng như sau:
Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, hacker có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web.
SV: HỒ TRUNG DŨNG 47
Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp. Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng.
Hệ thống giám sát webserver cần phát hiện được dạng tấn công này thông qua các thông tin cảnh báo trong logfile.
Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Xét một ví dụ rất thường gặp trong các website về tin tức. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này.
Ví dụ: http://www.myhost.com/shownews.asp?ID=123. Mã nguồn cho chức năng này thường được viết khá đơn giản theo dạng:
<%
Dim vNewsID, objRS, strSQL vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..." Set objRS = Nothing
%>
Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó, khởi đầu cho một cuộc tấn công bất hợp pháp, ví dụ như:
0 OR 1=1 (nghĩa là, http://www.myhost.com/shownews.asp?ID=0 or 1=1)
Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực hiện câu lệnh:
SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1
Một trường hợp khác, ví dụ như trang tìm kiếm. Trang này cho phép người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:
<%
SV: HỒ TRUNG DŨNG 48
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " & _ vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..."
Set objRS = Nothing %>
Tương tự như trên, hacker có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập vào trường tên tác giả bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*)
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa. Tất nhiên các ví dụ nói trên, dường như không có gì nguy hiểm, nhưng hãy thử tưởng tượng kẻ tấn công có thể xóa toàn bộ cơ sở dữ liệu bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DROP TABLE.
Ví dụ: ' DROP TABLE T_AUTHORS –
Khi nhập vào chuỗi (*) như trên, nếu hệ thống báo lỗi về cú pháp dạng: Invalid object name “OtherTable”; ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khóa UNION, vì như vậy mới có thể trả về lỗi mà ta đã cố tình tạo ra trong câu lệnh SELECT. Để biết tên các table có trong có sở dữ liệu tương đối đơn giản, bởi vì trong SQL Server, có hai đối tượng là sysobjects và syscolumns cho phép liệt kê tất cả các tên bảng và cột có trong hệ thống. Ta chỉ cần chỉnh lại câu lệnh SELECT,
ví dụ như:
UNION SELECT name FROM sysobjects WHERE xtype = 'U' là có thể liệt kê được tên tất cả các bảng dữ liệu.
Tương tự như trên, hệ thống giám sát webserver cần phát hiện được dạng tấn công này thông qua các thông tin cảnh báo trong logfile.
Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào.
Dạng tấn công sử dụng stored^procedures
Việc tấn công bằng stored procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng:
' ; EXEC xp_cmdshell ‘cmd.exedir C: '
Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
SV: HỒ TRUNG DŨNG 49 2.2. Lựa chọn giải pháp lọc gói tin
Đối với các hệ thống thông tin nói chung và các hệ thống webserver hiện nay, tường lửa (firewall) vẫn là công cụ được sử dụng phổ biến và rông rãi nhất. Firewall thường được đặt giữa một mạng nội bộ cần được bảo vệ và một mạng bên ngoài không tin cậy như kết nối với Internet như đã nêu trong chương 2. Các Firewall có khuynh hướng được xem như là một sự bảo vệ giữa Internet và một mạng nội bộ riêng và được quan tâm như một phương tiện để chia thành hai hoặc nhiều mạng được bảo vệ và không được bảo vệ. Dựa vào chức năng cơ bản nhất của Firewall là giám sát và lọc traffic nên có thể lựa chọn phù hợp theo yêu cầu của mỗi đơn vị có hệ thống mạng cần được bảo vệ.
Lọc các gói tin:
+ Định nghĩa các gói tin nào được chuyển tiếp, gói tin nào bị chặn.
+ Có thể cho phép các truy nhập tạm thời qua firewall đối với các cá nhân nhất định.
+ Có thể chỉ cho phép các TCP hoặc UDP “session” traffic qua firewall nếu session được sinh ra trong mạng nội bộ.
Các phương thức lọc gói tin chủ yếu hiện nay là:
TCP intercept: cho phép bảo vệ các server trong mạng đối với các tấn công SYN flooding, một dạng của các tấn công denial of service.
Context Based Access Control: cho phép kiểm tra không chỉ thông tin ở transport layer và network layer mà cũng kiểm tra thông tin giao thức ở application layer (như thông tin FTP) để biết về trạng thái của các kết nối TCP và UDP.
Security Server Support: có thể được cấu hình như một client của các security server như TACACS+, RADIUS,...
Network Address Translation (NAT): cho phép giấu các địa chỉ IP nội bộ đối với thế giới bên ngoài firewall.
Encryption Technology: cho phép mã hoá một cách lựa chọn các packet khi đi qua các mạng không được bảo vệ như Internet. Sự mã hoá ngăn ngừa các IP packet nhậy cảm khỏi bị chặn, đọc hoặc thay đổi.
IPSec Network Security: cung cấp sự bảo mật đối với các thông tin nhạy cảm khi đi qua các mạng không được bảo vệ như Internet. IPSec hoạt động tại network layer, bảo vệ và xác nhận các IP packet giữa các thiết bị IPSec đang tham dự. Đây cũng là giao thức rất được ưa chuộng trên thế giới để triển khai mạng riêng ảo VPN (Virtual Private Network).
Event Logging: có thể sử dụng để trợ giúp việc quản trị và xác định lỗi, và để theo dõi các vi phạm bảo mật hoặc các hoạt động bất thường qia một mạng. User Authentication và Authorization: bảo vệ mạng khỏi các truy nhập bởi các user không được phép.
SV: HỒ TRUNG DŨNG 50
Ưu điểm của việc lựa chọn Firewalls cho lọc các gói tin là:
Đa số các hệ thống Firewall đều sử dụng bộ lọc packet. Một trong những ưu điểm của phương pháp dùng bộ lọc packet là chi phí thấp vì cơ chế lọc packet đã được bao gồm trong mỗi phần mềm router.
Ngoài ra, bộ lọc packet là trong suốt đối với người sử dụng và các ứng dụng, vì nó không yêu cầu sự huấn luyện đặc biệt nào cả.
Tuy nhiên, việc lựa chọn Firewalls cho lọc các gói tin còn có các hạn chế như sau: Việc định nghĩa các chế độ lọc packet là một việc khá phức tạp, đòi hỏi người quản trị mạng cần có hiểu biết chi tiết về các dịch vụ Internet, các dạng packet header, và các giá trị cụ thể có thể nhận trên mỗi trường.
Do làm việc dựa trên header của các packet, rõ ràng là bộ lọc packet không kiểm soát được nội dung thông tin cua packet. Các packet chuyển qua vẫn có thể mạng theo những hành động với ý đồ ăn cắp thông tin hay phá hoại của kẻ xấu.
Bộ lọc packet cho phép hay từ chối mỗi packet mà nó nhận được. Nó kiểm tra toàn bộ đoạn dữ liệu để quyết định xem đoạn dữ liệu đó có thỏa mãn một trong số các luật lệ của lọc packet hay không. Các luật lệ lọc packet này là dựa trên các thông tin ở đầu các thông tin ở packet header, dùng để cho phép truyền các packet đó trên mạng:
Địa chỉ IP nguồn. Địa chi IP đích.
Những thủ tục truyền tin (TCP, UDP, ICMP, IP Tunnel). Cổng TCP/UDP nguồn.
Cổng TCP/UDP đích. Dạng thông báo ICMP. Giao diện packet đến. Giao diện packet đi.
Nếu luật lệ lọc packet được thỏa mãn thì packet được chuyển qua Firewall, nếu không gói tin sẽ bị loại bỏ. Nhớ vậy mà Firewall có thể ngăn cản được kết nối vào các máy chủ hoặc mạng nào đó được xác định, hoặc khóa việc truy nhập vào hệ thống mạng nội bộ từ những địa chỉ không cho phép. Hơn nữa, việc kiểm soát các cổng làm cho Firewall có khả năng chỉ cho phép một số loại kết nối nhất định kết nối vào máy chủ nào đó, hoặc chỉ có những dịch vụ nào đó (Telnet, SNMP, FTP...) được phép mới chạy được trên hệ thống mạng cục bộ.
2.3. Các tập luật sử dụng cho lọc gói tin
Như đã nêu trong chương 2, Snort dùng các tập luật (Rules) để phát hiện các xâm nhập trên mạng. Nhìn chung, tập luật lọc gói tin phát hiện các xâm nhập đuợc thực hiện như sau. Có 3 hành động chính được thực hiện khi trùng một packet với các mẫu trong rules:
SV: HỒ TRUNG DŨNG 51
log: tùy theo dạng logging được chọn mà packet sẽ được ghi nhận theo dạng đó. alert: sinh ra một alert tùy theo dạng alert được chọn và log toàn bộ packet dùng dạng logging đã chọn.
Dạng cơ bản của một rule bao gồm protocol, chiều của gói dữ liệu và port cần quan tâm. Không cần quan tâm đến phần Option. Ví dụ:
log tcp any any > 172.16.1.0/24 80 : Rule này sẽ log tất cả các gói dữ liệu đi vào mạng 172.16.1.0 trên port 80.
alert tcp any any > 172.16.1.0/24 80 (content: "/cgi bin/phf"; msg: "PHF probe!";) : Rule này sẽ phát hiện các truy cập vào dịch vụ PHF trên web server và alert sẽ được tạo ra cùng với việc ghi lại toàn bộ gói dữ liệu.
2.4. Giải pháp cho phát hiện và chống xâm nhập trái phép
Ngay cả khi Firewall được thiết kế để cho phép các dữ liệu tin cậy đi qua, từ chối các dịch vụ có thể gây nên lỗ hổng bảo mật, và ngăn chặn mạng bên trong khỏi các tấn công từ bên ngoài, một tấn công mới có thể thâm nhập vào Firewall tại bất kỳ thời điểm nào.
Phát hiện xâm nhập là tiến trình giám sát các sự kiện xảy ra trong một hệ thống máy hoặc mạng và phân tích chúng đối với các dấu hiệu của sự xâm nhập, được định nghĩa như các cố gắng làm hại đến sự bí mật, tính toàn vẹn và sự sẵn sàng, hoặc để bỏ qua cơ chế bảo mật của một máy tính hay mạng. Sự xâm phạm được gây ra bởi các tấn công truy nhập vào các hệ thống từ Internet, các user được cho phép của các hệ thống cố gắng đạt được các quyền khác mà họ không được cho phép, và các user được cho phép lạm dụng quyền hạn họ được trao.
Khi các tấn công mạng ngày càng tăng về số lượng và tính khốc liệt, các hệ thống phát hiện xâm nhập IDS đã trở thành một nhân tố cần thiết để thiết lập một cơ sở hạ tầng bảo mật. Nó cho phép các tổ chức bảo vệ các hệ thống của họ khỏi các đe doạ gây bởi các nhu cầu kết nối mạng ngày càng tăng và sự tín nhiệm đối với các hệ thống thông tin trên mạng.
Phát hiện và chống xâm nhập trái phép cần được xây dựng dựa trên các nguyên tắc chủ đạo như sau:
Phát hiện, cảnh báo/đáp lại đối với những người lạm dụng hay những kẻ tấn công hệ thống.
Phát hiện các tấn công và các sự vi phạm bảo mật mà không được ngăn chặn bởi các công cụ bảo mật khác.
Phát hiện và xử lý các tiền đề phục vụ cho các tấn công (thông thường là các hoạt động thăm dò mạng và các hoạt động thăm dò “doorknob rattling” khác.
Lập tài liệu mối đe doạ hiện tại đối với hệ thống phòng ngừa rủi ro.
Kiểm soát chất lượng đối với thiết kế và quản trị bảo mật, đặc biệt đối với đơn vị có yêu cầu bảo mật an toàn thông tin.
SV: HỒ TRUNG DŨNG 52
Cung cấp các thông tin có ích về các xâm phạm phải đối mặt, cho phép cải thiện sự chẩn đoán, khôi phục và hiệu chỉnh các nhân tố liên quan.
Cho phép theo dõi và cảnh báo thông tin về mức độ tấn công và dự báo… Sự kết hợp IDSs với firewall cho phép thiết lập sự bảo vệ có chiều sâu đối với các tấn công ngày càng tăng về số lượng cũng như tính phức tạp.
Hệ thống Phát hiện và chống xâm nhập trái phép có nhiệm vụ rà quét các gói tin trên mạng, phát hiện các truy nhập trái phép, các dấu hiệu tấn công vào hệ thống từ đó cảnh báo cho người quản trị hay hệ thống biết về nguy cơ xảy ra tấn cống trước khi nó xảy ra. Một hệ thống phát hiện các truy nhập trái phép thường phát hiện tất cả các luồng dữ liệu có hại từ mạng vào hệ thống mà các Firewall không thể phát hiện được. Thông thường các cuộc tấn công trên mạng là các cuộc tấn công từ chối dịch vụ, phá hoại các dữ liệu trên các ứng dụng, các cuộc tấn công vào máy trạm như thay đổi quyền trên máy, đăng nhập bất hợp pháp và truy nhập vào các tệp tin nhạy cảm hoặc là các loại Virus, Trojan ….
3. Thiết kế xây dựng mô hình hệ thống giám sát
Hệ thống giám sát được xây dựng nhằm nâng cao tính an toàn và bảo mật cho các webserver. Hệ thống xây dựng với mục đích giúp cho các nhà quản trị hệ thống nói chung và quản trị server nói riêng có thể có một cách nhìn tổng quan hơn về tình hình hệ thống của mình thông qua việc quản lý các truy cập vào webserver, dựa trên việc giám sát các logfiles hệ thống.
Thực tế để giám sát được toàn bộ một hệ thống webserver không phải là vấn đề đơn giản. Yêu cầu đối với các nhà quản trị là làm sao phát hiện các xâm nhập bất hợp pháp một cách nhanh nhất, và xử lý kịp thời để không làm ảnh hưởng tới toàn bộ webserver. Các truy cập bất hợp pháp ngày càng đa dạng và phức tạp, và không phải các truy cập nào cũng tự động ghi vào các file log nếu người quản trị không cài đặt trước. Vì thế điều đầu tiên chúng ta cần xác định, các loại log files nào cần được đưa vào để giám sát. Trên thực tế, đối với một webserver, người quản trị cần lưu ý đến các log file như accees_log (đây là log files ghi lại các truy cập vào webserver của từng