Rate this post

Cấu hình thích hợp của các phần tử đơn lẻ tạo nên một kiến ​​trúc ứng dụng là rất quan trọng để ngăn chặn những sai lầm có thể ảnh hưởng đến tính bảo mật của toàn bộ kiến ​​trúc.

Đánh giá và kiểm tra cấu hình là một nhiệm vụ quan trọng trong việc tạo và duy trì một kiến ​​trúc. Điều này là do nhiều hệ thống khác nhau thường sẽ được cung cấp các cấu hình chung có thể không phù hợp với nhiệm vụ mà chúng sẽ thực hiện trên trang web cụ thể mà chúng đã được cài đặt.

Các bài viết liên quan:

Mặc dù cài đặt máy chủ ứng dụng và web điển hình sẽ chứa rất nhiều chức năng (như ví dụ ứng dụng, tài liệu, trang thử nghiệm) những gì không cần thiết nên được loại bỏ trước khi triển khai để tránh khai thác sau cài đặt.

Mục tiêu kiểm tra

Đảm bảo rằng các tệp mặc định và tệp đã biết đã bị xóa.

Xác thực rằng không có mã gỡ lỗi hoặc tiện ích mở rộng nào được để lại trong môi trường sản xuất.

Xem lại các cơ chế ghi nhật ký được thiết lập cho ứng dụng.

Làm thế nào để kiểm tra

Blackbox testing

Tệp và Thư mục Mẫu và Đã biết

Nhiều máy chủ web và máy chủ ứng dụng cung cấp, trong cài đặt mặc định, các ứng dụng và tệp mẫu vì lợi ích của nhà phát triển và để kiểm tra xem máy chủ có hoạt động bình thường ngay sau khi cài đặt hay không. Tuy nhiên, nhiều ứng dụng máy chủ web mặc định sau này đã được biết đến là dễ bị tấn công. Đây là trường hợp, ví dụ: đối với CVE-1999-0449 (Từ chối dịch vụ trong IIS khi trang web mẫu Exair đã được cài đặt), CAN-2002-1744 (Lỗ hổng truyền tải thư mục trong CodeBrws.asp trong Microsoft IIS 5.0), CÓ THỂ -2002-1630 (Sử dụng sendmail.jsp trong Oracle 9iAS) hoặc CAN-2003-1172 (Truyền thư mục trong mẫu nguồn xem trong Apache’s Cocoon).

Máy quét CGI bao gồm danh sách chi tiết các tệp đã biết và các mẫu thư mục được cung cấp bởi các máy chủ web hoặc ứng dụng khác nhau và có thể là một cách nhanh chóng để xác định xem các tệp này có xuất hiện hay không. Tuy nhiên, cách duy nhất để thực sự chắc chắn là xem xét toàn bộ nội dung của máy chủ web hoặc máy chủ ứng dụng và xác định xem chúng có liên quan đến chính ứng dụng đó hay không.

Nhận xét Đánh giá

Việc các lập trình viên thêm chú thích khi phát triển các ứng dụng lớn trên nền web là điều rất bình thường. Tuy nhiên, các nhận xét được đưa vào nội tuyến trong mã HTML có thể tiết lộ thông tin nội bộ mà kẻ tấn công không nên có. Đôi khi, ngay cả mã nguồn cũng được nhận xét vì một chức năng không còn được yêu cầu nữa, nhưng nhận xét này bị rò rỉ ra ngoài các trang HTML được trả lại cho người dùng một cách không chủ ý.

Đánh giá bình luận nên được thực hiện để xác định xem có bất kỳ thông tin nào bị rò rỉ thông qua bình luận hay không. Việc xem xét này chỉ có thể được thực hiện kỹ lưỡng thông qua phân tích nội dung tĩnh và động của máy chủ web và thông qua tìm kiếm tệp. Có thể hữu ích khi duyệt trang web theo cách tự động hoặc có hướng dẫn và lưu trữ tất cả nội dung được truy xuất. Nội dung được truy xuất này sau đó có thể được tìm kiếm để phân tích bất kỳ nhận xét HTML nào có sẵn trong mã.

Cấu hình hệ thống

Các công cụ, tài liệu hoặc danh sách kiểm tra khác nhau có thể được sử dụng để cung cấp cho các chuyên gia CNTT và bảo mật đánh giá chi tiết về sự tuân thủ của các hệ thống mục tiêu đối với các đường cơ sở hoặc điểm chuẩn cấu hình khác nhau. Các công cụ này bao gồm (nhưng không giới hạn):

