Việc xác định cấu trúc ứng dụng web giúp người quản trị xác định được mô hình thiết kế ứng dụng web của đơn vị, qua đó có biện pháp tổ chức mô hình web hợp lý, tránh được các khả năng tấn công leo thang đặc quyền.
Một ứng dụng web khi triển khai, về cơ bản sẽ có ba lớp như sau: Lớp trình diễn, lớp ứng dụng và lớp cơ sở dữ liệu.
- Lớp trình diễn (Web Server): là nơi mà máy chủ cài đặt có tác dụng phục vụ các yêu cầu về web nói cách khác, lớp trình diễn là máy chủ phục vụ web, thông thường máy chủ phục vụ web nhận được yêu cầu từ trình duyệt của người dùng. Máy chủ phục vụ web có thể là: IIS Server, Apache HTTP Server, Apache Tomcat Server, v.v.
- Lớp ứng dụng (Web Application): là nơi các kịch bản hay mã nguồn phát triển ra ứng dụng web được thực thi có thể là: ASP.NET, PHP, JSP, Perl, Python, v.v. thường là nơi xử lý về logic nghiệp vụ, nhận các yêu cầu nghiệp vụ từ máy chủ web và phản hồi lại nói cách khác, lớp ứng dụng là máy chủ ứng dụng.
- Lớp cơ sở dữ liệu (Database Server): là nơi mà ứng dụng web lưu trữ và thao tác với dữ liệu nói cách khác, lớp cơ sở dữ liệu là máy chủ cơ sở dữ liệu. Máy chủ cơ sở dữ liệu thường nhận yêu cầu truy vấn cơ sở dữ liệu được gửi từ máy chủ ứng dụng. Máy chủ cơ sở dữ liệu dựa trên nền các hệ quản trị cơ sở dữ liệu quan hệ như: Oracle, SQL Server, MySQL, v.v.
Việc hoạch định tốt các lớp trong cấu trúc ứng dụng web không những giúp người quản trị dễ vận hành mà còn chủ động trong phòng, chống các nguy cơ tấn công từ tin tặc.
Mỗi lớp nên khởi tạo một cơ chế phòng thủ riêng cho mình để chống lại những hành động không được phép và không nên “tin tưởng” những lớp khác để tránh tình trạng tấn công leo thang. Một số kịch bản thông dụng như sau:
25
- Lớp trình diễn có thể cài đặt cơ chế điều khiển truy cập trên một tài nguyên. Ví dụ khi lập chính sách truy cập một tài nguyên nào đó trên hệ thống, chẳng hạng như thư mục /admin, có thể cài đặt cấu hình lớp trình diễn yêu cầu xác thực với quyền quản trị (administrator). Điều này sẽ hạn chế ảnh hưởng từ lớp ứng dụng có thể sử dụng nhiều kịch bản để truy cập đến tài nguyên trên.
- Lớp cơ sở dữ liệu có thể cung cấp các tài khoản khác nhau với những quyền hành động khác nhau. Ví dụ như với nhóm người sử dụng có tên tài khoản chưa được chứng thực thì thiết đặt quyền thấp nhất là chỉ có thể truy cập vào nội dung để xem, còn các thao tác ghi, thay đổi, thực thi là không được phép. Nếu tài khoản được chứng thực thì cũng chỉ được thực hiện những hành động theo đúng vai trò và quyền hạn của tài khoản đó. Được phép ghi, thay đổi hay thực thi trên cơ sở dữ liệu theo đúng vai trò đã được chỉ định và chỉ có tác dụng trong phạm vi cơ sở dữ liệu đã được cấu hình trước.
Các lớp khác nhau không nên cho phép truy cập đọc hoặc ghi bởi lớp khác. Ví dụ: lớp trình diễn không có khả năng truy cập đến tập tin vật lý được sử dụng lưu trữ dữ liệu tại lớp cơ sở dữ liệu mà chỉ có khả năng truy cập dữ liệu này thông qua các truy vấn với các tài khoản phù hợp (truy cập ở cấp độ ứng dụng). Các dịch vụ giao tiếp giữa các lớp trên cấp độ mạng cũng nên được lọc để chỉ cho phép các dịch vụ cần thiết được thực thi.
26 Máy chủ web
Máy chủ ứng dụng Máy chủ cơ sở dữ liệu
Mô hình 1 lớp Máy chủ web Máy chủ ứng dụng Máy chủ cơ sở dữ liệu Mô hình 2 lớp Máy chủ web Máy chủ ứng dụng Máy chủ cơ sở dữ liệu Mô hình 3 lớp
Máy chủ cơ sở dữ liệu
Máy chủ web
Máy chủ ứng dụng
Mô hình n lớp
27
Mô hình 1 lớp: Trong mô hình này các máy chủ phục vụ web, máy chủ ứng dụng, máy chủ cơ sở dữ liệu đều được thiết lập trên cùng một máy chủ (xem hình 2.2).
Hình 2.2: Mô hình 1 lớp Ưu điểm: Dễ dàng cài đặt và không tốn nhiều tài nguyên.
Nhược điểm: Khi một máy chủ bị tin tặc tấn công và chiếm quyền kiểm soát có thể dẫn đến các máy chủ khác cũng bị ảnh hưởng theo. Tuy nhiên, sẽ gặp nhiều khó khăn trong quá trình vận hành và triển khai các biệp pháp bảo vệ cho ứng dụng.
Mô hình 2 lớp: Khác với mô hình 1 lớp, trong mô hình 2 lớp này các máy chủ phục vụ web, máy chủ ứng dụng được thiết lập trên cùng một máy chủ, còn máy chủ cơ sở dữ liệu được thiết lập trên một máy chủ khác (xem hình 2.3).
Hình 2.3: Mô hình 2 lớp Máy chủ web
Máy chủ ứng dụng Máy chủ cơ sở dữ liệu
Máy chủ web Máy chủ ứng dụng
Máy chủ cơ sở dữ liệu
28
Ưu điểm: Không tốn quá nhiều tài nguyên nhưng vẫn đảm bảo được một phần nào đó quá trình vận hành và bảo mật.
Nhược điểm: Máy chủ web và máy chủ ứng dụng vẫn còn đặt chung trên một máy chủ nên khi máy chủ phục vụ web bị tin tặc tấn công và chiếm quyền kiểm soát, mã nguồn ứng dụng web bị lộ, điều này có thể dẫn đến máy chủ cở sở dữ liệu cũng có thể bị kiểm soát.
Mô hình 3 lớp: Trong mô hình này, các máy chủ web, máy chủ ứng dụng và máy chủ cơ sở dữ liệu đều được thiết lập trên mỗi máy chủ độc lập (xem hình 2.4).
Hình 2.4: Mô hình 3 lớp
Ưu điểm: Dễ dàng vận hành hệ thống và chủ động phòng, chống các nguy cơ tấn công từ tin tặc.
Nhược điểm: Tốn kém nhiều tài nguyên và quá trình cài đặt.
Mô hình N lớp: Trong mô hình này, mỗi máy chủ web, máy chủ ứng dụng và máy chủ cơ sở dữ liệu đều được thiết lập trên mỗi cụm máy chủ độc lập như hình vẽ. Đối với những hệ thống cung cấp dịch vụ lớn, đòi hỏi phải có nhiều tài nguyên mới đủ phục vụ người dùng thì mô hình này là giải pháp tốt (xem hình 2.5).
Máy chủ web
Máy chủ ứng dụng
Máy chủ cơ sở dữ liệu
29
Hình 2.5: Mô hình N lớp
Ưu điểm: Cung cấp dịch vụ rộng lớn với nhiều người sử dụng.
Nhược điểm: Tốn nhiều tài nguyên nhiều, chi phí cài đặt, cũng như vận hành.
Việc phân tích xác định các cấu trúc web cho thấy, nếu giữa các lớp không có tách biệt rõ ràng thì một lớp bị tấn công và chiếm quyền kiểm soát có thể dẫn đến các lớp khác cũng bị ảnh hưởng theo. Do vậy, khi triển khai thực tiễn nên thiết kế tách biệt độc lập theo cấu trúc 3 lớp để tránh tình trạng một lớp bị tấn công và chiếm quyền kiểm soát dẫn đến các lớp khác bị ảnh hưởng. Việc phân loại độc lập 3 lớp như trên sẽ tạo điều kiện thuận lợi cho việc vận hành, bảo trì hệ thống cũng như dễ dàng áp dụng các biện pháp bảo vệ đối với mỗi lớp riêng biệt.