Nền tảng sử dụng công nghệ Docker dé cung cấp môi trường thực thi có kiểm soát và nhất quán trên tất cả các máy tính của người học, bat ké câu hình và ban phân phối Linux hiện có trên hệ
Trang 1HỌC VIEN CÔNG NGHỆ BƯU CHÍNH VIÊN THONG
KHOA AN TOÀN THÔNG TIN
Đề tài: Xây dựng các bài thực hành số mật mã học
Dai hoc chinh quy
Hà Nội, tháng 12 nam 2023
Trang 2Em cũng xin chân thành cảm ơn các Thay, Cô trong Khoa An toàn thông tin nóiriêng và toàn thé các cán bộ của Học viện Công nghệ Bưu chính Viễn thông nói chung đã
tạo điều kiện dé em có thé học tập và phát triển bản thân trong một môi trường rất tốt Cảm
ơn các Thầy Cô đã cung cấp cho em không chỉ kiến thức mà còn là kỹ năng sống, đó là
những hành trang hữu ích cho em trên chặng đường dài phía trước của cuộc đời.
Cuối cùng, em xin cảm ơn gia đình, bạn bè, những người đã luôn ở cạnh, quan tâm,giúp đỡ và ủng hộ đề bản thân em có thê hoàn thành được đồ án này
Với trình độ hiểu biết còn nhiều hạn chế và vốn kiến thức vẫn còn ít oi nên trong đồ
án của em không tránh khỏi những thiếu sót Em rất mong nhận được sự góp ý của các
Thây, Cô đê đô án của em được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Hà Nội, ngày 30 tháng 12 năm 2023
Sinh viên thực hiện
Nguyễn Việt Anh
GVHD: TS Nguyễn Ngọc Điệp 1 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 3Dé án tốt nghiệp
NHAN XÉT, ĐÁNH GIÁ, CHO DIEM
(Của Người hướng dẫn)
Điểm: 2 Scccccrererkrree (bằng chữ -ccsccczcrxecrcee )
Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng cham đồ án tốt nghiệp?
Hà Nội, ngày tháng năm 20
CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
(ký và ghi rõ họ tên)
GVHD: TS Nguyễn Ngọc Điệp 2 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 4Dé án tốt nghiệp
NHAN XÉT, ĐÁNH GIA, CHO DIEM
(Của Người phản biện)
” eK
Điềm: ee (bằng Chit eee eececceeseesseesseesseesseeeseees )
Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng cham đồ án tốt nghiệp?
Hà Nội, ngày tháng năm 20
CÁN BỘ - GIẢNG VIÊN PHẢN BIỆN
(ký và ghi rõ họ tên)
GVHD: TS Nguyễn Ngọc Điệp 3 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 5CHƯƠNG 1: TONG QUAN VE MOI TRƯỜNG LABTAINER - -: 12
1.1 Tổng quan về Labtainer- 2-2 2© etEeEE£EE2EE2EEEEESEEEEEEEEEEEEEEErErrkrrrrrreee 12
LLL Tim hidu 5) nan 121.1.2 Kiến trúc hệ thỖngg +- + ©52SSs EEEEEEEEE E121 1121122112112 11c 12
1.1.3 Quy 6.01) 18 0nộ a 13
1.1.4, ThA In 14N97 T16 nhnggg ẦẢ 15
nã ga .nốee ẢẢẢ 15
1.1.6.a Dựa trên ứng dụng G6 họna St t1 E171 215711151111511151 11511 EEree 15
1.1.6.b Dựa trên câu lệnh . «¿+ E2 2222223333111111 111v se reg 16
1.1.7 Uu nhược điểm của Labf@ÌH€F - 55s EEE ke te EErkcrkrrkrrrrree l6
1.2 Tống quan về Dokerr - 2 ¿+ s+x£+EE£EE£SEE£EEEEEEEEEEEEE2E171121171.211 11.2 re 17
1.2.1 Giới thiệu về ÏDo€er- -©5+- 5+ SSe‡EtéEEcEEEEEEEEE2EE21 21211.211.111 re, 17
1.2.2 VONgG AOi ng g8 nan ốốố.ốốốốỐố.ố 18 1.2.3 Cách thức hoạt động của DOC€F, SG SH HH tre, 19 1.3 Môi trường thực thi Labfainers - - - 5 ng HH ni, 20
II 57AM' , nnố 20
1.3.2 Cấu hình các vùng cÌÏưứiA - 5c E EETEEE E121 111tr 211.4 Chi tiết một số mô đun 2-2 SE +E£EE£EE£EEEEEEEEEEEE2E1E7122121 71212121 23
1.4.1 Giao điện [A€(ÏÏf Set KH HH TH ng TH nề 23
1.4.2 Cá nhân hóa bài thực NAnn Tnhh HH re 23
1.4.2.a Cấu hình cá nhân hóa - parameter.COnfÏg + + + s+z++zxzx+zzzzse2 24
1.4.2.b Cá nhân hóa tép - StATf.COIÍT - G G3 11v ng nrkc 26
1.4.2.c Tiêu chuẩn đánh giá - result.COnfig 2 2-52 s+2++cx+zxezxerxerxerrecsee 271.4.2.d Cách thức đánh giá kết quả tự động -¿ 2 +++s£+zxzxerxzrsrree 301.5 Kết ch0ng - - 5-5 s2 2E 1122121121171 117111111111 211111111 11.11.1111 ee 30CHƯƠNG 2: XÂY DUNG VÀ QUAN LÝ BÀI THỰC HÀNH - -: 31
2.1 Cách xây dung một bài thực hành mới 5c 2+ 2£ + E+sesrrrererrrrreres 31
2.1.1 Giao diện LAÍ(ÌIL€PF HH HH HH nh HH nghệ 31
GVHD: TS Nguyễn Ngọc Điệp 4 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 6Dé án tốt nghiệp
2.1.2 Tao container trong LAÍQÏH€F - Ác KH kg kt 33
2.1.3 Cấu hình mang cho bài lab 5- 55c S5s St E222 11 1121 crrree 332.1.4 Cầu hình file tredfdÏOCAl - 2-5 ©keSk+E+EEEEEEEEEEEEEEEEEE1E112111111.1111 1E cxe 35
2.1.5 Cấu hình file r€SÏW - 2 << EEEEEEEEEEEEEEEEE21211211211211211.11.111 1 ke 36
2.2 Xây dựng bai lab theo mô hình Socket - 5-55 S5 cSe series 37
2.2.2 LQUICH Nha 37 V0 2P an hố ố.ố.ố.ốốố 38
2.2.4 Chuyển đổi bài thực hành từ nền tảng khác -©-e©csc+ccccxccrscree 44
2.3 Quản lý và lưu trữ các bài lab - - 2.221 2 1 1 1111111111 1 1 re 51
2.3.2 Lấy các bài lab được lưu tr it Ve ooccccccccccceccessessessessessessessssssssessessessessessesseesessees 54chẽ 54
CHƯƠNG 3: XÂY DỰNG CÁC BAI LAB THỰC HANH 2s s+c++xerxerxez 55
3.1 KIA0 ! mẽ - 55
FOO A OY 110) 21 18h ccccaaOOd 55
3.1.2 Try HACKME À - LH HH HH TH HH HH HH Hư 57 KhN/Z men nhe e6 4 59
3.2 Mã Morse (C6 điễn), 2-52 2 S1 1E XE 1 E121121121121121121111 111111 1c 60
3.2.1 Nội duingg 5c 5S 2 E21 2122122 re 60
3.2.1.a LY O 56c 5< 2k2 E21 2111712710711 11211 T1 111.11 T11 T1 11 11 1 111 1g 60 3.2.1.b Mục đích - ¿5c s92 E9EEEE1E21127171127171127121111.211 11.111.111 ee 60
3.2.1.c Yêu cầu đối với sinh viên -:- 2 5¿ + +E22EE2EE2EE2EEEEE2EEEEEEEEErErrkrrrrrer 60
3.2.1.d Nội dung thực hành 2© ++k+SE£EE£EEEEEE2EEE711221711221 71.2211 60
3.2.2 Phân tích, thiết kế bài thực hàànhh 5-5 5s SE SE crcrrrey 61
3.2.2.a Phân tích yêu cầu bài thực hành ¿2 2 2 ++++EE+Ex+rxerxerxerxerrezex 613.2.2.b Thiết kế bài thực hành -¿ ¿- + s+x£+E£EE2EE2E12E1571271271 717121 re 623.2.3 Cài đặt và cấu hình các MAY GO ecceccscceccsccessessessessessessssscssessessessessessessessesseeses 62
3.2.4 Thứ nghiệm và đánh giá +55 SE E122 11 re 64
3.3 Mã Caese (CO điễn) - ¿5c 2s 2t 2 E21 2112111211011121101112111112111 21 1e 64
Trang 7Dé án tốt nghiệp
3.3.1.c Yêu cầu đối với sinh viên -:- 2© ¿+ +E2E2E12E12E12712E171 2E EErErrrei 65
3.3.1.d Nội dung thực hành - - - c1 3111211193113 1111111811191 1H ng Hư 65
3.3.2 Phân tích, thiết kế bài thực hàànhh - 5-55 SE EEEtrErgrrrrr re 66
3.3.2.a Phân tích yêu cầu bài thực hành 2: s¿+-<+x2z+t£kzrEerkerrxerreerrees 66
3.3.2.b Thiết kế bài thực hành -¿ ¿- + + ©s+E£EE2E2E12E12E1271271 71212121 re 66
3.3.3 Cài đặt và cấu hình các máy GO 25 5cc2ccccxcSEcerkerrerkrerkerreerrees 67
3.3.4 Thứ nghiệm và đánh gid c.ccccccccccccccccscsscsscsssessessessessessessssssssscssessessessessessessecses 69
3.4 Công cụ John the Ripper kết hợp với mã băm MDS (Mã băm) 69
BFL, NGI MUNG nna Ầ.ẦẦỐỐẮỐ 69
3.4.1.a LY dO.ecceccsscessesessessessessessessvssucsucssesscsuessessessessscsssecsesssesuessesaessessessessesseaeees 69 3.4.1.b Mục dich oc.ccecceccecccsccssessesseesesssssesssssessessessessessessessessecsessnsseessessessessesseeseeaeees 69
3.4.1.c Yêu cầu đối với sinh viên :- 5-5222 2E2EEE21E2122171 212121 re, 70
3.4.1.d Nội dung thực hành - c5 1111211191111 111111111119 11H HH ky 70
3.4.2 Phân tích, thiết kế bài thực hàànhh - -©5+ 5S SE EEErEtrerererkerrrrrrree 71
3.4.2.a Phân tích yêu cầu bài thực hah ecsesseeseeseseessessessessesseesesseeseeseees 713.4.2.b Thiết kế bài thực WANN eecccsessessessessessessessessessessessessssssessessessesseeseesesseees 713.4.3 Cài đặt và cấu hình các máy đ0 ©2+-55c2c‡cxcSEerkcErerkrerkerrrerkees 71
3.4.4 Thứ nghiệm và đánh giá - HH HH ng nghiệt 74
3.5 Hệ mã hóa RSA (Hiện đại) - 2-52 SS SE TS 211211221271 211 11111111 re, 74
BSD NOU CUI 008000 N88 a.ốa 74
3.5.1.b 007 ‹-*”Í 74
3.5.1.c Yêu cầu đối với sinh viên -:- 5 ©5£ + +E2+E2E12E12E12E12E1EE1 2E crErrrrer 74
3.5.1.d Nội dung thực hànhh - c5 s1 11191 SH HH HH Hư 74
3.5.2 Phân tích, thiết kế bài thực hiànhh - 5-5 5e te EErEtrerererkerrerrrrree 76
3.5.2.a Phân tích yêu cầu bài thực hành - 2 2 2 ++++EE+E++rxerxerrerrerrezex 763.5.2.b Thiết kế bài thực hành + t+keEkeE+EEEEEEEEEEEEEEEEEEEEEEEEkEEkrkrrkerkee 713.5.3 Cài đặt và cấu hình các MAY GO vecceccscceccsccecsessessessessessssssssesssssessessessessessesseeses 79
3.5.4 Thứ nghiệm và đánh giá 2-55 Et EEEE E221 111cc 81
3.6 TOg Ket -14 Ố 81KET LUẬN uieeececccccccssesscssesscsesstssssecsessessssecssassussucsesansussessesessesseseesassessesatsassecsesansnsseceeeavenss 82DANH MỤC TAI LIEU THAM KHẢO + 2 £©5£+S££EE+EE+EE£EEEEEEEEeEEerkrkrrrrres 83
GVHD: TS Nguyễn Ngọc Điệp 6 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 8Dé án tốt nghiệp
DANH MỤC CÁC TỪ VÀ THUAT NGỮ VIET TAT
Ký hiệu Tên Tiếng Anh Y nghĩa Tiếng Việt
GUI Graphical User Interface Giao diện đồ họa người dùng
Mạng máy tính nội bộ, giao tiếp nàyLAN Local Area Network cho phép các máy tính kết nối với nhau
dé cùng làm việc và chia sẻ dữ liệu
Giao thức Internet, đưa ra các tiêu
IP Internet Protocol chuẩn và quy tắc để định tuyến dữ liệu
và kết nối với internet
; Day là ham bam đã được mã hóa, với MDS Message Digest Algorithm 5 ¬ ; -
giá trị Hash dài 128-bit.
Thuật toán sử dụng hàm Cryptographic
SHAI Secure Hash Algorithm 1 Hash dé thu thập đầu vào và cho ra các
giá trị Hash 160 bit (20byte).
Thuật toán băm bao mật 256 bit và được SHA256 | Secure Hash Algorithm 256-bit , `
sử dụng đê bảo mật băng mật mã.
Thuật toán băm bảo mật 224 bit và được
SHA224 | Secure Hash Algorithm 224-bit : `
Environment rât nhiêu tính năng nhắm hỗ trợ việc
việt code trở nên đơn giản hơn.
GVHD: TS Nguyễn Ngọc Điệp 7 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 9Dé án tốt nghiệp
DANH MỤC HÌNH VỀ
Hình 1.1: Kiến trúc của Labtainer -2¿- 22 5++2+++2E++EEE£EEEtEEEtEEESEkerkrerkrerkrerkrs 13
Hình 1.2: Mối quan hệ giữa Docker file- Docker Image- Docker Container 18
Hinh 1.3: Vong d0i 8uì:; 89.9021 18 Hình 1.4: Cách thức hoạt động của Docker - G6 3E ESEEEerErrrrereerreree 19 Hình 1.5: Các gĩi thư viện được đĩng gĩi trong I)ocK€r «+ s++s++sx+sexeeresss 21
Hình 1.6: Giao diện của Labtainerr ccccccccccsessscccceessceceeessseeeceeessseeceeesseeeeeeeesseeeeeeesaa 23 Hình 1.7: Nội dung tép treafaÏOCaÌL - 5 2< 131113 *S91 11911 11T kg TH HH Hư 27
Hình 1.8: Các file kết quả được đĩng gĩi của bài thực hành - ¿5 sz+cz+szzs+ 30
Hình 2.1: Giao diện của Labtainerr - << 3331111111211 1 1111 9111111185311 11182 ve 32 Hình 2.2: Đặt tên cho bài Ïab - << + 1111162111 11119531 111119111111 011111192 11 ng vn 32
Hình 2.3: Giao diện sau khi đã đổi tên bài lab -¿- - 5s Sex ‡ESEE£EvEEEEeEEzEeErksreresrrrx 33
Hình 2.4: Tạo container trong LưabfAITI€T - - - 5 3+ 3311151 E*2E* Sky re 33
Hình 2.5: Cấu hình dai mạng cho bài lab 2¿- 2 522E2E££EE£EE££EEtEEESEEerEeerkrrreerkee 34Hình 2.6: Cấu hình "0589:0060 0" e 34Hình 2.7: Cau hình Dockerfile cho Client c.cccssscessssssesssessesssessesssesssessesssssesssessessseeseseseess 35Hình 2.8: Cấu hình Dockerfile Cho server cccscssssssssssesssessesssessssssessssssecsusssecsusssessuessessseeses 35Hình 2.9: Cấu hình file treataslocal cho client ¿- s¿©szs+s£+z+++x++zxzxz+zxezzeerxez 35Hình 2.10: Cấu hình file treataslocal cho server c.sscessssssesssessesssesseessessessesssessesssessessseess 35Hình 2.11: Cấu hình file resu]( .¿¿-22©+22++++EEE++++tEtEEEELrrrEEErrrrirrrriiriee 36
Hình 2.12: Thực thi lệnh trên client - - - - 2< 33 221132211 11323 13122213132 111811511 Eeexxe 36 Hình 2.13: Thực thi lệnh trên server - 5-2 3333322222222 111 1 1 vn 2x 36
Hình 2.14: Kết quả chương trÌnh - +: 2c s5 +E£2E£EE££E£SEE£EEEEEEEEEE1E212171 7121 1.E ce 36
Hình 2.15: Giao diện Labtainer cho dạng bài SOCK€I - 55553 +svssesesereses 38
Hình 2.16: Cau hình Dockerfile cho Server sccsscsssessesssesseessecstessecssessecssesseesseeseesseeseesseess 39Hình 2.17: Cau hình dockerfile cho Client c ccccscssssssesssesseesseeseessecssessecssesseessesseessecseesseess 41
Hình 2.18: Tao file server.py trong bai ÌaƯ - - - s11 v11 1 ng ng 41 Hình 2.19: Tạo file client.py trong bai lab - - 5 <6 s11 11912 11191119 9 ng ng 42
Hình 2.20: Cấu hình để máy ảO - 2-2 ©ESESE92EEEEE2EE2E12112212112217171712121 1 c0 43
GVHD: TS Nguyễn Ngọc Điệp 8 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 10Yêu cầu của bài CollisiOns - -ccccccc2vvtttEkttrrtrktrrrrrtrrrrrrrrirrrrrrrrree 45
Giao diện bài Collider c2 13322133311 31381 E195 1118511181118 xEe 47
Cấu hình dockerfile cho server(COllideT) - 65s eS£Ek+E+EeEEeE+Eerxerxers 47Cấu hình dockerfile cho client(COlÏId€T) - << 23+ Esssseeerssesssese 48
Kết quả chương trình bài Collider 2-2 5£ <++£2£++£E2£E+zxezrxvzxszrxeee 51
Đăng nhập trong Labfa1TT - - - 5 + + 191121 91 919 1 9 1 ng nnriết 51 Khởi tạo qua trình lưu trữ trên dockerhub - - s5 + 5s s£+s++e+eessersexss 52
Khai báo thông tin tài Khoan - - c2 1911911 191191191 HH ngư, 52
Thêm bai lab muốn lưu trữ -2¿-©2+++++tE+++EtEEkketrttrkrrrtrrrrrrrirree 52
Đăng nhập tài khoản dockerhub - - + + + *+*+vvEseseererereerereerrrree 33 Quá trình tải bài lab lên dockerhub - ó- x33 keskeskrrrsre 53 Lưu trữ bai lab trên dockerhub - . eeeeseeseesseeseesseesecesesseesseseenseeneenes 53 Lưu trữ bai lab trên ø1thub <6 + 1+ 1E 11911 9119911 91 KH kg nh ng 54
1ê 54
Giao diện chính của The Crytopals Crypto Challenges - 56 Bài thực hành trên The Cryptopals Crypto Challenges -«+- 57 Giao diện của TryHackMe - - - - + k1 HH Hư, 58 Bài thực hành trên TryHackÌMe sư rưết 59
GVHD: TS Nguyễn Ngọc Điệp 9 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 11Dé án tốt nghiệp
MỞ ĐẦU
Hiện nay, với sự bùng nỗ của công nghệ thông tin và việc sử dụng mang Internet trởnên phổ biến, khi mà mọi hoạt động trực tuyến trở nên không thé thiếu và thông tin trởthành tài nguyên vô cùng quý giá, vấn đề an toàn thông tin nói chung và các chủ đề mật mãhọc nói riêng Đặc biệt, trong thực tế các ứng dụng của mật mã học được triển khai và ápdụng ở hầu hết các lĩnh vực và công nghệ trong đời sống Các công ty sản xuất phần mềm
và phần cứng trên thế giới đều có những nghiên cứu và xây dựng cho mình các ứng dụng,công cụ bảo mật dựa trên các kỹ thuật mã hóa dé đảm bảo an toàn thông tin
Các bài thực hành về mật mã học có vai trò cực kỳ quan trọng trong việc đảo tạo cácchuyên gia an toàn thông tin với các kỹ năng thực hành cần thiết dé chống lại những mối
đe dọa ngày càng tăng cao từ các tội phạm mạng Tuy nhiên, các bài thực hành thực tế hiệnnay thường bị giới hạn trong một phòng thực hành vật lý trong nhà trường với số lượngthiết bị sử dụng cho thực hành hạn chế và do đó chỉ đáp ứng được một phần sỐ lượng ngườihọc Đặc biệt, các bài thực hành về nhóm chủ đề An toàn thông tin thường yêu cầu thiết bị
có cau hình cao hơn, đa dang hơn so với thực hành các môn lập trình, dẫn đến chi phí đầu
tư tốn kém Dé cung cấp cho người học một môi trường thực hành tương đương dé thửnghiệm bên ngoài phòng thực, đồng thời môi trường này cần tương thích với nhiều loạithiết bị mà người học có thé sở hữu, hỗ trợ các bài thực hành mật mã học có sẵn phù hợp
với các môn học là một khó khăn rât lớn.
Một số giải pháp đã được đưa ra như: thực hành dựa trên phần mềm mô phỏng cácbài thực hành, hoặc dựa trên ảo hóa các bài thực hành về chủ đề mật mã học Tuy nhiên,
các bài thực hành dựa trên ảo hóa sẽ phù hợp hơn với ngành An toàn thông tin do người
học và người nghiên cứu có thê thử nghiệm sát với thực tế hơn, với các công cụ là phầnmềm thật Các bài thực hành dạng này còn gọi là các bài thực hành ảo hay thực hành số, là
một công cụ tương tác, cho phép người học thực hiện theo hướng dẫn thí nghiệm thực hành.
Mục tiêu đề tai: “XÂY DUNG CÁC BÀI THUC HANH SO MAT MÃ HỌC TRENNEN TANG LABTAINER” đưa ra đề xuất một nền tang dé phát triển và triển khai các bàithực hành số về mật mã học, với môi trường thực hành là các thành phần dựa trên Linux,
GVHD: TS Nguyễn Ngọc Điệp 10 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 12Dé án tốt nghiệp
được lưu trữ và chạy hoàn toàn trên máy tính của người học Nền tảng sử dụng công nghệ
Docker dé cung cấp môi trường thực thi có kiểm soát và nhất quán trên tất cả các máy tính
của người học, bat ké câu hình và ban phân phối Linux hiện có trên hệ thống Với công nghệDocker, máy tính cá nhân của người nghiên cứu có thê dễ dàng chạy được bài thực hành mật
mã cần nhiều công cụ, thiết bị cho bài lab Nền tảng đề xuất cũng có khả năng hỗ trợ việc cá
nhân hóa các bài thực hành dé ngăn cản việc chia sẻ kết quả giữa các sinh viên Ngoài ra, đềtài còn đề xuất cách xây dựng một bài lab và cách quản lý bài lab đó Cuối cùng là đề xuấtcác bài thực hành về chủ đề mật mã học
Kết quả cần đạt được: tìm hiéu về Labtainer, kiến trúc hệ thống, quy trình thứchành, ưu nhược điểm của Labtainer tìm hiểu về Docker, vòng đời của Docker, cách thứchoạt động của Docker Khảo sát bài lab về chủ đề mật mã học đã có Chi tiết cách xây dựngmột bài lab trên nền tảng Labtainer Cách xây dựng một bài lab theo mô hình Socker Xâydựng các bài lab về chủ đề mật mã học như: Morse, Caese, RSA,
Với những mục tiêu như trên, bố cục đồ án của em sẽ bao gồm 3 chương theo cấu
trúc như sau:
e Chương 1: Tổng quan về môi trường Labtainer
e Chương 2: Xây dựng và quản lý bài thực hành
e Chương 3: Xây dựng các bài lab thực hành
GVHD: TS Nguyễn Ngọc Điệp 11 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 13Dé án tốt nghiệp
CHƯƠNG 1: TONG QUAN VE MOI TRUONG LABTAINER
Chuong I trinh bay tong quan về môi trường thực hành Labtainer va lý thuyếtDocker, bao gầm các như: Kiến trúc hệ thống, quy trình thực hành Đông thời chương này
phân tích ưu điểm và nhược điểm của Labtainer và lý thuyết của Docker, vòng đời của Docker và các thành phan của Docker.
1.1 Tổng quan về Labtainer
1.1.1 Tìm hiểu về Labtainer
Labtainer là một công cụ tao bài thực hành an toàn thông tin dựa trên Linux được
phát trién bởi Trường Sau đại học Hải quân ở Monterey, California Hệ thống tập trung vàoviệc xây dựng các môi trường ảo nhẹ cho các bài tập về an toàn thông tin Hệ thống phầnmềm miễn phí, là mã nguồn mở và được bảo trì tích cực
Labtainer có cung cấp các bài tập tích hợp với nhiều chủ đề khác nhau, và cũng chophép xây dựng các bài tập mới Dé xây dựng bài thực hành, người dùng có thé sử dung GUIhoặc dòng lệnh đơn giản Một bài thực hành có thể bao gồm nhiều máy Linux bên trongmột mạng LAN ảo Công cụ chỉ chạy trên Linux và không hỗ trợ trực tiếp các hệ điều hànhkhác mà phải chạy qua các nền tảng ảo hóa như Virtualbox/Vmware
Các buồi thực hành cho người học có thể được tạo với các phiên bản bài thực hànhcục bộ Mỗi người học được cung cấp một máy ảo hoặc một tệp tar có tập lệnh cài đặt hệthống bài thực hành Sinh viên có thể tạo môi trường bài thực hành bằng một lệnh duy nhất
trên máy tính xách tay thông thường của mình Sau quá trình khởi tạo tự động, môi trường
thực hành được chuẩn bị sẵn sàng và người học có thé thực hiện các lệnh tương tác trong
bài thực hành qua giao diện dòng lệnh riêng biệt cho mỗi máy ảo.
1.1.2 Kién trúc hệ thong
Kiến trúc Labtainers được phát triển và triển khai dựa trên Linux, sử dụng bộ chứaDocker (Docker containers) dé tạo môi trường nhất quán, đồng thời trên tat cả các máy tínhcủa từng sinh viên dù phiên ban và cấu hình Linux là khác nhau Việc sử dụng bộ chứaDocker giúp giảng viên hay người xây dựng bài thực hành cài đặt, thiết kế môi trường, tài
GVHD: TS Nguyễn Ngọc Điệp 12 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 14với máy ảo nên phù hợp với các bài thực hành có nhiều container và các thành phần kết nối
mạng.
Kiến trúc Labtainer phục vụ cho 3 kiểu người Đầu tiên là người thiết kế, tạo ra những
bài thực hành Người này sẽ xác định, xây dựng cấu hình, kết quả, cấu trúc của bài thựchành Thứ hai là người hướng dẫn Họ sẽ giao bài thực hành cho người học và thu thập kết
quả của người học Người hướng dẫn cũng có thể làm việc với người thiết kế để tạo ra
những bài thực hành mới Cuối cùng là người học, người làm bài thực hành
1.1.3 Quy trình thực hành
Mỗi bài thực hành cụ thể yêu cầu các gói phần mềm và 1 số cấu hình hệ thống (network, server) Do đó, cần xác định môi trường thực thi là yếu tố điển hình của 1 bài thực hành Cấu hình chi tiết của 1 bài thực hành được chứa trong tệp Dockerfile Ngoài ra,
GVHD: TS Nguyễn Ngọc Điệp 13 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 15Dé án tốt nghiệp
người thiết kế bài thực hành xác định tập hợp các tệp cụ thể của bài thực hành Các bài thựchành đơn giản có thé sử dụng tệp Dockerfiles mặc định được tao bởi tập lệnh Labtainer
Tap script shell và Python 3 của Labtainer sẽ thực thi việc tao các image docker từ
các Dockerfile mô tả cầu hình của bài thực hành, từ đó người dùng sẽ tương tác với các bài
thực hành dựa trên các terminal và cửa số được cung cấp bởi container.
Framework bao gồm một tập hợp các image cơ sở có san cho người thiết kế bài thựchành Một bài thực hành có thể chứa nhiều container, được xây dựng từ cơ sở khác nhau.Các container cơ sở bao gồm:
— Base: Ban phân phối Ubuntu cơ bản với các công cụ phát triển phần mềm (gcc) và
các công cụ phân tích phần mềm như gdb và hexedit
— Network: Các công cụ mạng như openssl, máy chủ ssh, netcat và tcpdump
— Firefox: Firefox browser
— Java: Mở rộng image firefox bao gồm 1 bộ kit phat trién java
— Centos: Ban phân phối CentOS bao gồm các tiện ích mạng và công cụ phân tích
— Lamp: Mở rộng Centos bao gồm máy chủ web Apache, MySQL và PHP, LAMP1.1.4 Tham số hóa
Khi bắt đầu 1 bài thực hành, Labtainer kết hợp với dia chỉ email được cung cấp bởi
người học dé tạo ra các giá tri gia ngau nhiên Một tệp watermark được tự động tao cho mỗi
bài thực hành của sinh viên, tệp này trở thành 1 trong những đối tượng được lưu trữ của bàithực hành Giá trị của watermark được xác định và là 1 phần của quá trình đánh giá dogiảng viên yêu cầu Yêu cầu này đảm bao rằng kết quả cung cấp có nguồn gốc khi người
học bắt đầu bài thực hành Đây chính là một cách thức chống gian lận bằng cách sao chép
file kết quả bài thực hành khác
Việc tham số hóa đạt được bằng cách xác định các ký hiệu trong mã nguồn hoặc tệp
dữ liệu Trong quá trình khởi tao container, Labtainer sẽ thay thé các ký hiệu này bang cácgiá trị ngẫu nhiên, dành riêng cho người hoc Một tệp cau hình xác định các file và ký hiệu,được thay thế bằng các giá trị tính toán được Khi sinh viên bắt đầu bài thực hành lần đầutiên, các chức năng trong Labtainer sẽ thay thế hăng số được chỉ định trong tệp mã nguồn
trước khi được biên dịch.
GVHD: TS Nguyễn Ngọc Điệp 14 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 16Dé án tốt nghiệp
1.1.5 Chấm điểm tự động
Các bài thực hành có thể được cấu hình tự động để chấm điểm bài thực hành.Labtainer không yêu cầu bài thực hành phải bao gồm cham điểm tự động (có thé là 1 bảnbáo cáo) Mục tiêu của chấm điểm tự động là dé giảng viên có sự chắc chắn về việc làm bàicủa sinh viên, cũng như quá trình làm bài thực hành, cùng với đó có thể là những khó khăn
mà người học mắc phải khi thực hiện bài thực hành Chức năng chấm điểm tự động giả sửrang sinh viên tương tác với 1 hoặc nhiều chương trình Mỗi khi người học hoạt động với
1 chương trình đã chon, framework sẽ bắt các bản sao của đầu vào và đầu ra tiêu chuẩn(stdin và stdout) kèm với dấu thời gian Sau đó, các giá tri sẽ được tham chiếu tới các giátrị trong tệp cấu hình xác định kết quả đích của bài thực hành Các tệp dấu thời gian cùngvới dấu vết liên quan đến bài thực hành được chứa trong vùng nhớ của người học, tất cảchúng được đóng gói sau khi kết thúc bài thực hành Sau đó, tệp đóng gói này được sinhviên gửi tới người quản lý (qua email) và được đưa vào hệ thống đánh giá bài thực hànhtrên máy của người quản lý Chức năng cham điểm tự động giúp giảm đáng kể nhiệm vụcủa người quản lý trong việc đánh giá kết quả bài thực hành của mỗi người học và tạo sự
tin tưởng phản ánh công việc do người học thực hiện.
Tuy nhiên, theo như thử nghiệm giảng dạy thực hành một môn học chuyên ngành
cho các khóa người học ngành ATTT, chúng tôi thấy rang người học vẫn có thé trao đổivới nhau 1 số bước quan trọng dé thực hiện bài thực hành một cách máy móc, nhờ đó cóthê nhanh chóng thực hiện mà không cần nắm được kiến thức lý thuyết
1.1.6 Tạo bài thực hành
Labtainer cung cấp cho việc tạo bài thực hành bằng 2 cách: Dựa trên đồ họa và dựa
trên câu lệnh.
1.1.6.a Dựa trên ứng dụng đồ hoa
Labtainer cung cấp 1 chương trình đồ họa cho phép người thiết kế chỉnh sửa, tạo bàithực hành mới gọi là Labtainers Lab Editor Dé gọi chương trình này người thiết kế chỉ việc
go câu lệnh labedit và chương trình sẽ hiện ra Lưu ý rang ban đầu dau labedit sẽ khôngchạy, do đó người thiết kế cần phải chạy tệp thực thi update-designer.sh trước đề tiến hành
cài câu lệnh labedit Giao diện labedit cũng cấp cho người thiết kế 1 công cụ trực quan dé
GVHD: TS Nguyễn Ngọc Điệp 15 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 17Dé án tốt nghiệp
tạo, chỉnh sửa các bài thực hành, tuy nhiên một số câu lệnh cũng như cau hình bổ sung cầnphải được mô tả chi tiết và thêm thủ công dé bài thực hành có thé chạy được Do đó, labeditor chỉ phù hợp để xem xét tổng quát và tạo, chỉnh sửa sơ bộ một bài thực hành chứkhông làm được tất cả mọi thứ
1.1.6.b Dựa trên câu lệnh
Các bước dé tạo bài thực hành mới sử dụng câu lệnh như sau:
— Đặt tên bài thực hành và tạo các máy tính cho bài thực hành bằng cách sử dụng tập
lệnh new_lab_ setup.py, xác định các container image dựa theo yêu cầu
— Thêm các gói phần mềm trong Dockerfile
— Định nghĩa mạng và kết nối tới các máy của bài thực hành trong tệp start.config
— Điền vào các thư mục của người dùng và hệ thống các bằng các tệp dành riêng cho
bài thực hành.
— Bô sung các lệnh cai đặt va file cân thiệt đê cho vào container trong các file mô tả.
Chi tiết về việc thiết kế các bài thực hành mới có thé đọc thêm được ở tài liệu chuyênbiệt dành cho người thiết kế bài thực hành của Labtainer Cách tốt nhất là kết hợp LabEditor dé mô tả sơ bộ tham số bài thực hành, sau đó chỉnh sửa chỉ tiết trực tiếp trên các filecấu hình dé mô tả cho Dockerfile
1.1.7 Ưu nhược điểm của Labtainer
Việc triển khai các bài thí nghiệm thực hành an toàn thông tin nói chung và mật mãhọc nói riêng dựa trên framework này mang lại một số lợi ích chính:
1 Môi trường Labtainer được kiểm soát và nhất quán trên tất cả các máy tính của sinh
viên Cho phép người quản lý kiểm soát các gói phần thư viện (packges), phiên bảncủa các thư viện Các bài thí nghiệm khác nhau có thé cầu hình khác nhau hay thậmchí trong một số bài thí nghiệm có nhiều máy khác nhau với cấu hình máy là khác
nhau.
2 Việc cham điểm, đánh giá bài làm của người học có thé được cham tự động thông
qua các tệp câu hình trước đê xác định các kêt quả mà giảng viên mong muôn người
GVHD: TS Nguyễn Ngọc Điệp 16 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 18Dé án tốt nghiệp
học thực hiện Do đó, người quản lý sẽ không phải tự mình kiểm tra chỉ tiết từng
người thực hiện.
3 Cá nhân hóa - các bài thí nghiệm sẽ được lưu và gan với định danh từng người thực
hiện Vì vậy, người thực hiện khó có thé sao chép két quả của người khác
Bên cạnh những ưu điểm thì Labtainer cũng có những hạn chế Labtainer frameworkgiới hạn bài thực hành trong môi trường hệ điều hành Linux Tuy nhiên, người quản lý thiết
kế bài thực hành cũng có thể thiết kế máy ảo riêng biệt
1.2 Tổng quan về Docker
1.2.1 Giới thiệu về Docker
Docker là một nền tảng cho phép xây dựng, thử nghiệm và triển khai các ứng dụng.Nền tảng này đóng gói phần mềm thành các đơn vị tiêu chuẩn hóa gọi là container, chứatất cả các thành phần mà một phần mềm cần đề chạy, bao gồm thư viện, công cụ hệ thống,
mã và môi trường thời gian chạy Các container này tách biệt với nhau, trong đó chứa các
gói phần mềm và tệp cau hình của container, và có thé giao tiếp với nhau Do chỉ dựa trên
một nhân duy nhất được sử dụng cho tất cả các container, nên container nhẹ hơn các máy
ảo.
Docker gồm các thành phần chính sau:
— Docker Engine: Chita các tool, engine dé có thé đóng gói chương trình va vận hành
chúng một cach don giản.
— Docker Hub: Giống như Github, dịch vụ lưu trữ giúp chứa các Docker Image
— Docker Machine: Tạo ra các Docker engine trên máy chủ
— Docker Compose: Chạy ứng dụng bang cách định nghĩa cấu hình các Docker
container thông qua tệp cấu hình
— Docker Image: Một dang tập hợp các tệp của ứng dụng, được tạo bởi Docker engine.
Nội dung của các Docker image sẽ không bi thay đối khi di chuyển Docker imageđược dùng dé chạy các Docker container
— Docker Container: Một dang runtime của các Docker image, dùng dé làm môi trường
chay tng dung.
GVHD: TS Nguyễn Ngọc Điệp 17 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 19Dé án tốt nghiệp
— Dockerfile: Là một tài liệu dạng văn bản chứa tất cả các câu lệnh mà người dùng
muốn gọi đến ở trong giao diện command-line Và từ Dockerfile này, chỉ với 1 câu
lệnh docker build là Docker sẽ tự động xây dựng nên một Docker image.
Mỗi quan hệ giữa Docker file - Docker Image - Docker Container được minh họa như
trong hình sau:
Dockerfile Docker Image Docker Container
Hình 1.2: Mối quan hệ giữa Docker file- Docker Image- Docker Container
1.2.2 Vong đời của Docker
Hình 1.3: Vong đời cua Docker
e Docker khởi nguồn từ việc build dockerfile, một container bắt nguồn từ 1 image,
mỗi lần run một image sẽ thu được | container khác nhau Image là một kiểu
snapshot cố định, có sẵn mọi thứ dé sẵn sàng sử dụng.
GVHD: TS Nguyễn Ngọc Điệp 18 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 20Dé án tốt nghiệp
e Bước tiếp theo trong vòng đời docker là một container đã dừng hay còn gọi là
stopped container, mọi tiến trình đã chạy trước khi container bị dừng đều đượcgiữ lại, tức là sau khi container đã dừng dữ liệu không bị mắt, lúc này hoàn toàn
có thê tìm container và lấy lại băng cách liệt kê các container băng lệnh:
docker ps -a
e Trong trường hợp chỉ muốn tìm container nào đã dừng gần đây nhất, chỉ cần chạy
lệnh:
docker ps -Ì
° Tiếp theo khi trong quá trình sử dụng container, đã tạo ra một số file mới, hoặc
một số thay đổi, lúc này có thé tạo ra một image mới từ container này bằng cáchcommit Lệnh commit và run là 2 lệnh bổ trợ nhau, nhận đầu vào là một image
và đầu ra là container va ngược lại
docker commit d85756f57265 new_image_name
Cứ tiếp tục như vậy, ta sẽ có các lớp image chồng lên nhau được kế thừa tir base
1mage.
1.2.3 Cách thức hoạt động cua Docker
docker run
Hình 1.4: Cách thức hoạt động cua Docker
Docker sử dụng kiến trúc client-server Máy tính người dùng sẽ có Docker Client(ví dụ Docker Desktop, Docker Compose, v.v.) dé nói chuyện với Docker Daemon Docker
GVHD: TS Nguyén Ngoc Diép 19 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 21Dé án tốt nghiệp
Daemon có thé nằm trên cùng một máy chủ với Docker Client của người dùng hoặc DockerClient có thé giao tiếp với Docker Daemon từ xa Người dùng sử dụng Docker Client, yêucầu Docker Daemon xây dựng, pull hoặc chạy thứ gì đó trên container Nếu image được
yêu cầu không có trong hệ thống của người dùng, Docker Daemon sẽ tìm kiếm chúng trong
sô đăng ký và tải xuống (sử dụng lệnh docker pull) Sau đó, image được pull sẽ được đặt/cài
đặt trên container nào đó (dung lệnh docker build) Người dùng có thé chạy container bằnglệnh docker run Lệnh docker run có thể thực hiện tất cả các lệnh trước đó nếu người dùng
không có image.
Đôi với nên tảng của người dùng, việc sử dụng Docker trên Linux sẽ tôt hơn do
Docker container Windows bị giới hạn vê bản quyên cũng như thiêu sự hỗ trợ của cộng đông, sự da dạng của các image gôc Ngoài ra, Docker container Windows mới được hô trợ, chưa phô biên nên sẽ có nhiêu vân đê khi triên khai.
1.3 Môi trường thực thi Labtainers
1.3.1 Dockerfile
Tp Dockerfile của bài thí nghiệm được đặt trong thư mục “Dockerfiles” Và tệp
Dockerfiles được thêm mỗi khi thêm máy tính mới thông GUI Labtainers sử dụng cú pháp
Docker tiêu chuẩn, được mô tả ở Dockerfile reference | Docker Docs Dockerfile ban dau
dé mặc định với một Image Labtainer chứa những gói thư viện Linux cần thiết tối thiểu chomột bài thí nghiệm Tệp Dockerfile của từng container mở băng cách click vào container
và chọn tab Docker hoặc có thể mở trong thư mục:
$LABTAINER_DIR/labs/[tén bài lab]/dockerfiles
Vi du: /home/student/labtainer/trunk/labs/telnetlab/dockerfiles
Trong do:
$LABTAINER_DIR 1a: /home/student/labtainer/trunk/
[tên bai lab] là: telnetlab
— Dé xem những gói thư viện được thêm trong những image cơ sở này, đi tới thư mục:
$LABTATNER_DTR/scripts/designer/base_ dockerfiles
GVHD: TS Nguyễn Ngọc Điệp 20 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 22labtainer base Docker abtainer juiceshop
Dockerfile labtainer.kali Dockerfi
Dockerfi Dockerfi
Dockerfile Dockerfi Dockerfile.
Dockerfile.1 -metasploitable Dockerfile labtainer.mysql
$i
Hình 1.5: Các gói thư viện được đóng gói trong Docker
— Tép Dockerfile được dé thêm gói thư viện cho container trong bài thực hành theo cú
Hau hét các container của bài lab đêu có thê sử dụng tệp start.config được tạo tu
động mà không cần sửa đổi Việc thêm mang container hay xác định tên người dùng khôngphải dùng “ubuntu” mặc định thì cần phải sửa đổi tệp start.config Phần sau đây mô tả cácphan chính của tệp cau hình đó Hau hết các cấu hình có thé không phải sửa đổi cho hauhết các bài thí nghiệm
e GLOBAL SETTINGS - Biến toàn cục của bài thi nghiệm bao gồm:
— LAB MASTER SEED [seed] - chuỗi nguồn gốc cho bài thực hành Nó được kết
hợp với email của sinh viên để kiểm soát quá trình cá nhân hóa của từng phòng
thí nghiệm với từng sinh viên.
— REGISTRY [registry] - Mã hay tài khoản Docker Hub chứa các image của bài
thực hành Giá trị mặc định này được xác định trong tệp labtainers.config tại thư mục $LABTAINER_DIR/config.
— BASE_REGISTRY [base_registry] - Mã hay tài khoản Docker Hub chứa các
image cơ sở cho container của bài thực hành.
— COLLECT DOCS [yes/no]
GVHD: TS Nguyễn Ngọc Điệp 21 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 23Dé án tốt nghiệp
CHECKWORK [yes/no] - Tùy chọn dé vô hiệu hóa (dé “no”) khả năng sinh viên
tự kiểm tra bài làm của mình từ thư mục labtainer-student
e NETWORK [tên mang] Phan này là bắt buộc đối với mỗi mạng của bài thực hành
Nó được sử dụng trong file start.config khi cần truy xuất tới mạng, các giá trị sau
đây được xác định cho NETWORK:
MASK [địa chỉ mask] - ví dụ: 172.25.0.0/24
GATEWAY [địa chỉ công] - Địa chỉ IP của công mạng được Docker sử dụng
để giao tiếp với máy chủ Trường GATEWAY không được đặt trùng tên IP vớinhững thành phần khác
se CONTAINER [container name - tên của container] - Tên của container là bắt
buộc, và các giá trị mặc định cho container được tạo tự động bởi tập lệnh lab
setup.py.
TERMINALS [số lượng] - Số lượng thiết bị dau cuối ảo sẽ mở và gắn vào vùng
chứa (container) này khi bài thực hành bắt đầu Nếu thiếu, tương đương với giá
trị mặc định là 1 Giá trị 0 ngăn chặn việc tạo thiết bị đầu cuối Giá trị -1 thi sinhviên không thê gắn thiết bị đầu cuối vào vùng chứa
TERMINAL_GROUP [tên] - Các thiết bị đầu cuối trong cùng một nhóm đượcsắp xếp dưới dạng các tab trong một thiết bị đầu cuối duy nhất [name - tên] làchuỗi tùy ý
USER [tên người dùng] - Tên người dùng, mặc định là “ubuntu”.
PASSWORD [mật khẩu] - Mật khẩu cho tài khoản tên người dùng được xác
định ở USER.
[Tên mang] [địa chỉ mạng] - Dia chỉ mang được kết nối với vùng chứa - containernày Một dòng riêng biệt được nhập cho mỗi mạng
X11 [YES/NO] Mặc định là NO Nếu là YES, sẽ cho phép vùng chứa
-container chạy được các ứng dụng có GUI, ví dụ: trình duyệt (firefox) hoặc
Wireshark.
GVHD: TS Nguyễn Ngọc Điệp 22 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 24Dé án tốt nghiệp
1.4 Chỉ tiết một số mô đun
1.4.1 Giao diện labedit
Labtainers hỗ trợ giao diện GUI đề tương tác, giúp giảng viên tiện thao tác đề thiết
kế và duy trì bài thực hành tiện lợi dễ dàng
File Run Edit Help View
Lab: telnetlab Lab running: No
Grader running: No
Containers = Networks _ 2+ Automated Assessment
L €opy from | { Results SOME_NETWORK 172.20.0.0/24 | —————
Hinh 1.6: Giao dién cua Labtainer
Khởi động trình điều khiển Labtainers Lab bằng cách mở terminal từ bat kỳ đường dẫn nào
và khởi động bang lệnh labedit
1.42 Cá nhân hóa bài thực hành
Tham số hóa bài thực hành nhằm ngăn cản người thực hiện chia sẻ các lời giải củabài thực hành hoặc tìm lời giải trên Internet Các bài thực hành được tham số hóa thông qua
sự thay thế tượng trưng của các giá trỊ trong mã nguồn hoặc tệp dữ liệu thuộc bài thực hành.Người thiết kế bài thực hành xác định các tệp nay, các ký hiệu trong tệp và loại thay thé sẽxảy ra sau đó Ví dụ: một ký hiệu biểu thị kích thước bộ đệm mảng có thé được thay thếbăng một giá trị ngẫu nhiên được giới hạn bởi mức tối thiểu và tối đa có thê xác định trongcấu hình Các giá trị ngẫu nhiên được tạo bằng cách sử dụng trình tạo sỐ ngẫu nhiên đượctạo bằng một chuỗi cụ thé cho từng người học và bài thực hành (Các seed được tạo bằngcách nối một chuỗi được xác định trước cho bài thực hành với địa chỉ email của người thựchiện được nhập vào ban đầu.) Trong trường hợp tham số là kích thước bộ đệm, seed sẽ
GVHD: TS Nguyễn Ngọc Điệp 23 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 25Dé án tốt nghiệp
được sử dụng đề đặt kích thước bộ đệm trong phiên bản bài thực hành của người thực hiện
đó Tham số hóa có thé được sử dụng dé thay đổi tính toán Ví dụ: việc thay đổi kích thước
bộ đệm có thể ảnh hưởng đến cách tạo lỗi tràn bộ đệm Nó cũng có thể được sử dụng đểtùy chỉnh các kết quả được lưu trữ Trong bài thực hành telnet được tạo, người thực hiện
được hướng dẫn telnet đến một máy chủ và hiển thị nội dung của một tệp cu thé Tham số
hóa làm cho nội dung của tệp này là duy nhất đối với người thực hiện
Ví dụ: chứa kết quả của hàm băm được khóa bằng seed duy nhất của người thực hiện
FSTRTING:HASH_ REPLACE : telnetlab server student=filetoview.txt:
TELNET_ STRTNG:mytelnetfilestring
làm cho ký hiệu TELNET_STRING trong tệp filetoview.txt được thay thé bằng ham băm
của chuỗi “mytelnetfilestring” được khóa bằng seed dành riêng cho bài thực hành của ngườithực hiện Như sẽ thấy bên dưới, cú pháp tệp câu hình đánh giá bao gồm khả năng đặt têncho các ký hiệu tham số dé chức năng đánh giá tự động so sánh kết quả từ các thành phankết quả của mỗi người thực hiện với các giá trị được tạo riêng cho người thực hiện đó
1.4.2.a Cau hình cá nhân hóa - parameter.config
Hệ thống sẽ thay thế các ký hiệu này bằng các giá trị ngẫu nhiên dành riêng cho từng
người thực hiện Các ký hiệu này sẽ được khai báo và xác định trong tệp
config/parameter.config.
Các toán tử sử dụng:
1 RAND_REPLACE
RAND_REPLACE: <Tén tép> : <Ky tu> : <Can dưới> : <Cận trén> : <Bước nhay>
Toán tử RAND_REPLACE có chức năng sẽ thay thế ký tự <Ký tự> trong tệp <Tên tệp>bang một giá trị ngẫu nhiên trong khoảng <Cận dudi> và <Cận trên>
Trong đó:
e <Tên tệp>: là tên tệp (tệp này phải ton tại) <tên tệp> có định dạng sau:
<Tén vùng chứa> : <Tén tệp 1>; <Tén tệp 2>;
66,99
Có thé nhiều tệp cùng lúc, được phân cách với nhau bằng dau “;”
e <Ký tự>: là chuỗi hoặc ký tự sẽ được thay thế
GVHD: TS Nguyễn Ngọc Điệp 24 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 26Dé án tốt nghiệp
e <Cận dưới> và <Cận trên>: chỉ ra khoảng giá trị sẽ được sinh ngẫu nhiên
e_ <Bước nhảy>: (Không bắt buộc)
Ví dụ:
RAND_REPLACE: client:/home/ubuntu/stack.c : BUFFER_STZE : 200 : 2000
Chuỗi ký tự “BUFFER_SIZE” có trong stack.c của container client sẽ được thay thé bangmột giá trị ngẫu nhiên giữa khoảng 200 - 2000
2 RAND_REPLACE_UNIQUE
RAND_REPLACE_UNIQUE : <Tén tép> : <Ky tu> : <Cận dưới› : <Can trén>
Cũng tương tự như RAND REPLACE là thay thé bang các giá trị, tuy nhiên các giá triđược chọn sẽ không được sử dụng lại Phép thay thế này thường được dùng đối với các địa
chỉ IP.
3 HASH_CREATE
RAND_REPLACE : <Tén tép> : <Chudi>
Mã băm của <chudi> và chuỗi seed của LAB_MASTER_SEED trong tệp start.config sẽ
được tạo hoặc ghi đè lên tệp <tên tệp>.
Trong đó:
e <Tên tệp>: là tên tệp (tệp này phải tồn tại) <tên tệp> có định dạng như sau:
<Tén vùng chứa> : <Tén tệp 1>; <Tén tệp 2>;
66,99
Có thé nhiều tệp cùng lúc, được phân cách với nhau bằng dau “;”.
e_ <Chuỗi>: (<Chuỗi> sau khi được ghép với seed của bài thực hành) dé thực hiện mã
HASH_REPLACE: <Tén tệp> : <Ky tự> : <Chudi>
Mã băm MD5 của <chuỗi> và seed sẽ thay thế ký tự <ký tự> có trong tệp <tên tệp>
Trong đó:
GVHD: TS Nguyễn Ngọc Điệp 25 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 27Dé án tốt nghiệp
e <Tén tệp>: là tên tệp (tệp này phải tồn tại) <tên tệp> có định dạng như sau:
<Tén vùng chứa> : <Tén tệp 1> ; <Tén tệp 2>;
66,99
Có thé nhiều tệp cùng lúc, được phân cách với nhau băng dấu “;”
e_ <Chuỗi>: (<Chuỗi> sau khi được ghép với seed của bài thực hành) đề thực hiện mã
hóa bang MDS
e <Ký tự>: Chuỗi ký tự sé được thay thé bằng mã băm
1.4.2.b Cá nhân hóa tệp - start.config.
Việc cá nhân hóa tệp start.config sẽ được thực hiện trước khi Docker Container được
tạo Hệ thống sé tạo một bản sao và lưu trữ ở /tmp/start.config Hiện tại, chỉ dia chỉ IP trong
tệp start.config được cá nhân hóa.
Với hệ thống Labtainers, các đơn giản nhất mà hệ thống dùng đó là cá nhân hóa mộtvai tệp của một số container trong bài thực hành và sau đó sẽ kiểm tra các tệp đó khi thựchiện khâu chấm điểm tự động (gradelab) Hệ thống sẽ tự động thực hiện việc này với mọibài thực hành tạo ra, vì hầu hết sẽ phát hiện ra những dấu hiệu không trung thực của người
thực hiện
Trong tệp hiện vật này, sẽ ghi lại log và bash_hisyory cũng như mốc thời gian thựchiện ví dụ như dữ liệu được hiển thị sau khi chạy một chương trình nào đó (được gọi làstdout) hoặc lệnh, cú pháp dé khởi chạy chương trình (stdin)
Theo mặc định, stdin và stdout sẽ được ghi lại với tất cả chương tình không phải hệ
thống, ví dụ: kết quả của lệnh “ls” (liệt kê các tệp trong thư mục) sẽ không được ghi lại.
stdin và stdout của chương trình và tiện ích sẽ được ghi lại nếu tên của chương trình, tiệních được bắt đầu ở đầu dong (ví du: nmap, ping, msfconsole, ) được khai báo trong tệp
treataslocal ở:
$LABTATNER_DTR/1abs/[1abname ]/[container name ]/_bin/treataslocal
Ví dụ một nột dung trong tệp treatalocal:
GVHD: TS Nguyễn Ngọc Điệp 26 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 28Hình 1.7: Nội dung tệp treatalocal
Hệ thống sẽ ghi lại các chuẩn đầu ra và vào của chương trình nmap, ssh, telnet Từ đó
có thê sử dụng cho việc đánh giá kết quả tự động Hệ thống thu thập tất cả lịch sử bash của
sinh đó vào tệp $HOME/.bash history và /root/.bash history.
1.4.2.c Tiêu chuẩn đánh giá - result.config
Các hàm đánh giá tự động cho bài thực hành được thiết kế cho các mục tiêu riêngbiệt Đối với mỗi mục tiêu, người phát biểu bài thực hành xác định một hoặc nhiều trườnghoặc thuộc tính cho các kết quả theo ý định của giảng viên mong muốn người thực hiệnhoàn thành Những cau hình này được xác định trong tệp:
l1abtainer/trunk/1abs/<1ab>/instr_config/results.config
Các trường giá tri trong tệp result.config:
Mỗi lệnh trong tệp result.config có định dạng sau:
<result> = <file_id>:<field_type>:<field_id> [:<line_type>:<line_id>] Trong do:
e Result: Được hiểu là tên biến hay tên tượng trưng của kết quả Phải là chữ hoặc số,
có thê chứa dâu gạch dưới “_”
e File id: Xác định nội dung ở một sỐ tệp sẽ được so sánh File_id theo định dạng sau:
[container_ name: ]<prog> [stdin |stdout |prgout]
Trong đó, prog là tên của một chương trình hay một tiện ích Container_name xác định
vừng chứa lưu trữ tệp hay Docker container chạy chương trình đó Ký tự “*” có thé được
sử dụng thay cho prog, tức là *.stdin dành cho tất cả các tạp phâm stdin và *.stdout đànhcho tất cả các tạo tác stdout
e Field type: các loại filed type đưới đây được sử dụng dé xác định các trường trong
một dòng đã chọn trong tệp Sau dòng đó được xác định, thì field_type và field_id
sẽ xác định giá trị trong dòng đó.
GVHD: TS Nguyễn Ngọc Điệp 27 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 29Dé án tốt nghiệp
— TOKEN: dòng này là mã thông báo được phân cách bằng dấu cách
— PARENS: giá trịnh cần tìm được chứa trong dau ngoặc đơn “()”
— SLASH: Giá trị mong muốn nằm trong dấu gạch chéo, ví dụ: /foo/
— SEARCH: Kết quả được gan giá trị search được định nghĩa bằng filed_id, giá
trị này được voi là một biểu thức có cú pháp của hàm parse.search của python
Vi dụ: frame.number=={:d} sẽ nhận được số frame
— GROUP: Được sử dụng với các loại REGEX, kết quả được đặt thành các thứ
tự nhóm biểu thức chính quy được đặt theo “field_id”
e Line_type: Mỗi filed_type bên trên sẽ phải đi kèm với line type và line_id dé định
vị dòng trong một tệp Giá trị của line_type có các giá trỊ sau:
— LINE: line_id là thứ tự dòng (bắt đầu từ 1)
— STARTSWITH: line_id là một chuỗi Những ky tự xuất hiện đầu tiên của
một dòng bằng chuỗi đó
— HAVESTRING: line_id là một chuỗi Có nghĩa dòng này có chứ một xâu.
— REGEX: line_id là một biểu thức chính quy Cái này sẽ khớp với biểu thức
chính quy được khớp đầu tiên
— NEXT_STARTWITH: line_id là một chuỗi Dòng đứng trước của dòng này
bắt đầu bằng một chuỗi đang nhập.
— HAVESTRING_ TS: mục đích sử dụng với các tệp nhật ký đã được gan dấu
thời gian Mỗi mục chứa chuỗi được xác định trong line_1d sẽ có kết quả đượclưu giá trị gán với mốc thời gian
— REGEX TS: tương tự như HAVESTRING_TS, nhưng là biểu thức chính
quy, bao gồm cả tùy chon sử dụng trường GROUP field_type
e Line_id: có thé là một giá trị được cá nhân hóa từ tệp param.config Bắt đầu bang
“ger
e Field_type (không có line_id): Các field_types thực hiện trên toàn bộ tệp, không chi
trên dòng đã chọn Vì thế sẽ không có trường line_type hoặc line_id
— LINE COUNT: số lượng dòng trong file
— SIZE: Dung lượng của tệp
GVHD: TS Nguyễn Ngọc Điệp 28 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 30— LOG_TS: Kiểu này được sử dung trong tệp nhật ký, mỗi dòng trả về TRUE
nếu dòng đó chứa giá trị trong trường field_id
— FILE REGEX TS: tương tự như LOG TS, tuy nhiên sử dụng biểu thức
— STRING_COUNT: Số lần xuất hiện của chuỗi trong trường field_id
— COMMAND COUNT: Được dùng với các tệp bash_history, dém số lần xuất
hiện của lệnh được cung cấp trong trường field_id
— Filed_id: Tùy thuộc vào field_type Nếu field_type là SEARCH thì file_id sẽ là
biểu thức tìm kiếm Nếu field_type là “CONTAINS” thì field_id sẽ được coi là
chuôi.
— Ví dụ:
fileview = client:telnet.stdout:\4:STARTWITH:My string is:
Cú pháp trên gán cho fileview một giá trị bằng với mã thông báo được phan táchbăng dấu cách thứ tư trên dong đầu tiên bat đầu băng chuỗi “My string is:” trong dau ra củachương trình có tên telnet Các kết quả được trích xuất từ các lệnh, thao tác của người thựchiện được so sánh với các giá trị kết quả dự kiến dé xác định xem các mục tiêu đã được đáp
ứng hay chưa Các mục tiêu đánh gia là đúng hoặc sai.
— Ví du:
telnetview = matchany : \ string_equal : fileview : \ parameter.FSTRING
GVHD: TS Nguyễn Ngọc Điệp 29 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 31Dé án tốt nghiệp
Sẽ chỉ ra rằng người thực hiện đã đạt được mục tiêu “telnetview” nếu bất kỳ ký hiệu
“fileview” nào khớp với giá trị của tham số FSTRING Trong ví dụ này, tham số FSTRING
là duy nhất cho mỗi người thực hiện, như mô tả trong phần trên
1.4.2.4 Cách thức đánh giá kết quả tự động
Sau khi nhận được các file đóng gói của người thực hiện, người quản lý sẽ chuyển những
tệp đó vào thư mục labtainer_xfer trong Labtainers Ví dụ: các file đóng gói của bài thực
hành rsa của người thực hiện sẽ được chuyên vào trong thư mục có tên giống tên bài thực
Hình 1.8: Các file kết quả được đóng gói của bài thực hành
Đề tiến hành kiểm tra kết quả đã thực thi được sử dụng lệnh:
checkwork <1abname>
1.5 Kết chương
Chương I trình bày tổng quan giới thiệu về Labtainer, kiến trúc hệ thong, quy trìnhthực hành, tham số hóa, ưu nhược điểm của Labtainer, giới thiệu về Docker, vòng đời củaDocker, cách thức hoạt động của Docker, Môi trường thực thi Labtainer và cấu hình các
file trong trong Labtainer.
GVHD: TS Nguyễn Ngọc Điệp 30 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 32Dé án tốt nghiệp
CHƯƠNG 2: XÂY DỰNG VÀ QUẢN LÝ BÀI THỰC HÀNH
Chương I đã dé cập đến những khái niệm cơ bản cũng như wu nhược điểm củaLabtainer và Docker, tìm hiểu kiến trúc hệ thống, thành phần và vòng đời của Labtainer
và Docker.
Chương II sẽ tình bày cách các bước để xây dựng một bài lab mới trên nên tảng
Labtainer và cầu hình các file can thiết cho qua trình xây dựng bài lab Đồng thời chươngnày sẽ hướng dẫn cách lưu trữ và quản lý bài lab trên nên tảng dockerhub và github choviệc lưu trữ và lấy bài lab về cho quá trình thực hành
2.1 Cách xây dựng một bài thực hành mới
Nền tảng thực hành số cung cấp chức năng tạo bài thực hành dựa trên chương trình Lab Editor của Labtainer Chương trình này cung cấp giao diện đồ họa đề tạo bài thực hành.
Từ đường dẫn bat ky trên terminal gõ lệnh labedit néu không mở được giao diện, như hình
VỆ:
command 'gabedit' from deb gabedit
command 'tdbedit' from deb ldb-tools
ry: sudo apt install <deb name>
2.1.1 Giao diện Labtainer
— Giao diện sau khi update sử dụng lệnh labedit để hiển thị giao diện:
GVHD: TS Nguyễn Ngọc Điệp 31 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 33Dé án tốt nghiệp
Eile Run Edit Help View
Lab: telnetlab Lab running: No
Grader running: No
Containers = Networks (Cac) | HS
Hình 2.1: Giao điện của Labtainer
— Từ trên thanh điều khiển chọn mục File -> New Lab, đặt tên bài lab
Name gitlab
Base Image | base2 |*
Create Cancel
Hình 2.2: Dat tên cho bài lab
— Xây dựng bài lab mới gồm 2 container gồm client và server với địa chỉ IP
2) Sử dụng ping từ server đến client
— Đồi tên container gitlab bằng cách chuột phải vào phần Containers gitlab chọn
Rename, chuyên gitlab -> client
GVHD: TS Nguyễn Ngọc Điệp 32 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 34Đồ án tot nghiệp
Eile Run Edit Help View
Lab: gitlab Lab running: No
Grader running: No by
: dd Automated Assessment
Containers Ae Networks ^s+ 1 l
-|S6opy-frorns) ‘Results client Goals |
Individualize
Parameters
«+
stoplab a Command successful.
stopgrade
Command successful.
7
Hình 2.3: Giao diện sau khi đã đổi tên bai lab
2.1.2 Tạo container trong Labtainer
— Tạo container thứ 2 với tên server bằng cách Add ở mục Containers
Labtainers
File Run Edit Help View
Lab: gitlab Lab running: No
Hinh 2.4: Tao container trong Labtainer
2.1.3 Cau hinh mang cho bai lab
— Cấu hình mang cho bai Lab, ở phan Networks chọn Add, cau hình chi tiết mang
bang cach dién cdc théng tin mang
GVHD: TS Nguyễn Ngọc Điệp 33 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 35Đồ án tot nghiệp
File Run Edit Help View
Lab: gitlab Lab running: No
Grader running: No by
Containers : Add Networks — Automated Assessment
client Please fill the sections below to create a new network: (Goats)
stopgrade Create | |Cancel
Command successful.
Hinh 2.5: Cau hinh dai mang cho bai lab
— Câu hình mạng cho client và câu hình mạng tương tự với server
Container Config: client
Edit
_Í General | Docker | Hosts | GNs3 | other |
Container: client Base: labtainer.base2
User name Terminal quantity
Hình 2.6: Cau hình mạng cho server
— Cấu hình file dockerfile, qua đường dẫn labtainer -> trunk -> labs -> gitlab ->
dockerfiles trong folder gồm các file ở dạng: Dockerfile.<tén bài lab>.<tên
container>.student
GVHD: TS Nguyễn Ngọc Điệp 34 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 36Hình 2.7: Cau hình Dockerfile cho client
— Câu hình tương tự với container server:
ARG registry
FROM $regtstry/Labtatner network2
FROM $regtstry/Labtatner network.ssh
#FROM Sregtstry/Labtatner.centos
#FROM Sregtstry/Labtatner lamp
bia
Hinh 2.8: Cau hinh Dockerfile cho server
2.1.4 Cấu hình file treatalocal
— _ Cấu hình file treatalocal: Tim folder labtainer -> trunk -> labs -> <tén bài
lab> -> <tén container> -> _bin Trong folder _bin chưa có file
treataslocal cần tạo bang lệnh: touch treataslocal.
fixlocalsh treatasloca
treataslocal
Hình 2.9: Cau hình file treataslocal cho client
Hinh 2.10: Cau hinh file treataslocal cho server
GVHD: TS Nguyễn Ngọc Điệp 35 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 372.1.5 Cấu hình file result
{create} { Remove all}
Result Tag Container File Field Type
Timestamp Type _| ^ | | Delete
ssh den 4) sshstaou —— Ícomans vị reo aun |)| 37220020 re |
—” (x) [ee )
Field ID Timestamp Type [+ | Lpelee )
in server ¥| ping.stdout [conan , J
Hình 2.11: Cau hình file result
ubuntu@client: ~
File Edit View Search Terminal Help
ubuntu@cLient:~$ ssh ubuntu@172.20.0.20
he authenticity of host '172.20.0.20 (172.20.0.20)' can't be established.
ECDSA key fingerprint is SHA256:ZtE8xi5Y50aUktZ/XtgjIs1c5jxYQB84Vq5ofmlgGng.
Are you sure you want to continue connecting (yes/no/[fingerprint] )?
Hinh 2.12: Thuc thi lénh trén client
ubuntu@server: ~
File Edit View Search Terminal Help
lubuntu@server:~$ ping 172.20.0.10
-20.0.10 (172.20.0.10) 56(84) bytes of data.
from 172.20.0.10: icmp seq=1 ttl=64 time=0.085
from 172.20.0.10: icmp seq=2 ttl=64 time=0.142 from 172.20.0.10: icmp seq=3 ttl=64 time=0.206 from 172.20.0.10: icmp seq=4 ttl=64 time=0.181
from 172.20.0.10: icmp seq=5 ttl=64 time=0.120 from 172.20.0.10: icmp seq=6 ttl=64 time=0.129
student@ubuntu :~/Labtainer/Labtainer-student$ checkwork gitlab
Results stored in directory: /home/student/labtainer_xfer/gitlab
Labname gitlab
Hình 2.14: Kết quả chương trình
GVHD: TS Nguyễn Ngọc Điệp 36 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 38Dé án tốt nghiệp
2.2 Xây dựng bài lab theo mô hình Socket
Dạng bài lab xây dựng theo mô hình Socket thường được xuất hiện trong các cuộc thiCTF, mô hình bao gồm máy client và máy server Người chơi sẽ dùng máy client thực hiện
kết nối đến server và nhận, gửi các yêu cầu và thông điệp sang server Khi giải quyết được
van đề với thông điệp đúng bên server sẽ xác nhận và gửi lại cho bên client cờ (flag) dé xác
nhận đã giải quyết được vấn đề
2.2.1 Lý do
Các bài thực hành theo mô hình Socket còn là một lĩnh vực mới và chưa được khám
phá sâu rộng Việc tao va duy tri các server dé hỗ trợ bài lab Socket đòi hỏi tài nguyên vachi phí đáng kể Việc cung cấp một môi trường thực tế và ôn định đòi hỏi sự đầu tư về phầncứng, băng thông và các dịch vụ điện toán đám mây Điều này làm tăng chi phí và khả năngtài chính dé duy trì các bài lab trong thời gian dai và dam bảo rang chúng hoạt động mộtcách 6n định và an toàn
Một trong những thách thức lớn là duy trì sự liên tục của server Việc này đặt ra các
vấn đề về bảo trì, cập nhật, và giám sát để đảm bảo rằng bài lab luôn sẵn sàng và hoạt động
một cách chính xác Sự 6n định của server là quan trọng dé người chơi có thể tập trung vàogiải quyết các thách thức mà không bị gián đoạn
Với Labtainer sẽ xử lý được các vấn đề khó khăn trên, việc xây dựng các bài lab theo
mô hình Socket trong Labtainer sẽ tối ưu được chỉ phí, duy trì được sự liên tục của server,không phụ thuộc vào môi trường trực tuyến
2.2.2 Lợt ích
Việc xây dựng bài thực hành theo mô hình Socket sẽ đem một số lợi ích sau:
— Tạo điều kiện cho người học tìm ra cách tận dụng và khai thác lỗi trên server một
cách sáng tạo đề giải quyết các thách thức.
— Nắm bắt kỹ năng làm việc với socket, từ việc thiết lập kết nối đến truyền gửi dữ
liệu qua mạng.
— Tạo cơ hội để thử nghiệm và áp dụng kiến thức về bảo mật, mã hóa thông tin được
truyén và nhận giữa client và server.
GVHD: TS Nguyễn Ngọc Điệp 37 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 39— Cải thiện khả năng lập trình mạng, giúp người hoc năm cách kêt nôi, quan lý va
duy trì kêt nôi mạng.
— Cung câp trải nghiệm thực tê vê việc làm việc với mạng và bảo mật, giúp người
học hiêu rõ hơn về cách cách ứng dụng và dịch vụ tương tac qua mạng,
2.2.3 Cách xây dựng
Xây dựng I bài mau theo mô hình socket với các thông tin yêu cầu sau:
e Các máy hoạt động trong dai mạng 172.20.0.0/24
e 1 máy server với IP: 172.20.0.2
e 1 máy client với IP: 172.20.0.3
e Yêu cau: Khi biết được IP server, client sẽ thực hiện kết nối đến server và nhận được
yêu cầu từ server, client sẽ giải quyết vấn đề và gửi lại thông điệp kết quả cho server.e_ Server luôn luôn trong quá trình hoạt động và máy server luôn ở chế độ an
— Xây dựng 2 container client và server theo hướng dẫn mục 2.1.2 và cau hình mạng
theo hướng dẫn mục 2.1.3 Khi đó ta sẽ được:
File Run Edit Help View
Lab: socket Lab running: No
Grader running: No
Automated Assessment _
Add | Copy from |
Containers Networks Add
Results J
SOME_NETWORK 172.20.0.0/24 |
server ( Goals )
client Individualize
No lab manual found at docs/python.pdf Use 'Edit=>Lab documents' and create a lab manual there, or ^
change the name in read_first.txt to match your lab manual.
No about.txt Found for this lab,
No keywords.txt found For this lab.
v
Hình 2.15: Giao điện Labtainer cho dang bài socket
— Câu hình dockerfile cho từng máy server
“+ Chú ý: Trong dockerfile khi cai đặt các môi trường, thư viện, lệnh thực thi
cần phải chỉ ghi đường dẫn tuyệt đối
GVHD: TS Nguyễn Ngọc Điệp 38 SVTH: Nguyễn Việt Anh - DI9CQAT04-B
Trang 40Nhung trong dockerfile cần chỉ rõ đường dẫn cụ thé của python va đường dẫn của
main.py Nên khi cải đặt trong dockerfile như sau:
/usr/bin/python3.8 /home/ubuntu/main.py
Với môi trường python chạy chương trình là python3.8, và đường dẫn tuyệt đối
cua file main.py.
ENV APT_SOURCE Sapt_source
RUN sudo In -sf /usr/bin/python3.8 /usr/bin/python
USER Suser_name
ENV HOME /home/Suser_name ADD $labdir/Simagedir/home_tar/home.tar $HOME
ADD $labdir/$lab.tar.gz $HOME
USER root
CMD ["/bin/bash", "-c", "/usr/bin/python3.8 /home/ubuntu/server.py"]
Hinh 2.16: Cau hinh Dockerfile cho serverTrong dockerfile có 1 số thông tin quan trọng cần cài dat:
RUN sudo In -sf /usr/bin/python3.8 /usr/bin/python
Lệnh trên được sử dung dé chuyên đổi môi trường python cho máy ảo server Thôngthường, mặc định của môi trường python trong máy ảo là phiên ban 2 can chuyển môitrường cao hơn sẽ thực thi được các câu lệnh socket kết nối
Cần phải biết được trong máy ảo có những phiên bản python nào, và phiên bản nào cao
nhat, bang cách kiêm tra với:
cd /usr/bin (trên máy ảo)
GVHD: TS Nguyễn Ngọc Điệp 39 SVTH: Nguyễn Việt Anh - DI9CQAT04-B