Gray-Box Testing

Đánh giá cấu hình

Cấu hình máy chủ web hoặc máy chủ ứng dụng đóng một vai trò quan trọng trong việc bảo vệ nội dung của trang web và nó phải được xem xét cẩn thận để phát hiện các lỗi cấu hình phổ biến. Rõ ràng, cấu hình được đề xuất thay đổi tùy thuộc vào chính sách trang web và chức năng sẽ được cung cấp bởi phần mềm máy chủ. Tuy nhiên, trong hầu hết các trường hợp, phải tuân theo các nguyên tắc cấu hình (do nhà cung cấp phần mềm hoặc các bên bên ngoài cung cấp) để xác định xem máy chủ đã được bảo mật đúng cách chưa.

Không thể nói một cách chung chung cách cấu hình máy chủ, tuy nhiên, cần lưu ý đến một số nguyên tắc chung:

Chỉ bật các mô-đun máy chủ (phần mở rộng ISAPI trong trường hợp IIS) cần thiết cho ứng dụng. Điều này làm giảm bề mặt tấn công vì máy chủ bị giảm kích thước và độ phức tạp khi các mô-đun phần mềm bị vô hiệu hóa. Nó cũng ngăn các lỗ hổng có thể xuất hiện trong phần mềm của nhà cung cấp ảnh hưởng đến trang web nếu chúng chỉ xuất hiện trong các mô-đun đã bị vô hiệu hóa.

Xử lý lỗi máy chủ (40x hoặc 50x) với các trang tùy chỉnh thay vì với các trang máy chủ web mặc định. Đặc biệt đảm bảo rằng bất kỳ lỗi ứng dụng nào sẽ không được trả lại cho người dùng cuối và không có mã nào bị rò rỉ thông qua các lỗi này vì nó sẽ giúp ích cho kẻ tấn công. Thực sự rất hay quên điểm này vì các nhà phát triển cần thông tin này trong môi trường tiền sản xuất.

Đảm bảo rằng phần mềm máy chủ chạy với quyền hạn được giảm thiểu trong hệ điều hành. Điều này ngăn lỗi trong phần mềm máy chủ ảnh hưởng trực tiếp đến toàn bộ hệ thống, mặc dù kẻ tấn công có thể nâng cao đặc quyền sau khi chạy mã làm máy chủ web.

Đảm bảo phần mềm máy chủ ghi lại đúng cách cả truy cập hợp pháp và lỗi.

Đảm bảo rằng máy chủ được cấu hình để xử lý tình trạng quá tải và ngăn chặn các cuộc tấn công Từ chối Dịch vụ. Đảm bảo rằng máy chủ đã được điều chỉnh hiệu suất đúng cách.

Không bao giờ cấp cho các danh tính không phải quản trị viên (ngoại trừ NT SERVICE \ WMSvc) quyền truy cập vào applicationHost.config, redirection.config và Administration.config (quyền truy cập Đọc hoặc Ghi). Điều này bao gồm Dịch vụ mạng, IIS_IUSRS, IUSR hoặc bất kỳ danh tính tùy chỉnh nào được nhóm ứng dụng IIS sử dụng. Các quy trình công nhân IIS không có nghĩa là để truy cập trực tiếp vào bất kỳ tệp nào trong số này.

Không bao giờ chia sẻ applicationHost.config, redirection.config và Administration.config trên mạng. Khi sử dụng Cấu hình dùng chung, hãy xuất ứng dụngHost.config sang một vị trí khác (xem phần có tiêu đề “Đặt quyền cho cấu hình dùng chung).

Hãy nhớ rằng tất cả người dùng có thể đọc các tệp .NET Framework machine.config và root web.config theo mặc định. Không lưu trữ thông tin nhạy cảm trong các tệp này nếu thông tin đó chỉ dành cho quản trị viên.

Mã hóa thông tin nhạy cảm mà chỉ xử lý của nhân viên IIS mới được đọc chứ không phải bởi những người dùng khác trên máy.

Không cấp quyền truy cập Ghi vào danh tính mà máy chủ Web sử dụng để truy cập ứng dụng được chia sẻHost.config. Danh tính này chỉ nên có quyền truy cập Đọc.

Sử dụng danh tính riêng để xuất bản applicationHost.config cho phần chia sẻ. Không sử dụng danh tính này để định cấu hình quyền truy cập vào cấu hình được chia sẻ trên máy chủ Web.

