Sau đó liên tục tạo ra các tệp với mục đích kiểm tra các cấu hình máy chủ, tự động hóa cấuhình cho máy chủ va áp dụng vào công cụ dé kiểm tra tính thực tế của dé tài.. Mục tiêu - Xây dựn
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH & TRUYEN THONG
HUYNH MINH THAI
PHAM NGUYEN HUU TAN
KHOA LUAN TOT NGHIEP
TỰ DONG HÓA CAU HINH VA NANG CAO TÍNH BAO
MAT CHO HE DIEU HANH CENTOS
AUTOMATED CONFIGURATING AND HARDENING CENTOS
KY SU NGANH AN TOAN THONG TIN
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA MANG MAY TINH & TRUYEN THONG
HUYNH MINH THÁI - 17521029
PHAM NGUYEN HỮU TAN - 17521016
KHOA LUAN TOT NGHIEP
TU DONG HOA CAU HINH VA NANG CAO TINH BAO
MAT CHO HE DIEU HANH CENTOS
AUTOMATED CONFIGURATING AND HARDENING CENTOS
KY SU NGANH AN TOAN THONG TIN
GIANG VIEN HUONG DAN
ThS TRAN THI DUNG
Trang 3DANH SÁCH HỘI ĐÒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định sé 463/QD-DHCNTT
ngày 23 tháng 7 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1 PGS TS Lê Trung Quân Chủ tịch
2 ThS Trần Tuấn Dũng Thu ky
3 ThS Nguyén Thanh Hoa Uy vién
Trang 4ĐẠI HỌC QUOC GIA TP HO CHÍMINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc
CÔNG NGHỆ THÔNG TIN
TP HCM, ngày tháng năm
NHAN XÉT KHÓA LUẬN TOT NGHIỆP
(CUA CÁN BO HƯỚNG DAN)
Tên khóa luận:
Tự động hóa cấu hình và nâng cao tính bảo mật cho hệ điều hành CentOS
Nhóm SV thực hiện: Cán bộ hướng dẫn:
Huỳnh Minh Thái 17521029 ThS Trần Thị Dung
Phạm Nguyễn Hữu Tân 17521016
Đánh giá Khóa luận
1 Về cuôn báo cáo:
Số trang Số chương
Số bảng số liệu Số hình vẽ
Số tài liệu tham khảo Sản phẩm
Một số nhận xét về hình thức cuốn báo cáo:
<nhận xét về định dạng, cách thức viết báo cáo, phân bố nội dung, chương mục có hợp lý
không >
Trang 52 Về nội dung nghiên cứu:
<nhận xét về kiến thức, phương pháp mà sinh viên đã tìm hiểu, nghiên cứu nhận xét wu điểm vàhạn chế>
3 Về chương trình ứng dụng:
<nhận xét về việc xây dựng ứng dung demo, nhận xét uu điểm và hạn chế>
4 Về thái độ làm việc của sinh viên:
<nhận xét về thái độ, uu khuyết điểm của từng sinh viên tham gia>
Trang 6Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư/ cử nhân,xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Huỳnh Minh Thái:
Người nhận xét (Ký tên và ghi rõ họ tên)
Trang 7ĐẠI HỌC QUOC GIA TP HO CHÍMINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Tên khóa luận:
Tự động hóa cấu hình và nâng cao tính bảo mật cho hệ điều hành CentOS
Nhóm SV thực hiện: Cán bộ phản biên:
Huỳnh Minh Thái 17521029
Phạm Nguyễn Hữu Tân 17521016
Đánh giá Khóa luận
1 Vê cuôn báo cáo:
Số trang Số chương
Số bảng số liệu Số hình vẽ
Số tài liệu tham khảo Sản phẩm
Một số nhận xét về hình thức cuốn báo cáo:
<nhận xét về định dạng, cách thức viết báo cáo, phân bố nội dung, chương mục có hợp lý
không >
Trang 82 Về nội dung nghiên cứu:
<nhận xét về kién thức, phương pháp mà sinh viên đã tìm hiểu, nghiên cứu nhận xét wu điểm và
hạn chế>
3 Về chương trình ứng dụng:
<nhận xét về việc xây dựng ứng dung demo, nhận xét uu điểm và hạn chế>
4 Về thái độ làm việc của sinh viên:
<nhận xét về thái độ, uu khuyết điểm của từng sinh viên tham gia>
Trang 9Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư/ cử nhân,xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 10LỜI CẢM ƠN
Để hoàn thành khóa luận tốt nghiệp này thì ngoài những sự cô gắng và công sức củanhóm tác giả, còn có sự hỗ trợ và giúp đỡ của các thầy cô, bạn bè và gia đình Nhómtác giả xin gửi lời cảm ơn chân thành đến với tất cả mọi người
Đầu tiên và đặc biệt quan trọng nhất, nhóm chúng tôi xin gửi lời cảm ơn đến cô Trần
Thị Dung đã đảm nhiệm vai trò là giảng viên hướng dẫn trực tiếp cho nhóm Cảm ơn
cô đã tận tình chỉ bảo, giúp đỡ và giải đáp thắc mắc trong suốt quá trình từ lúc bắt
đầu đến lúc hoàn thành đề tài, đồng thời xin cảm ơn cô đã hỗ trợ và đóng góp ý kiến
về báo cáo dé nhóm chúng tôi có thé làm tốt hơn Xin cảm ơn cô!
Nhóm chúng tôi cũng cảm ơn quý các thầy cô đã hỗ trợ trong suốt quá trình làm đềtài Cảm ơn quý thầy cô phản biện, quý thầy cô hội đồng đã dành thời gian dé góp ý
về đề tài của chúng tôi
Cuối cùng, chúng tôi xin cảm ơn đến gia đình, người thân và bạn bè đã tạo tiền đề,
điều kiện thuận lợi, cũng như khích lệ, động viên dé chúng tôi hoàn thành dé tài này
Trong quá trình thực hiện đề tài rất khó tránh khỏi những thiếu sót, mong thầy, cô cóthể thông cảm và đồng thời tiếp tục nhắc nhở, góp ý dé nhóm chúng tôi có thể hoàn
thiện đề tài hơn trong tương lai, cũng như có thể nâng cao các kiến thức cá nhân tốthơn, không chỉ phạm vi trường đại học mà còn trong cuộc sông và công việc sau này
Xin chân thành cảm ơn!
Trang 11MỤC LỤC
Chương l TONG QUAN ccccckrrrrrrerre 21.1 Đặt vấn đề ve 2
V.2.) MUC COU 3
1.3 Nội dung và phương pháp thực hiện -¿ ¿5-5 2s +v£vxsxserreerre 3
1.3.1 Tự động hóa quá trình cài đặt và cấu hình cho hệ thống "
1.3.2 Tích hợp các Playbook vào hệ thống dé nâng cao bảo mật 41.4 Kết quả mong đợi
1.5 Cấu trúc báo cáo -2-+c+t222222 E2 1.22221111112211 re 5Chuong2 CƠ SỞ LÝ THUYET
2.1 Tự động hóa trong quản lí cấu hình +: 2222+++222++E+tEEEEEerrrrrkkerrrrrvee 6
2.2 Ansible
2.2.1 Định nữ lam egợ , 4 à oi 7
2.2.2 Các thành phan quan trọng :-z2++++2v+z+++czvscce2 §
2.2.3 Quy trình hoạt động của Ansible ‹ + 5+ ccc+c+csrsr+ 0
P9 ”" :.` 1
2.4 Nền tảng quản lý tập trung cầu hình - ¿-+zz+22x+z+cvzszersrr 2
2.5 Jenkins à or nh 1 edrrree 2
PT À2 3
Chương 3 PHƯƠNG PHAP THUC HIỆN cccccccccccccccrree 5
3.1 Áp dụng Ansible vào đề tài ¿-2222v++etEEExvretEEktrrtrrrrrrrerrrrrrrre 5
3.1.1 Khởi tao ÏnV€n(OFY SH re 5
3.1.2 Áp dụng cách thức hoạt động của Ansible: -c+ 5
Trang 123.3 Phương pháp kiểm tra cấu hình ¿-++++22v+z+ettvxvrrerrrsrrrsrr 73.3.1 Quy trình kiểm tra cấu hình
3.3.2 Thiết lập Playbook kiểm tra cấu hình -¿- +22 §
3.4.2.2 Cấu trúc chung của các Playbook tự động hóa cấu hình 21
3.5 Sự liên kết giữa phương pháp kiểm tra cấu hình va tự động hóa cầu hình 22
3.6 Quản lý tap trung - ch TT HH HH ngư 25
3.6.1 _ Đối với nền tảng Jenkins ¿-222cvvcc+ztscvccvvvecrrrrrer 263.6.2 Đối với nền tảng Ansible AWX -2cccccccccccccvveecrerrrrer 28
3.7 Các nội dung thực hiỆn ¿+ SE S212 221212101 111111 te 30
Chương 4 TRIEN KHAI- THỰC NGHIỆM -:-ccc: +-+2 534.1 Xây dựng hệ thống, - -cc:c-222 22 r2 1 1 53
4.2 Kịch bản thử nghignn o cccsssssssssssssssesssssssssssscccecceccecsesssssnssnssunnnnneessseseee 54
4.2.1 Kịch ban 1 — Triển khai kiểm tra và tự động hóa câu hình đồng loạt
các Part dựa vào chức nang Workflow trên Ansible AWX 54
4.2.2 Kịch ban 2— Triển khai kiểm tra và tự động hóa Part 6 — System File
Trang 134.2.3 Kịch bản 3 — Thực hiện Monitor các thông số cơ bản của Remote
Trang 14Hình 2.1: Ansible ÏOgO ¿6-5552 2*2*2122921212121 11121212101111111.1 11111 prrreờ 8
Hình 2.2: Các thành phan của Ansible cccccsssesssssssessssssescsssseescssssecsssssuescessseescessees 0
Hình 2.3: CIS ÏOgEO - <5 1 2 T1 22 E1 2111012111110 2H H000 010121 ve 1
Hình 2.4: Jenkins ÏOgO ¿55c S< 22212 23922212121 122121211101111121 012101111 1 re 2
Hình 2.5: AWX logo
Hình 3.1: Áp dụng Ansible vào đề tài 22¿2222++tSCEEvrrrtErkvrrrrrrkrrrrrrrrvee 5
Hình 3.2: Mô hình tổng thể của đề tài 22¿222+z+tSEEEEEtEEEEEEerrrrrkrrrrrrkrcee 6
Hình 3.3: Quy trình kiểm tra cấu hình - -2 ©222¿22EE+z+ztEEEEerrrrrxrrrrrrkscee 7Hình 3.4: Hình ảnh minh hoa Playbook kiểm tra cấu hình -: 9
Hình 3.5: Một file HMTL mẫu 2222¿2¿£922222 viec 20
Hình 3.6: Quy trình tự động hóa cấu hình
Hình 3.7: Hình ảnh minh họa Playbook tự động hóa câu hình
Hình 3.8: Nội dung cần thực hiện dựa theo CIS Benchmark -2- 5 23
Hình 3.9: Phân tích và triển khai kiểm tra cấu hình ::++c e+ 24
Hình 3.10: Nhãn h21 thé hiện tên thay thé Task Name “SSH MaxSessions” 24Hình 3.11: Phân tích và triển khai tự động hóa cấu hình . -.+ 25
Hình 3.12: Dashboard của Jennkins - - ¿+ + St SkSk‡kEkekEEkrkekerekrkrkrkrtee 26
Hình 3.13: Projects kiểm tra cấu hình trên Jenkins - z2 26
Hình 3.14: Giao diện Configure của Project Jenkins -‹+-5-+-++<++ 27
Hình 3.15: Workspace của Jentkins - - ¿+ + St TH ưn 27
Hình 3.16: Dashboard của Ansibe AWX càng ưêc 28
Hình 3.17: Quan lý hosts trên AWX - c2 ng re 29 Hình 3.18: Khai báo host trên AWX Sàn it 29 Hình 3.19: Templates quan lý các PlayboOK -¿-¿ ¿+ 5+5++£+£sxsetzeererersee 30
Hình 3.20: Web Server sử dụng Nginx 5-5 5< sec TÔ,
Trang 15Hình 4.4: Log của elk-stack khi kiểm tra cấu hình -.¿-z5ssczz++ 56
Hình 4.5: Đánh giá mức độ nghiêm trọng của lỗ hồng bảo mật 57
Hình 4.6: Quá trình running template Hardening All thành công 57
Hình 4.7: Log của elk-stack sau khi được tự động hóa cấu hình - 58
Hình 4.8: Quá trình Build Project kiểm tra cấu hình thành công - 59
Hình 4.9:Workspace của Part Õ <5 2t 2221212121 212111 121111212 011gr 59 Hình 4.10: Log của vps-openvz khi kiểm tra cầu hình : -:©csscc2 60 Hình 4.11: Quá trình Build Project tự động hóa cấu hình thành công 61
Hình 4.12: Thông báo thông qua Telegram +-¿- 55252 5++++£+c++srzezxscee 61 Hình 4.13: Log của vps-openvz sau khi tự động hóa cấu hình 62 Hình 4.14: Triển khai Build project Monitor Jenkins -:-c:22c5sc+2 63
Hình 4.15: Thông số Remote Host sau khi MonitOr -czz-:2 64
Trang 16DANH MỤC BANG
Bang 3.1: Các nội dung thực hiện dựa theo CIS Benchmark
Bảng 4.1: Thanh phan trong mô hình
Trang 17và tự động hóa quá trình nâng cao bảo mật cho hệ thống là cần thiết Vì vậy, nhóm
tác giả đã áp dụng các kiến thức có được về công cụ quan lý cấu hình Ansible dé xây
dựng một sản phẩm nhằm đáp ứng các nhu cầu kề trên Đó là lý do vì sao đề tài “Tuđộng hóa cấu hình và nâng cao tính bảo mật cho hệ điều hành CentOS” được nhómtác giả chọn làm đề tài khóa luận tốt nghiệp
Đối với đề tài này, nhóm tác giả đã xây dựng hệ thống các máy chủ nhằm mụcđích tạo ra và kiểm thử sản phẩm một cách liên tục Đồng thời nhóm tác giả đã lựa
chon các van dé bảo mật cần được giải quyết dựa trên tiêu chuẩn uy tin CIS Sau đó
liên tục tạo ra các tệp với mục đích kiểm tra các cấu hình máy chủ, tự động hóa cấuhình cho máy chủ va áp dụng vào công cụ dé kiểm tra tính thực tế của dé tài Dé có
cơ hội phát triển đề tài, nhóm tác gia tiếp tục tiến hành tích hợp thêm các nền tangtích hợp liên tục dé có thé dé dàng điều khiển sản phẩm và có giao diện trực quan cho
người dùng.
Sau khi triển khai và thực nghiệm dé tài, nhóm tác giả đã có thể cải thiện hon
các kiến thức về các vấn đề bảo mật và quản trị hệ thống Đồng thời so sánh được các
ưu điểm và hạn chế của các công cụ hay các nền tảng đã được áp dụng, qua đó cóthêm các nhìn tổng quan về hướng phát triển của sản phẩm
Trang 18Chương 1 TONG QUAN
1.1 Đặt vấn đề
CentOS là một hệ điều hành miễn phí được xây dựng và phát triển dựa trên mãnguồn mở Linux bản được dùng nhiều nhất trong các doanh nghiệp IT Hệ điều hành
này được tạo ra với mục đích chính là xây dựng nền tảng hệ thống máy chủ miễn phí
đành cho doanh nghiệp và duy tri khả năng tương thích nhị phân với RHEL Ngoài
ra, CentOS còn cung cấp một môi trường hoàn hảo đề thực hiện các công việc liên
quan đến lập trình
Hệ điều hành CentOS hiện đang thuộc top những bản phân phối Linux rộng rãi
nhất hiện nay trên thế giới Nó được giới IT đánh giá rất cao nhờ những ưu điểm sau
- CentOS có khả năng vận hành tốt, mượt mà trên các mainframe, đặc biệt là
GUI, KDE, GNOME
- Môi trường ma CentOS tao ra có tính 6n định cao nên rất được ưa chuộng bởi
các doanh nghiệp.
- CentOS được Red Hat cung cấp nhiều mã nguồn và trình quản lý gói RPM
- CentOS có nhiều cấp độ bảo mật khác nhau, vì vậy nó là sự lựa chọn an toàn
nhất để bao mật thông tin kinh doanh cho doanh nghiệp
Đối với việc cài đặt và nâng cao tính bảo mật cho phần lớn lượng máy chủ(server) sử dụng hệ điều hành CentOS chưa được quá chú trọng Lý do là vì các bướccòn quá tốn thời gian, rườm rà và phức tạp cho việc xử lý trên một máy, vì vậy việc
Trang 19Tuy nhiên, do hệ điều hành CentOS được tạo ra với mục đích chính là xây dựngnền tảng hệ thống server dành cho doanh nghiệp, và đồng thời cung cấp môi trường
dé thực hiện các công việc liên quan đến lập trình Vì vậy, nếu việc cai đặt và nângcao tính bảo mật cho hệ thống server CentOS không được đảm bảo sẽ gây ra rất nhiềumat mát cho doanh nghiệp cũng như các lập trình viên Việc mat mát này sẽ ảnh
hưởng đến thông tin, tài sản và quyển lợi của doanh nghiệp hoặc là các dự án cá nhân
của lập trình viên.
Do đó, việc phải cài đặt, cấu hình và nâng cao tính bảo mật cho hệ điều hành rất
quan trọng Việc chủ quan và hời hợt sẽ gây nên những hậu quả nghiêm trọng cho
người sử dụng Vi đó là van đề cần được quan tâm và chú ý, nên nhóm chúng tôi đã
đưa ra ý tưởng và mong muốn xử lý van dé này một cách linh hoạt
Vấn đề: tạo ra một sản phẩm có thé kiểm tra và đưa ra các khuyến nghị hoặc
cảnh báo nhằm để người dùng có thể quyết định, lựa chọn nâng cấp cùng một lúc trên
hệ thống rất nhiều server sử dụng hệ điều hành CentOS (version 7)
1.2 Mục tiêu
- Xây dựng một sản phâm có khả năng tự động nang cao bao mật cho hệ thông
với những thao tác đơn giản nhất, có ứng dụng dé án môn học dé tài tự độnghóa và các kiến thức an toàn hệ thống
- Đơn giản hóa tối đa cho người dùng với giao diện web đơn giản, dễ thao tác,
hướng tới đa người dùng.
- _ Tận dụng các công nghệ tự động hóa và kiến thức quan trị hệ thống nhằm tối
ưu sản phẩm
1.3 Nội dung và phương pháp thực hiện
- Tìm hiểu, nghiên cứu tài liệu và quá trình chuẩn bị
- Dựa trên ý tưởng đã được đề ra, bắt đầu tìm các tài liệu về các tiêu chuẩn bảo
mật cho hệ điều hành CentOS; phân tích, xếp loại mức độ nghiêm trọng cho
Trang 20- Tìm hiểu các lỗ hỗng có thé dé dàng bị xâm nhập trong hệ điều hành, thông
qua đó sẽ nhắm vào và tối ưu hóa hệ điều hành, giảm thiểu khả năng xâm nhập
của Hacker.
- Lên kế hoạch sử dụng các công cụ, môi trường và đánh giá độ tối ưu cho từng
nội dung một cách rõ ràng.
-_ Liên tục kiểm thử, phát triểm thêm tính năng, đánh giá đúng thực tế các mức
độ ảnh hưởng của lỗ hỗng và cải tién sản phẩm
1.3.1 Tw động hóa quá trình cai đặt và cấu hình cho hệ thống
- Sử dụng nền tảng tự động hóa Ansible để cài đặt và cấu hình cho các máy tính
- Sử dụng hoặc Jenkins hoặc Ansible AWX đề thực hiện chức năng tích hợp
liên tục (gọi là CI — Continuous Integration) và xây dựng các tác vụ tự động
hóa.
- Sử dụng Virtual Box đề xây dựng hệ thống máy ảo kiểm tra các cai đặt cho số
lượng lớn các máy tính CentOS.
1.3.2 Tích hợp các Playbook vào hệ thống để nâng cao bảo mật
- Sử dụng cấu trúc file Yaml dé tạo nên các “Playbook” kiểm tra độ bảo mật và
các “Playbook” có khả năng tăng cường tính bảo mật cho Remote Host.
- _ Xây dựng, cấu hình và triển khai sử dụng các Playbook cai đặt hệ thống, các
Playbook tăng độ bảo mật cho dịch vụ, mạng, đăng nhập, kiểm thử, truy cập,
định danh người dùng, Qua đó nâng cao khả năng bao mật của hệ điều hành
1.4 Kết quả mong đợi
- Xây dựng thành công sản phẩm có khả năng tăng tối đa tinh bảo mật cho các
hệ thống, giảm tối thiểu khả năng bị ảnh hưởng do sự khai thác từ các lỗ hong
bao mật gây ra Qua đó, củng có kiến thức của bản thân, đồng thời giúp ngườidùng, người quản trị tăng thêm hiểu biết để đề phòng những ảnh hưởng do lỗ
Trang 21- Có khả năng cập nhật, triển khai cực kỳ nhanh chóng cho nhiều máy tính đồng
thời.
- Giảm tối da các bước truy cứu phức tạp dé phát hiện lỗ hồng bảo mật, tăng tối
đa các lựa chọn cho nhu cầu của người quan tri
- Cho phép người dùng triển khai, sử dụng sản phẩm chi trong vai thao tác don
giản.
1.5 Cấu trúc báo cáo
Báo cáo được chia thành 5 nội dung chính quan trọng nhất như sau:
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
Trang 22Chương2 CƠ SỞ LÝ THUYET
2.1 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ừngbướ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ácbước quan trọng làm ảnh hưởng đến máy tính đó Với tự động hóa, khi thựcthi 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
Trang 23- 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áchoặ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ămchỉ 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à đượcnhiề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 đượcxâ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.
2.2 Ansible
2.2.1 Dinh nghĩa
Ansible [2] là công cụ Configuration Management khá nổi bật Ansible là mộtplatform opensource, nghĩa là có thé viết thêm hay chỉnh sửa tuỳ ý Ansible khá đơngiả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.
Trang 24Hinh 2.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à chophé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ầnchươ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
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,
Trang 25Inventory cung cấp các tra cứu về các Plays trong Playbooks của hệ thống Dinhnghĩ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
Trang 26Trong 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.
2.2.3 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
Trang 27Ansible thiết lập một kết nối SSH tới hệ thống từ xa và triển khai package theocấ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
2.3 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
Trang 282.4 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ìmhiể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.
2.5 Jenkins
Jenkins [4] là một mã nguồn mở viết bằng Java, được sử dụng để thực hiện các
chức năng tích hợp những thay đổi được tạo ra vào project hiện tại và sử dung hàng
ngày hoặc thường xuyên hơn (CI — Continuos Integration: tích hợp liên tục); nhờ tính
năng đó mà Jenkins được xây dựng các tác vụ tự động hóa.
Trang 29Jenkins có thé tích hợp được hau hết các source code nhanh chóng và liên tục,
có thể theo dõi sự thực thi và các trạng thái thông qua các bước kiểm thử
Sau khi cài đặt, Jenkins cho phép người dùng lựa chọn các danh sách plugin
mặc định đã có sẵn hoặc tự chọn plugin của riêng Khi đã chọn các plugin thì chỉ cầnnhấp vào cài đặt thì Jenkins sẽ tự động them plugin đó vào Người dùng có thể kiểm
tra các tác vụ đang build, trạng thái thực thi của tác vụ đó, xem lại lịch sử và quản lý
rất nhiều thứ khác để hoàn toàn cá nhân hóa trên Jenkins
2.6 AWX
A WX [5] là một phần mềm cung cấp giao điện web cho người dùng, REST API
và các công cụ thực thi dựa trên Ansible.
Các thành phần trong AWX:
- AWX engine — vai trò Ansible engine thực thi các thành phan trong Ansible
- NGINX- vai trò Web Server cung cấp giao diện web cho người dùng
- PostgreSQL - vai tri Database Servere lưu trữ dữ liệu khởi tao, dữ liệu log
sinh ra trong quá trình Ansible thực thi.
~ Redis — vai trò Cache server.
Trang 30Lợi ích của AWX:
Giao diện dễ sử dụng.
Quản lý phân quyền
Lưu lại log khi thực thi.
Lập lịch thực thi.
Quản lý Inventory (các host target)
Trang 31Chương 3 PHƯƠNG PHÁP THUC HIỆN
3.1 Áp dụng Ansible vào đề tài
3.1.1 Khởi tao Inventory
Các thông tin về Remote Host cần được khai báo trong Inventory [6]:
inventory_hostname dùng để phân biệt dé dang hơn giữa các Remote hosts
inventory_hostname thì Ansible sẽ phân biệt các hosts với nhau dựa vào thông
số này)
- ansible_ssh_user: user sẽ được thực thi.
- ansible_ssh_port: port của SSH.
ansible_ssh_pass: Password SSH Remote host.
3.1.2 Áp dung cách thức hoạt động của Ansible:
@ Xây dựng hệ thô
@ ởi tạo Inventory
© Xây dựng Playbook dựa theo CIS Benchmark
4) Tích hợp quản trị tập trung với Jenkins, AWX
6 Tiến hành kiếm tra, tự động hóa cau hình cho hệ thông
Hình 3.1: Áp dụng Ansible vào đề tài
Nhóm tác giả thực hiện áp dụng quy trình hoạt động của Ansible vào đề tài như
Sau:
Trang 32- Xây dựng hệ thống (gồm Control Server và các máy Remost Host), đồng thời
cài đặt Ansible trên Control Server.
- Khai báo Inventory cho Ansible (Bao gồm các thông tin về Remote Host)
- Xây dựng các Playbook phù hợp với yêu cầu của dé tài (Kiểm tra và tự động
hóa cau hình)
- _ Tích hợp quản trị tập trung với Jenkins và AWX.
- _ Tiến hành kiểm tra, tự động hóa cầu hình cho hệ thống
* Sau khi một tiến trình được kích hoạt thực hiện, Ansible trên Control
Server sẽ thông qua file Inventory dé tiến hành thiết lập một kết nỗi SSH
tới các Remote Host và triển khai package Python đã được tổng hợp (baogồm các Inventory, Playbook, Module)
* - Tại các Remote Host, Python Framework sẽ thực thi các tác vụ của package
đó (thực thi các Playbook gồm nhiều task, mỗi task sử dụng các Module
phù hợp) Sau khi kết thúc, hệ thống từ xa sẽ trả kết quả về Ansible bằngJSON 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
3.2 Mô hình tổng thể
S2SRPEE
Remote host
Trang 33Đối với một hệ thông các server CentOS (có thé tồn tại những lỗ hồng bảo mật)thì quy trình áp dụng sản phẩm/ đề tài vào như sau:
Bước 1: Quản trị viên tiến hành truy cập vào Control Server (đã có cài đặt
Ansible và ứng dụng hai trình tích hợp liên tục: AWX và Jenkins).
Bước 2: Sau đó tiến hành kích hoạt kiểm tra cấu hình (dựa vào các Playbook
kiểm tra cấu hình) Từ Control Server, Ansible sẽ tiến hành SSH đến các
Remote Host có trong Inventory.
Bước 3: Sau khi kiểm tra cấu hình, tiến hành kiểm tra kết qua Có 2 trường hợp
cụ thể như sau:
a Nếu hệ thống đã được bảo mật thì quá trình kiểm tra kết thúc, hệ thống
tiếp tục vận hành (Hoàn tat)
b Nếu hệ thống chưa được bảo mật thì tiếp tục tự động hóa cấu hình (tiếp
tục bước 5).
Bước 4: Tiến hành kích hoạt tự động hóa cấu hình (dựa vào các Playbook tự
động hóa cấu hình)
Bước 5: Sau khi tự động hóa cau hình thì một lần nữa tiến hành kích hoạt kiểm
tra cấu hình (Quay lại bước 3)
3.3 Phương pháp kiểm tra cấu hình
3.3.1 Quy trình kiểm tra cấu hình
` ,
` “
REMOTE
HOST
Trang 34Dựa vào cách thức hoạt động của Ansible, nhóm tác giả tiến hành xây dựng cácPlaybook chứa tác vụ dùng đề thực hiện kiểm tra cấu hình trên Remote Host.
3.3.2 Thiết lập Playbook kiểm tra cấu hình
- Tạo ra file log (định dạng HTML và CSS) với dang bảng dé có cái nhìn tổng
quan sau khi kiểm tra và redirect đến Playbook thực hiện tự động hóa cấu hình
3.3.2.2 Cấu trúc chung của các Playbook kiểm tra cấu hình
Cấu trúc chung của các Playbook kiểm tra cấu hình gồm 2 phần chính (thamkhảo Playbook minh họa ở hình 3.4 hoặc tại phụ lục Playbook kiểm tra cấu hình):
+ Phần 1: Khai báo host
* - Lựa chọn các host cần thực thi trong inventory Chọn giá trị là “all” để
thực thi toàn bộ host.
+ _ Thiết lập gather facts là “yes” dé thu thập các thông tin về Remote hosts
* Tao các biến vars đề thay thé cho các giá trị thường dùng khi tao task
- Phần2: Dựa vào các module dé tạo ra các task thực hiện các nội dung:
* Tao file log HTML (có thé đặt tên theo inventory_hostname-ngày-giờ thực
thi Playbook) và add nội dung file template CSS đã tạo sẵn.
* Kiểm tra cấu hình theo từng nội dung (dựa vào Audit trong CIS
Benchmark) và lưu output vừa kiểm tra được vào một biến register Cáclệnh sẽ cần tùy biến để thuận tiện cho việc kiểm tra và so sánh
= Đánh dấu x vào cột Not Secure nếu thỏa điều kiện when được thiết
Trang 35- Phần3 (Tùy chọn): Tao handler [7], tương tự khi tao task Điều này giúp giảm
đi số task không cần thiết kiểm tra (nếu không thỏa điều kiện), từ đó làm giảm
thời gian thực thi của Playbook.
= name: Cat file css
local_action: shell cat /var/lib/awx/projects/check-security/css
when: a.stat.pu name != "root" or a.stat.gr name |= "root" or a.stat.mode != "0644"
- name: If permissions on < > are configured
local_action:
module: lineinfile path: "{{ path_to_log check }}"
line: tt
when: a.stat.pu_name == "root" and a.stat.gr_name == "root" and a.stat.mode == "0644"
= name: Finish file log
Jocal_action:
module: lineinfile Kết thúc file log
path: "{{ path_to_log_check }}"
line: ""
Hình 3.4: Hình ảnh minh họa Playbook kiểm tra cấu hình
3.3.3 Biểu mẫu báo cáo
File log (xen hình 3.5) được tạo nên bằng cách tạo ra sẵn template chứa mã
nguồn là HTML và CSS
Gồm 3 nội dung chính:
- Phan I - Tiêu dé: thể hiện được nội dung kiểm tra cấu hình kèm thông tin về
Remote Host như tên, ngày giờ.
Trang 36Cột Task Name: tên các nội dung kiểm tra.
¢ Cột Secure: thể hiện Task Name đó đã an toàn
* - Cột Not Secure: thể hiện Task Name đó chưa an toàn
* - Cột Note: chứa một số thông tin cơ bản của Task Name
s Cot Hardening: chứa URL giúp redirect sang Template/Project tự động hóa
cấu hình
* Cột Tags: Alias thay thé cho Task Name, chứa thông tin để người dùng
dựa vào đó và thực hiện tự động hóa cấu hình với các nội dung theo ý
muốn
- Phần 3: Đánh giá các lỗ hồng bảo mật: Gồm một số thông tin về mức độ lỗ
hồng bảo mật dựa theo tiêu chuẩn CIS Benchmark
CO OO |
© > © A Khéng bio mat | 192.168.33.20:8080/job/Check2420Securityjjob/Part%205%20-%20C0 lì Q w OM Ge & M & @ :
Check Security in Configure SSH Server on zabbix - 2021-06-19 - 16:02:48
x Not limited Click Here |) h4
SSH LogLevel v loglevel INFO hŠ
x Not disabled ClickHere | h6
x maxauthtries 6 ClekHer | h7
SSH IgnoreRhosts v Enabled h§
SSH HostbasedAuthentication Mã Disabled họ
Hình 3.5: Một file HMTL mẫu
Trang 373.4 Phương pháp tự động hóa cấu hình
3.4.1 Quy trình tự động hóa cấu hình
Hình 3.6: Quy trình tự động hóa cấu hình
Dựa vào cách thức hoạt động của Ansible, nhóm tác giả tiến hành xây dựngcác Playbook chứa tác vụ dùng dé thực hiện tự động hóa cấu hình trên Remote Host.3.4.2 Thiết lập Playbook tự động hóa cấu hình
3.4.2.1 Mục đích
- Tự động hóa một loạt cấu hình các nội dung theo CIS Benchmark
- Không cần thực hiện hardening từng lệnh một hay lặp đi lặp lại sau một thời
gian.
3.4.2.2 Cấu trúc chung cúa các Playbook tự động hóa cấu hình
Cấu trúc chung của các Playbook tự động hóa cấu hình gồm 2 phần (tham
khảo Playbook minh họa ở hình 3.7 hoặc tại phụ lục Playbook tự động hóa cấu
hình):
- Phần 1: Khai báo host
5 - Lựa chọn các host cần thực thi trong inventory Chon giá tri là “all” để
thực thi toàn bộ host.
« _ Thiết lập gather_facts là “no” do lúc này không cần thu thập dữ liệu về
Trang 38* Tao biến vars_prompt giúp truyền giá trị trực tiếp trên giao diện Jenkins
hoặc AWX vào Playbook.
- Phần 2: Dựa vào các module dé tạo ra các task thực hiện các nội dung:
Để hardening cần dựa vào Remediation trong CIS Benchmark và tạo ra các
prompt: Input `DenyUsers <userlist>`
~ name: deny groups
prompt: Input ~DenyGroups <grouplist>~
Hình 3.7: Hình anh minh họa Playbook tự động hóa cấu hình
3.5 Sự liên kết giữa phương pháp kiểm tra cấu hình và tự động hóa cấu hình
Dé người dùng có thể dựa vào file log kiểm tra cầu hình, dé dàng tiến hành lựachọn hoặc bỏ qua tự động hóa các nội dung, nhóm tác gia đã tạo ra cột “Tags” nhằm
mục đích làm tên thay thế cho các Task Name
- _ Trong Playbook kiểm tra cấu hình, thiết lập đề hiển thị các nhãn (tag) trên cột
Tags (Alias thay thế cho từng Task Name) trong file log
- _ Trong Playbook tự động hóa cấu hình, với mỗi task hardening sẽ cần dựa vào
file log để khai báo nhãn (tag) phù hợp
Điều này thể hiện mối liên kết giữa việc kiểm tra câu hình và tự động hóa cầuhình Đơn giản hóa việc lựa chọn nội dung cần thực hiện cho người dùng
Trang 39Triển khai minh họa:
Dựa vào CIS Benchmark:
Hinh 3.8: Noi dung cần thực hiện dựa theo CIS Benchmark
- Theo Audit, kiểm tra cấu hình SSH Max Sessions bằng lệnh: “sshd -T | grep
-i maxsessions”
* Néu kết quả trả về Max Sessions là 10 hoặc ít hơn thi cấu hình nay an toàn
* - Ngược lại, Max Sessions lớn hơn 10 thì cấu hình này chưa dam bảo an
toàn.
- Theo Remediation, cần thay đổi thông số này tại đường dẫn
/etc/ssh/sshd_config với giá trị được khuyến nghị “MaxSessions 10” dé cấu
hình này trở nên an toàn.
Trang 40Triển khai kiểm tra cấu hình:
### 5.2.22 Ensure SSH MaxSessions is Limited
= name: Get info SSH MaxSessions - (5.2.22) (1)
shell: sshd -T | grep -i maxsessions | awk '$2 <= 19"
register: session
- name: Get info SSH MaxSessions (1)
shell: sshd -T | grep -i maxsessions (2)
"<tr align=center><td>SSH MaxSessions (Should be 19
</td><td><a href={{path_to_hardening}}>Click Here</a></td><td:
when: session.stdout =
less)</td><td></td><td>x</td><td>{{session1.stdout}} /ed></tr>"
- name: If SSH MaxSessions is limited
Hình 3.9: Phân tích va triển khai kiểm tra cầu hình
(1) Thu thập thông tin về Max Sessions, kết quả sẽ được trả về khi giá trị này bé
hơn hoặc bằng 10
(2) Thu thập thông tin về Max Sessions (nhưng không kèm điều kiện)
(3) So sánh với giá trị thu được ở (1) Nếu bằng với giá trị “rỗng” sẽ chèn các thẻ
HTML tạo row vào table của file log với nội dung chính:
» Banh dấu x vào cột Not Secure
° Hiển thị nhãn h21 vào cột Tags
» Hiển thị Max Sessions hiện tại (thu được ở (2)) vào cột Note
(4) So sánh với giá trị thu được ở (1) Nếu khác với giá trị “rỗng” sẽ chèn các thẻ
HTML tạo row vào table của file log với nội dung chính:
* - Đánh đấu Ý vào cột Secure
* Hiển thị nhãn h21 vào cột Tags
«_ Hiển thị Max Sessions hiện tại (thu được ở (2)) vào cột Note
v maxsessions 10 h21
ame
SSH MaxSessions (Should be 10 or less)