Trang 11 Các phương pháp xác thực hỗ trợ bởi DB2 UDB 8.2: SERVER_ENCYPT: Xác thực thực hiện trên máy chủ và máy khách phải cung cấp tên người dùng và mật khẩu; KERBEROS: Sử dụng g
Trang 1BÀI GIẢNG MÔN
AN TOÀN CSDL NÂNG CAO
Giảng viên: TS Hoàng Xuân Dậu
E-mail: dauhx@ptit.edu.vn
Bộ môn: An toàn thông tin
Khoa: Công nghệ thông tin
CHƯƠNG 3 – CÁC CƠ CHẾ BẢO MẬT CƠ SỞ DỮ LIỆU
Trang 3Trang 3
Xác thực & trao quyền
Bảo mật mật khẩu
Trang 4Trang 4
3.1.1 Xác thực & trao quyền
Điều khiển truy cập vào CSDL nói riêng hoặc các hệ thống nói chung dựa trên 2 dịch vụ cơ bản:
Xác thực (Authentication): Là quá trình xác minh tính chân thực của các thông tin nhận dạng mà người dùng cung cấp
Trao quyền (Authorization): Xác định các tài nguyên mà người dùng được phép truy nhập sau khi người dùng đã được xác thực
Trang 5Trang 5
Thông tin nhận dạng người dùng có thể gồm:
Bạn là ai (Who you are)?
• CMND
• Bằng lái xe
• Vân tay,
Những cái bạn biết (What you know) ?
• Tên truy nhập, mật khẩu,
Trang 6Trang 6
Xác thực 1 hoặc nhiều nhân tố:
Xác thực 1 nhân tố: các nhân tố xác thực trong 1 nhóm kể trên
• VD: mật khẩu, hoặc tên người dùng + mật khẩu
Xác thực 2 nhân tố: các nhân tố xác thực trong 2 nhóm kể trên
• VD: Thẻ ATM + PIN
Xác thực 3 nhân tố: các nhân tố xác thực trong 3 nhóm kể trên
• VD: Thẻ ATM + Vân tay + PIN
Nguyên tắc chung: Số nhân tố sử dụng trong 1 quá trình xác thực càng nhiều thì nó càng an toàn:
VD: Thẻ + vân tay + PIN cho mức an toàn rất cao
3.1.1 Xác thực & trao quyền
Trang 7Trang 7
Xác thực là thành phần cơ sở của mô hình bảo mật
Trang 8Trang 8
3.1.1 Xác thực & trao quyền
Lựa chọn phương pháp xác thực phù hợp trong số các
phương pháp xác thực sẵn có:
Không xác thực (No authentication / Trusted client)
Xác thực dựa trên hệ điều hành
Xác thực dựa trên hệ quản trị CSDL
Xác thực hỗn hợp (hệ điều hành hoặc hệ quản trị CSDL)
Trang 10Trang 10
3.1.1 Xác thực & trao quyền
Các phương pháp xác thực của một số DBMS cụ thể:
Các phương pháp xác thực hỗ trợ bởi DB2 UDB 8.2;
Các phương pháp xác thực hỗ trợ bởi MS SQL Server;
Các phương pháp xác thực hỗ trợ bởi Oracle Server
Trang 11Trang 11
Các phương pháp xác thực hỗ trợ bởi DB2 UDB 8.2:
SERVER_ENCYPT: Xác thực thực hiện trên máy chủ và máy khách phải cung cấp tên người dùng và mật khẩu;
KERBEROS: Sử dụng giao thức KERBEROS để xác thực máy khách KERBEROS cho phép một máy khách xác thực và trao đổi khóa với một máy chủ dịch vụ nhờ sự hỗ trợ của máy chủ KERBEROS;
KRB_SERVER_ENCRYPT: Cho phép lựa chọn phương pháp xác
thực sử dụng KERBEROS hoặc SERVER_ENCYPT;
DATA_ENCRYPT: Tương tự SERVER_ENCYPT, nhưng dữ liệu trao đổi trong cả phiên làm việc được mã hóa;
Trang 12Trang 12
3.1.1 Xác thực & trao quyền
Các phương pháp xác thực hỗ trợ bởi DB2 UDB 8.2:
DATA_ENCRYPT_CMP: Xác thực tương tự SERVER_ENCYPT và truyền thông trong phiên làm việc được mã hóa nếu máy khách hỗ trợ
và không được mã hóa nếu máy khách không hỗ trợ;
GSSPLUGIN: Phương pháp xác thực mở rộng, cho phép sử dụng bất
kỳ một phương pháp xác thực nào tuân theo GSS API (Generic
Security Service Application Program Interface);
GSS_SERVER_ENCRYPT: Phương pháp xác thực có thể là
GSSPLUGIN hoặc SERVER_ENCRYPT
Trang 13Trang 13
Các phương pháp xác thực hỗ trợ bởi MS SQL Server:
Xác thực bởi hệ điều hành (Windows authetication)
• MS SQL hoàn toàn dựa vào hệ điều hành để xác thực người dùng và liên kết người dùng với các nhóm;
• Là phương pháp xác thực Microsoft khuyến nghị sử dụng
Xác thực hỗn hợp (Mixed authetication)
• Xác thực bởi Windows
– Được thực hiện nếu máy khách hỗ trợ NTLM (NT LAN Manager) hoặc Kerberos
• Xác thực bởi MS SQL Server
Trang 14Trang 14
3.1.1 Xác thực & trao quyền
Các phương pháp xác thực hỗ trợ bởi Oracle: Oracle hỗ trợ nhiều phương pháp xác thực, trong đó, 2 phương pháp
Trang 16Trang 16
3.1.1 Xác thực & trao quyền
Vấn đề quản lý và sử dụng những người dùng có quyền
Trang 17Trang 17
Mặc dù có nhiều công nghệ xác thực, nhưng xác thực dựa trên mật khẩu vẫn là phương pháp được sử dụng phổ biến nhất trong xác thực người dùng CSDL;
Lý do cho sự phổ biến của việc sử dụng mật khẩu:
Đảm bảo được mức an toàn tối thiểu;
Đơn giản, dễ sử dụng;
Chi phí cài đặt, quản lý và vận hành thấp
Trang 18– Chữ thường, hoa, chữ số, ký tự đặc biệt:
» abcd1234: mật khẩu tồi
» Abcd123$: mật khẩu tốt (về mặt tính toán)
• Độ dài của mật khẩu
– Mật khẩu người dùng tốt có chiều dài >= 8 ký tự – Mật khẩu quản trị tốt cần có chiều dài >=10 ký tự – Mật khẩu cho truy nhập CSDL từ ứng dụng nên đảm bảo có đủ 4 loại ký
tự và độ dài từ 10 ký tự trở lên
Tuổi thọ của mật khẩu
Trang 19Trang 19
Tính bảo mật của kỹ thuật điều khiển truy nhập sử dụng mật khẩu dựa trên:
Tuổi thọ của mật khẩu
• Mật khẩu không hết hạn (không nên dùng)
• Mật khẩu có thời hạn sống (thời gian sống của mật khẩu nên đặt phụ thuộc chính sách an ninh, an toàn của cơ quan, tổ chức
– Có thể là 1, 2, 3, hoặc 6 tháng
• Mật khẩu dùng 1 lần (ít dùng trong xác thực người dùng CSDL)
Trang 20 Sử dụng các mật khẩu ngắn, dễ đoán, như tên, ngày tháng năm
sinh, tên đăng nhập
Dùng một mật khẩu (kể cả mật khẩu tốt) trên nhiều hệ thống
Trang 21Trang 21
Áp dụng chính sách quản lý mật khẩu "mạnh":
Trang 22 Enforce password expiration: Áp dụng thời gian hết hạn cho mật khẩu
User must change password at next logon: Bắt buộc người dùng phải đổi mật khẩu ở lần đăng nhập tiếp theo
Chính sách quản lý mật khẩu được áp dụng là chính sách
an ninh của hệ điều hành
Trang 23Trang 23
Chính sách quản lý mật khẩu được áp dụng là chính sách
an ninh của hệ điều hành: MS Windows
Trang 25Trang 25
Dùng công cụ crack để kiểm tra độ an toàn của mật khẩu CSDL:
SQLDict: http://ntsecurity.nu/toolbox/sqldict/
Trang 26Trang 26 3.1.2 Bảo mật mật khẩu
Sử dụng công cụ quản lý mật khẩu: KeePass
Trang 27Trang 27
Dữ liệu và cơ sở dữ liệu có thể được đảm bảo an toàn
thông qua việc đảm bảo an toàn cho ứng dụng truy nhập
Trang 28Trang 28
3.2.1 Quản lý người dùng CSDL
Đa phần các ứng dụng CSDL (như các website) cho phép nhiều người dùng ứng dụng, nhưng chúng thường chỉ dùng
1 hoặc một số ít tài khoản để kết nối với CSDL;
Mô hình chia sẻ người dùng CSDL trong ứng dụng web:
Trang 29Trang 29
VD: Một trang web bán sách trực tuyến có thể hỗ trợ nhiều lớp người dùng thông qua các cơ chế phân quyền:
Khách viếng thăm được phép tìm kiếm sách, xem các thông tin chi tiết
về sách, chọn sách và đưa vào giỏ hàng;
Thành viên có thể thực hiện việc đặt hàng và thanh toán, cũng như
theo dõi việc chuyển hàng và gửi phản hồi về chất lượng phục vụ;
Nhân viên có thể thêm mới, cập nhật thông tin về sách và quản lý các
đơn hàng của khách hàng
Trang 30Trang 30
3.2.1 Quản lý người dùng CSDL
Trang web có thể sử dụng 1 tài khoản hoặc 1 số ít tài khoản
để kết nối đến CSDL và thao tác dữ liệu
Để đảm bảo an toàn cao, cần kết hợp hài hòa giữa việc
phân quyền truy nhập ở mức ứng dụng và ở mức CSDL:
Phân quyền người dùng ở mức ứng dụng: phụ thuộc vào tính năng hoặc nhóm tính năng người dùng có thể truy nhập;
Phân quyền người dùng CSDL: phụ thuộc vào yêu cầu xem, hay thay đổi dữ liệu
Trang 31Trang 31
Hạn chế của việc quản lý quyền truy nhập ở mức ứng dụng:
Do CSDL tuyệt đối "tin tưởng" ứng dụng và người phát triển ứng
dụng, nên bất kỳ khiếm khuyết hoặc lỗ hổng ở ứng dụng có thể dẫn đến các nguy cơ đối với CSDL;
Ứng dụng không thể kiểm soát người dùng sử dụng các tài khoản truy nhập trực tiếp CSDL không thông qua ứng dụng:
• Người phát triển có thể sử dụng các tài khoản quản trị để thao tác dữ liệu trực tiếp;
• Người quản lý có thể sử dụng tài khoản riêng để chạy các câu truy vấn đặc biệt trích xuất dữ liệu
Trang 32Trang 32
3.2.1 Quản lý người dùng CSDL
Cần có chính sách quản lý và sử dụng các tài khoản truy
xuất CSDL giữa ứng dụng và người dùng trực tiếp cho phù hợp, nhằm đảm bảo an toàn cho cả ứng dụng và CSDL;
Người dùng tài khoản truy xuất CSDL từ ứng dụng chỉ nên tập trung vào các thao tác dữ liệu;
Người dùng trực tiếp truy nhập CSDL chỉ nên tập trung vào các thao tác quản trị hệ thống và quản trị CSDL
Trang 33Trang 33
Mô hình kết nối máy chủ web với máy chủ CSDL thông qua tường lửa:
Trang 34Trang 34
3.2.2 Bảo mật hệ thống file của ứng dụng
Thiết lập quyền truy nhập phù hợp
Giữ bí mật mã nguồn
Sử dụng phương pháp ẩn thông tin
Vấn đề liệt kê và duyệt các thư mục
Trang 35Trang 35
Kết hợp sử dụng công cụ quản trị quyền truy nhập vào hệ thống file cục bộ của HĐH để thiết lập quyền truy nhập phù hợp cho các nhóm người dùng:
Các trang công cộng: cho phép tất cả người dùng
Các trang nội bộ: yêu cầu xác thực bằng username+password, hoặc quản lý quyền truy nhập theo phiên làm việc
Các trang quản trị: bổ sung giới hạn các máy/mạng được phép truy cập thông qua địa chỉ IP
Các chứa dữ liệu nhạy cảm của HĐH, máy chủ web: hạn chế truy
nhập
Trang 38Trang 38
3.2.2 Bảo mật hệ thống file của ứng dụng –
Giữ bí mật mã nguồn
Rò rỉ mã scripts do sao lưu (backup):
Nhiều trình soạn thảo tự động lưu các nội dung cũ của file sang file backup, trước khi lưu nội dung cập nhật vào file Tên file backup có thể là:
Trang 39Trang 39
Rò rỉ thông tin từ phần chú thích mã:
Trang 40Trang 40
3.2.2 Bảo mật hệ thống file của ứng dụng –
Sử dụng phương pháp ẩn thông tin
Phương pháp ẩn thông tin truy nhập (obscurity) có thể được
sử dụng như một phương pháp bổ sung để tăng cường an ninh
Nó không nên được sử dụng là biện pháp duy nhất
Nên được dùng kết hợp với các biện pháp khác
Trang 41Trang 41
Một số ví dụ về ẩn thông tin truy nhập:
Sử dụng cổng không chuẩn cho trang nội bộ, trang quản trị VD các cổng 8000, 8080,
Sử dụng URL riêng, không thông dụng cho trang nội bộ, trang quản trị
https://admin4963.mysite.com https://mysite.com/admin4963/
Trang 42Trang 42
3.2.2 Bảo mật hệ thống file của ứng dụng
Vấn đề liệt kê và duyệt các thư mục:
Cho phép/cấm liệt kê thư mục
• Sử dụng trang ngầm định
• Cấm liệt kê và sử dụng trang để báo lỗi
Duyệt các thư mục thông qua chuỗi duyệt
• Sử dụng các bộ lọc
• Hạn chế việc đọc ghi hệ thống file dựa trên dữ liệu/tên file trực tiếp từ
người dùng
Trang 43 Có thể thực hiện rà quét, phân tích web logs tự động sử
dụng các công cụ, hoặc các scripts,…
Trang 44Trang 44
3.3 Bảo mật các đối tượng trong CSDL
Quyền truy nhập đến các đối tượng trong CSDL có thể được thiết lập tùy thuộc vào chính sách quản trị CSDL và ứng
dụng
Mỗi tài khoản người dùng được cấp quyền truy nhập thông qua việc gán vào một hoặc một số nhóm vai trò (roles);
Một người dùng có thể truy nhập một hoặc một số CSDL;
Việc truy nhập vào từng đối tượng trong CSDL có thể được gán riêng
Trang 46Trang 46 3.3 Bảo mật các đối tượng trong CSDL
Gán tài khoản người dùng vào các server roles (MS-SQL)
Trang 50Trang 50
3.3 Bảo mật các đối tượng trong CSDL
Quyền truy nhập gồm:
Execute: với thủ tục, hàm và trigger
SELECT, INSERT, UPDATE, DELETE và một số quyền khác với
bảng, view
Trang 51Trang 51
Giới thiệu về mã hóa CSDL
Mã hóa dữ liệu trong bảng
Mã hóa toàn bộ dữ liệu
Mã hóa dữ liệu trên đường truyền
Mã hóa dữ liệu sử dụng các
thiết bị lưu trữ đặc biệt
Trang 52Trang 52
3.4 Sử dụng mã hóa – Giới thiệu
Các kỹ thuật mã hóa có thể được sử dụng để bảo vệ dữ liệu lưu trong CSDL cũng như để bảo vệ cả CSDL
Hai phương pháp phổ biến được sử dụng:
Mã hóa (Encryption);
Băm
Trang 53• Với hàm băm 1 chiều thì không giải mã được
• Các giải thuật hăm thông dụng: MD4, MD5, MD2, SHA1, SHA2, SHA3,
• Thường được dùng để mã hóa mật khẩu
Trang 54Trang 54
3.4 Sử dụng mã hóa – Mã hóa dữ liệu trong bảng
Dữ liệu lưu trong bảng có thể được mã hóa theo 2 hướng:
Sử dụng các hàm mã hóa/giải mã trong CSDL để mã hóa/giải mã khi thực hiện các thao tác ghi/đọc
• Các hệ quản trị CSDL cũ thường không hỗ trợ các hàm mã hóa/giải mã
• Các hệ quản trị CSDL mới hỗ các hàm mã hóa/giải mã ở mức hạn chế
Mã hóa / giải mã dữ liệu tại lớp ứng dụng
• Thư viện API của ứng dụng hỗ trợ các hàm mã hóa/giải mã mạnh
Nên sử dụng các cơ chế mã hóa ở mức ứng dụng
Trang 56Trang 56
3.4 Sử dụng mã hóa – Mã hóa dữ liệu toàn bộ
Dữ liệu trong các bảng và cả dữ liệu quản lý các bảng có thể được mã hóa nhờ các công nghệ đặc biệt thực hiện trực
tiếp trên máy chủ CSDL;
Dữ liệu được mã hóa khi nó được ghi vào CSDL;
Dữ liệu được giải mã sau khi được đọc từ CSDL và nạp vào bộ nhớ
Trang 57Trang 57
Công nghệ Transparent Data Encryption (TDE) cho phép mã hóa từng khối dữ liệu khi nó được ghi vào CSDL và giải mã khi khối được đọc ra từ CSDL;
Công nghệ TDE được hỗ trợ bởi nhiều hệ quản trị CSDL:
MS-SQL
Oracle
IBM DB2
Trang 58Trang 58 3.4 Sử dụng mã hóa – Mã hóa dữ liệu toàn bộ - TDE
Trang 59Trang 59
Ưu điểm:
Hoàn toàn trong suốt với người dùng
Nhược điểm:
Tăng tải máy chủ CSDL;
Nếu người dùng hoặc tin tặc có thể truy cập CSDL, thì hắn ta có thể trích xuất dữ liệu từ CSDL theo cách thông thường không bảo vệ được dữ liệu khỏi bị đánh cắp
Trang 60Trang 60
3.4 Sử dụng mã hóa – Mã hóa dữ liệu truyền
Dữ liệu trao đổi giữa máy khách và máy chủ CSDL có thể được bảo vệ sử dụng các kỹ thuật dựa trên mã hóa:
Sử dụng SSL/TLS:
• Cần có chứng chỉ số khóa công khai cho máy chủ
• Sử dụng hệ khóa công khai để trao đổi khóa phiên
• Sử dụng khóa phiên để mã hóa dữ liệu
• Sử dụng hàm băm có khóa (MAC/HMAC) để đảm bảo tính toàn vẹn dữ liệu
• Xác thực thực thể
• Đảm bảo tính bí mật, toàn vẹn và xác thực thông tin truyền
Trang 61Trang 61
Dữ liệu trao đổi giữa máy khách và máy chủ CSDL có thể
được bảo vệ sử dụng các kỹ thuật dựa trên mã hóa:
Sử dụng IPSec
• Tạo đường hầm/kênh giao tiếp an toàn giữa máy chủ và máy khách
• Hai chế độ làm việc: Transport / Tunnel
• Hai phương thức mã hóa: AH và ESP
Trang 62Trang 62
3.4 Sử dụng mã hóa – Mã hóa dữ liệu sử dụng TB đặc biệt
Các thiết bị lưu trữ đặc biệt, có hỗ trợ mã hóa dữ liệu có thể được sử dụng để lưu trữ CSDL
Các thiết bị lưu trữ (thường là HDD và RAID) hỗ trợ sẵn khả năng mã hóa/giải mã, nên toàn bộ CSDL được bảo vệ bằng
mã hóa
Nhược điểm:
Nếu người dùng hoặc tin tặc có thể truy cập CSDL, thì hắn ta có thể trích xuất dữ liệu từ CSDL theo cách thông thường không bảo vệ được dữ liệu khỏi bị đánh cắp
Trang 63Trang 63
Bảo vệ chuỗi kết nối CSDL (connection string):
Hầu hết các chuỗi kết nối được lưu trong các file ở dạng text Có nguy cơ bị tin tặc lạm dụng
ConnectionString= "Driver={SQL Server}; Network=DBMSSOCN;
Server=192.168.0.10;Address=192.168.0.10;WSID=192.168.0.100; Database=CustomersDB;UID=test_user;PWD=Abc123456;"
Cần mã hóa các chuỗi kết nối CSDL để đảm bảo an toàn
Trang 64Trang 64
3.5 Một số biện pháp bảo mật CSDL và ứng dụng khác
Tường lửa CSDL:
Giám sát, phân tích các câu lệnh gửi đến CSDL
Nếu phát hiện câu lệnh độc hại ngăn chặn
Phát hiện dựa trên tập các luật/chính sách đã định trước
Nhược điểm:
• Làm giảm hiệu năng, do việc phân tích cú pháp các câu lệnh SQL và chạy các tập luật giám sát tiêu tốn nhiều tài nguyên tính toán
Trang 65Trang 65
Trang 66 Mật khẩu thường được sinh ngẫu nhiên
Chuyển giao mật khẩu:
• In ra giấy một danh sách mật khẩu để dùng dần
• Gửi qua các phương tiện khác như SMS
• Sử dụng các thiết bị chuyên dụng, như các e-token,
Ưu điểm: an toàn hơn, tránh được tấn công kiểu replay (lấy được mật khẩu dùng lại)
Nhược điểm: người sử dụng khó nhớ mật khẩu
Trang 67Trang 67
Sử dụng các phương pháp xác thực form, trang web như CAPTCHA