Sử dụng mật khẩu mạnh khi xuất khóa mã hóa để sử dụng với -cấu hình được chia sẻ.

Duy trì quyền truy cập hạn chế vào phần có chứa các khóa mã hóa và cấu hình được chia sẻ. Nếu chia sẻ này bị xâm phạm, kẻ tấn công sẽ có thể đọc và ghi bất kỳ cấu hình IIS nào cho máy chủ Web của bạn, chuyển hướng lưu lượng truy cập từ trang Web của bạn đến các nguồn độc hại và trong một số trường hợp, giành quyền kiểm soát tất cả các máy chủ web bằng cách tải mã tùy ý vào IIS worker các quy trình.

Cân nhắc bảo vệ phần chia sẻ này bằng các quy tắc tường lửa và chính sách IPsec để chỉ cho phép các máy chủ web thành viên kết nối.

Ghi nhật ký

Ghi nhật ký là một tài sản quan trọng về bảo mật của kiến ​​trúc ứng dụng, vì nó có thể được sử dụng để phát hiện các lỗ hổng trong ứng dụng (người dùng liên tục cố gắng truy xuất tệp không thực sự tồn tại) cũng như các cuộc tấn công liên tục từ những người dùng giả mạo. Nhật ký thường được tạo đúng cách bởi web và phần mềm máy chủ khác. Thông thường người ta không tìm thấy các ứng dụng ghi đúng hành động của chúng vào nhật ký và khi chúng làm vậy, mục đích chính của nhật ký ứng dụng là tạo ra kết quả gỡ lỗi mà lập trình viên có thể sử dụng để phân tích một lỗi cụ thể.

Trong cả hai trường hợp (nhật ký máy chủ và ứng dụng), một số vấn đề cần được kiểm tra và phân tích dựa trên nội dung nhật ký:

  • Các bản ghi có chứa thông tin nhạy cảm không?
  • Các bản ghi có được lưu trữ trong một máy chủ chuyên dụng không?
  • Việc sử dụng nhật ký có thể tạo ra điều kiện Từ chối dịch vụ không?
  • Chúng được luân chuyển như thế nào? Các bản ghi có được lưu giữ đủ thời gian không?
  • Nhật ký được xem xét như thế nào? Quản trị viên có thể sử dụng các đánh giá này để phát hiện các cuộc tấn công có chủ đích không?
  • Sao lưu nhật ký được bảo quản như thế nào?
  • Dữ liệu đang được ghi dữ liệu có được xác thực (độ dài tối thiểu / tối đa, ký tự, v.v.) trước khi được ghi không?

Thông tin nhạy cảm trong nhật ký

Ví dụ, một số ứng dụng có thể sử dụng yêu cầu GET để chuyển tiếp dữ liệu biểu mẫu sẽ được nhìn thấy trong nhật ký máy chủ. Điều này có nghĩa là nhật ký máy chủ có thể chứa thông tin nhạy cảm (chẳng hạn như tên người dùng làm mật khẩu hoặc chi tiết tài khoản ngân hàng). Thông tin nhạy cảm này có thể bị kẻ tấn công sử dụng sai nếu chúng lấy được nhật ký, chẳng hạn như thông qua giao diện quản trị hoặc lỗ hổng máy chủ web đã biết hoặc cấu hình sai (như cấu hình sai trạng thái máy chủ nổi tiếng trong máy chủ HTTP dựa trên Apache).

Nhật ký sự kiện thường sẽ chứa dữ liệu hữu ích cho kẻ tấn công (rò rỉ thông tin) hoặc có thể được sử dụng trực tiếp trong việc khai thác:

  • Thông tin gỡ lỗi
  • Dấu vết ngăn xếp
  • Tên người dùng
  • Tên thành phần hệ thống
  • Địa chỉ IP nội bộ
  • Dữ liệu cá nhân ít nhạy cảm hơn (ví dụ: địa chỉ email, địa chỉ bưu điện và số điện thoại được liên kết với các cá nhân được nêu tên)
  • Dữ liệu kinh doanh

Ngoài ra, ở một số khu vực pháp lý, việc lưu trữ một số thông tin nhạy cảm trong các tệp nhật ký, chẳng hạn như dữ liệu cá nhân, có thể buộc doanh nghiệp phải áp dụng luật bảo vệ dữ liệu mà họ sẽ áp dụng cho cơ sở dữ liệu back-end của họ để ghi các tệp nhật ký. Và việc không làm như vậy, thậm chí vô tình, có thể bị phạt theo luật bảo vệ dữ liệu được áp dụng.

