Chương 1: Tổng quan Trình bày sơ lược về mục đích, đối tượng, phạm vi nghiên cứu và nội dung của dé tài. Cung cấp cho người xem cái nhìn khái quát và tong quan hóa được dé tài. Chương 2: Cơ sở lý thuyết Chương này sẽ tìm hiểu về cơ sở lý thuyết của các công nghệ được áp dụng trong khóa luận và các kiến thức có liên quan. Chương 3: Phương pháp thực hiện Chương này sẽ mô tả về các cách thực hiện đề tài, mô hình và mục đích các thành phan, các lý thuyết về các van đề cần bảo mật, hoặc các lỗ hổng và nguy cơ bị xâm nhập qua lỗ hỗng đó.
Chương 4: Triển khai — thực nghiệm Chương này sẽ trình bày về các nội dung đã thực hiện, các kết nối trong mô hình và các Playbook đã được viết. Chương 5: Kết quả thực hiện — hướng phát triển Chương này sẽ trình bày về những kết quả đã đạt được, tự đánh giá nhóm về quá trình làm đề tài và hướng phát triển của đề tài trong tương lai. Tự động hóa trong quản lí cấu hình Quản lý cầu hình [1] là một quá trình để duy trì hệ thống máy tính, máy chủ và phần mềm ở trạng thái nhất quán, ổn định và theo mong muốn của người quản trị. Đó là một cách để đảm bảo rằng hệ thống hoạt động đúng như mong đợi khi các thay đổi được thực hiện theo thời gian.
Tự động hóa là việc sử dụng phần mềm nào đó để từ máy Control thực hiện các tác vụ như cập nhật, cài đặt, xóa, sao chép,. nhằm duy trì trạng thái nhất quán, ồn định lên các hosts khác một cách tự động. Lợi ích của tự động hóa: -_ Tiết kiệm thời gian: Dé cài hệ điều hành cho một máy cần mat thời gian từ 15 phút đến 1 giờ và quản trị viên phải thực hiện chọn lựa các option qua từng bước. Đối với môi trường doanh nghiệp sẽ có rất nhiều máy khác nhau.
Nếu thực hiện thủ công như vậy sẽ rất mat thời gian cho quản trị viên. Bằng việc thực hiện tự động hóa các việc này, quản trị viên có thể rút ngắn thời gian và thực hiện được nhiều công việc khác quan trọng hơn. - Giảm sai sót trong quá trình thực hiện: Việc thực hiện cùng một nhiệm vụ phức tạp (nhiều công đoạn) lặp đi lặp lại có thé dễ gây ra lỗi hoặc bỏ qua các bước quan trọng làm ảnh hưởng đến máy tính đó. Với tự động hóa, khi thực thi sẽ thực hiện theo cách tương tự mỗi lần mà không bỏ qua bước nào hay chạy sai thứ tự câu lệnh.
Không phải bất kỳ một công việc nào cũng cần thực hiện tự động hóa. Nên thực hiện tự động hóa với các nhiệm vụ sau: - Nhiệm vụ thường xuyên: các nhiệm vụ thường hay thực hiện (ít nhất là 1 tháng). Về mặt lý thuyết, nhiệm vụ càng thường xuyên sẽ càng tiết kiệm được thời gian từ việc tự động hóa nó. - Nhiệm vụ lặp lại: Khi quản trị viên phải thực hiện một quy trình bao gồm một loạt các dòng lệnh.
Thật không cần thiết néu cứ phải coppy va paste từng dòng lệnh vào terminal để thực thi. -_ Nhiệm vụ phức tap: Nếu một tác vụ có nhiều bước, và cụ thể các bước đó yêu cầu quản trị viên lấy output của bước này đề sử dụng làm input của bước khác hoặc các bước sử dụng có chuỗi đối số phức tạp. - Nhiệm vụ tốn thời gian: Các tác vụ càng mat nhiều thời gian dé hoàn thành. Đặc biệt là nếu có các giai đoạn chạy lệnh, chờ đợi load,.
như cài đặt và cầu hình hệ điều hành Từ đó cho thấy, không nên thực hiện tự động hóa với các nhiệm vụ mỗi năm chỉ thực hiện một lần; các nhiệm vụ có đầu vào thay đổi; nhiệm vụ không bao giờ phải làm lại. Có rất nhiều công cụ cho phép quản trị viên thực hiện việc tự động hóa như Puppet, CHEF, Ansible, Foreman, Kattello, SaltStack. Trong đó, Ansible là công cụ tự động hóa phô biến nhất trên GitHub và được nhiều quản trị viên lựa chọn. Chính vì Ansible là tool dễ tiếp cận và làm quen do được xây dựng bằng Python và sử dụng các tệp cấu hình theo dạng YAML (YAML Ain’t Markup Language) dé đọc và dễ hiểu.
Đồng thời sử dụng giao thức SSH nên đảm bảo an toàn. Dinh nghĩa Ansible [2] là công cụ Configuration Management khá nổi bật. Ansible là một platform opensource, nghĩa là có thé viết thêm hay chỉnh sửa tuỳ ý. Ansible khá đơn giản dé sử dụng.
Có thé hình dung rằng là chỉ việc khai báo địa chỉ server và những điều muốn làm với server đó vào Ansible, rồi sau đó chỉ cần chạy script vừa viết trên và chờ hoàn thành.1: Ansible logo Ansible cho phép quản lý cài đặt, cấu hình hệ thống một cách tập trung và cho phép thực thi câu lệnh điều khiển. Đồng thời, Ansible là một công cụ không cần chương trình Agent hỗ trợ (agentless), nên không yêu cau bat kì cài đặt nào phía máy chủ remote. Ansible sử dụng SSH (hoặc Powershell) và các module được viết bằng ngôn ngữ Python dé điều khiển hệ thống. Sử dụng định dạng JSON đề hiển thị thông tin va sử dụng ngôn ngữ YAML (Yet Another Markup Language) dé xây dựng cấu trúc mô tả hệ thong.
Khi Ansible ở chế độ rảnh, không có task dé thực hiện, máy chủ Ansible sẽ không chiếm dụng tài nguyên do Ansible không sử dụng trình daemon hoặc program chạy ở chế độ background. Chỉ khi nào thực thi lệnh thì Ansible mới sử dụng tài nguyên của hệ thống. Ansible có chức năng thực hiện Automation: Ansible dựa vào các tác vụ và điều khiển logic dé xác định những gi mình cần làm: cập nhật tệp, thay đồi cấu hình thiết bị mạng,. Các thành phần quan trọng Có 3 thành phần quan trọng trong Ansible như sau: Inventory Inventory cung cấp các tra cứu về các Plays trong Playbooks của hệ thống.
Dinh nghĩa môi trường làm việc bằng các đường dẫn chỉ định cho hệ thống hoạt động, bởi vì mỗi môi trường mỗi khác nhau nên Inventory sẽ khác nhau. Inventory rất quan trọng, vì nếu Ansible không có tệp Inventory, chính Ansible cũng sẽ không biết mình có thể quản lý được những hệ thống nào. Module Các Module Ansible là các khối cơ bản xây dựng để tự động hoá. Chúng là những hành động khác nhau có thể thực hiện trên các hệ thống.
Mỗi module được xây dựng cho một tác vụ cụ thể và có thể sử dụng các tham số để thay đổi hành vi của tác vụ đó. Tat cả các mô-đun trả về dữ liệu định dạng JSON. Module có thể thực hiện các công việc như là cài đặt phần mềm, copy các file, sử dụng template,. Một số module trong Ansible được sử dụng trong đề tài như: - Module lineinfile: cho phép tạo file, tim kiếm, thay thế, thêm, sửa, xóa chuỗi ký tự trong file.
- Module stat: tương tự lệnh stat trong Linux, thu thập các thông tin về permissions của file. - Module shell: thực thi các câu lệnh Linux. - Module yum: cài đặt các package. - Module file: thay đổi permissions của file.
- Module service: dùng dé enable va running service. - Module meta: ưu tiên thực thi các task trong handler. Playbooks Playbook là cách phổ biến nhất dé miêu tả quá trình làm việc tự động. Nó là một file YAML thé hiện và sắp xếp lại tất cả các công việc cần tự động hóa.
Trong Playbook sẽ chứa một tập hợp các activities (hoạt động) hay các tasks (nhiệm vụ) sẽ được chạy trên một hay một nhóm servers. Quy trình hoạt động của Ansible Có 5 thành phần chính trong việc xử lý tiến trình của Ansible: Hình 2.2: Các thành phần của Ansible - Inventory là một tệp văn bản mô tả đầy đủ các hosts và servers với một số thông tin như username, password, IP address,. - Module là tập hợp các hành động mà quản trị viên có thé thực hiện. Không có module thì sẽ không thể thực hiện được bất kỳ loại công việc nào.
- Playbook là các tệp mà quản trị viên tạo ra dé hoàn thành nhiệm vụ nao đó. -_ Ansible Config là nơi thiết lập các biến cấu hình cho Ansible. Quản trị viên có thé thực hiện thay đổi mặc định hay ghi đè lên các biến trong tệp nay. - Cuối cùng là Python.
Ansible không thực sự đi kèm với Python. Tuy nhiên, Ansible sẽ lấy các thành phan vừa liệt kê và “day” chúng thông qua Python dé tạo ra một package gửi đến hệ thống từ xa. 10 Ansible thiết lập một kết nối SSH tới hệ thống từ xa và triển khai package theo cấu hình Ansible với các tham số mà quản trị viên đã đưa vào. Hay nói cách khác là sao chép package đó vào thư mục tạm thời đã tạo trên máy từ xa.
Python Framework trên hệ thống từ xa sẽ thực thi package đó. Sau khi kết thúc, hệ thống từ xa sẽ trả kết quả về Ansible bằng JSON dé báo cáo trạng thái của quá trình thực thi. Trước khi kết thúc kết nối SSH, gói Python đã được gửi trước đó sẽ bị xóa khỏi thư mục tạm thời trên hệ thống máy từ xa. CIS CIS [3] — Trung tâm An Ninh Internet (Center for Inernet Security) là một tổ chức phi lợi nhuận được thành lập vào tháng 10 năm 2000.
Với nhiệm vụ chính là cải thiện khả năng sẵn sàng và ứng phó với an ninh mạng của các tổ chức, doanh nghiệp. CIS Benchmark là các tiêu chuẩn dùng dé cầu hình bảo mật cho các hệ điều hành được công nhận bởi rat nhiều các tổ chức, chính phủ, doanh nghiệp trên thế giới. Các tiêu chuẩn này hướng dẫn kiểm toán: - _ Cấu hình theo hệ điều hành: UNIX/ Linux, Windows, MacOS. - Co sở dữ liệu: MySQL, MS-SQL,.
- Cac dịch vụ khác: ISS, Apache, Bind, Directory Service,. Nền tang quản lý tập trung cấu hình Có khá nhiều nền tảng để quản lý tập trung các thành phần của Ansible như Inventory, Playbook, Credentials như Ansible Tower, Ansible AWX, Jenkins, Rundeck,. Nhóm tác giả chon ra 2 nền tang phô biến nhất dé triển khai vào dé tài là Jenkins và Ansible AWX với mục đích so sánh ưu nhược điểm của 2 nền tảng cũng như tìm hiểu về cách thức vận hành và sử dụng. Đây là 2 nên tảng tích hợp chức năng CI/CD - tích hợp, chuyền giao liên tục, có thể xây dụng được các tác vụ tự động hóa: - Nền tang Jenkins khá phổ biến hiện nay, thường được dùng trong môi trường DevOps.
- Nền tảng Ansible AWX được tao ra dành riêng cho Ansible dé thực hiện quản lý tập trung một cách dễ dàng.