Giao thức SSH cung cấp các dịch vụ của máy chủ như xác thực, mã hóa, xác minh tính toàn vẹn dữ liệu và xác thực khách hàng. Máy chủ được SSH xác thực thông qua việc thực hiện DSA, RSA hoặc ECDSA thuật toán mã khóa công khai.
CHƯƠNG 1: GIỚI THIỆU VỀ GIAO THỨC SSH Khái Niệm Về Ssh SSH giao thức để đăng nhập từ xa an toàn dịch vụ mạng an tồn khác qua mạng khơng an tồn (RFC 4251) c phỏt trin bi Tatu Ylăonen (i hc Helsinki ca Phần Lan), sau thương mại hóa SSH Communications Security Corp., Phần Lan Hai phân phối có sẵn: • phiên thương mại • phần mềm miễn phí (www.openssh.com) SSH2 định tập hợp nháp Internet (RFC 4250 - 4256) Kiến trúc giao thức Secure Shell (SSH) Giao thức SSH bao gồm ba thành phần chính: • Giao thức lớp truyền tải SSH - cung cấp xác thực máy chủ, tính bảo mật tính tồn vẹn với tính bảo mật chuyển tiếp hồn hảo • Giao thức xác thực người dùng SSH - xác thực máy khách với máy chủ • Giao thức kết nối SSH - ghép kênh mã hóa thành số kênh logic (cho phép phiên trình bao an tồn, chuyển tiếp / đường hầm cổng TCP, v.v.) Hình 1: Ngăn xếp giao thức SSH (nguồn: cisco.com) Giao thức lớp truyền tải SSH - Tổng quan SSH TLP thường chạy TCP / IP; sử dụng qua TCP, máy chủ thường lắng nghe kết nối cổng 22 Cung cấp: • mã hóa liệu người dùng • xác thực máy chủ (dựa / khóa máy chủ khơng đối xứng) • bảo vệ tính tồn vẹn (nguồn gốc liệu) • nén liệu trước mã hóa (tùy chọn) Phương pháp trao đổi khóa, thuật tốn khóa cơng khai, thuật tốn mã hóa đối xứng, thuật tốn xác thực thơng điệp thuật tốn băm thương lượng (nguồn: RFC 4253) Giao thức lớp truyền tải SSH (TLP) - Trao đổi gói Hình 2: Trao đổi gói SSH TLP (nguồn: cisco.com) Giao thức gói nhị phân SSH TLP Hình 3: Hình thành gói SSH TLP (nguồn: cisco.com) Thực mã hóa MAC / xác thực mơ hình; cơng tồn sử dụng với chế độ CBC (thích chế độ CTR hơn) Giao thức gói nhị phân SSH TLP Các thuật tốn mã hóa xác thực, khóa mã hóa, IV thương lượng q trình trao đổi khóa Các thuật tốn chế độ (AES, 3DES, CBC, CTR, v.v.) khác theo hướng Trước mã hóa, gói tin đệm ngẫu nhiên: gói mã hóa = (chiều dài gói || chiều dài đệm || trọng tải || đệm ngẫu nhiên) MAC (HMAC) tính gói văn rõ mã hóa số thứ tự 32bit ngầm định (không truyền); ngăn chặn công phát lại MAC khơng mã hóa mac = MAC (khóa, số thứ tự || gói mã hóa) Trao đổi khóa SSH TLP Phương pháp trao đổi định cách khóa phiên lần tạo để mã hóa xác thực cách xác thực máy chủ thực (nguồn: RFC 4253) Đặc điểm kỹ thuật SSH cho phép phương pháp thay khóa trao đổi, định hai phiên trao đổi khóa DiffieHellman Hình 4: Gói SSH TLP Sàn giao dịch (nguồn: cisco.com) Trao đổi khóa SSH TLP Diffie-Hellman (nguồn: RFC 4253) VS VC chuỗi id S C; KS khóa máy chủ lưu trữ công khai S; IS IS tin nhắn MSG KEXINIT S’s C’s SSH trao đổi trước phần bắt đầu; thông báo bao gồm cookie ngẫu nhiên 128bit để đảm bảo tính phiên • • C chọn x ngẫu nhiên, tính e = gx mod p C gửi e cho S S chọn y ngẫu nhiên, tính f = gy mod p S nhận e, tính: - K = ey mod p - H = băm (VC || VS || IC || IS || KS || e || f || K) - chữ ký H với khóa máy chủ riêng S gửi (KS || f || s) đến C • C xác minh KS thực khóa máy chủ cho S (ví dụ: sử dụng chứng sở liệu cục chấp nhận khóa mà khơng cần xác minh) C tính: - K = fx mod p - H = băm (VC || VS || IC || IS || KS || e || f || K) C xác minh chữ ký s H Bắt nguồn từ khóa phiên SSH Kết bước trao đổi chính: • C S dùng chung khóa K • S xác thực với C (S ký khóa cơng khai DH ngẫu nhiên C) • Máy chủ H giá trị băm làm id phiên cho kết nối • Giao tiếp bảo vệ khóa phiên dẫn xuất Các vectơ đơn vị phiên, khóa mã hóa xác thực: • IVCS = hash (K || H || “A” || session id) • IVSC = băm (K || H || “B” || id phiên) • EKCS = hash (K || H || “C” || session id) • EKSC = băm (K || H || “D” || id phiên) • AKCS = băm (K || H || “E” || id phiên) • AKSS = băm (K || H || “F” || id phiên) Dữ liệu lấy từ đầu đầu băm Giao thức xác thực người dùng SSH - Tổng quan Sau trao đổi khóa, khách hàng yêu cầu dịch vụ gửi YÊU CẦU DỊCH VỤ MSG SSH gói để yêu cầu Người dùng Xác thực Giao thức kết nối Hình 5: Gói SSH TLP Sàn giao dịch (nguồn: cisco.com) 10 Giao thức xác thực người dùng SSH - Tổng quan Giao thức xác thực SSH chạy Giao thức lớp truyền tải SSH; giả định giao thức cung cấp bảo vệ tính tồn vẹn bí mật Giao thức có quyền truy cập vào id phiên (nguồn: RFC 4252) Hỗ trợ ba phương pháp xác thực người dùng: • Khóa cơng khai (bắt buộc) • Mật (tùy chọn) • Dựa máy chủ (tùy chọn) Máy chủ kiểm soát phương pháp xác thực sử dụng 11 Giao thức xác thực người dùng SSH - Phương thức xác thực Khóa cơng khai Máy khách gửi đến máy chủ thông báo ký bao gồm id phiên, tên người dùng, khóa cơng khai người dùng số thông tin khác Chữ ký tạo khóa cá nhân người dùng Khi nhận tin nhắn, máy chủ kiểm tra xem khóa cơng khai cung cấp có chấp nhận để xác thực hay khơng có, kiểm tra xem chữ ký có khơng Mật Về bản, máy khách gửi tên người dùng mật rõ ràng; Tuy nhiên, chúng bảo vệ Giao thức Bảo mật Truyền tải SSH Dựa máy chủ Tương tự với phương thức khóa cơng khai với khóa cơng khai máy chủ lưu trữ (không phải cho người dùng); xác thực dựa máy chủ mà người dùng đến tên người dùng máy chủ từ xa 12 Giao thức kết nối SSH - Tổng quan Cung cấp: • phiên đăng nhập tương tác • thực từ xa lệnh • kết nối TCP / IP chuyển tiếp (cổng chuyển tiếp) • kết nối X11 chuyển tiếp Các ứng dụng triển khai dạng kênh ghép lại thành đường hầm mã hóa; đường hầm cung cấp Giao thức lớp truyền tải SSH Hình 6: Kết nối SSH Trao đổi tin nhắn giao thức (nguồn: cisco.com) 13 Giao thức kết nối SSH - Chuyển tiếp cổng TCP / IP Chuyển tiếp cổng SSH đào hầm tính hữu ích SSH Sử dụng chuyển tiếp cổng người chuyển đổi kết nối TCP khơng an tồn vào kết nối SSH an tồn Hình 7: Đường hầm SSH (nguồn: cisco.com) 14 SSH Port Forwarding - Local Port Forwarding Các kết nối từ máy khách SSH chuyển tiếp qua máy chủ SSH đến máy chủ đích ssh -L sourcePort: DEST-HOST: destPort SSH-HOST Kết nối với SSH với SSH-HOST, chuyển tiếp tất cố gắng kết nối TCP tới sourcePort (trên máy cục bộ) tới đích DEST-HOST, truy cập từ SSH-HOST Ví dụ: ssh -L 8080: localhost: 80 fesb.hr ssh -L 8080: google.com: 80 fesb.hr Hình 8: Chuyển tiếp cổng cục (từ: unix.stackexchange.com) 15 Chuyển tiếp cổng SSH - Chuyển tiếp cổng từ xa Các kết nối từ máy chủ SSH chuyển tiếp qua máy khách SSH, sau đến máy chủ đích ssh -R sourcePort: DEST-HOST: destPort SSH-HOST Kết nối với SSH tới SSH-HOST, chuyển tiếp tất cố gắng kết nối TCP tới sourcePort (trên SSH-HOST) tới đích DEST-HOST, truy cập từ máy chủ cục Ví dụ: ssh -R 80: localhost: 80 fesb.hr ssh -R 80: google.com: 80 fesb.hr 16 Chuyển tiếp cổng SSH - Chuyển tiếp cổng từ xa Hình 9: Chuyển tiếp cổng từ xa (từ: unix.stackexchange.com) 10 Vì vậy, SSH sử dụng hashes để xác nhận tính xác thực tin nhắn Nó thực HMACs Việc đảm bảo lệnh không bị giả mạo phương thức Giai đoạn thiết lập kết nối Ssh Có thể thấy, phương thức hoạt động SSH dễ dàng tóm gọn bước Ở phần này, chúng tơi tìm hiểu rõ giai đoạn thiết lập kết nối SSH Xác định host Việc định danh host thực qua việc trao đổi khố Mỗi máy tính điều khiển SSH có khố định danh Chúng bao gồm hai thành phần: khoá riêng tư khố cơng cộng Khố cơng cộng sử dụng cần trao đổi máy chủ Trong khóa riêng tư dùng để giải mã riêng Khi hai hệ thống bắt đầu phiên làm việc SSH, máy chủ gửi khố cơng cộng cho máy khách Máy khách sinh khoá phiên ngẫu nhiên Sau mã hố khố khố cơng cộng máy chủ Cuối gửi lại cho máy chủ Máy chủ giải mã khoá phiên khố riêng nhận khố phiên Q trình xem bước nhận diện máy chủ máy khách Mã hóa liệu Sau hoàn tất việc thiết lập phiên làm việc bảo mật (trao đổi khoá, định danh, xác định host), trình trao đổi liệu diễn thơng qua bước trung gian mã hố/giải mã, Ở bước này, liệu gửi/nhận đường truyền giải mã theo chế thoả thuận trước Các chế mã hoá thường chọn bao gồm: 3DES, IDEA, Blowfish 13 Chứng thực người dùng Chứng thực người dùng bước cuối ba bước Đây đồng thời bước đa dạng sử dụng nhiều cách khác để chứng thực người dùng Thông thường, người ta thường sử dụng cách chứng thực rhosts, chứng thực RSA, sử dụng ssh-keygen ssh-agent… 14 CHƯƠNG 3: KẾT NỐI GIAO THỨC SSH Cách dùng Ssh kết nối với server Linux Thiết lập server Linux chấp nhận kết nối Muốn dùng SSH kết nối server Linux, bạn cần thiết lập server trước Tùy thuộc vào phần cứng phân phối Linux việc thiết lập thay đổi Hướng dẫn sau chạy Ubuntu 16.04 LTS Bạn cần phải cài đặt công cụ đăng nhập từ xa cho giao thức SSH Một cơng cụ phổ biến OpenSSH Bạn tìm download đây: https://www.openssh.com/portable.html Cách download OpenSSH, mở terminal (Ctrl + Alt + T) nhập lệnh sau: sudo apt-get update Điều thực cập nhật đảm bảo bạn có kho lưu trữ Trước tiến hành cài đặt OpenSSH, kiểm tra nâng cấp Trong terminal, chạy lệnh: sudo apt-get upgrade Khi bạn cập nhật nâng cấp, mở dòng lệnh nhập: sudo apt-get install openssh-server Định cấu hình cài đặt SSH cho server Sau OpenSSH cài đặt phía server, bạn chỉnh sửa thơng tin cấu hình Mở terminal nhập chuỗi sau để mở file cấu hình SSH: sudo nano /etc/ssh/sshd_config Mặc định, SSH server bạn hoạt động cổng 22 Bạn tự thay đổi từ cổng 22 sang cổng bạn chọn Ngồi ra, bạn tăng cường bảo mật cách nhập số đăng nhập tối đa Trong Port, tìm dịng MaxAuthTries Bạn nhập số Vì vậy, để chọn số lần đăng nhập tối đa 4, nhập: MaxAuthTries Sau cài đặt OpenSSH, SSH server chạy Nhưng để kiểm tra, cần mở terminal chạy: sudo service ssh status Điều trả thông báo SSH kích hoạt Để khởi động SSH, mở dịng lệnh nhập: sudo service ssh start Và để ngăn SSH chạy, nhập: sudo service ssh stop 15 Kết nối Ssh từ Window Do Window khơng tích hợp SSH Command nên người dùng phải tải mã nguồn mở hay ứng dụng đóng vai trị “bên thứ ba” Bạn sử dụng PuTTy ZOC7 để kết nối Window SSH PuTTy gì? PuTTy phần mềm dùng để điều khiển server thông qua mạng Internet Để kết nối thành công với PuTTy, bạn thực theo bước sau • • • • Bước 1: Tải PuTTy Bước 2: Khởi động chương trình PuTTy vừa cài đặt Bước 3: Nhập thông tin server cần điều khiển Bước 4: Nhập thông tin username password Trong trình kết nối, bạn cần lưu ý độ tương thích thơng số Đặc biệt lưu ý số cổng khung Port số cổng SSH Server yêu cầu Ngoài ra, người dùng nhận cảnh báo bảo mật Nếu lần sử dụng, bạn click vào YES tiếp tục Nếu bạn truy cập, cẩn thận SSH Server độc hại Bên cạnh kết nối cấu hình SSH Server, với PuTTY, người dùng cịn sử dụng file Private Key để sử dụng ứng dụng khác cần kết nối với SSH Khi khởi động PuTTY, bạn tìm thấy tùy chọn cửa sổ PuTTY Configuration Sau đó, tiếp tục truy cập theo đường dẫn Connection => SSH => 16 Auth Khi cửa sổ lên, click Browse, chọn file Private Key: C: MySSHid_rsa.ppk click Open để bắt đầu SSH ZOC7 Terminal gì? Tương tự PuTTY, ZOC7 công cụ sử dụng giao thức SSH ZOC7 dùng để cài đặt chỉnh sửa server Muốn kết nối, bạn cần thực theo bước sau: • • • • • • Bước 1: Tải cài đặt ZOC7 Terminal Bước 2: Điền thông tin server port vào cửa sổ Log in Bước 3: Chọn Secure Shell ô Connection Type Bước 4: Chọn Linux ô Emulation Bước 5: Nhập Username Password Bước 6: Nhấn Connect để kết nối với server Kết nối Ssh từ Linux/MacOS SSH command thường tích hợp hệ điều hành dựa UNIX Linux MacOS Để kết nối SSH Server từ hai hệ điều hành trên, bạn thực theo bước sau: • • Bước 1: Mở cửa sổ Terminal o Hệ điều hành MacOS: Finder =>Applications =>Utilities =>Terminal o Hệ điều hành Linux: tìm shortcut Terminal menu ứng dụng Bước 2: Nhập lệnh ssh username@ssh.server.com vào cửa sổ Terminal theo cú pháp – thay username tên người dùng ssh.server tên máy chủ IP SSH Server • Bước 3: Xác nhận nhập thơng tin mật Thêm Public Key vào Server Public Key file text chứa liệu mã hóa cài đặt cho server Trên tảng Linux, bạn bổ sung Public Key theo bước sau: Bước1: Lưu thông tin Public Key để xác thực đăng nhập sử dụng key ~/.ssh/authorized_keys • Bước2: Copy nội dung Public Key, chèn vào cuối file lưu lại Bước3: Bật chế độ đăng nhập kích hoạt tham số PubkeyAuthentication yes AuthorizedKeysFile ssh/authorized_keys SSH Config • Bước4: Khởi động lại SSH Service • • 17 CHƯƠNG 4: NHỮNG LỖ HỔNG TRONG GIAO THỨC SSH Tấn công dos hệ thống Tấn công từ chối dịch vụ hay biết đến DoS, thủ đoạn kẻ công nhằm ngăn chặn người dùng sử dụng truy cập vào dịch vụ DoS làm máy tính ngưng hoạt động, từ mạng nội đến hệ thống mạng lớn 1.1Nguyên nhân OpenSSH phiên trước 7.3 không giới hạn độ dài mật để xác thực 1.2Phương thức thực Kẻ công gửi liệu thủ công khoản 90000 ký tự đến trường ‘mật khẩu’ cố gắng để đăng nhập vào máy tính từ xa thơng qua SSH với tên người dùng ‘root’ Nếu trình cơng chạy vịng lập vơ hạn khiến tiêu thu tài nguyên CPU (100% CPU) từ dẫn đến hệ thống bị ảnh hưởng bị treo hoàn toàn 1.3Hậu DoS làm máy tính ngưng hoạt động, từ mạng nội đến hệ thống mạng lớn Những kẻ công chiếm lượng lớn tài nguyên mạng nhớ băng thông, chí chúng cịn làm khả xử lý yêu cầu dịch vụ từ khách hàng khác Đặc biệt hệ thống giao dịch điện tử thiệt hại việc ảnh hưởng lớn Tấn công xen (Man-in-the-middle) Một công Man-in-the-middle hay gọi tắt MitM thường cơng linh hoạt, xâm chiếm bí mật Tấn cơng Man-in-the-middle xảy hai máy tính (máy tính xách tay máy chủ từ xa) có khả chặn lưu lượng truy cập Kẻ nghe trộm chí chặn liên lạc hai máy đánh cắp thông tin nhạy cảm Các công man-in-themiddle vấn đề bảo mật nghiêm trọng 2.1 Nguyên nhân Các lỗi nghiêm trọng thực tế kết đoạn mã để thiết lập thử nghiệm tính chuyển vùng "roaming" OpenSSH từ phiên 5.4 đến 7.1 phép người dùng tiếp tục kết nối 18 2.2 Cách thức Một công xen (MITM), công mà kẻ công bí mật chuyển tiếp làm thay đổi giao tiếp hai bên mà họ tin họ trực tiếp giao tiếp với Một ví dụ công man-in-the-middle nghe trộm, kẻ cơng kết nối độc lập với nạn nhân chuyển tiếp thông tin họ để họ tin họ nói chuyện trực tiếp với qua kết nối riêng tư, thực tồn trị chuyện kiểm sốt kẻ cơng Người cơng phải có khả đánh chặn tất thông tin liên quan lại hai nạn nhân tiêm thông tin Điều đơn giản nhiều trường hợp; ví dụ, kẻ công phạm vi tiếp nhận điểm truy cập không dây (Wi-Fi) không mã hóa chèn "người đàn ơng giữa" (man-inthe-middle) Một hình thức khác MITM công man-in-the-browser (MITB), bắt đầu phần mềm độc hại đặt vào hệ thống hoạt động với trình duyệt MITB thường sử dụng để gian lận tài chính, ví dụ: cách chặn giao tiếp với ngân hàng Các công MITB nguy hiểm chúng khó bị phát Chúng bỏ qua biện pháp kiểm soát bảo mật mã hóa phổ biến trang ngân hàng ẩn với chương trình chống virus Một loại MITM khác áp dụng cho thiết bị di động man-in-the-mobile (MITM) gọi man-in-the-phone MITM phần mềm độc hại có nhiệm vụ vượt qua nhận dạng hai bước qua SMS Nó thực điều cách giám sát tin nhắn với mã xác minh Phần mềm độc hại tập trung vào thiết bị Android có quyền truy cập vào tin nhắn mã hóa WhatsApp Trong mơi trường di động, có kiểu cơng khác gọi man-inthe-app, kẻ cơng sử dụng chứng (do họ ký) để giao tiếp với ứng dụng bị công Giả sử Alice muốn liên lạc với Bob Trong đó, Mallory muốn chặn đối thoại để nghe trộm gửi tin sai cho Bob Đầu tiên, Alice hỏi Bob chìa khóa cơng khai Nếu Bob gửi chìa khố cơng cộng đến Alice, Mallory chặn nó, cơng xen bắt đầu Mallory gửi thơng điệp giả mạo đến Alice mạo nhận đến từ Bob, thiệt khóa cơng khai Mallory Alice, tin khóa cơng khai Bob, mã hóa tin nhắn chìa khố Mallory gửi tin nhắn mã hóa Bob Mallory lần chặn lại, giải mã tin nhắn sử dụng khóa riêng mình, thay đổi muốn mã hóa lại khóa cơng khai mà Bob gửi cho Alice Khi Bob nhận thơng tin mã hóa, anh tin đến từ Alice 19 Alice gởi thông tin tới Bob, mà bị chặn Mallory: Alice "Hi Bob, Alice Đưa chìa khóa anh cho tôi." → Mallory Bob Mallory chuyển thơng tin tới Bob; Bob khơng có cách để chứng thực từ Alice: Alice Alice Mallory "Hi Bob, Alice Đưa chìa khóa anh cho tơi." → Bob Bob trả lời với chìa khóa mật mã anh ta: Mallory ← [Bob's key] Bob Mallory thay key Bob với mình, chuyển tới Alice, cho Bob's key: Alice ← [Mallory's key] Mallory Bob Alice mã hóa thơng tin mà chị ta tin Bob's key, nghĩa Bob đọc nó: Alice "Đến gặp trạm xe buýt!" [mã hóa với Mallory's key] → Bob Mallory Tuy nhiên, mã hóa với Mallory's key, Mallory giải mã nó, đọc nó, thay đổi (nếu muốn), tái mã hóa với Bob's key, chuyển tới Bob: Alice Mallory "Đến gặp tơi xe tải nhỏ bờ sơng!" [mã hóa với Bob's key] → Bob Bob nghĩ thông điệp giao tiếp bảo mật Alice Bob tới xe tải nhỏ bờ sông bị cướp Mallory Alice Bob bị cướp Mallory, nghĩ Bob chậm trễ 10 Đợi lâu không thấy Bob tới, chị ta nghĩa có điều xảy cho Bob 2.3 Hậu Tính bị khai thác hacker, chúng sử dụng máy chủ OpenSSH chứa mã độc để đánh lừa client dễ bị ảnh hưởng để đưa lên SSH key họ cố gắng đăng nhập Tội phạm mạng với máy chủ bị xâm nhập bí mật lấy SSH private key yêu cầu đăng nhập vào hệ thống khác từ máy tính cá nhân người dùng, cho phép chúng nhảy từ máy chủ đến máy chủ 20 Tấn công lỗ hỏng LibSSH Lỗ hổng cho phép vượt lớp xác thực hồn tồn chiếm quyền quản trị máy chủ bị công mà không cần mật Chiếm máy chủ nhờ lỗ hổng LibSSH (có tên CVE-2018-10933) thực chất lỗi vượt bảo mật xuất LibSSH 0.6 mắt năm 2014 3.1Nguyên nhân Nguyên nhân gây lỗ hỏng lỗi coding lập trình viên LibSSH 3.2Phương thức công Theo tài liệu tư vấn cho biết, kẻ công cần gửi tin nhắn “SSH2_MSG_USERAUTH_SUCCESS” tới máy chủ có kết nối SSH máy chủ đợi tin nhắn “SSH2_MSG_USERAUTH_REQUEST” Do lỗi logic LibSSH, thư viện kiểm tra xem tin nhắn “đăng nhập thành cơng” nói máy chủ hay khách hàng khơng thể kiểm tra q trình xác thực hồn thành hay chưa Do đó, kẻ công từ xa (là khách hàng) gửi tin “SSH2_MSG_USERAUTH_SUCCESS” phản hồi cho LibSSH, LibSSH xem việc xác thực thành công cho kẻ công chiếm máy chủ nhờ lỗ hổng LibSSH mà không cần nhập mật 3.3 Hậu Lỗ hỏng khiến máy chủ hàng nghìn doanh nghiệp bị tin tặc công năm liên tiếp kể từ 2014 Kẻ cơng nhờ vào lỗ hỏng mà chiếm quyền sử dụng máy chủ gây tổn thất hàng tỉ đồng cho doanh nghiệp Nhưng may đội ngũ LibSSH xử lý vấn đề phiên LibSSH cập nhật 0.8.4 0.7.6 vào hôm thứ 3, chi tiết lỗ hổng công bố vào ngày 21 CHƯƠNG 5: CÁC CÁCH TRÒNG TRÁNH CÁC CUỘC TẤN CÔNG SSH Chỉ sử dụng giao thức SSH phiên Giao thức SSH phiên (SSH-1) khơng cịn an tồn tồn lổ hổng bảo mật bị cơng “man-in-the-middle” Vì sử dụng giao thức SSH phiên Hiện mặc định dịch vụ SSH kích hoạt phiên “2”, số OS cũ cịn hỗ trợ Protocol 2 Không sử dụng mật rỗng Bạn cần cấu hình khơng cho phép đăng nhập SSH vào hệ thống sử dụng mật rổng, điều nguy hiểm PermitEmptyPasswords no Thay đổi cổng SSH mặc định (port 22) Dịch vụ SSH mặc định chạy cổng 22 quy định tiêu chuẩn chung giới Vì port phổ biến, nên dễ bị kẻ xấu thực hoạt động dị tìm mật tự động đăng nhập SSH vào hệ thống bạn Vì bạn thay đổi port kết nối SSH đến VPS/Cloud Server bạn Port 8022 Nếu hệ thống Linux bạn có nhiều địa IP tốt nên định rõ địa IP lắng nghe port dịch vụ SSH kết nối tới Điều tốt việc bạn để dịch vụ SSH mở toàn địa IP hoạt động hệ thống ListenAddress 192.168.1.123 Không cho đăng nhập user root Chúng ta không cho phép đăng nhập user root hệ thống Nhiều bạn nghĩ để sử dụng user root Linux qua SSH? Đơn giản bạn cần tạo user khác cấu hình hoạt động “su” “sudo” để chuyển đổi từ user thường sang user root để sử dụng Điều giúp bảo mật hệ thống SSH Server Để cấu hình khơng cho user root đăng nhập SSH: PermitRootLogin no Tắt chức đăng nhập file ~/.rhosts Đây tính hỗ trợ đăng nhập “rlogin” qua port 22, hình thức đăng nhập cũ tồn nhiều rủi ro bảo mật Nếu thông tin host user định cấu hình theo format cụ thể file ~/.rhosts user file 22 phép đăng nhập vào hệ thống Linux mà không cần phải cung cấp thông tin mật Vậy nên tắt chức hỗ trợ đăng nhập qua RSH IgnoreRhosts yes RhostsRSAAuthentication no Cấu hình thời gian ngắt kết nối SSH user khơng hoạt động Bạn quy định thời gian timeout mà kết nối SSH đến server Linux khơng nhận hoạt động tương tác terminal SSH Lúc thời gian quy định SSH Server tự ngắt kết nối SSH từ user không tương tác SSH ClientAliveInterval 300 ClientAliveCountMax Sử dụng mật phức tạp độ khó cao Nếu bạn cịn xài phương thức đăng nhập SSH vào Linux mật khẩu, xin tạo chuỗi mật mạnh dài kí tự nhằm mục đích an tồn Tránh mật dễ tìm, dễ nhớ có khả nằm danh sách sở liệu từ điển mật bị kẻ xấu tự động thử (brute force) mật Tiêu chí mật an tồn tối thiểu gồm: – Độ dài kí tự kí tự – Có ký tự Hoa, ký tự số, ký tự đặt biệt, cách đặt password ngẫu nhiên tốt Ví dụ: “shbcC3yuq57S” Cấu hình thời gian timeout user khơng đăng nhập thành công Khi mà user đăng nhập SSH, khơng định thơng tin user từ đầu gặp lời nhắc yêu cầu nhập thơng tin user Sau phần nhập mật user xài phương thức đăng nhập mật Thì phần này, quy định thời gian mà kết nối SSH đợi cho hoạt động đăng nhập user thành cơng (ví dụ 120 giây), khơng thành cơng ngắt kết nối SSH tới server LoginGraceTime 120 Tắt nhật ký đăng nhập lần gần cuối Nhật ký đăng nhập SSH lần gần cuối xuất bạn đăng nhập SSH thành công vào hệ thống Linux Vậy bạn muốn tắt dòng nhật ký đó, cần thay đổi nội dung cấu hình mục “PrintLastLog” PrintLastLog no 23 10 Sử dụng chứng thực SSH Key, tắt chứng thực mật Phần cấu hình khuyến cáo sử dụng việc kết nối bảo mật SSH đến hệ thống Linux VPS/Cloud Server Mặc định VPS/Cloud Server bạn đăng nhập vào username root user thường mật root mà nhà cung cấp gửi cho bạn lúc thuê VPS, nhiên việc sử dụng mật ln có nguy lớn là: • Bạn hoàn toàn hệ thống VPS/Cloud Server để lộ mật • Các kẻ xấu sử dụng phương thức cơng Brute Force để dị tìm mật Do đó, khuyến khích bạn làm quen với SSH Key để đăng nhập vào VPS/Cloud Server, sử dụng để xác thực kết nối từ bên vào cho an toàn Vậy tắt cấu hình chứng thực mật đảm bảo bật chứng thực SSH Key PubkeyAuthentication yes PasswordAuthentication no 11 Cho phép/từ chối kết nối SSH từ user group Mặc định SSH Server cho phép tất user có tồn hệ thống Linux đăng nhập SSH vào server Nhưng có nhu cầu chặn khơng cho đăng nhập SSH số user định nhóm user cụ thể Linux Vậy để làm điều ta cần sử dụng số cú pháp phía để cấu hình thêm vào file “/etc/ssh/sshd_config” + Cho phép user group user phép đăng nhập SSH AllowUsers user1 user2 AllowGroups group1 + Không cho phép user group user phép đăng nhập SSH DenyUsers user3 user4 DenyGroups guest 12 Chế độ “StrictModes” chế độ nghiêm ngặt Với chế độ cấu hình “StrictModes” chế độ nghiêm ngặt ta định dịch vụ SSH phải kiểm tra thông tin quyền (permission) thư mục $HOME user, thư mục “.ssh” file “authorized_keys” chứa key SSH bạn sử dụng SSH Key Nếu bạn khơng xử dụng chế độ (option “no”) dịch vụ SSH khơng kiểm tra cấu hình quyền bạn đăng nhập vào VPS/Cloud Server Vì bạn cần ý cấu hình phân quyền (permission) cho thư mục/key dùng để đăng nhập SSH StrictModes yes 24 13 Số lần tối đa đăng nhập sai Như thường biết hoạt động dị tìm mật hay cịn gọi cơng Brute Force vào dịch vụ SSH nguy hiểm mật bạn đơn giản Vậy ta nên giới hạn số lần mà user nhập mật sai cố đăng nhập SSH vào hệ thống Linux Hãy cấu hình phần với giá trị bạn mong muốn Nếu số lần quy định SSH Server ngắt kết nối user MaxAuthTries 14 Google Authenticator Phương thức sử dụng bảo mật lớp, thông qua mật mã code từ app xác thực google Về nguyên lý hoạt động sau: SSH server cài thêm service “google-authenticator” để đồng với app smart phone Mỗi phút có mã code tạo smart phone Người dùng đăng nhập SSH thông qua mật sau nhập mã xác thực smart phone đăng nhập Cách có khả an tồn dễ quản lý phân quyền cho người dùng 15 Bảo mật firewall CSF CSF firewall mềm cài server Linux với file cấu hình đơn giản, dễ sử dụng Khơng có chức quản lý cổng vào, server mà cịn có chế chống lại việc cơng DDOS, DOS… Tự động chặn IP có khả nguy hiểm với việc đăng nhập sai, dò mật khoảng thời gian cho phép Giới hạn IP truy cập vào cổng SSH CSF tích hợp vào hệ thống quản lý hosting CPanel, DirectAdmin, CWP… 16 Fail2ban Fail2ban app thường sử dụng chung với Iptables Có chức tự động chặn IP cơng vào server Có khả tích hợp vào hệ thống tổng đài Asterisk, Freeswitch Bảo vệ server khỏi công SIP, DOS, DDOS… 25 TÀI LIỆU THAM KHẢO: https://wiki.matbao.net/ssh-la-gi-cach-dung-ssh-trao-doi-du-lieu-voi-serverlinux/#:~:text=SSH%20l%C3%A0%20giao%20th%E1%BB%A9c %20%C4%91%C4%83ng,m%E1%BA%ADt%20th%C3%B4ng%20tin%20t %E1%BB%91t%20h%C6%A1n https://www.hostinger.vn/huong-dan/ssh-la-gi-va-cach-su-dung-ssh-cho-nguoimoi-bat-dau http://marjan.fesb.hr/~mcagalj/CNS/Lectures/SSH_protocol.pdf https://thanhnien.vn/cong-nghe/canh-bao-tan-cong-brute-force-vao-dich-vu-ssh500839.html https://tel4vn.edu.vn/16-cach-bao-mat-ssh/ 26 27 ... 10 CHƯƠNG 2: MỘT THÔNG TIN VỀ SSH Độ bảo mật Ssh Giao thức SSH cung cấp dịch vụ máy chủ xác thực, mã hóa, xác minh tính tồn vẹn liệu xác thực khách hàng Máy chủ SSH xác thực thông qua việc thực... OpenSSH, SSH server chạy Nhưng để kiểm tra, cần mở terminal chạy: sudo service ssh status Điều trả thông báo SSH kích hoạt Để khởi động SSH, mở dòng lệnh nhập: sudo service ssh start Và để ngăn SSH. .. thức SSH2 công khai xem xét số người thực độc lập Vì vậy, thực sử dụng chúng, giao thức hoàn toàn an toàn để bảo mật thông tin chống lại hầu hết tất công mật mã Những trường hợp cần sử dụng Ssh SSH