Một danh sách rộng hơn các thông tin nhạy cảm là:

  • Mã nguồn ứng dụng
  • Giá trị nhận dạng phiên
  • Truy cập mã thông báo
  • Dữ liệu cá nhân nhạy cảm và một số dạng thông tin nhận dạng cá nhân (PII)
  • Mật khẩu xác thực
  • Chuỗi kết nối cơ sở dữ liệu
  • Khóa mã hóa
  • Dữ liệu tài khoản ngân hàng hoặc chủ thẻ thanh toán
  • Dữ liệu có phân loại bảo mật cao hơn thứ
  • Hệ thống ghi nhật ký điện tử được phép lưu trữ
  • Thông tin nhạy cảm về mặt thương mại
  • Thông tin được thu thập trong khu vực pháp lý có liên quan là bất hợp pháp
  • Thông tin mà người dùng đã chọn không thu thập hoặc không đồng ý với ví dụ: sử dụng không theo dõi, hoặc khi sự đồng ý thu thập đã hết hạn

Vị trí Log

Thông thường, các máy chủ sẽ tạo nhật ký cục bộ về các hành động và lỗi của chúng, tiêu thụ đĩa của hệ thống mà máy chủ đang chạy. Tuy nhiên, nếu máy chủ bị xâm nhập, nhật ký của nó có thể bị kẻ xâm nhập xóa sạch để xóa sạch tất cả các dấu vết của cuộc tấn công và các phương pháp của nó. Nếu điều này xảy ra, quản trị viên hệ thống sẽ không biết về cách thức cuộc tấn công xảy ra hoặc nguồn tấn công nằm ở đâu. Trên thực tế, hầu hết các bộ công cụ của kẻ tấn công đều bao gồm ‘‘ log zapper ‘’ có khả năng dọn dẹp bất kỳ nhật ký nào chứa thông tin nhất định (như địa chỉ IP của kẻ tấn công) và thường được sử dụng trong bộ công cụ gốc cấp hệ thống của kẻ tấn công.

Do đó, sẽ khôn ngoan hơn nếu giữ nhật ký ở một vị trí riêng biệt chứ không phải trong chính máy chủ web. Điều này cũng giúp dễ dàng tổng hợp nhật ký từ các nguồn khác nhau tham chiếu đến cùng một ứng dụng (chẳng hạn như của trang web máy chủ web) và nó cũng giúp dễ dàng thực hiện phân tích nhật ký (có thể tốn nhiều CPU) mà không ảnh hưởng đến chính máy chủ.

Lưu trữ nhật ký

Nhật ký có thể đưa ra điều kiện Từ chối Dịch vụ nếu chúng không được lưu trữ đúng cách. Bất kỳ kẻ tấn công nào có đủ tài nguyên đều có thể tạo đủ số lượng yêu cầu lấp đầy không gian được cấp phát để ghi nhật ký tệp, nếu chúng không được ngăn chặn cụ thể làm như vậy. Tuy nhiên, nếu máy chủ không được định cấu hình đúng cách, các tệp nhật ký sẽ được lưu trữ trong cùng phân vùng đĩa với phân vùng được sử dụng cho phần mềm hệ điều hành hoặc chính ứng dụng. Điều này có nghĩa là nếu đĩa đã được lấp đầy hệ điều hành hoặc ứng dụng có thể bị lỗi vì nó không thể ghi trên đĩa.

Thông thường trong hệ thống UNIX, nhật ký sẽ được đặt trong / var (mặc dù một số cài đặt máy chủ có thể nằm trong / opt hoặc / usr / local) và điều quan trọng là đảm bảo rằng các thư mục lưu trữ nhật ký nằm trong một phân vùng riêng biệt. Trong một số trường hợp và để tránh ảnh hưởng đến nhật ký hệ thống, thư mục nhật ký của chính phần mềm máy chủ (chẳng hạn như / var / log / apache trong máy chủ web Apache) nên được lưu trữ trong một phân vùng dành riêng.

Điều này không có nghĩa là các bản ghi phải được phép phát triển để lấp đầy hệ thống tệp mà chúng cư trú. Sự phát triển của nhật ký máy chủ nên được theo dõi để phát hiện tình trạng này vì nó có thể là dấu hiệu của một cuộc tấn công.

