Tóm tắt Với sự phát triển của cơ sở hạ tầng hệ thống mạng máy tính thì nguy cơ về mất an toàn thông tin đi kèm theo đó là rất cao, bởi dữ liệu không được quản lý một cách tập trung mà đư
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
BÙI ĐỨC HƯNG
HỆ THỐNG QUẢN LÝ KHÓA TẬP TRUNG HỖ TRỢ XÁC THỰC 2 LỚP SỬ DỤNG OTP CHO MẠNG CÁC
MÁY CHỦ QUY MÔ LỚN
LUẬN VĂN THẠC SĨ KỸ THUẬT CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN
Hà Nội – 2018
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
BÙI ĐỨC HƯNG
HỆ THỐNG QUẢN LÝ KHÓA TẬP TRUNG HỖ TRỢ XÁC THỰC 2 LỚP SỬ DỤNG OTP CHO MẠNG CÁC
MÁY CHỦ QUY MÔ LỚN
LUẬN VĂN THẠC SĨ KỸ THUẬT CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS TS NGUYỄN LINH GIANG
Hà Nội - 2018
Trang 3Lời cảm ơn
Đầu tiên, em xin được gửi lời cảm ơn trân thành nhất đến thầy giảng viên hướng dẫn PGS.TS Nguyễn Linh Giang, thầy đã giúp em định hướng và chọn lựa đề tài nghiên cứu Nhờ có sự hướng dẫn, dìu dắt, động viên và những góp ý rất chuyên môn của thầy mà em mới có thể hoàn thành được đề tài nghiên cứu này
Tiếp đến em muốn gửi lời cảm ơn tới tập thể các thầy cô, các anh chị nghiên cứu sinh tại Bộ môn Mạng máy tính, viện Công nghệ thông tin và Truyền thông đã tạo điều kiện môi trường, cơ sơ vật chất, phòng thí nghiệm cũng như kinh nghiệm nghiên cứu để giúp em thực hiện các tính toán, đo đạc trong đề tài luận văn này
Cuối cùng, em muốn gửi lời cảm ơn tới gia đình, bạn bè đã luôn sát cánh để động viên, hỗ trợ và những sự hy sinh thầm lặng của mọi người để em có thể tập trung hoàn toàn vào công việc nghiên cứu
Trang 4Tóm tắt
Với sự phát triển của cơ sở hạ tầng hệ thống mạng máy tính thì nguy cơ về mất an toàn thông tin
đi kèm theo đó là rất cao, bởi dữ liệu không được quản lý một cách tập trung mà được lưu trữ phân tán tại nhiều nơi, điều này rất có thể sẽ trở thành một kẽ hở để tin tặc có thể khai thác thông tin người dùng và truy cập trái phép vào hệ thống máy chủ của các cơ quan tổ chức Chính vì thế em đã lựa chọn đề tài này cho luận văn thạc sĩ của mình để xây dựng một giải pháp cho phép tăng cường khả năng quản lý tập trung cũng như an toàn thông tin cho hệ thống mạng máy tính Trong luận văn, em tập trung xem xét và đánh giá các
hệ thống quản lý truy cập máy chủ hiện nay, vốn vẫn còn hạn chế trong kiến trúc của giải pháp và gây ra khó khăn trong việc quản lý tập trung Song song với đó, em thực hiện đề xuất và xây dựng một hệ thống cho phép quản lý dễ dàng và thuận tiện hơn với người dùng, đồng thời thêm vào các nhân tố xác thực bổ sung bên cạnh các cơ chế xác thực truyền thống đã có để tăng mức độ bảo mật cho việc truy cập vào máy chủ
Trang 5Mục lục
Chương 1 : Nhiệm vụ của đề tài……… 9
1 Đặt vấn đề……… 9
2 Phát biểu bài toán, các nguy cơ và công nghệ sử dụng……….9
3 Cấu trúc luận văn và tổng kết chương….……… 10
Chương 2: Xây dựng giải pháp……… 11
1 Phân tích thực trạng các giải pháp đang có hiện nay……… 11
1.1 Các cách thức phổ biến để truy cập máy chủ……… 11
1.1.1 Keybox……… 11
1.1.2 Userify……… 12
1.1.3 RCDevs Spankey……… 13
1.2 Đánh giá………14
2 Cơ sở lý thuyết của giải pháp……….14
3 Xây dựng giải pháp và kiến trúc tổng thể cho giải pháp……….16
3.1 Một số yêu cầu thực tế từ bài toán……… 16
3.2 Đề xuất mô hình quản lý khóa tập trung BKPortal……….17
3.3 Mô hình phân rã chức năng và các yêu cầu tính năng chi tiết của hệ thống………19
3.3.1 Chức năng đăng nhập 2 bước……….19
3.3.2 Chức năng quản lý thống kê trên giao diện Dashboard……… 19
3.3.3 Chức năng quản lý máy chủ……… 20
3.3.4 Chức năng quản lý người dùng……… 20
3.3.5 Chức năng quản lý quyền truy cập………20
3.3.6 Các chức năng của BKPortal agent………20
3.4 Đặc tả chi tiết thiết kế hệ thống……… 20
3.5 Thiết kế cơ sở dữ liệu……… 69
4 Tóm tắt và tổng kết nội dung chương………79
Chương 3 : Phát triển thử nghiệm hệ thống……… 80
1 Triển khai và cài đặt hệ thống ……… ………80
1.1 Cấu hình vật lý cài đặt hệ thống……….80
1.2 Kiến trúc triển khai hệ thống ……… ……… 80
2 Kết quả cài đặt hệ thống………81
3 Thử nghiệm kịch bản tấn công và cách giải quyết các dạng tấn công của hệ thống………86
4 Đo đạc hiệu năng của hệ thống quản lý khóa……….89
5 Tóm tắt và tổng kết nội dung chương………91
Chương 4 : Kết luận………92
1 Đánh giá các công việc đã làm được……… 92
2 Định hướng phát triển trong tương lai……… 92
Tài liệu tham khảo……… 93
Trang 6Bảng mô tả thuật ngữ
STT Thuật ngữ Định nghĩa
1 OTP One Time Password, là loại mật khẩu sử dụng một lần và được sử dụng như
lớp bảo vệ thứ hai trong việc đăng nhập vào hệ thống
2 SSH Secure Shell, là một shell bảo mật, hỗ trợ người dùng truy cập từ xa đến hệ
thống thông qua giao diện dòng lệnh
3 Người dùng Là người dùng thông thường của hệ thống
4 Quản trị viên Là quản trị viên trong một công ty hoặc một tổ chức mà triển khai hệ thống
vào cơ sở hạ tầng của mình, có quyền thực hiện mọi thao tác trên công ty mình quản lý
5 Quản trị hệ thống Là người quản trị cao nhất của toàn bộ hệ thống, có quyền thực hiện mọi thao
Trang 7Danh sách hình vẽ
Hình 1 Keybox……… 12
Hình 2 Userify……… 13
Hình 3 RCDevs Spankey……… 14
Hình 4 Kiến trúc hệ thống……….17
Hình 5 BKPortal Server……… ……… 18
Hình 6 BKPortal linux agent……….19
Hình 7 Mô hình phân rã chức năng……… 19
Hình 8 Lược đồ Use case của hệ thống……… 21
Hình 9 Đăng nhâp vào BKPortal……… 22
Hình 10 Màn hình đăng nhập………23
Hình 11 Biểu đồ luồng xử lý đăng nhập………24
Hình 12 Đăng nhập vào máy chủ……… 24
Hình 13 Biểu đồ luồng dữ liệu đăng nhập máy chủ……… 26
Hình 14 Biểu đồ luồng dữ liệu đăng nhập máy chủ offline………27
Hình 15 Xem Dashboard……… 27
Hình 16 Màn hình chức năng xem Dashboard……… 29
Hình 17 Biểu đồ luồng mô tả chức năng xem Dashboard……… 30
Hình 18 Quản lý thông tin cá nhân………30
Hình 19 Màn hình chức năng quản lý thông tin cá nhân………31
Hình 20 Biểu đồ luồng xử lý thông tin cá nhân……… 32
Hình 21 Thêm token OTP……….33
Hình 22 màn hình thêm OTP………34
Hình 23 Biểu đồ luồng xử lý thêm token OTP……… 35
Hình 24 Thêm SSH token bằng tạo cặp khóa mới……….35
Hình 25 màn hình chức năng thêm SSH token bằng tạo cặp khóa……….36
Hình 26 Biểu đồ luồng xử lý thêm SSH token……… 37
Hình 27 Thêm SSH token bằng cách tải lên khóa công khai……….37
Trang 8Hình 28 màn hình chức năng tải lên khóa công khai……….39
Hình 29 Biểu đồ luồng xử lý tải lên khóa công khai……… 40
Hình 30 Xem danh sách dự án……… 40
Hình 31 màn hình chức năng xem danh sách dự án……… 41
Hình 32 Biểu đồ luồng mô tả xem danh sách dự án……… 42
Hình 33 Xem danh sách máy chủ……… 42
Hình 34 màn hình xem danh sách máy chủ……… 43
Hình 35 Biểu đồ luồng xử lý xem danh sách máy chủ……… 44
Hình 36 Xem chi tiết máy chủ……… 44
Hình 37 màn hình chức năng xem chi tiết máy chủ……… 45
Hình 38 Biểu đồ luồng xử lý xem chi tiết máy chủ………46
Hình 39 Tìm kiếm……….46
Hình 40 Cài đặt agent………47
Hình 41 Biểu đồ luồng xử lý cài đặt agent……….48
Hình 42 Tự động cập nhât agent……… 48
Hình 43 Biểu đồ luồng xử lý tự động cập nhật agent……….50
Hình 44 Tự động thêm người dùng vào danh sách truy cập……… 50
Hình 45 Biểu đồ luồng xử lý thêm người dùng vào danh sách truy cập……….52
Hình 46 Cài đặt tự động agent trên cụm máy chủ……… 52
Hình 47 Biểu đồ luồng xử lý cài đặt tự động agent trên 1 cụm máy chủ………54
Hình 48 Quản lý một nhóm máy chủ……….55
Hình 49 Tạo nhóm máy chủ mới……… 55
Hình 50 màn hình chức năng tạo nhóm máy chủ mới………56
Hình 51 Biểu đồ luồng xử lý tạo nhóm máy chủ mới………57
Hình 52 Gán quyền truy cập máy chủ……… 57
Hình 53 màn hình gán quyền truy cập máy chủ……….58
Hình 54 Biểu đồ luồng xử lý gán quyền truy cập máy chủ……….60
Hình 55 Quản lý máy chủ……….60
Hình 56 Thêm máy chủ mới……… 61
Hình 57 màn hình thêm máy chủ mới……… 62
Trang 9Hình 58 Biểu đồ luồng xử lý thêm máy chủ mới……… 63
Hình 59 Gán quyền truy cập máy chủ……… ….63
Hình 60 màn hình gán người dùng vào máy chủ……… 64
Hình 61 Biểu đồ luồng xử lý gán quyền truy cập máy chủ……….65
Hình 62 Chỉnh sửa SUDOER……… 65
Hình 63 Biểu đồ luồng xử lý chỉnh sửa SUDOER……….66
Hình 64 Kích hoạt / Vô hiệu hóa người dùng………66
Hình 65 Thay đổi quyền của người dùng……… 67
Hình 66 Đồng bộ với BKPortal Key Server từ Linux agent……… 68
Hình 67 Biểu đồ luồng xử lý đồng bộ người dùng……….69
Hình 68 Mô hình ERD của kiến trúc BKPortal……….70
Hình 69 Kiến trúc triển khai hệ thống……… 80
Hình 70 Truy cập vào trang chủ của Portal quản lý khóa tập trung ……… 81
Hình 71 Quản trị viên tạo máy chủ mới trên Portal để chuẩn bị đồng bộ ……… ……… 82
Hình 72 Portal tự động sinh mã cài đặt agent cho máy chủ vật lý ……….…82
Hình 73 Agent được cài đặt lên máy chủ và tự động đồng bộ với Portal quản lý khóa ……… 83
Hình 74 Quản trị viên tạo token OTP cho người dùng truy cập vào hệ thống Portal và máy chủ vật lý … 83
Hình 75 Gán khóa truy cập công khai tương ứng với người dùng ……….84
Hình 76 Agent thực hiện cài đặt tự động lên máy chủ vật lý ……….85
Hình 77 Thực hiện ssh vào máy chủ, Portal thực hiện các bước xác thực và yêu cầu OTP của người dùng 86
Hình 78 Hiệu năng khi đồng bộ 1000 máy chủ ……….89
Hình 79 Hiệu năng khi đồng bộ 2000 máy chủ……… 90
Hình 80 Hiệu năng khi đồng bộ 3000 máy chủ……… 91
Trang 10Danh sách các bảng
Bảng 1 Danh sách bảng dữ liệu……….…………71
Bảng 2 account_active……….………….72
Bảng 3 admin……….……… 72
Bảng 4 company……….…… 72
Bảng 5 config……….……… 73
Bảng 6 fp_ability……….…….73
Bảng 7 fp_role……….……….73
Bảng 8 fp_role_ability……… 73
Bảng 9 fp_user……….……….73
Bảng 10 fp_user_role………73
Bảng 11 group……….……….74
Bảng 12 machine……….…….74
Bảng 13 machine_localuser……… 75
Bảng 14 machine_session……….75
Bảng 15 machinetoken……….76
Bảng 16 passwordreset……….76
Bảng 17 project……….………76
Bảng 18 project_admin……….77
Bảng 19 realm……….……… 77
Bảng 20 token……….……… 77
Bảng 21 token_infor……….78
Bảng 22 user……….…………78
Bảng 23 user_machine_group……… 79
Trang 11Chương 1 : Nhiệm vụ của đề tài
1 Đặt vấn đề
Trong các năm gần đây, công nghệ thông tin càng ngày càng đóng vai trò then chốt trong mọi lĩnh vực của cuộc sống và đã trở thành cơ sở hạ tầng cho mọi ngành khác phát triển Như vậy nhu cầu phát triển hạ tầng máy chủ là rất cao và để tăng được chất lượng dịch vụ cho khách hàng, giảm độ trễ khi trao đổi qua mạng internet Để giải quyết được các bài toán này thì các máy chủ cần được đặt phân tán ở nhiều khu vực địa lý, đồng thời với số lượng lớn và lưu trữ rất nhiều các thông tin của khách hàng thì vấn đề về quản lý truy cập các máy chủ này là một bài toán rất quan trọng cần phải giải quyết
Trên thực tế hiện nay thì các giải pháp quản lý dựa trên mật khẩu người dùng hoặc khóa truy cập Nếu
sử dụng khóa thì cần các cơ chế quản lý khóa và phân phối khóa đến người dùng Thông thường các nguy
cơ về mất an toàn với khóa lại không phải do phạm vi của mật mã học hay kỹ thuật mật mã mà lại do chính sách và cơ chế quản lý, phân phối khóa Cùng vì nguyên nhân này mà phần lớn các cuộc tấn công vào các
hệ thống mật mã là nhằm vào cách thức quản lý khóa Do vậy việc quản lý khóa cần đảm bảo chính xác, linh hoạt và các khóa cần được bảo vệ một cách an toàn nhất.Hơn nữa việc quản trị viên nghỉ việc cũng gây
ra những khó khăn cho nhà quản lý như phải thu hồi quyền truy cập, thu hồi khóa để đảm bảo họ không thể truy cập lại và nhiều vấn đề phát sinh khác gây mất an toàn thông tin
2 Phát biểu bài toán, các nguy cơ và công nghệ sử dụng
2.1 Phát biểu bài toán và các nguy cơ
Với những nhu cầu cấp thiết đặt ra, em muốn tìm hiểu các giải pháp quản lý khóa hiện nay và những vấn đề còn tồn tại của chúng, đồng thời muốn xây dựng một giải pháp quản lý truy cập an toàn, tập trung, thân thiện hơn với người dùng thông thường và tăng cường được tính bảo mật
Như vậy bài toán được đặt ra trong khuôn khổ luận văn của em là xây dựng được một hệ thống quản
lý truy cập máy chủ có các tính năng nổi bật như:
Các khóa truy cập hoặc thông tin đăng nhập sẽ được lưu trữ một cách tập trung, an toàn
Có các cơ chế để thu hồi khóa một cách tự động, ngăn chặn truy cập lại
Bổ sung thêm các nhân tố xác thực 2 lớp vào tất cả các quá trình xác thực, cụ thể hơn là sử dụng các mã OTP
Đồng thời hệ thống sẽ cung cấp các cơ chế để đảm bảo an toàn trên đường truyền cũng như đảm bảo an toàn trong quá trình phân phối khóa chống lại các nguy cơ tấn công và mất an toàn thông tin
Trên thực tế, các hệ thống quản lý khóa thường sẽ là mục tiêu của hacker hoặc người dùng có ý đồ xấu, bởi lẽ việc tấn công vào các kỹ thuật mật mã sẽ phức tạp và khó khăn hơn nhiều việc tấn công vào các quá trình phân phối khóa từ đầu cuối đến đầu cuối Các quá trình này khi vận hành trên môi trường thực tế sẽ phải đối mặt với rất nhiều các nguy cơ Có thể kể đến như:
Trang 12 Tấn công vào tài khoản người dùng Hacker sẽ thường tìm kiếm và lợi dụng những tài khoản yếu (ví dụ tài khoản dễ đoán có mật khẩu yếu) hoặc lừa người dùng vào các bẫy giao diện như các hình thức tấn công Phising
Nghe lén trên đường truyền với các hình thức như Man-In-The-Middle với mục đích nghe lén các gói tin để lấy cắp khóa trên đường truyền hoặc thực hiện giả mạo, chèn khóa của hacker thay vì sử dụng khóa truy cập của người dùng
Người dùng có thể bất cẩn làm lộ thông tin đăng nhập, hacker khi này có thể khai thác để truy cập vào hệ thống
Tấn công làm tê liệt hệ thống quản lý khóa gây mất kết nối tới máy chủ bằng các hình thức như tấn từ chối dịch vụ Ddos, spam Điều này vô tình làm mất khả năng kết nối của người dùng tới máy chủ
Tấn công giả mạo người dùng hợp lệ để thực hiện các yêu cầu bất minh lên hệ thống quản lý khóa
2.2 Công nghệ được sử dụng trong bài toán
Về mặt công nghệ, hệ thống đề xuất sử dụng các công nghệ trên nền tảng Python và các kỹ thuật caching
để giảm tải cho phía server Hệ thống sẽ hoạt động kết hợp với nền tảng mã nguồn mở hỗ trợ truy cập qua ssh là OpenSSH và một số thư viện hỗ trợ xác thực trên nền tảng linux như PAM module Cơ sở dữ liệu người dùng sử dụng hệ thống quản trị MariaDB Kiến trúc giải pháp gồm 2 thành phần, phần thứ nhất là hệ thống quản lý khóa BKPortal và thành phần thứ 2 là các agent được viết và cài đặt trên các máy chủ cần được hệ thống quản lý
3 Cấu trúc luận văn và tổng kết chương
Cấu trúc luận văn gồm có 4 chương:
Chương 1 : Giới thiệu bài toán cần giải quyết, mục tiêu đề tài và các công nghệ được sử dụng cho giải pháp đề xuất
Chương 2 : Giới thiệu một số giải pháp đang có hiện này, những đặc điểm đang tồn tại của các giải pháp này Sau đó đưa ra mô hình giải pháp đề xuất, trình bày các yêu cầu kỹ thuật, tính năng cần
có và thiết kế chi tiết của hệ thống, thiết kế cơ sở dữ liệu trong hệ thống
Chương 3: Hướng dẫn cài đặt hệ thống và thử nghiệm hệ thống trên các máy chủ giả lập
Chương 4: Trình bày các đánh giá, kết luận và tài liệu tham khảo được sử dụng trong luận văn Trong chương này tác giả đã trình bày tóm tắt nội dung của bài toán cần giải quyết, các nguy cơ tồn tại trong thực tế mà giải pháp phải đối mặt cũng như kết cấu tổng quan của luận văn Trong chương tiếp theo, luận văn sẽ tập trung đi sâu vào phân tích các ưu nhược điểm của các giải pháp đang tồn tại hiện nay, từ đó
để xây dựng một thiết kế chi tiết cho giải pháp mới hiệu quả, an toàn và khắc phục được các nhược điểm đang tồn tại của các giải pháp đã có
Trang 13Chương 2: Xây dựng giải pháp
1 Phân tích thực trạng các giải pháp đang có hiện nay
1.1 Các cách thức phổ biến để truy cập máy chủ
Hiện nay để truy cập vào máy chủ linux và window server thường sử dụng 2 phương pháp chính Phương pháp thứ nhất là khi người dùng truy cập vào máy chủ sẽ yêu cầu đăng nhập với tên tài khoản và mật khẩu đăng nhập Giải pháp thứ hai là sử dụng khóa truy cập, cụ thể hơn là sử dụng các cặp khóa công khai và khóa riêng, với giải pháp này máy chủ sẽ phải có khóa công khai của người dùng, khi người dùng đăng nhập mới sử dụng khóa riêng để xác thực người dùng
Với giải pháp thứ nhất, người dùng không cần lưu trữ hay cung cấp bất kỳ tệp tin nào để thực hiện đăng nhập mà chỉ cần nhớ mật khẩu, giải pháp này khá đơn giản nhưng tính an toàn không được đảm bảo do mật khẩu có thể không đủ phức tạp hoặc có thể quên mất mật khẩu dẫn đến không truy cập được mà cần nhờ đến quản trị viên của các máy chủ đó Giải pháp thứ hai là sử dụng khóa, giải pháp này người dùng buộc phải có khóa riêng của mình mỗi khi cần đăng nhập vào máy chủ, giải pháp này có mức an toàn cao hơn nhiều do sử dụng cơ chế xác thực khóa và phụ thuộc vào độ phức tạp của thuật toán sinh khóa Tuy nhiên giải pháp này cũng sẽ phát sinh các nhược điểm như sau, thứ nhất là khóa công khai sẽ phải được lưu trữ phân tán trên các máy chủ, như vậy sẽ khó có thể bảo vệ khóa một cách tập trung khi có một số lượng lớn đến cực lớn máy chủ cần quản trị, thứ hai là chưa có cơ chế thu hồi khóa, đặt thời hạn cho tài khoản nhất
là khi quản trị viên của hệ thống nghỉ việc Và hơn nữa với các kỹ thuật tấn công đang có hiện nay thì cả 2 giải pháp vốn sử dụng cơ chế đăng nhập chỉ dựa trên 1 nhân tố là có độ an toàn chưa cao
Để giải quyết các vấn đề phát sinh như trên, một số các platform và framework đã được xây dựng để
hỗ trợ cho quản trị viên quản lý truy cập Chúng ta sẽ tiến hành thực hiện đánh giá một số các nền tảng khá phổ biến hiện nay để xem kiến trúc và các ưu nhược điểm của các mô hình này
1.1.1 Keybox
Keybox là một nền tảng mã nguồn mở Về cơ chế keybox cho phép cấu hình mỗi máy chủ thành 1 system bao gồm chính máy chủ vật lý đó và một mật khẩu root đại diện cho máy chủ Ngoài ra còn hỗ trợ cấu hình một cụm các system thành 1 profile Đối với người dùng để có thể kết nối đến máy chủ, người dùng sẽ phải tạo ra một cặp khóa, quản trị viên khi này sẽ tạo ra tài khoản cho người dùng trên nền của Keybox và gán “system” hoặc “profile” cho người dùng đó, tiếp đó người dùng gửi khóa công khai của mình cho Keybox và nó sẽ thực hiện phân phối khóa đến máy chủ hoặc cụm máy chủ mà được gán cho người dùng Sau khi quá trình này kết thúc người dùng có thể thực hiện truy cập đến máy chủ, tuy nhiên thay vì kết nối trực tiếp đến máy chủ, người dùng sẽ thực hiện kết nối qua một kênh truyền HTTPS đến giao diện console của Keybox trên nền web và Keybox khi này mới khởi tạo một phiên kết nối SSH đến máy chủ vật lý Ngoài ra Keybox cũng hỗ trợ sử dụng OTP
Trang 14Như vậy với kiến trúc của Keybox thì các khóa mặc dù vẫn nằm phân tán trên các máy chủ vật lý nhưng đã được quản lý một cách tập trung hơn thông qua kênh quản lý và phân phối của Keybox Tuy nhiên giải pháp này cũng có một số nhược điểm đó là các mật khẩu root của các máy chủ khi này sẽ được lưu tập trung ở trên server của Keybox, sẽ tiềm ẩn rủi ro nếu như máy chủ của Keybox bị hacker tấn công thì hacker có thể chiếm đoạt hoàn toàn các mật khẩu root này, hơn nữa quá trình đăng nhập phải dựa vào kênh kết nối thông qua trung gian là máy chủ của Keybox nên sẽ có độ trễ nhất định và khi máy chủ này sập thì cũng sẽ không thể kết nối được từ người dùng đến máy chủ vật lý, rõ ràng khi này cần đến nhiều máy chủ Keybox dự phòng để hỗ trợ khi một trong các máy chủ này sập
Hình 1 Keybox [13]
1.1.2 Userify
Userify là một ứng dụng dịch vụ trên nền tảng Cloud Dịch vụ này cho phép thêm các máy chủ trên portal của dịch vụ và sẽ thực hiện việc đồng bộ các máy chủ này thông qua một agent được cài đặt lên máy Agent này sẽ thực hiện truy vấn định kỳ lên máy chủ để lấy thông tin người dùng mới và cho phép chỉnh sửa người dùng theo thông tin có được từ portal Ngoài ra nền tảng này còn hỗ trợ phân quyền người dùng Đối với phiên bản dành cho doanh nghiệp thì hỗ trợ thêm cơ chế xác thực sử dụng LDAP Tuy nhiên dịch
vụ này vẫn thực hiện sao chép khóa của người dùng về phía máy chủ, như vậy khóa vẫn được lưu trữ phân
tán
Trang 15Hình 2 Userify [14]
1.1.3 RCDevs Spankey
Đây là một nền tảng cung cấp dịch vụ quản lý truy cập máy chủ và cung cấp phiên bản miễn phí với số lượng dưới 40 máy chủ Đồng thời dịch vụ này hỗ trợ OTP khi thực hiện truy cập đến máy chủ thông qua SSH Nền tảng này cung cấp một agent để cài đặt trên mỗi máy chủ được gọi là Spankey OpenSSH agent Agent này sử dụng một cơ chế của các hệ điều hành Linux là “Name Service Switch” (NSS), cơ chế này cho phép xác định cách thức mà một ứng dụng trên nền tảng Linux có thể lấy được các thông tin qua mạng internet, sử dụng cơ chế này Spankey agent sẽ kết nối với 2 module chính, môt là spankey_client_module cho phép lấy thông tin người dùng từ máy chủ của Spankey và module thứ 2 là module pam_openotp để kiểm tra thông tin OTP của người dùng Ngoài ra còn cho phép theo dõi được các phiên kết nối SSH của người dùng
Một ưu điểm cực kỳ nổi bật trong kiến trúc của Spankey so với các kiến trúc vừa mới đề cập là nó
hỗ trợ các khóa recover, các khóa này cho phép người dùng vẫn có thể truy cập được đến các máy chủ vật
lý ngay cả trong trường hợp máy chủ của Spankey bị đánh sập Và một đặc điểm quan trọng của Spankey
là nó đã thực hiện lưu khóa tập trung tại một LDAP server thay vì lưu trữ khóa phân tán như các kiến trúc trên Tuy nhiên, giải pháp này vẫn có các nhược điểm như giao diện quản lý trên nền web cực kỳ phức tạp
và rối, không phù hợp với người dùng thông thường, hơn nữa Spankey còn có một nhược điểm là không có
cơ chế xác thực từ phía client lên máy chủ Spankey và chỉ cần có địa chỉ IP của máy chủ Spankey là có thể thực hiện truy vấn được
Trang 16Hình 3 RCDevs Spankey [15]
1.2 Đánh giá
Có thể thấy rằng các giải pháp và kiến trúc hiện nay đều có các ưu và nhược điểm Tuy nhiên hầu hết các giải pháp đều thực hiện phân phối khóa của người dùng về máy chủ vật lý và làm cho khóa được lưu trữ phân tán, điều này sẽ không có lợi khi mà số lượng máy chủ càng ngày lớn, rõ ràng rủi ro của việc phân tán khóa đi khắp nơi sẽ trở nên lớn hơn Hơn nữa hầu hết các giải pháp chưa có cơ chế dự phòng thích hợp khi máy chủ của hệ thống quản lý khóa bị gián đoạn (có thể do bị hacker tấn công) và làm cho người dùng không thể kết nối đến máy chủ vật lý được nữa, điều này sẽ làm gián đoạn người dùng nhất là khi máy chủ của hệ thống quản lý khóa có thể sẽ không được phục hồi trong thời gian ngắn Nhiều hệ thống lại chưa hỗ trợ xác thực đa nhân tố, giao diện quản lý và tương tác với người dùng khá là rắc rối và phức tạp, cũng như chưa có cơ chế sinh khóa ngay từ phía cổng quản lý khóa Như vậy dựa trên việc phân tích các đặc điểm của các hệ thống quản lý truy cập máy chủ phổ biến hiện nay, em tổng hợp các ưu điểm và đề xuất một kiến trúc cải tiến từ các mô hình trên, mô hình này sẽ cố gắng làm đơn giản hóa thao tác của người dùng cũng như xây dựng lại cơ chế để quản lý và phân phối khóa thuận tiện hơn
2 Cơ sở lý thuyết của giải pháp
2.1 Khái niệm về OTP
OTP là viết tắt của cum từ “One Time Password”, đây là một loại mật khẩu chỉ có giá trị trong một phiên đăng nhập Nó được sử dụng một lần cho quá trình xác thực người dùng hoặc ngược lại cho phép người dùng xác minh tính hợp lệ của một giao dịch OTP được sử dụng rất phổ biến trong các thanh toán giao dịch điện tử mà đòi hỏi tính xác minh cực kỳ chặt chẽ
2.2 Khái niệm về các hàm băm
Hàm băm là các hàm được sử dụng để ánh xạ các bản tin có chiều dài khác nhau thành một đoạn băm
có kích thước cố định Đoạn băm được tạo ra thường có kích thước nhỏ hơn rất nhiều so với kích thước của bản tin ban đầu Giá trị của đoạn băm h được sinh ra bởi hàm băm H có dạng như sau:
Trang 17h = H(D) trong đó:
D là văn bản có chiều dài tùy ý
h là giá trị băm có chiều dài cố định
2.3 Mã hóa khóa công khai
Mã hóa khóa công khai là một dạng mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung trước đó Điều này có thể thực hiện được bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau được gọi là khóa công khai (public key) và khóa riêng (private key) Trong 2 khóa này, một khóa sẽ được sử dụng để mã hóa và khóa còn lại được sử dụng để giải mã Điểm mấu chốt của hệ thống mã hóa này là rất khó để tìm được khóa bí mật nếu chỉ biết khóa công khai Hệ thống mật mã này được sử dụng với một số mục đích như sau:
Mã hóa : Giữ bí mật thông tin trao đổi và chỉ người có khóa riêng mới có thể thực hiện giải mã
Tạo chữ ký số : Nó cho phép kiểm tra một văn bản có phải được tạo ra tương ứng với một khóa nào đó hay không
Thỏa thuận trao đổi khóa : Cho phép thiết lập kênh truyền bí mật để trao đổi thông tin giữa 2 bên
2.4 Chữ ký số khóa công khai
Đây là mô hình sử dụng các kỹ thuật mật mã để gắn người dùng với một cặp khóa công khai – khóa riêng nào đó, qua đó có thể ký vào văn bản hoặc gói tin điện tử để trao đổi thông tin một cách bí mật Khóa công khai có thể được phân phối thông qua chứng thực khóa công bởi các tổ chức được tín nhiệm cấp Quá trình sử dụng các chữ ký này gồm có 2 giai đoạn: tạo chữ ký và kiểm tra chữ ký Chữ ký số chính là thông tin đi kèm với dữ liệu để xác định chủ của dữ liệu đó
Để sử dụng được chữ ký này thì văn bản hoặc gói tin thường sẽ được băm bởi các thuật toán băm thành các chuỗi cố định và ngắn hơn văn bản hoặc gói tin gốc, sau đó sử dụng khóa công khai để thực hiện mã hóa khi đó sinh ra được chữ ký số Khi cần kiểm tra , bên nhận sẽ thực hiện giải mã gói tin bằng khóa riêng tương ứng với khóa công khai đó để lấy lại chuỗi gốc được sinh bởi hàm băm, sau đó bên nhận thực hiện băm lại văn bản hoặc gói tin nhận được và so sánh 2 chuỗi bit với nhau Nếu trùng khớp thì có thể đảm bảo gói tin đó thực sự xuất phát từ đúng người mà bên nhận đang trao đổi, ngược lại thì gói tin đó rất có thể đã
bị thay đổi hoặc chỉnh sửa nội dung bởi một bên thứ 3 nào đó trên kênh truyền dữ liệu
2.5 SSH
Đây là một giao thức được sử dụng để thiết lập kết nối một cách bảo mật SSH có cơ chế tunneling cho phép vận chuyển tải gói tin của các giao thức khác, nhờ vậy mà có thể tạo ra một kênh liên lạc an toàn để trao đổi dữ liệu Việc xây dựng một mạng kết nối trên SSH gần giống như việc sử dụng một mạng ảo VPN đơn giản SSH làm việc thông qua 3 bước đơn giản :
Bước 1 : Định danh host (hay các hệ thống tham gia phiên làm việc SSH) Tại bước này sẽ thực hiện việc trao đổi các khóa truy cập Thông thường các nền tảng phổ biến hiện nay như OpenSSH
sẽ sử dụng cơ chế khóa công khai để phân phối khóa phiên trong phiên kết nối , nhờ đó nhận diện được máy chủ và máy khách
Bước 2 : Thiết lập và mã hóa kênh truyền tin Sau khi hoàn thành quá trình trao đổi khóa, các kênh truyền được thiết lập bằng cách thống nhất các thuật toán mã hóa được sử dụng để trao đổi
Trang 18 Bước 3 : Chứng thực người dùng Quá trình này có nhiều giải pháp nhưng trong đó có 2 giải pháp nổi bật và thông dụng nhất hiện nay là sử dụng mật khẩu hoặc sử dụng phương pháp chứng thực các cặp khóa
2.6 Các mô hình sinh OTP
Có 2 dạng mô hình chính được sử dụng để sinh mã OTP bao gồm : sinh mã OTP theo sự kiện và sinh
mã OTP theo thời gian
2.6.1 Mô hình sinh OTP theo thời gian
Theo cơ chế này, hệ thống sinh mã OTP được gọi là token sẽ bao gồm 3 module : mã seedcode của thuật toán, một đồng hồ để đếm thời gian và một thuật toán mã hóa một chiều
Seedcode: đây là giá trị khởi tạo được cấu hình cho mỗi token, các token khác nhau sẽ có mã seedcode khác nhau Nó được lưu trữ trên hệ thống và đại diện cho tên truy cập của mỗi người dùng
Đồng hồ đếm: đây là đồng hồ để ghi nhận thời gian cho mỗi token Thời gian của đồng hồ được đồng bộ với thời gian của hệ thống Mỗi khi cần sinh ra mã OTP, token sẽ lấy giá trị biến thời gian của đồng hồ để tạo mã, giá trị thời gian có thể lấy chi tiết đến phút hoặc giây
Thuật toán mã hóa : sử dụng thuật toán băm SHA
2.6.2 Mô hình sinh OTP theo sự kiện
Cơ chế này cũng gần tương tự với mô hình trên, tuy nhiên điểm khác biệt là token thay vì sử dụng một đồng hồ thời gian, nó sẽ sử dụng một bộ đếm sự kiên, sự kiện có thể đơn giản là mỗi khi cần sinh ra một
mã OTP Các bộ token lúc này sẽ chứa một số lượng mã hữu hạn, có thứ tự và không bị thay đổi, kích thước
bộ các mã đó còn được gọi là cửa sổ, kích thước của cửa sổ càng lớn thì mức độ bảo mật của giải pháp càng tốt
2.7 Các tiêu chuẩn định dạng cho OTP
Thuật toán băm: Độ an toàn của mã OTP phụ thuộc vào tính bảo mật của hàm băm được sử dụng Hiện nay, tất cả các hệ thống sử dụng OTP phải hỗ trợ MD5, cần phải hỗ trợ SHA và có thể hỗ trợ MD4, các thuật toán băm đều chấp nhận các đầu vào có kích thước chiều dài tùy ý , tuy nhiên đầu
ra phải cố định
Cấu trúc dạng đầu vào: thường cấu trúc đầu vào của hệ thống sinh OTP có dạng như sau
OTP-<tên thuật toán băm><chuỗi số nguyên được sử dụng><seeder>
Cấu trúc dạng đầu ra: OTP được tạo bởi thủ tục ở trên có kích thước là 64 bit chiều dài, tuy nhiên với việc nhập bằng tay thì việc nhập chuỗi 64 bit này có thể gây ra khó khăn và gây lỗi cho người dùng Do đó OTP có thể chuyển đổi thành một chuỗi 6 từ ngắn hơn theo tiêu chuẩn ISO-646 IVCS
để giúp thuận tiện hơn cho người dùng và ngoài ra tất cả OTP đều có thể được mã hóa
3 Xây dựng giải pháp và kiến trúc tổng thể cho giải pháp
3.1 Một số yêu cầu thực tế từ bài toán
Qua các phân tích và đánh giá các giải pháp đã có ở trên, giải pháp đề xuất mới cần phải giải quyết được các vấn đề sau:
Trang 19 Thay vì để khóa công khai của người dùng được lưu trữ phân tán trên các máy chủ vật lý mà họ được gán quyền sử dụng thì cần phải lưu trữ tất cả khóa tập trung tại chỉ một nơi duy nhất là hệ thống quản lý khóa
Mặc dù các kênh truyền dữ liệu có thể đã được mã hóa như HTTPS nhưng vẫn cần có các cơ chế xác thực người dùng, xác thực máy chủ khi thực hiện truy vấn cũng như các lời gọi API lên hệ thống quản lý khóa
Cần bổ sung thêm xác thực đa nhân tố vào các cơ chế truy cập máy chủ đang có hiện nay
Cần có cơ chế phân quyền người quản trị và người dùng theo các cấp để gán quyền quản lý máy chủ, cụm máy chủ hoặc hệ thống tường lửa
Cần các cơ chế cài đặt tự động, cập nhật tự động trên các cụm máy chủ khi số lượng máy chủ là rất lớn và không đủ số lượng quản trị viên để cài đặt thủ công
Thực tế nhu cầu triển khai kiến trúc quản lý khóa đến từ các đơn vị có số lượng máy chủ lớn, các đơn vị này có thể chia thành nhiều mức quản lý máy chủ như máy chủ trong các dự án của công ty con Do đó cần có cơ chế chia việc quản lý ra thành nhiều mức như mức quản trị cả hệ thống, quản trị của các công ty thành viên, quản trị của một dự án nhỏ trong một công ty
3.2 Đề xuất mô hình quản lý khóa tập trung BKPortal
Tổng hợp các đặc điểm phân tích được của các giải pháp hiện tại, em đề xuất một mô hình giải pháp BKPortal hỗ trợ quản lý khóa tập trung và xác thực 2 lớp sẽ có kiến trúc tổng thể như sau
Hình 4 Kiến trúc hệ thống
Trang 20Kiến trúc hệ thống gồm có một số thành phần:
Linux Server : Các nhóm máy chủ Linux cần được quản lý khóa
Window Server : Các nhóm máy chủ Window Server cần được quản lý khóa
Linux key agent: Đây là các chương trình chạy trên các máy chủ linux cần quản lý khóa, thực hiện việc đồng bộ người dùng với hệ thống quản lý khóa, phân quyền người dùng, cung cấp khóa công khai của người dùng cho hệ thống từ phía Key Server, xác thực mật khẩu của người dùng, xác thực
mã OTP của người dùng
Key Server : nơi lưu trữ tập trung khóa cũng như mật khẩu của người dùng
Users: những người dùng có nhu cầu truy cập và sử dụng máy chủ
KeyPortal: Cổng quản lý tất cả khóa và logic của hệ thống, là nơi tiếp nhận các lời gọi hàm từ phía agent
Người dùng sẽ chỉ sử dụng 1 tài khoản duy nhất cho cả 2 quá trình là truy cập lên hệ thống BKPortal và truy cập vào máy chủ Như vậy dựa trên các yêu cầu kỹ thuật của kiến trúc thì em đề xuất các công nghệ được sử dụng cho hệ thống bao gồm :
Phía BKPortal Server:
Hệ thống sẽ sử dụng một mã nguồn mở là Privacy Idea làm nền tảng cung cấp và quản lý OTP, việc giao tiếp với Privacy Idea sẽ được thực hiện thông qua việc kế thừa mã nguồn, hai hế thống sẽ thực hiện việc chạy song song với nhau trên 2 cổng dịch vụ khác nhau, trong đó Privacy Idea sẽ tập trung vào quản lý các tính năng đặc thù của OTP
Hình 5 BKPortal Server
Trang 21 Phía BKPortal Linux Agent:
Với phần agent được cài đặt lên các máy chủ, sẽ tích hợp với OpenSSH Server để cung cấp dịch vụ truy cập từ xa sử dụng SSH và module libpam để cung cấp bổ sung các cơ chế xác thực mà kiến trúc yêu cầu
3.3 Mô hình phân rã chức năng và các yêu cầu tính năng chi tiết của hệ thống
Hình 7 Mô hình phân rã chức năng
3.3.1 Chức năng đăng nhập 2 bước
Khi người dùng truy cập máy chủ vật lý thông qua SSH, BKPortal sẽ kiểm tra và bổ sung thêm cơ chế xác thực OTP ( tích hợp với Google Authenticator hoặc các ứng dụng có chức năng tương đương )
3.3.2 Chức năng quản lý thống kê trên giao diện Dashboard
BKPortal sẽ cung cấp giao diện quản lý và thống kê các máy chủ đang được quản lý và số lượng user theo quyền của người sử dụng Cụ thể hơn hệ thống sẽ chia người dùng thành 2 mức, mức 1 là người
sử dụng hay những người có nhu cầu truy cập máy chủ vật lý, mức thứ 2 là mức quản trị viên hệ thống Tuy nhiên trên thực tế các quản trị viên không phải có các mức độ giống nhau, ví dụ như trong một công
ty sẽ chia các hệ thống máy chủ của họ thành các cụm hoặc chia thành các dự án khác nhau, do đó để phù hợp hơn, chúng ta sẽ chia quyền quản trị viên hệ thống thành 3 mức khác nhau :
Quản trị viên hệ thống : Có thể theo dõi thống kê trên toàn bộ hệ thống
Quản trị viên : Có thể theo dõi thống kê trên một công ty nào đó
Hình 6 BKPortal Linux Agent
Trang 22 Quản trị dự án : Có thể theo dõi các thống kê trên một cụm các máy chủ mà họ được giao quyền truy cập và quản lý
3.3.3 Chức năng quản lý máy chủ
Tương tự như trên để quản lý truy cập máy chủ được dễ dàng, hệ thống cũng chia ra thành nhiều mức quản lý:
Quản lý theo một công ty
Quản lý dự án trong một công ty
Quản lý nhóm các máy chủ và tường lửa trong dự án
Quản lý nhóm các máy chủ và tường lửa trong một nhóm
3.3.4 Chức năng quản lý người dùng
Chức năng chính là quản lý tài khoản người dùng, chi tiết như sau:
Quản lý mật khẩu
Quản lý thông tin cá nhân như email, số điện thoại, tên
Quản lý quyền của người dùng
Quản lý trạng thái của người dùng như đã kích hoạt tài khoản, chưa kích hoạt, tài khoản đã hết hạn
3.3.5 Chức năng quản lý quyền truy cập
Để đảm bảo có thể điều khiển và giám sát hệ thống, quản trị viên cần được cung cấp các chức năng:
Quản trị viên có thể quản lý quyền truy cập của người dùng vào BKPortal và quyền truy cập vào các máy chủ, tường lửa
Quản trị viên có thể quản lý trạng thái của người dùng trong BKPortal như kích hoạt tài khoản, đặt thời gian hết hạn cho tài khoản cũng như gia hạn cho tài khoản người dùng
Quản trị viên có thể gán người dùng vào nhóm các máy chủ hoặc từng máy chủ, tường lửa riêng biệt để cấp quyền truy cập vào các máy chủ, tường lửa đó
Quản trị viên cũng có thể thu hồi quyền bằng cách đặt thời gian hết hạn cho tài khoản, xóa tài khoản hoặc xóa người dùng khỏi nhóm máy chủ, tường lửa để họ không có khả năng truy cập lại được nữa
3.3.6 Các chức năng của BKPortal agent
Để có thể đồng bộ máy chủ với hệ thống quản lý khóa, cần có các agent được cài đặt trên các máy chủ Cụ thể hơn, khi quản trị viên tạo máy chủ trên BKPortal thì hệ thống sẽ tự động sinh mã cài đặt agent, lúc này người dùng sẽ chỉ cần sử dụng mã cài đặt này để cài đặt agent lên BKPortal, từ thời điểm này agent
sẽ phải đảm bảo mọi quá trình chứng thực trên máy chủ vật lý sẽ phải được thông qua bởi BKPortal
Agent sẽ tự thực hiện việc đồng bộ lên máy chủ một cách định kỳ, tuy nhiên agent vẫn sẽ phải đảm bảo người dùng vẫn có thể đăng nhập theo hình thức khác một cách bình thường, ví dụ như người dùng không truy cập từ xa mà có tiếp xúc vật lý được đến máy chủ để sử dụng mật khẩu local của hệ thống
3.4 Đặc tả chi tiết thiết kế hệ thống
Trang 233.4.1 Lược đồ Use case của hệ thống
Trang 24Hình 8 Lược đồ Use case của hệ thống
3.4.1.1 Đăng nhâp vào BKPortal
Hình 9 Đăng nhâp vào BKPortal
Nếu thành công 1.1 Nếu người dùng chưa
có OTP thì chuyển qua giao diện tạo OTP (2) 1.2 Nếu người dùng đã có OTP rồi thì chuyển qua giao diện nhập OTP (4)
2 Tác nhân ở giao diện tạo OTP
Tác nhân lựa chọn 1 trong 2 kiểu OTP là TOTP và HOTP
Sau đó bấm tạo
2 Hệ thống sẽ tạo OTP, và trả về mã QR code
3 Tác nhân dùng Google Authenticator (hoặc app tương đương) để quét mã OTP Sau đó bấm vào nút tiếp tục để chuyển sang giao diện nhập OTP
3 Hệ thống chuyển qua giao diện nhập OTP
Trang 254, Nhập mã OTP trong Google Authenticator (hoặc app
tương đương) vào form và gửi lên hệ thống
4 Nếu OTP đúng thì chuyển người dùng vào
Nếu nhập sai thì bắt nhập lại
Các yêu cầu
đặc biệt
- Nếu nhập sai username/pass 5 lần thì sẽ bắt nhập mã Captcha
- Người dùng phải nhập OTP trong vòng 5 phút kể từ khi xác thực với username/pass thành công
- Mật khẩu được kiểm tra trong bảng resolver tương ứng với realm của người dùng
- Nếu nhập sai username/pass 10 lần thì sẽ khóa IP (với đăng nhập trên KeyPortal)
- Nếu nhập sai OTP 10 lần thì OTP key đó sẽ bị block luôn
- Nếu tài khoản người dùng chưa Active hoặc đã bị hết hạn thì sẽ không đăng nhập được
Độ dài tối đa
Giá trị khởi tạo
Mô tả CSDL liên quan
1 Username varchar Có 255 Không Tên người
dùng
resolver_tbl.username, user.username
2 Password varchar Có 255 Không Mật khẩu resolver_tbl.password,
user.password
3.4.1.1.2 Biểu đồ luồng xử lý
Trang 26Hình 11 Biểu đồ luồng xử lý đăng nhập
3.4.1.2 Đăng nhập vào máy chủ
Hình 12 Đăng nhập vào máy chủ
Trang 271 Hệ thống trả về giao diện yêu cầu nhập password
2 Người dùng nhập password và gửi lên hệ thống
1 Hệ thống kiểm tra username/password
Nếu thất bại thì trả về yêu cầu nhập lại password
Nếu thành công thì hiển thị thông báo yêu cầu nhập OTP
3 Người dùng nhập OTP
3 SSH thành công nếu xác thực OTP thành công
Nếu xác thực không thành công thì yêu cầu người dùng nhập lại OTP
PublicKey/OTP
1 Trên giao diện Terminal, người dùng thực hiện ssh vào máy chủ
1 Hệ thống xác thực người dùng thông qua cặp khóa công khai Nếu thành công trả về giao diện nhập OTP
2 Người dùng nhập OTP
2 Nếu xác thực OTP thành công thì người dùng có quyền truy cập vào máy chủ Nếu xác thực không thành công thì yêu cầu người dùng nhập lại OTP
Các yêu
cầu đặc
biệt
- Người dùng đăng nhập sai Password 10 lần sẽ bị khóa không cho đăng nhập trong vòng
1 tiếng (thời gian trong file config, khóa theo tài khoản trên từng máy chủ)
- Người dùng nhập OTP sai quá 10 lần sẽ bị khóa OTP
- Người dùng đặc biệt (Special User) không cần tuân theo cơ chế xác thực trên
Điều kiện
thoát Người dùng thoát khỏi SSH Session
3.4.1.2.1 Biểu đồ luồng dữ liệu
Khi BKPortal vẫn online:
Trang 28Hình 13 Biểu đồ luồng dữ liệu đăng nhập máy chủ
Khi BKPortal offline hoặc bị hacker tấn công mất kết nối:
Trang 29Hình 14 Biểu đồ luồng dữ liệu đăng nhập máy chủ offline
3.4.1.3 Thống kê hệ thống trên Dashboard
Trang 301 Hệ thống hiển thị giao diện dashboard tương ứng với quyền của người dùng:
- Biều đồ ssh session online
b, Với company admin
- Thống kê số lượng dự án, máy chủ, người dùng và người quản trị
- 2 biểu đồ thể hiện trạng thái của máy chủ và người dùng
- biểu đồ ssh session online (phạm vi công ty)
thoát Đăng xuất hoặc chuyển hướng
3.4.1.3.1 Thiết kế màn hình chức năng xem Dashboard
Trang 31Hình 16 Màn hình chức năng xem Dashboard
STT Tên Kiểu dữ
liệu
Bắt buộc
Độ dài tối
đa
Giá trị khởi tạo
liên quan
1 Company integer N/A N/A N/A Số lượng công ty company
2 Project integer N/A N/A N/A Số lượng các dự án trong các
integer N/A N/A N/A Số máy chủ đã tạo nhưng chưa
kích hoạt trên tổng số máy chủ
Machine.status
6 Machine
Online
integer N/A N/A N/A Số máy chủ đã kích hoạt và
đang hoạt động trên tổng số máy chủ
Machine.status
Trang 327 Machine
Offline
integer N/A N/A N/A Số máy chủ đã tạo nhưng đang
không hoạt động trên tổng số máy chủ
Machine.status
integer N/A N/A N/A Số người dùng đã tạo đã kích
hoạt và không còn hoạt động nữa
User.statu
s
10 User
Active
integer N/A N/A N/A Số người dùng đã tạo và kích
hoạt thành công User.status
11 Online
SSH
session
[integer] N/A N/A N/A Đồ thị số lượng phiên ssh trên
toàn hệ thống theo thời gian
Đếm tổng số phiên mỗi 5’/1 lần
machine_session.sessions_count
3.4.1.3.2 Biểu đồ luồng mô tả hệ thống
Hình 17 Biểu đồ luồng mô tả chức năng xem Dashboard
3.4.1.4 Quản lý thông tin cá nhân
Hình 18 Quản lý thông tin cá nhân
Trang 331 Người dùng lựa chọn biểu tượng Avatar
ở phía bên phải, rồi bấm chọn Profile/Tài khoản
1 Hệ thống sẽ trả về thông tin người dùng tương ứng
2 Người dùng có thể thay đổi thông tin cá nhân
và bấm nút Save/Lưu ở góc phải màn hình
2 Hệ thống sẽ trả về kết quả cập nhật thành công hoặc không
Các yêu cầu
đặc biệt
Điều kiện
thoát Đăng xuất hoặc chuyển hướng
3.4.1.4.1 Thiết kế màn hình chức năng quản lý thông tin cá nhân
Hình 19 Màn hình chức năng quản lý thông tin cá nhân
Trang 34STT Tên Kiểu dữ
liệu
Bắt buộc
Độ dài tối đa
Giá trị khởi tạo
quan
1 Fullname varchar Không 120 Không Tên người dùng user.fullname
2 Email varchar Có 128 Không Thư điện tử user.email
3 Language text Không N/A Không Cài đặt ngôn ngữ user.settings
4 Phone varchar Không 128 Không Số điện thoại user.phone
5 SSH text Không N/A Không Nếu có thì hiển thị
serial của ssh
token.serial
6 OTP text Không N/A Không Nếu có thì hiển thị
serial của otp
token.serial
3.4.1.4.2 Biểu đồ luồng xử lý
Hình 20 Biểu đồ luồng xử lý thông tin cá nhân
3.4.1.5 Thêm token OTP
Trang 35Hình 21 Thêm token OTP
Với case tạo OTP cho người dùng khác: quản trị công ty hoặc quản trị hệ thống đã đăng nhập
Luồng sự
kiện
Tự thêm OTP mới
1 Người dùng chọn New OTP
ở trang quản lý thông tin cá nhân (4.5)
1 Hệ thống trả về một form với 2 lựa chọn tạo TOTP hoặc HOTP Token
2 Người dùng chọn một trong 2 lựa chọn rồi submit
2 Nếu thành công, hệ thống sẽ trả
về mã QR của OTP mới Nếu thất bại thì hệ thống sẽ trả về thông báo lỗi
3 Người dùng sử dụng Google Authenticator (hoặc app có chức năng tương đương) để quét mã QR
Tạo OTP cho người dùng khác
1 Quản trị viên đang ở giao diện danh sách user Bấm vào dấu (+) hoặc số SERIAL ở cột OTP
1 Hệ thống trả về một form với 2 lựa chọn tạo TOTP hoặc HOTP Token
2 Người dùng chọn một trong 2 lựa chọn rồi submit
2 Nếu thành công, hệ thống sẽ trả
về mã QR của OTP mới Nếu thất bại thì hệ thống sẽ trả về thông báo lỗi
3 Người dùng sử dụng Google Authenticator (hoặc app có chức năng tương đương) để quét mã QR
Các yêu
cầu đặc
biệt
Trang 36Điều kiện
thoát Đăng xuất hoặc chuyển hướng
3.4.1.5.1 Thiết kế màn hình thêm OTP
Hình 22 màn hình thêm OTP
STT Tên Kiểu dữ
liệu
Bắt buộc
Độ dài tối đa
Giá trị khởi tạo
Mô tả CSDL liên quan
1 Curent
Token
varchar Không 40 Token hiện tại
của người dùng
Token hiện tại của người dùng
token.serial, token.tokentype
3.4.1.5.2 Biểu đồ luồng xử lý
Trang 37Hình 23 Biểu đồ luồng xử lý thêm token OTP
3.4.1.6 Thêm SSH token bằng tạo cặp khóa mới
Hình 24 Thêm SSH token bằng tạo cặp khóa mới
Với case tạo OTP cho người dùng khác: quản trị công ty hoặc quản trị hệ thống đã đăng nhập
Luồng sự
kiện
Tự thêm SSH Key mới
1 Người dùng chọn New OTP
ở trang quản lý thông tin cá nhân (4.5)
1 Hệ thống trả về một form với 2 lựa chọn sinh cặp khóa mới hoặc tự tải khóa có lên khóa công khai có sẵn
Trang 382 Người dùng chọn “Generate new key pair” và submit
1 Quản trị viên đang ở giao diện danh sách user Bấm vào dấu (+) hoặc số SERIAL ở cột OTP
1 Hệ thống trả về một form với 2 lựa chọn sinh cặp khóa mới hoặc tự tải khóa có lên khóa công khai có sẵn
2 Người dùng chọn “Generate new key pair” và submit
thoát Đăng xuất hoặc chuyển hướng
3.4.1.6.1 Thiết kế màn hình chức năng thêm SSH token bằng tạo cặp khóa
Hình 25 màn hình chức năng thêm SSH token bằng tạo cặp khóa
Trang 39STT Tên Kiểu dữ
liệu
Bắt buộc
Độ dài tối đa
Giá trị khởi tạo
Mô tả CSDL liên quan
1 Curent
Token
varchar Không 40 Token hiện tại
của người dùng
Token hiện tại của người dùng
token.serial, token.tokentype
3.4.1.6.2 Biểu đồ luồng xử lý
Hình 26 Biểu đồ luồng xử lý thêm SSH token
3.4.1.7 Thêm SSH token bằng cách tải lên khóa công khai
Hình 27 Thêm SSH token bằng cách tải lên khóa công khai
Trang 40Tác nhân Người dùng
Mô tả Người dùng tự gán SSH token cho mình hoặc cho người khác
Điều kiện
trước
Với case tạo OTP cho người dùng khác: quản trị viên hoặc quản trị hệ thống đã đăng nhập
Luồng sự
kiện
Tự thêm SSH Key mới
1 Người dùng chọn New OTP
ở trang quản lý thông tin cá nhân (4.5)
1 Hệ thống trả về một form với 2 lựa chọn sinh cặp khóa mới hoặc tự tải khóa có lên khóa công khai có sẵn
2 Người dùng chọn “Generate new key pair” và submit
1 Quản trị viên đang ở giao diện danh sách user Bấm vào dấu (+) hoặc số SERIAL ở cột OTP
1 Hệ thống trả về một form với 2 lựa chọn sinh cặp khóa mới hoặc tự tải khóa có lên khóa công khai có sẵn
2 Người dùng chọn “Generate new key pair” và submit