Gần đây vấn đề bảo mật cơ sở dữ liệu diễn ra lan tràn trên các phương tiện thông tin đại chúng và mạng lưới tin tức Internet. Đầu tiên là sâu Slammer và gần đây nhất là vụ truy cập bất hợp pháp hơn 8 triệu mã số thẻ tín dụng.
Nhiều người đặt ra câu hỏi: “Các admin quản trị hệ thống ngủ sau bánh xe cho chúng hoạt động hay sao?”. Giống như mạng Internet bị đánh bom vậy. Hiện người ta thường hay sử dụng các tiện ích rẻ tiền hơn của các hệ thống thông tin sử dụng web, do đó họ trở nên lười áp dụng các biện pháp bảo mật cơ sở.
Vấn đề ở đây là phải cấp bách áp dụng các biện pháp an toàn với người quản trị hệ thống sáng suốt. Câu hỏi đầu tiên cho các admin hiện nay thường là “Sửa chữa nhanh như thế nào” chứ không phải “Có bao nhiêu mối nguy hiểm” như trước kia. Muốn giải quyết được vấn đề hiện tại, trước hết chúng ta phải điều chỉnh lại ý thức và suy nghĩ trong mỗi người.
Bây giờ chúng tôi xin cung cấp một vài phương pháp bảo mật cơ bản sau đây. Hy vọng chúng sẽ giúp bạn ít nhiều bảo vệ được các cơ sở dữ liệu quan trọng.
Cấu trúc bảo mật cơ sở
Các doanh nghiệp hiện nay dường như quá chú trọng vào từng thành phần bảo mật mà quên đi bức tranh toàn cảnh: “Nếu như không có một hệ thống tổ chức bảo mật cơ sở, bất kỳ chính sách bảo mật nào cũng đều thất bại”.
Người quản trị hệ thống thường hay quản lý bảo mật theo ý muốn riêng của mình, không có hoặc chỉ một ít giám sát từ người quản lý cao hơn. Điều này làm gia tăng các câu hỏi:
- Ai đảm bảo rằng người quản trị hệ thống theo đúng các hướng dẫn bảo mật?
- Một tổ chức đảm bảo tất cả quản trị viên hệ thống cập nhật bản vá lỗi mới nhất như thế nào?
- Một tổ chức lấy gì để đảm bảo bản vá lỗi mới nhất đã được kiểm tra để chắc chắn chúng không trở thành nguyên nhân gây ra hỏng hóc cho hệ thống?
- Ai là người kiểm chứng bảo mật cho toàn bộ tập đoàn hay tổng công ty?
Ví dụ về một tổ chức bảo mật mạng hiệu quả và rõ ràng |
Dù có một cấu trúc phù hợp, bạn cũng vẫn gặp phải sự lộn xộn trong những vấn đề quan trọng như bảo mật. Các vấn đề lộn xộn này gây ra không ít biến động lớn, chẳng hạn:
Jim tại văn phòng ở Bờ biển Đông đã cập nhật tất cả bản vá lỗi nhưng anh ta có mối liên kết không an toàn với Bill ở bờ biển tây. Anh này thất bại khi thiết lập cấu hình phù hợp cho tường lửa. Và chỉ cần như thế là đủ cho một cuộc tổng tấn công phá hoại.
Trước những trường hợp như thế, bạn cần xem xét lại toàn bộ khi thiết lập cấu trúc bảo mật cơ sở.
Bây giờ, sau khi đã có tổ chức bảo mật cơ sở cho hệ thống, chúng ta sẽ bắt đầu xem xét các vấn đề kỹ thuật của bảo mật cơ sở dữ liệu.
Lỗ hổng cơ sở dữ liệu (muôn mặt chiến tranh bảo mật!)
Bảo mật cơ sở dữ liệu về cơ bản có thể bị tấn công theo trên các lĩnh vực sau:
- Các dịch vụ bảo mật (Server Security)
- Các kết nối cơ sở dữ liệu (Database Connection)
- Điều khiển truy cập bảng (Table Access Control)
- Giới hạn truy cập cơ sở dữ liệu (Restricting Database Access)
Các dịch vụ bảo mật (Server Security)
Server Security là chương trình tự giới hạn quyền truy cập thực vào dịch vụ cơ sở dữ liệu. Đây là khía cạnh quan trọng nhất của bảo mật, bạn nên lập kế hoạch cẩn thận cho nó.
Ý tưởng cơ bản của nó là: “Bạn không thể truy cập vào cái mà bạn không thể thấy”. Đây không phải là một web server và cũng không nên là một kết nối nạc danh. Khi cần cung cấp thông tin cho web động, cơ sở dữ liệu của bạn không nên đặt cùng một máy với web server. Điều đó không chỉ vì mục đích bảo mật mà còn tốt cho cả quá trình thực thi. Nếu cơ sở dữ liệu là để đáp ứng cho web server, nên cấu hình chỉ cho phép kết nối với web server đó.
Truy cập điạ chỉ IP tin cậy, giới hạn dịch vụ cơ sở dữ liệu chỉ trong các yêu cầu thông tin trả lời từ IP web server đã biết |
Địa chỉ IP tin cậy
Mỗi một server chỉ nên cấu hình cho phép liên hệ với các điạ chỉ IP tin cậy. Tương tự như ở nhà bạn, bạn không cho phép con mình nói chuyện với người lạ, thì ở đây bạn cũng nên biết chính xác ai được quyền “nói chuyện” với database server.
Nếu điểm trả cuối là một web server thì chỉ nên cho phép điạ chỉ của web server đó được quyền truy cập database server. Nếu database server cung cấp thông tin cho ứng dụng chính chạy trên mạng nội bộ thì nên giới hạn điạ chỉ chỉ trong mạng nội bộ.
Không nên để trạng thái yếu của các web database trên cùng một server với thông tin cơ sở dữ liệu nội bộ.
Các kết nối cơ sở dữ liệu (Database Connection)
Các ứng dụng động (Dynamic Application) hiện nay đang trở thành nguyên nhân khiến nhiều người cập nhật cơ sở dữ liệu trực tiếp mà không qua thẩm định. Nếu bạn cho phép người dùng cập nhật cơ sở dữ liệu qua trang web, hãy đảm bảo rằng bản cập nhật đó là an toàn. Chẳng hạn với mã nguồn SQL, một người dùng thông thường không bao giờ được nhập dữ liệu vào nếu dữ liệu đó chưa từng được xem xét.
Nếu cần sử dụng kết nối ODBC, hãy đảm bảo rằng chỉ có một số người dùng đươc quyền truy cập file chia sẻ. Có bao giờ mọi nhân viên trong công ty của bạn được quyền có tất cả chìa khoá của mọi phòng ở công ty? Vì thể đừng bao giờ cho phép các tài khoản người dùng sử dụng mọi kết nối và nguồn dữ liệu trên server.
Điều khiển truy cập bảng (Table Access Control)
Điều khiển truy cập bảng là một trong các dạng thức hay bị bỏ sót nhất ở bảo mật cơ sở dữ liệu. Vì rất khó kế thừa và áp dụng nó. Sử dụng một cách thích hợp điều khiển truy cập bảng đòi hỏi phải có sự hợp tác của cả quản trị viên hệ thống và người phát triển cơ sở dữ liệu. Và tất cả chúng ta đều biết rằng “hợp tác” là một từ lạ trong công nghiệp IT.
Nhiều ngưòi dùng sẽ quy tội có quyền truy cập là do người quản trị hệ thống để cơ sở dữ liệu ở mức public. Hoặc nếu bảng chỉ được sử dụng cho mức hệ thống thì tại sao nó lại có các quyền truy cập khác bên cạnh quyền admin.
Đáng tiếc là cấu trúc bảng, cơ sở dữ liệu quan hệ phù hợp và vấn đề phát triển không nằm trong phạm vi của bài này. Có thể chúng ta sẽ bàn kỹ hơn trong bài sau.
Giới hạn truy cập cơ sở dữ liệu (Restricting Database Access)
Đây là mốc cuối cùng trong bài tổng quan về bảo mật cơ sở dữ liệu chúng ta đang xem xét. Vấn đề chủ yếu trong mục này là truy cập mạng hệ thống, trong đó tập trung về cơ sở dữ liệu internet. Hầu hết đích nhắm của các cuộc tấn công hiện nay đều là database cơ sở mạng, tất cả ứng dụng sử dụng web đều có cổng cho các kẻ tấn công “nghe ngóng”.
Tội phạm mạng bây giờ thường chủ yếu sử dụng hình thức đơn giản “port scan” (quét cổng) để tìm các cổng mở đặt mặc định cho hệ thống cơ sở dữ liệu phổ biến. Nói là mặc định vì bạn có thể thay đổi các cổng thành dịch vụ nghe, là một cách hay tránh các cuộc tấn công.
Đầu tiên chúng sẽ cố gắng dò xem liệu một máy có địa chỉ cụ thể nào không. Chúng sử dụng câu lệnh ping, đơn giản bằng cách mở cửa sổ lệnh command và gõ từ khoá “ping”vào, chẳng hạn:
C:\ ping 127.0.0.1
hay
root@localhost: ~$: ping 127.0.0.1
Phần trả lời có thể ở dạng:
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Ví dụ về lệnh ping |
Tội phạm mạng ngày nay biết rất rõ về câu trả lời của hệ thống ở các điạ chỉ này. Biện pháp ngăn chặn đầu tiên là vô hiệu hoá các gói ICMP. Nó cũng có thể ngăn chặn phần trả lời từ yêu cầu ping.
Có nhiều cách ngăn chặn truy cập mở Internet. Mỗi hệ thống cơ sở dữ liệu đều có một tập thành phần riêng duy nhất cũng như hệ điều hành. Ở đây chỉ xin đưa ra một vài phương thức:
- Địa chỉ IP tin cậy: các dịch vụ UNIX được cấu hình để trả lời chỉ các lệnh ping trong danh sách host tin cậy. Trong UNIX, thực hiện hoàn chỉnh việc này bằng cách cấu hình file rhosts, giới hạn truy cập server trong danh sách người dùng cụ thể.
- Vô hiệu hoá tài khoản server: Nếu bạn đang tạm ngưng một server ID sau 3 lần sai mật khẩu, bạn đã tạm hoãn được cuộc tấn công. Nếu không thì kẻ tấn công có thể chạy chương trình phát sinh hàng triệu mật khẩu cho tới khi nào nó đoán đúng ID và mật khẩu thích hợp của người dùng mới thôi.
- Các chức năng đặc biệt: bạn có thể sử dụng một số sản phẩm như RealSecure by ISS. Nó sẽ gửi một cảnh báo khi có dịch vụ bên ngoài đang cố gắng xâm phạm bảo mật hệ thống của bạn.
Cơ sở dữ liệu Oracle có rất nhiều phương thức kiểm định:
- Bảo mật Kerberos: Đây là “chiếc vé” phổ biến, giúp tránh phải sử dụng hệ thống thẩm định cơ sở.
- Cơ sở dữ liệu riêng ảo (VPD): Công nghệ VPD có thể giới hạn quyền truy cập bằng cách chọn một số hàng của cột.
- Bảo mật grant-execute (cấp phát thực thi): Đặc quyền thực thi chương trình con có thể được kết hợp chặt chẽ đối với người dùng. Khi người dùng thực thi chương trình con, họ được cấp phát quyền truy cập cơ sở dữ liệu, nhưng chỉ nằm trong phạm vi chương trình con.
- Các dịch vụ thẩm định: Các dịch vụ thẩm định bảo mật cung cấp nhân dạng xác định trước người dùng ngoài.
- Bảo mật truy cập cổng: Tất cả ứng dụng Oracle đều được nghe trực tiếp tại một cổng cụ thể trên server. Giống như bất kỳ dịch vụ HTTP chuẩn khác, Oracle Web Listener có thể được cấu hình để giới hạn quyền truy cập.
Hy vọng với những kiến thức cơ bản ở trên, bạn có thể loại bỏ hay ít nhất giảm thiểu nguy cơ bị tấn công cho cơ sở dữ liệu Bảo mật cơ sở dữ liệu hết sức quan trọng và hãy chú ý cẩn thận.