Việc kiểm tra điều kiện này càng dễ dàng và càng nguy hiểm trong môi trường sản xuất, vì kích hoạt số lượng yêu cầu đủ và duy trì để xem liệu các yêu cầu này có được ghi lại hay không và liệu có khả năng lấp đầy phân vùng nhật ký thông qua các yêu cầu này hay không. Trong một số môi trường mà thông số QUERY_STRING cũng được ghi lại bất kể chúng được tạo thông qua yêu cầu GET hay POST, các truy vấn lớn có thể được mô phỏng để lấp đầy nhật ký nhanh hơn vì thông thường, một yêu cầu duy nhất sẽ chỉ gây ra một lượng nhỏ dữ liệu ghi nhật ký, chẳng hạn như ngày và giờ, địa chỉ IP nguồn, yêu cầu URI và kết quả máy chủ.

Log Rotation

Hầu hết các máy chủ (trừ một số ứng dụng tùy chỉnh) sẽ xoay nhật ký để ngăn chúng lấp đầy hệ thống tệp mà chúng nằm trên đó. Giả định khi xoay các bản ghi là thông tin trong đó chỉ cần thiết trong một khoảng thời gian giới hạn.

Tính năng này nên được kiểm tra để đảm bảo rằng:

Nhật ký được lưu giữ trong thời gian được xác định trong chính sách bảo mật, không hơn không kém.

Nhật ký được nén sau khi xoay vòng (đây là một sự tiện lợi, vì điều đó có nghĩa là sẽ có nhiều nhật ký được lưu trữ cho cùng một không gian đĩa có sẵn).

Quyền của hệ thống tệp đối với tệp nhật ký đã xoay cũng giống (hoặc chặt chẽ hơn) với quyền của chính tệp nhật ký. Ví dụ: máy chủ web sẽ cần ghi vào nhật ký mà chúng sử dụng nhưng chúng không thực sự cần ghi vào nhật ký được xoay vòng, có nghĩa là quyền của tệp có thể được thay đổi khi xoay vòng để ngăn quá trình máy chủ web sửa đổi chúng.

Một số máy chủ có thể xoay nhật ký khi chúng đạt đến kích thước nhất định. Nếu điều này xảy ra, phải đảm bảo rằng kẻ tấn công không thể buộc các bản ghi xoay để che giấu dấu vết của mình.

Log Access Control

Thông tin nhật ký sự kiện không bao giờ được hiển thị cho người dùng cuối. Ngay cả các quản trị viên web cũng không thể xem các nhật ký như vậy vì nó phá vỡ sự phân tách của các kiểm soát nhiệm vụ. Đảm bảo rằng bất kỳ lược đồ kiểm soát truy cập nào được sử dụng để bảo vệ quyền truy cập vào nhật ký thô và bất kỳ ứng dụng nào cung cấp khả năng xem hoặc tìm kiếm nhật ký không được liên kết với các lược đồ kiểm soát truy cập cho các vai trò người dùng ứng dụng khác. Người dùng chưa được xác thực sẽ không thể xem bất kỳ dữ liệu nhật ký nào.

Log Review

Việc xem xét nhật ký có thể được sử dụng nhiều hơn là trích xuất thống kê sử dụng của các tệp trong máy chủ web (thường là điều mà hầu hết các ứng dụng dựa trên nhật ký sẽ tập trung vào), mà còn để xác định xem các cuộc tấn công có diễn ra tại máy chủ web hay không.

Để phân tích dịch vụ web tấn công các tệp nhật ký lỗi của máy chủ cần được phân tích. Đánh giá nên tập trung vào:

Thông báo lỗi 40x (không tìm thấy). Một lượng lớn trong số này từ cùng một nguồn có thể là dấu hiệu của một công cụ quét CGI đang được sử dụng trên máy chủ web

Thông báo 50x (lỗi máy chủ). Đây có thể là dấu hiệu cho thấy kẻ tấn công đang lạm dụng các phần của ứng dụng bị lỗi bất ngờ. Ví dụ, các giai đoạn đầu tiên của một cuộc tấn công SQL injection sẽ tạo ra những thông báo lỗi này khi truy vấn SQL không được xây dựng đúng cách và việc thực thi nó không thành công trên cơ sở dữ liệu phía sau.

Thống kê hoặc phân tích nhật ký không được tạo cũng như không được lưu trữ trong cùng một máy chủ tạo ra nhật ký. Nếu không, kẻ tấn công có thể, thông qua lỗ hổng máy chủ web hoặc cấu hình không phù hợp, có quyền truy cập vào chúng và truy xuất thông tin tương tự như sẽ được tiết lộ bởi chính các tệp nhật ký.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now