Chương 1: KHÁI NIỆM CƠ SỞ 1. KHÁI NIỆM VỀ BẢO VỆ WEB Bảo vệ web không còn là khái niệm xa lạ đối với những người lập trình web, những nhà quản trị mạng,… Mục tiêu bảo vệ web gồm có: Bảo mật: Thông tin không được đọc trái phép. Bảo toàn: Thông tin không bị sửa đổi một cách trái phép. Bảo đảm tính sẵn sàng: Người dùng hợp pháp có quyền truy cập hay sử dụng thông tin.
Hai đối tượng chính trong sử dụng dịch vụ web là người dùng và người quản trị hệ thống. Phía người dùng dịch vụ web, an toàn trên mạng trước hết là yêu cầu đặt ra với server. Thứ nhất, những yêu cầu gửi đến server phải được thưc thi và phản hồi trong thời gian nhất định (tính sẵn sàng). Thứ hai, thông tin gửi tới phải được đảm bảo không bị virut hay bị sửa đổi bởi tác nhân khác (tính toàn vẹn).
Thứ ba, server không phổ biến thông tin cá nhân trên mạng (tính bí mật). Phía nhà quản trị hệ thống, họ có những yêu cầu cũng khá giống với người dùng nhưng nhìn dưới một góc độ khác. Thứ nhất, họ phải đảm bảo rằng người dùng không thể xâm nhập vào server để thay đổi nội dung của website (tính toàn vẹn). Thứ hai, người dùng không thể truy cập vào các thông tin không thuộc quyền của họ (tính bí mật và bắt buộc).
Thứ ba, người dùng không thể tấn công server làm nó không thể phục vụ người dùng khác (tính sẵn sàng). Thứ tư, người dùng đã được nhận dạng phải chịu trách nhiệm và không thể chối bỏ hành động của mình (tính xác thực). 8 Đối tượng tấn công mạng (Intruder): là cá nhân hoặc tổ chức sử dụng các công cụ phá hoại như phần mềm hoặc phần cứng để dò tìm các điểm yếu, lỗ hổng bảo mật trên hệ thống, thực hiện các hoạt động xâm nhập và chiếm đoạt tài nguyên mạng trái phép. Một số đối tượng tấn công mạng: Tin tặc (Hacker): là kẻ xâm nhập mạng trái phép bằng cách sử dụng các công cụ phá mật khẩu hoặc khai thác điểm yếu của các thành phần truy nhập trên hệ thống.
Kẻ giả mạo (Masquerader): là kẻ giả mạo thông tin trên mạng. Một số hình thức giả mạo như giả mạo địa chỉ IP, tên miền, định danh người dùng… Kẻ nghe trộm (Evesdropping): là đối tượng nghe trộm thông tin trên mạng sử dụng các công cụ sniffer, sau đó dùng các công cụ phân tích và debug để lấy được các thông tin có giá trị. Mục đích: ăn cắp thông tin có giá trị về kinh tế, phá hoại hệ thống mạng có chủ định hoặc cũng vó thể chỉ là những hành động vô ý thức nhằm thử nghiệm các chương trình không kiểm tra cẩn thận,… Lỗ hổng bảo mật: là những yếu kém trên hệ thống hoặc ẩn chứa trong một dịch vụ nào đó, mà dựa vào đó kẻ tấn công có thể xâm nhập trái phép để thực hiện các hành động phá hoại hoặc chiếm đoạt tài nguyên bất hợp pháp. Nguyên nhân gây ra các lỗ hổng bảo mật là khác nhau: do lỗi bản thân hệ thống, do phần mềm cung cấp, hoặc do người quản trị yếu kém không hiểu sâu sắc các dịch vụ cung cấp,… Mức độ ảnh hưởng của các lỗ hổng là khác nhau: có lỗ hổng chỉ ảnh hưởng tới chất lượng dịch vụ, có lỗ hổng ảnh hưởng sâu sắc tới toàn bộ hệ thống,….
9 Một số hình thức tấn công mạng Dựa vào lỗ hổng bảo mật trên mạng: lỗ hổng này thường là những điểm yếu của dịch vụ mà hệ thống cung cấp. Sử dụng các công cụ để phá hoại: ví dụ các chương trình phá khóa mật khẩu để truy cập bất hợp pháp vào chương trình. Kẻ tấn công có thể kết hợp cả hai hình thức trên để đạt được mục đích. Tùy thuộc vào cách tấn công mà mức nguy hại tới hệ thống là khác nhau.
Các mức tấn công hệ thống: Mức 1: Tấn công vào một số dịch vụ mạng: web, email,… dẫn đến Nguy cơ lộ thông tin về cấu hình mạng. Mức 2: Kẻ phá hoại dùng tài khoản của người dùng hợp pháp để chiếm đoạt tài nguyên hệ thống. Kẻ phá hoại có thể thay đổi quyền truy nhập qua các lỗ hổng bảo mật hoặc đọc các thông tin trong tập tin liên quan đến truy nhập hệ thống như: /etc/passwd (Linux) và SAM file (windows). Mức 3,4,5: Kẻ phá hoại không sử dụng quyền của người dung thông thường, mà có thêm một quyền cao hơn với hệ thống như quyền kích hoạt một số dịch vụ, xem các thông tin khác trên hệ thống.
Mức 6: Kẻ tấn công chiếm được quyền root hoặc admin trên hệ thống. 10 Các mức bảo vệ an toàn mạng Vì không có biện pháp an toàn tuyệt đối, nên phải dùng nhiều mức bảo vệ khác nhau, tạo thành rào chắn đối với các hoạt động xâm phạm. Việc bảo vệ thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong các máy tính, đặc biệt là trong các server mạng. Các lớp rào chắn bảo vệ thông tin các trạm của mạng: Lớp thứ nhất: qui định quyền truy nhập các thông tin của mạng và quyền hạn trên tài nguyên đó, cụ thể là các tệp tin.
Lớp thứ hai: hạn chế theo tài khoản truy nhập gồm đăng ký tên và mật khẩu tương ứng. Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản, ít tốn kém và cũng có hiệu quả. Mỗi người sử dụng muốn truy cập vào mạng phải có đăng ký tên và mật khẩu. Người quản trị hệ thống có trách nhiệm quản lý, kiểm soát mọi hoạt động mạng và xác định quyền truy cập của người dùng khác tùy theo thời gian và không gian.
Lớp thứ ba: sử dụng các phương pháp mã hóa. Dữ liệu được biến đổi từ dạng đọc được sang dạng “khó” đọc, theo một thuật toán nào đó. Lớp thứ tư: lớp bảo vệ vật lý nhằm ngăn cản các truy nhập vật lý bất hợp pháp vào hệ thống. Thường dùng các biện pháp truyền thống như ngăn chặn người không có nhiệm vụ vào phòng máy, dùng các hệ thống khóa trên máy tính, cài các hệ thống báo động khi có truy nhập trái phép.
Lớp thứ năm: cài đặt các hệ thống tường lửa, nhằm ngăn chặn các truy nhập trái phép và cho phép lọc các gói tin không muốn gửi đi, hoặc nhận vào vì lý do nào đó. 11 Nguyên nhân của các vụ tấn công: Có rất nhiều nguyên nhân dẫn đến tình trạng bảo mật kém của ứng dụng web. Tuy nhiên ta có thể tổng kết một số nguyên nhân chính: + Các ứng dụng web được viết dựa trên cơ chế bảo mật client_server chuẩn đơn giản. Khi xây dựng giao thức HTTP, người ta chưa tính đến vấn đề bảo mật cho giao thức này.
Do vậy việc xuất hiện nhiều lỗ hổng bảo mật là điều dễ hiểu. + Sự phức tạp của các ứng dụng web làm cho việc viết các đoạn mã bảo mật rất khó khăn. Các ngôn ngữ lập trình mới ra đời, các chuẩn về định dạng dữ liệu,… làm cho các ứng dụng web thêm phức tạp. + Những người phát triển web tập trung nhiều vào chức năng và tốc độ chứ không phải bảo mật.
Các bước xây dựng một ứng dụng web là phân tích- thiết kế- lập trình- kiểm thử. Ở các bước này, vấn đề bảo mật thông thường chỉ được quan tâm ở giai đoạn cuối. Ở giai đoạn này nếu phát hiện ra các lỗ hổng về bảo mật thì cũng chỉ vá lỗi chứ không giải quyết triệt để các lỗi đó. + Lỗi nằm trong các dịch vụ nền tảng web như: hệ điều hành, trình duyệt web, các công cụ lập trình web.
Theo thống kê của IBM’s waston Research Lab, cứ 1500 dòng mã lệnh có một lỗ hổng được tìm thấy. Hệ điều hành winXP có tới 45 000 000 dòng lệnh (có 30 000 lỗ hổng), còn win2000 có 35 000 000 dòng mã (khoảng 23 000 lỗ hổng) + Nội dung trang web thường xuyên thay đổi. + Nhà quản trị mạng còn yếu kém về năng lực và sử dụng dịch vụ. KHÁI NIỆM ỨNG DỤNG WEB 1.Khái niệm Khi trang web tồn tại trên Internet, nó được lưu trữ tại nơi nào đó để người dùng truy xuất tới, đó chính là webserver.
Webserver có nhiệm vụ lưu trữ các trang web để webclient truy xuất tới. Ứng dụng Web là một ứng dụng chủ/khách (client/server) sử dụng giao thức HTTP (1.2) để tương tác với người dùng hay hệ thống khác. Trình khách dành cho người dùng thường là một trình duyệt Web như Internet Explorer hay Netscape Navigator. Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động.
Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web. Các chương trình có thể là các trang trao đổi mua bán, các diễn đàn, gửi nhận e-mail… Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh. Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface), được chạy trên các trình chủ Web và có thể kết nối vào các CSDL đơn giản trên cùng máy chủ. Ngày nay ứng dụng Web thường được viết bằng Java (hay các ngôn ngữ tương tự), và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu.
Một ứng dụng web thường có kiến trúc: Hình 1: Kiến trúc của ứng dụng Web 13 Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web. Lớp ứng dụng: là nơi xử lý của ứng dụng Web. Nó sẽ xử lý thông tin người dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày”. Lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS… Lớp dữ liệu: thường là các hệ quản trị CSDL (DBMS-database management system) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng.
Hoạt động Hình 2: Mô hình hoạt động của một ứng dụng Web Mô hình hoạt động của một ứng dụng web thường có: Trình khách (trình duyệt (client)): Internet Explorer, Netscap Navigator. Trình chủ (Server): Apache, IIS, …. Hệ quản trị CSDL : SQL Server, MySQL, Access…. 14 Mô tả hoạt động: Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C+ +… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách.