Kiến trúc hoạt động của docker

Một phần của tài liệu Nghiên cứu và phát triển nền tảng tổ chức thi tấn công phòng thủ máy tính efiens giai đoạn 1 thiết kế hệ thống và xây dựng module giao tiếp giữa các users vaf server, thành phần kiểm tra dịch vụ và tổng hợp trạng thái dịch vụ (Trang 39 - 42)

8 Tổng kết

5.1 Kiến trúc hoạt động của docker

5.2 Wireguard

WireGuard[2] là ứng dụng mã nguồn mở với giao thức giao tiếp thực hiện các kỹ thuật mạng riêng ảo (VPN) để tạo kết nối điểm - điểm an toàn trong các cấu hình được định tuyến hoặc cầu nối. Nó được chạy như một module bên trong Linux kernel (hoặc BSD kernel), với mục tiêu cải thiện hiệu năng và tiết kiệm năng lượng hơn so với IPsec và OpenVPN. Nó được viết bởi Jason A. Donenfeld và được xuất bản theo giấy phép GNU General Public License phiên bản 2. Vào cuối tháng 3 năm 2020, Wireguard đã ra mắt phiên bản ổn định trên nhân Linux. Wireguard có code base đơn giản và gọn nhẹ, chỉ tầm 3,800 dòng, trong khi OpenVPN và OpenSSL kết hợp lại có khoảng 600,000 dòng. IPsec cũng dao động vào khoảng 400,000 dòng. Lợi thế của việc này là wireguard dễ hơn để kiểm thử, nên việc tìm các lỗ hổng và vá chúng cũng dễ dàng hơn. Số lượng dòng của mã nguồn nhỏ cũng giúp việc vận hành trơn tru hơn, các thực nghiệm cho thấy WireGuard

có tốc độ nhanh hơn 58% so với Open VPN. Ngoài ra việc thiết lập kết nối hết sức đơn giản sẽ giúp cho các đội chơi dễ dàng kết nối.

5.3 Go

Go là một ngôn ngữ lập trình được biên dịch, kiểu tĩnh được thiết kế tại Google bởi Robert Griesemer, Rob Pike và Ken Thompson. Go có cú pháp tương đối giống C, nhưng lại có độ an toàn cao hơn về bộ nhớ. Ngôn ngữ này thường được gọi là Golang vì tên miền của nó, golang.org, nhưng tên riêng là Go.

Go là ngôn ngữ có cấu trúc đơn giản và dễ dàng để học. Nó tránh được các hình thức như là kế thừa và class so với các ngôn ngữ khác nên sẽ dễ dàng cho việc duy trì và có tốc độ tương đối nhanh so với các ngôn ngữ khác. Lợi thế lớn nhất của Go là hỗ trợ mạnh mẽ về đa luồng thích hợp cho việc triển khai các dự án có nhu cầu lớn về các khối thành phần. Ngoài ra tập tin sau khi biên dịch có độ phức tạp tương đối cao, giúp cho việc bảo vệ mã nguồn của hệ thống tránh bị các đội chơi phá hoại trong tiến trình tổ chức cuộc thi tấn công - phòng thủ.

5.4 RabbitMQ

RabbitMQ là chương trình đóng vai trò trung gian lưu trữ cũng như điều phối các gói tin giữa người nhận và người gửi. RabbitMQ sử dụng kiến trúc message broker với giao thức AMQP.

Điểm mạnh của RabbitMQ là hoạt động theo cơ chế bất đồng bộ nên các gói tin sẽ được RabbitMQ phân phát tự động mà không cần sự can thiệp sâu của người gửi. Các gói tin của người gửi sẽ được lưu trữ bên trong các hàng đợi. Người nhận chỉ cần đăng ký thông tin để nhận các gói tin. Hiện nay RabbitMQ đang hỗ trợ người gửi thông qua bốn chế độ: gửi trực tiếp, gửi theo theo chủ đề, gửi tới toàn bộ và gửi theo tiêu đề. Để đảm bảo tính toàn vẹn của các yêu cầu RabbitMQ hỗ trợ thiết lập yêu cầu trả về thông tin hoàn thành để tránh hiện tượng mất hoặc không xử lý gói tin ở người nhận.

Ngoài ra RabbitMQ là người đứng giữa người gửi và người nhận nên không có ràng buộc ngôn ngữ lập trình giữa người gửi và người nhận. Hiện nay RabbitMQ đã hỗ trợ rất nhiều ngôn ngữ khác nhau.

6

Hiện thực các thành phần hệ thống

Với kiến trúc hệ thống sinh viên đã đề ra và để phù hợp trong thời gian luận văn sinh viên hiện thực ba thành phần chính của hệ thống gồm: hệ thống kết nối giữa các users và server, thành phần kiểm tra trạng thái dịch vụ, thành phần tổng hợp trạng thái dịch vụ

6.1 Xây dựng hệ thống kết nối giữa các users và server

6.1.1 Đặt vấn đề

Như đã đề cập ở Phần trên, trong trận đấu tấn công - phòng thủ các đội chơi có thể gian lận bằng cách từ chối truy cập dịch vụ từ một địa chỉ IP xác định. Trận đấu có sẽ mất đi sự công bằng ở đây. Ta có thể giải quyết vấn đề này bằng cách sử dụng cơ chế dịch địa chỉ mạng - Network Address Translation. Tuy nhiên nếu một đội chơi bị lộ danh tính thì có thể bị các đội khác sử dụng cuộc tấn công DDos dẫn tới máy chủ của đội chơi này bị tê liệt hoàn toàn trong thời gian còn lại của trận đấu.

Chính vì vậy ta cần có một phương thức kết nối mới và khắc phục được vấn đề lộ danh tính của các đội chơi.

Để giải quyết vấn đề này ta có thể thay đổi địa chỉ IP của các đội qua mỗi vài vòng đấu. Sau mỗi lần đổi địa chỉ IP các đội chơi sẽ được ẩn giấu danh tính lại. Đối tượng cần đổi địa chỉ IP trong hệ thống đề xuất gồm.

• Máy chủ của các đội chơi.

6.1.2 Kiến trúc của kết nối

Có ba đối tượng cần đổi địa chỉ IP trong hệ thống gồm: máy chủ của các đội ComBot, máy chủ của Scriptbot và máy chủ của các đội chơi. Vì các thành phần cần để hỗ trợ ba đối tượng kết nối là giống nhau nên trong kiến trúc mô tả sinh viên sẽ sử dụng “Astract object”như một đối tượng biểu diễn ba thành phần này. Bản vẽ kiến trúc minh hoạ kết nối được biểu diễn ở hình dưới đây.

Một phần của tài liệu Nghiên cứu và phát triển nền tảng tổ chức thi tấn công phòng thủ máy tính efiens giai đoạn 1 thiết kế hệ thống và xây dựng module giao tiếp giữa các users vaf server, thành phần kiểm tra dịch vụ và tổng hợp trạng thái dịch vụ (Trang 39 - 42)

Tải bản đầy đủ (PDF)

(62 trang)