An toàn thông tin trong cơ sở dữ liệu bao gồm 3 yếu tố chính: tính bí mật, toàn vẹn và sẵn sàng.Vì thế để đảm bảo an toàn thông tin trong cơ sở dữ liệu cần đảm bảo cả ba yếu tố.Bí mật yếu tố quan trọng nhất để đảm bảo an toàn trong các môi trường, cả quân sự lẫn thương mạịĐảm bảo tính toàn vẹn có nghĩa là ngăn chặn, phát hiện và xác định các sửa đổi thông tin trái phép. Đảm bảo tính sẵn sàng có nghĩa là ngăn chặn, phát hiện và xác định các từ chối truy nhập chính đáng vào các dịch vụ mà hệ thống cung cấp.
Một hiểm hoạ có thể được xác định khi đối phương (người, hoặc nhóm người) sử dụng các kỹ thuật đặc biệt để tiếp cận nhằm khám phá, sửa đổi trái phép thông tin quan trọng do hệ thống quản lý.
Các xâm phạm tính an toàn cơ sở dữ liệu bao gồm đọc, sửa, xoá dữ liệu trái phép. Thông qua những xâm phạm này, đối phương có thể:
• Khai thác dữ liệu trái phép thông qua suy diễn thông tin được phép.
• Sửa đổi dữ liệu trái phép.
• Từ chối dịch vụ hợp pháp.
Các hiểm hoạ an toàn có thể được phân lớp, tuỳ theo cách thức xuất hiện của chúng, là hiểm hoạ có chủ ý và vô ý (ngẫu nhiên).
Những xâm phạm trên liên quan đến hai lớp người dùng sau:
• Người dùng được phép là người có thể lạm dụng quyền, sử dụng vượt quá quyền hạn được phép của họ.
• Đối phương là người, hay nhóm người truy nhập thông tin trái phép, có thể là những người nằm ngoài tổ chức hay bên trong tổ chức. Họ tiến hành các hành vi phá hoại phần mềm cơ sở dữ liệu hay phần cứng của hệ thống, hoặc đọc ghi dữ liệu trái phép. Trong cả hai trường hợp trên, họ đều thực hiện với chủ ý rõ ràng.
Một số tấn công phổ biến hiện nay:
Tấn công SQL injection
SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào"(inject) và thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạỵ Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbasẹ
Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập (authorization bypass), sử dụng câu lện SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures [2], [3].
- 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, tin tặc 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.
- 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.
- 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 giạ 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àọ
- 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 'sá. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir 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.exẹ
Attacking Oracle
Đầu tiên kẻ tấn công sử dụng TCP scan port để quét lỗ hổng trên Server Database Oraclẹ Để phát hiện được bước đầu tiên kẻ tấn công sẽ thực hiện quét trên cổng TNS . Cổng TNS làm việc như sau:
- Bất cứ khi nào một kết nối có Username , mật khẩu và ID của phiên làm việc hoặc tên dịch vụ được gửi đến cổng TNS
- Hệ thống sẽ kiểm tra ID của phiên làm việc và tên dịch vụ nếu sẽ cho phép đăng nhập nếu không sẽ gửi lại thông điệp báo lỗị Thông tin đăng nhập sẽ được xác thực , hệ thống bắt đầu lắng nghe các yêu cầu từ Client gửi đến
server qua cổng bất kỳ và một phiên làm việc mới sẽ được thiết lập giữa Client và Server
Khi luồng dữ liệu kết thúc , Oracle có thể lắng nghe nhiều phiên kết nối đến nó
Tấn công DoS
Kẻ tấn công thường làm tràn bộ đệm của hệ thống hoặc làm ngập lụt băng thông mạng để sửa đổi dữ liệu hoặc đánh cắp thông tin
Tấn công leo thang đặc quyền
Sự leo thang đặc quyền có thể hiểu đơn giản là một phương thức tấn công mà với cách này, các User có quyền hạn thấp hơn sẽ tấn công vào một điểm dễ bị tổn thương nhất của hệ thống để trở thành một người quản trị hoặc có thể trở thành các User có quyền hạn cao hơn. Cách để leo thang đặc quyền mà ta có thể nghĩ ngay đến đó là việc chiếm quyền thông qua crack password của người quản trị, tấn công tràn bộ đệm của máy đó và ăn cắp password. Bài phân tích này sẽ đưa ra một điểm yếu chung mà có thể được khai thác để ăn cắp password và sau đó là leo thang đặc quyền. Và cũng qua bài phân tích này, chúng ta sẽ thấy được các nhược điểm của các hệ thống từ đó đánh giá đúng hơn về việc tấn công leo thang đặc quyền và tầm quan trọng của việc tiến hành vá lỗi liên tục cho hệ thống.
2.1.2. Các yêu cầu bảo vệ cơ sở dữ liệụ
Bảo vệ cơ sở dữ liệu khỏi các hiểm hoạ, có nghĩa là bảo vệ tài nguyên, đặc biệt là dữ liệu khỏi các thảm hoạ, hoặc truy nhập trái phép. Các yêu cầu bảo vệ cơ sở dữ liệu gồm:
• Bảo vệ chống truy nhập trái phép
• Bảo vệ chống suy diễn
• Bảo vệ toàn vẹn cơ sở dữ liệu
• Khả năng lưu vết và kiểm tra
• Xác thực người dùng
• Quản lý và bảo vệ dữ liệu nhạy cảm
2.1.3. Vai trò của kiểm toán trong việc bảo vệ cơ sở dữ liệụ
Để bảo mật cơ sở dữ liệu thì giám sát (Monitoring) và kiểm toán (Audit) là một phần không thể thiếu cho những thủ tục bảo mật.
Kiểm toán giúp thu giữ và lưu trữ thông tin về những gì đang xảy ra trong hệ thống. Kiểm toán phải được tập trung để chỉ những sự kiện được quan tâm sẽ được lưu lại vết (Trail).Từ đó nhờ những bản ghi audit sẽ giúp DBA phát hiện và kịp thời những tấn công hay lỗ hổng và ngăn chặn những hành vi phá hoại của tin tặc.Hoặc nhanh chóng sửa chữa những bất thường của hệ thống.
Kiểm toán thường được sử dụng để:
• Kích hoạt tính trách nhiệm sau này cho các hành động hiện tại thực hiện trong một lược đồ đặc biệt, bảng, hoặc hàng, hoặc ảnh hưởng đến nội dung cụ thể.
• Giúp người giám sát biết được nếu có user bất hợp pháp đang thao tác với cơ sở dữ liệụ
• Điều tra hoạt động đang nghi ngờ. Ví dụ. nếu một người sử dụng trái phép là xóa dữ liệu từ các bảng, sau đó các quản trị viên bảo mật có thể kiểm toán tất cả các kết nối CSDL và tất cả các xóa bỏ thành công va không thành công của các hàng từ tất cả các bảng trong CSDL.
• Theo dõi và thu thập dữ liệu về các hoạt động CSDL cụ thể. Ví dụ, người quản trị CSDL có thể thu thập số liệu thống kê về những bảng đang được cập nhật, bao nhiêu I/O được thực hiện, hoặc làm thế nào nhiều người dùng đồng thời kết nối tại thời gian cao điểm. 2.2. TỔNG QUAN VỀ KIỂM TOÁN.
2.2.1. Định nghĩa kiểm toán.
Kiểm toán là việc theo dõi và ghi lại các hành động lựa chọn CSDL người dùng. Nó có thể được dựa trên hành động cá nhân, chẳng hạn như các loại câu lệnh SQL, hoặc kết hợp các yếu tố bao gồm tên, ứng dụng, thời gian, … Chính sách bảo mật có thể tạo ra kiểm toán khi các yếu tố quy định tại một CSDL Oracle được truy cập hay thay đổi, bao gồm cả nội dung.
Kiểm toán làm tăng số lượng công việc của hệ thống phải làm.Kiểm toán đúng mức sẽ có những tác động tối thiểu trên hiệu suất hệ thống. Tập trung kiểm toán không đúng có thể ảnh hưởng đến hiệu suất đáng kể.
Oracle cho phép tùy chọn kiểm toán phải được tập trung hoặc mở rộng, cho phép kiểm toán sau đây:
• Sự thực hiện statement thành công , Sự thực hiện statement không thành công, hoặc cả haị
• Sự thực hiện statement một lần trong mỗi phiên của người dùng hoặc một lần trong thời gian báo cáo được thực thi
• Các hoạt động của tất cả người dùng hoặc của một người dùng cụ thể
Ta có thể sử dụng Enterprise Manager để xem và cấu hình các thông số liên quan đến kiểm toán khởi tạo và quản lý các đối tượng được kiểm toán để báo cáo kiểm toán và lược đồ đối tượng kiểm toán. Ví dụ, Enterprise Manager cho thấy các thuộc tính các báo cáo kiểm toán hiện tại, đặc quyền, và đối tượng. Ta có thể xem các thuộc tính của từng đối tượng, và có thể tìm kiếm các đối tượng được kiểm toán bởi các thuộc tính của họ. Ta cũng có thể bật và tắt kiểm toán trên các đối tượng, báo cáo, và đặc quyền.
2.2.2. Các loại đường mòn (Trail) và bản ghi (Record).
Record audit(Bản ghi kiểm toán) bao gồm thông tin về các hoạt động đã được kiểm toán, người sử dụng thực hiện các hoạt động, và ngày và thời gian hoạt động. Hồ sơ kiểm toán có thể được lưu dưới dạng một bảng từ điển dữ liệu, được gọi là database audit trail (đường mòn kiểm toán cơ sở dữ liệu), hoặc trong các tập tin hệ điều hành, được gọi là (operating system audit trail) đường mòn hệ thống kiểm toán hoạt động.
Có hai loại kiểm toán chính là Standard audit và fine-grained auditing. Standard audit records được tạo và lưu lại tại DBA_AUDIT_TRAIL (bảng sys.aud$) hoặc hệ điều hành. Fine-grained audit records được tạo và lưu tại DBA_FGA_AUDIT_TRAIL (bảng sys.fga_log$ ) và view DBA_COMMON_AUDIT_TRAIL là kết hợp standard and fine-grained audit log records.
Tên Null Loại --- --- --- SESSIONID NOT NULL NUMBER
TIMESTAMP# DATE DBUID VARCHAR2(30) OSUID VARCHAR2(255) OSHST VARCHAR2(128) CLIENTID VARCHAR2(64) EXTID VARCHAR2(4000) OBJ$SCHEMA VARCHAR2(30) OBJ$NAME VARCHAR2(128) POLICYNAME VARCHAR2(30) SCN NUMBER SQLTEXT VARCHAR2(4000) LSQLTEXT CLOB SQLBIND VARCHAR2(4000) COMMENT$TEXT VARCHAR2(4000) PLHOL LONG STMT_TYPE NUMBER NTIMESTAMP# TIMESTAMP(6) PROXY$SID NUMBER USER$GUID VARCHAR2(32) INSTANCE# NUMBER PROCESS# VARCHAR2(16) XID RAW(8) AUDITID VARCHAR2(64) STATEMENT NUMBER
ENTRYID NUMBER DBID NUMBER LSQLBIND CLOB
Khi nào audit record được tạo
- Standard auditing cho toàn bộ cơ sở dữ liệu có thể kích hoạt hay vô hiệu hóa bởi các quản trị viên bảo mật. Nếu nó bị tắt, sau đó không có hồ sơ kiểm toán được tạo rạ
- Nếu kiểm toán cơ sở dữ liệu được kích hoạt bởi người quản trị bảo mật, sau đó tùy chọn kiểm toán cá nhân có hiệu lực. Các tùy chọn này kiểm toán có thể được thiết lập bởi bất kỳ người sử dụng cơ sở dữ liệu được ủy quyền cho các đối tượng cơ sở dữ liệu mà người dùng sở hữụ
- Khi kiểm toán được kích hoạt trong cơ sở dữ liệu và hành động một thiết lập hành động để kiểm toán và một bản ghi kiểm toán được tạo ra trong giai đoạn thực thi của statement.
- Câu lệnh SQL bên trong PL / SQL được kiểm toán một cách riêng lẻ, khi cần thiết, khi các đơn vị chương trình được thực hiện.
- Việc phát sinh và chèn của một audit trail record là user transaction độc lập được thực hiện.
- Statement and privilege audit có hiệu lực tại thời điểm một người sử dụng cơ sở dữ liệu kết nối với cơ sở dữ liệu vẫn có hiệu lực trong khoảng thời gian phiên của họ.
- Thiết lập hoặc thay đổi các tùy chọn statement or privilege audit trong một phiên không có hiệu lực trong phiên giao dịch đó. Các statement sửa đổi hoặc lựa chọn privilege audit chỉ có hiệu lực khi kết thúc phiên hiện tại và phiên mới được tạo rạ
- Ngược lại, thay đổi sơ đồ lựa chọn đối tượng kiểm toán (schema object audit) có hiệu lực cho phiên hiện tại ngay lập tức.
Các loại Trail và record:
- Operating System Audit Trail - Syslog Audit Trail
- Operating System and Syslog Audit Records
- Records Always in the Operating System and Syslog Audit Trail
2.2.2.1. Database Audit Trail (DBA_AUDIT_TRAIL).
Database audit trail bao gồm một bảng duy nhất tên là SYS.AUD $ trong SYS schema của data dictionary của mỗi cơ sở dữ liệu Oraclẹ Một số predefined views được cung cấp để giúp sử dụng thông tin trong bảng này, chẳng hạn như DBA_AUDIT_TRAIL.
Audit trail records có thể chứa các loại thông tin khác nhau, tùy thuộc vào các sự kiện được kiểm toán và các tùy chọn kiểm toán đặt rạ Danh sách một phần trong bảng sau cho thấy các cột mà thường xuất hiện trong các đường mòn kiểm toán (audit trail).
SQLBIND và SQLTEXT không được lưu lại, trừ khi chỉ định
AUDIT_TRAIL = DB, EXTENDED trong file khởi tạo cơ sở dữ liệu, init.orạ
Nếu các bản ghi dữ liệu kiểm toán trở nên đầy hoặc không sẵn sàng, nên không thể chấp nhận những bản ghi mới,thì sau đó một hành động được kiểm toán sẽ không thể được lưu lạị Thay vào đó, nó tạo ra một thông báo lỗi và không được thực hiện.
Sau đây là bảng liệt kê các bản ghi trong audit trail:
Tên Null Type
--- SESSIONID NOT NULL NUMBER
ENTRYID NOT NULL NUMBER STATEMENT NOT NULL NUMBER TIMESTAMP# NOT NULL DATE
USERID VARCHAR2(30) USERHOST VARCHAR2(128)
TERMINAL VARCHAR2(255) ACTION# NOT NULL NUMBER
RETURNCODE NOT NULL NUMBER
OBJ$CREATOR VARCHAR2(30) OBJ$NAME VARCHAR2(128) AUTH$PRIVILEGES VARCHAR2(16) AUTH$GRANTEE VARCHAR2(30) NEW$OWNER VARCHAR2(30) NEW$NAME VARCHAR2(128) SES$ACTIONS VARCHAR2(19) SES$TID NUMBER LOGOFF$LREAD NUMBER LOGOFF$PREAD NUMBER LOGOFF$LWRITE NUMBER LOGOFF$DEAD NUMBER LOGOFF$TIME DATE COMMENT$TEXT VARCHAR2(4000) SPARE1 VARCHAR2(255) SPARE2 NUMBER OBJ$LABEL RAW(255) SES$LABEL RAW(255) PRIV$USED NUMBER
Có thể xem lại danh sách này bằng cách dùng câu lệnh “desc aud$” trên SQL command linẹ
2.2.2.2. Operating System Audit Trail.
Cơ sở dữ liệu Oracle cho phép audit trail records để được hướng đến operating system audit trail .Nếu operating system có sẵn 1 audit trail cho
Oracle Databasẹ Nếu không, sau đó hồ sơ kiểm toán được ghi vào một tập tin bên ngoài cơ sở dữ liệụ Các mục đích directory khác nhau tùy theo nền tảng: trên nền tảng hệ điều hành Solaris, nó là $ORACLE_HOME / RDBMS / audit. Nhưng đối với các nền tảng khác, phải kiểm tra các tài liệu nền tảng để tìm hiểu các mục tiêu chính xác. Trong Windows, thông tin được truy cập