TRIỂN KHAI DỊCH VỤ WEB CÓ BẢO MẬT SỬ DỤNG GIAO THỨC TLS V1.3 Cùng với sự phát triển của Web Service, nhu cầu bảo mật của các doanh nghiệp cũng ngày càng nâng cao. Gần đây các cuộc tấn công vào các doanh nghiệp ngày càng phổ biến, đặc biệt hầu hết các cuộc tấn công vẫn nhắm vào các máy chủ web. Chúng bao gồm một số vấn đề như xác thực máy chủ, mã hóa dữ liệu người dùng, tấn công vào lổ hỗng trong các công nghệ như XML, SOAP, … Do đó, vấn đề bảo mật ngày càng trở nên cấp thiết hơn, cần có những giải pháp bảo mật tốt hơn để bảo vệ máy chủ web, bảo vệ thông tin người dùng. Để giải quyết vấn đề này giải pháp sử dụng TLS đối với Web Service là một trong những giải pháp phổ biến đối với mọi người và là cần thiết đối với sự bảo mật của các doanh nghiệp. Được thiết kế bởi Netscape bao gồm các cơ chế bảo mật trong các sản phẩm trình duyệt để tạo ra truyền thông an toàn trên mạng. TLS hiện đang là giao thức bảo mật được sử dụng phổ biến trên Internet, đồng thời hỗ trợ nhiều thuật toán mã hóa mạnh mẽ với mục tiêu chính đó là cung cấp một kênh truyền an toàn giữa hai kết nối giao tiếp, yêu cầu duy nhất từ vận chuyển cơ bản là luồng dữ liệu theo thứ tự đáng tin cậy. Đồ án “Tìm hiểu và triển khai dịch vụ Web có bảo mật sử dụng giao thức TLS v1.3” nhằm cung cấp những hiểu biết chung về dịch vụ web, các hiểm viii họa cũng như giải pháp bảo mật cho dịch vụ web, trong đó sử dụng giải pháp cụ thể là TLS để bảo mật cho dịch vụ web. Đồ án sẽ thực hiện những mục tiêu sau: 1. Tìm hiểu chung về dịch vụ web như cấu trúc, thành phần, hoạt động cơ bản của dịch vụ web, một số hiểm hoạ và giải pháp bảo mật dịch vụ web. 2. Giới thiệu bộ giao thức TLS 1.3, các giao thức, những cải tiến trong TLS 1.3 và một số giải pháp an toàn đối với dịch vụ web. 3. Tiến hành triển khai giải pháp bảo mật web sử dụng TLS 1.3 trên máy chủ Apache Dịch vụ web Web Service, bảo mật Dịch vụ web, bảo mật web , bảo mật ssl, Giao thức cảnh báo TLS , bảo mật ssl/tls , TLS Alert Protocol, Giao thức TLS v1.3, BẢO MẬT WEB SỬ DỤNG TLS 1.3 , SERVER APACHE, Apache HTTP Server Giao thức SSL/TLS được sử dụng để bảo mật kênh truyền cho rất nhiều dịch vụ mạng hiện nay như: dịch vụ Web, Email, Database, VoIP... TLS 1.3 là phiên bản mới nhất của giao thức này với nhiều ưu điểm như tốc độ nhanh và độ an toàn cao hơn so với các phiên bản trước
Viện Công Nghệ Thông Tin Và Truyền Thông ĐẠI HỌC BÁCH KHOA HÀ NỘI Luận Văn Thạc Sĩ TRIỂN KHAI DỊCH VỤ WEB CÓ BẢO MẬT SỬ DỤNG GIAO THỨC TLS V1.3 Nguyen Thanh Long Ha Noi, 2023 MỤC LỤC MỤC LỤC i DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT v MỞ ĐẦU vii CHƯƠNG TỔNG QUAN VỀ DỊCH VỤ WEB 1.1 Giới thiệu chung dịch vụ web 1.1.1 Khái niệm dịch vụ web 1.1.2 Đặc điểm tính chất dịch vụ web 1.1.3 Ưu điểm nhược điểm dịch vụ web 1.1.3.1 Ưu điểm 1.1.3.2 Nhược điểm 1.2 Thành phần cấu trúc số khái niệm dịch vụ web 1.2.1 Kiến trúc mơ hình dịch vụ web 1.2.2 Thành phần dịch vụ web 1.2.2.1 SOAP – Simple Object Access Protocol 1.2.2.2 UDDI – Universal Description, Discovery and Intergration 1.2.3 Một số thành phần khái niệm khác 10 1.3 Một số hiểm họa dịch vụ web 10 1.4 Một số giải pháp bảo mật dịch vụ Web 12 1.4.1 eXtensible Access Control Markup Language (XACML) 12 1.4.1.1 Tổng quan XACML 12 1.4.1.2 Mơ hình XACML 13 1.4.1.3 Thành phần XACML 14 1.4.2 Security Assertion Markup Language (SAML) 15 1.4.2.1 Tổng quan SAML 15 1.4.2.2 Hoạt động SAML 15 i 1.4.2.3 Đặc điểm SAML 15 1.4.3 XML Key Management Specification (XKMS) 16 1.4.4 Web Services Policy Framework (WS-Policy) 17 1.4.5 eXentisble Rights Markup Language (XrML) 18 1.4.6 Giao thức bảo mật Transport Layer Security (TLS) 19 1.4.6.1 Tổng quan TLS 19 1.4.6.2 Chức hoạt động TLS 20 1.4.6.3 Ứng dụng 23 CHƯƠNG GIAO THỨC TLS V1.3 VÀ MỘT SỐ LỖ HỔNG BẢO MẬT CỦA GIAO THỨC 24 2.1 Giao thức TLS v1.3 24 2.1.1 Giới thiệu 24 2.1.2 Tổng quan giao thức 24 2.1.2.1 Cơ chế nối lại phiên với Pre-Shared Key (PSK) 27 2.1.2.2 Cơ chế 0-RTT 29 2.1.3 Giao thức bắt tay 31 2.1.3.1 Các thơng báo trao đổi khóa 31 2.1.3.2 Tham số máy chủ 37 2.1.3.3 Thông báo xác thực 39 2.1.4 Giao thức ghi (Record Protocol) 39 2.1.4.1 Lớp ghi (Record Layer) 40 2.1.4.2 Bảo vệ liệu vận chuyển ghi (Record Payload Protection) 41 2.1.4.3 Giá trị nonce ghi (Per – Record Nonce) 43 2.1.4.4 Phần đệm ghi (Record Padding) 43 2.1.4.5 Giới hạn sử dụng khóa (Limits on Key Usage) 44 ii 2.1.5 Giao thức cảnh báo (Alert Protocol) 45 2.1.5.1 Cảnh báo đóng (Closure Alerts) 45 2.1.5.2 Cảnh báo lỗi (Error Alerts) 46 2.1.6 0-RTT chống phát lại (0-RTT and Anti-Replay) 49 2.2 Những cải tiến TLS v1.3 50 2.2.1 Tốc độ hiệu 51 2.2.2 Vấn đề trao đổi khóa 52 2.2.3 Vấn đề mật mã TLS 1.3 55 2.2.4 Một số vấn đề khác 56 2.3 Một số giải pháp an toàn dịch vụ Web 58 2.3.1 Giải pháp sử dụng tường lửa 59 2.3.2 Giải pháp chống botnet DDoS 60 2.3.3 Bảo vệ đường truyền sử dụng SSL/TLS 60 2.3.4 Kiểm soát truy cập 60 2.3.5 Xây dựng quản lý hệ thống thu thập phân tích kiện 61 2.3.6 Giải pháp sử dụng WS-Security 61 2.4 Giới thiệu giải pháp bảo mật web sử dụng TLS 61 2.4.1 Giới thiệu giải pháp 62 2.4.2 Hoạt động HTTPS 63 2.4.3 Một số lưu ý với giải pháp HTTPS 65 2.5 Một số vấn đề an toàn giao thức SSL/TLS bảo mật web 67 CHƯƠNG TRIỂN KHAI GIẢI PHÁP BẢO MẬT WEB SỬ DỤNG TLS 1.3 VỚI SERVER APACHE 69 3.1 Giới thiệu triển khai Apache môi trường Linux (CentOS 7) 69 3.1.1 Giới thiệu Apache mô hình triển khai 69 3.1.2 Cài đặt Apache 70 iii 3.2 Triển khai TLS v1.3 server Apache 72 3.2.1 Tạo chứng 72 3.2.2 Triển khai TLS 1.3 74 3.2.3 Kiểm tra kết thực nghiệm 77 KẾT LUẬN 82 TÀI LIỆU THAM KHẢO 83 iv DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT TỪ VIẾT TẮT Ý NGHĨA VIẾT TẮT CỦA AEAD Authenticated Encryption with Associated Data Mã hóa xác thực với liệu CA Certificate Authority Cơ quan cấp chứng DDoS Distributed Denial of Service DoS Denial of Service Tấn công từ chối dịch vụ Datagram Transport Layer Bảo mật lớp vận chuyển Security Elliptic Curve Diffie-Hellman Exchange Edwards-curve Digital Signature Algorithm Datagram Trao đổi đường cong Elliptic Curve-Hellman Sơ đồ chữ ký số Edwardscurve ELK Elasticsearch, Logstash, Kibana Công cụ xử lý log FTP File Transfer Protocol Giao thức truyền tập tin HKDF HMAC-based extract-andHàm trích xuất mở rộng expand Key Derivation Function khóa dựa HMAC HTTP HyperText Transfer Protocol Giao thức truyền siêu văn IETF Internet Engineering Task Force Nhóm đặc nhiệm kỹ thuật Internet IMAP Internet Message Access Protocol Giao thức truy cập tin nhắn Internet JSON JavaScript Object Notation Kiểu liệu đối tượng JavaScript LDAP Lightweight Directory Access Protocol Phương thức đăng nhập trực tiếp Lightweight MAC Message Authentication Code Mã xác thực thông báo DTLS (EC) DHE EdDSA Tấn công phân phối từ chối dịch vụ v MITM Man In The Middle Tấn công xen OASIS Organization for the Advancement off Structured Ingormation Standards Tổ chức tiến tiêu chuẩn thơng tin có cấu trúc PCT Private Communications Technology Công nghệ truyền thông cá nhân RPC Remoto Procedure Call Lời gọi thủ tục từ xa SIEM Security Information and Event Management Hệ thống bảo mật thông tin quản lý kiện SOAP Simple Object Access Protocol Giao thức truy cập đối tượng đơn giản SSH Secure Shell Giao thức điều khiển truy cập từ xa SSL Secure Sockets Layer Giao thức bảo mật Socket TCP/IP Transmission Control Protocol/Internet Protocol Suite Bộ giao thức liên mạng TLS Transport Layer Security Giao thức bảo mật tầng giao vận UDDI Universal Description, Discovery and Intergration Mô tả phổ quát, khám phá tích hợp URL Uniform Resource Locator Đường dẫn tài nguyên VPN Virtual Private Network Mạng riêng ảo WAF Web Application Firewall Tường lửa ứng dụng web WS Web Service Dịch vụ web WSDL Web Service Descriptions Language Ngôn ngữ mô tả dịch vụ web XML eXtensible Markup Language Ngơn ngữ đánh dấu mở rộng XSS Scross Site Scripting Tấn công dùng mã độc hại vi MỞ ĐẦU Ngày với phát triển mạnh mẽ môi trường Internet, việc áp dụng công nghệ thông tin vào hầu hết lĩnh vực ngày phổ biến Nhu cầu trao đổi thông tin Internet ngày nhiều, điều ảnh hưởng lớn không đến cá nhân mà ảnh hưởng đến tồn phát triển doanh nghiệp Web Service đời mở hướng cho việc phát triển ứng dụng Internet giải vấn đề chuyển đổi liệu quy trình thương mại doanh nghiệp Nó xem cơng nghệ mang đến cách mạng cách thức hoạt động dịch vụ B2B (Business to Business) B2C (Business to Customer) Web Service kết hợp sử dụng nhiều công nghệ khác cho phép ứng dụng viết ngôn ngữ khác nhau, chạy tảng khác có chuyển đổi liệu thông qua môi trường mạng Internet sử dụng công nghệ khác XML, SOAP, WSDL, UDDI Điều đồng nghĩa với việc xuất rủi ro định Cùng với phát triển Web Service, nhu cầu bảo mật doanh nghiệp ngày nâng cao Gần công vào doanh nghiệp ngày phổ biến, đặc biệt hầu hết công nhắm vào máy chủ web Chúng bao gồm số vấn đề xác thực máy chủ, mã hóa liệu người dùng, công vào lổ hỗng công nghệ XML, SOAP, … Do đó, vấn đề bảo mật ngày trở nên cấp thiết hơn, cần có giải pháp bảo mật tốt để bảo vệ máy chủ web, bảo vệ thông tin người dùng Để giải vấn đề giải pháp sử dụng TLS Web Service giải pháp phổ biến người cần thiết bảo mật doanh nghiệp Được thiết kế Netscape bao gồm chế bảo mật sản phẩm trình duyệt để tạo truyền thơng an tồn mạng TLS giao thức bảo mật sử dụng phổ biến Internet, đồng thời hỗ trợ nhiều thuật tốn mã hóa mạnh mẽ với mục tiêu cung cấp kênh truyền an toàn hai kết nối giao tiếp, yêu cầu từ vận chuyển luồng liệu theo thứ tự đáng tin cậy Đồ án “Tìm hiểu triển khai dịch vụ Web có bảo mật sử dụng giao thức TLS v1.3” nhằm cung cấp hiểu biết chung dịch vụ web, hiểm vii họa giải pháp bảo mật cho dịch vụ web, sử dụng giải pháp cụ thể TLS để bảo mật cho dịch vụ web Đồ án thực mục tiêu sau: Tìm hiểu chung dịch vụ web cấu trúc, thành phần, hoạt động dịch vụ web, số hiểm hoạ giải pháp bảo mật dịch vụ web Giới thiệu giao thức TLS 1.3, giao thức, cải tiến TLS 1.3 số giải pháp an toàn dịch vụ web Tiến hành triển khai giải pháp bảo mật web sử dụng TLS 1.3 máy chủ Apache viii CHƯƠNG TỔNG QUAN VỀ DỊCH VỤ WEB 1.1 Giới thiệu chung dịch vụ web 1.1.1 Khái niệm dịch vụ web Dịch vụ web (WS – Web Service) hệ thống phần mềm thiết kế nhằm hỗ trợ tương tác máy tính kết nối với qua mạng (hình 1.1) Nó có giao diện mơ tả theo định dạng xử lý máy (cụ thể WSDL) Các hệ thống khác tương tác với dịch vụ web mô tả qua thông điệp SOAP, thường truyền tải HTTP với hóa XML kết hợp với tiêu chuẩn liên quan đến web khác.[2] Hình 1.1 Mơ hình dịch vụ web tổng quan Dịch vụ web có khả nhận nhiều yêu cầu xử lý sau đáp ứng lại cách trả kết tương ứng Quá trình nhận yêu cầu trả kết thực thông qua giao diện định nghĩa trước Những giao diện mô tả theo định dạng mà nhắc trước Cụ thể dịch vụ web xác định URL với chức việc đưa u cầu từ phía người dùng Nó cung cấp chức khác tùy thuộc vào dịch vụ web cung cấp Dịch vụ web sử dụng tảng ngôn ngữ XML cho việc trao đổi liệu Các hệ thống tương tác với dịch vụ web theo phương pháp mà quy định cách sử dụng thông điệp SOAP qua giao thức HTTP Mơ hình đặc thù dịch vụ web Client-Server CHƯƠNG TRIỂN KHAI GIẢI PHÁP BẢO MẬT WEB SỬ DỤNG TLS 1.3 VỚI SERVER APACHE 3.1 Giới thiệu triển khai Apache môi trường Linux (CentOS 7) 3.1.1 Giới thiệu Apache mô hình triển khai Apache (Apache HTTP Server) phần mềm web server mã nguồn mở, máy chủ web sử dụng phổ biến giới điều hành phát triển với Apache Software Foundation Có thể nói Apache cung cấp mơi trường cho ứng dụng, dịch vụ web hoạt động phổ biến Các yêu cầu gửi tới máy chủ sử dụng giao thức HTTP gọi HTTP request Khi người dùng sử dụng trình duyệt yêu cầu kết nối đến máy chủ, gửi HTTP request đến máy chủ yêu cầu truy cập cụ thể đường dẫn mà người dùng mong muốn Khi triển khai Apache làm môi trường để hỗ trợ dịch vụ web sử dụng TLS 1.3 quản trị viên cần ý đến phiên Apache Nguyên nhân phiên TLS 1.3 phiên cơng bố xác vào tháng 8/2018 Điều gây số vấn đề cập nhật độ tương thích hỗ trợ hệ thống máy chủ web Hiện TLS 1.3 hỗ trợ tối thiểu phiên Apache 2.4.36 với OpenSSL 1.1.1 Vấn đề OpenSSL u cầu phiên tồn lỗ hỗng cho phép kẻ công khai thác nhớ đệm máy chủ Đây vấn đề tồn thư viện mật mã mà vấn đề cập nhật phép hỗ trợ TLS 1.3 [4] Trong đồ án này, tơi trình bày triển khai Apache 2.4.39, OpenSSL 1.1.1c PHP Phần lớn máy chủ web muốn cập nhật lên phiên Apache cần biên dịch lại mã nguồn, chúng khơng thể tự động cập nhật với lệnh cập nhật thông thường Mơ hình triển khai mơ tả hình 3.1 Trong mơ hình này, đồ án trình bày cài đặt máy chủ web Apache hệ thống CentOS Máy chủ web sử dụng tên miền www.dinhminh.ml để chứng thực với trường hợp tạo chứng với Let’s Encrypt IP 192.168.254.128 Sau sử dụng máy khác chạy hệ điều hành windows để kết nối kiểm tra kết triển khai 69 Hình 3.1 Mơ hình triển khai TLS 1.3 Apache Server 3.1.2 Cài đặt Apache Trước biên dịch cài đặt Apache, biên dịch cài đặt OpenSSL 1.1.1c PHP sau: − Cài đặt gói phần mềm cần thiết cho tồn q trình biên dịch: [root@localhost ~]# yum install gcc zlib-devel perl-Test-Harness perl-Test-Simple mod_ssl expat-devel gcc-c++ autoconf re2c bison libxml2-dev − Biên dịch cài đặt OpenSSL 1.1.1c: a) Tải giải nén mã nguồn: [root@localhost ~]# cd /usr/local/src [root@localhost src]# wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz [root@localhost src]# tar xvf openssl-1.1.1c.tar.gz b) Biên dịch kiểm tra kết quả: [root@localhost src]# cd openssl-1.1.1c/ [root@localhost openssl-1.1.1c]# /./config prefix=/usr/local/ssl openssldir=/usr/local/ssl libdir=lib shared zlib \ \ \ \ \ [root@localhost openssl-1.1.1c]# make [root@localhost openssl-1.1.1c]# make test c) Cài đặt OpenSSL 1.1.1c: 70 [root@localhost openssl-1.1.1c]# make install [root@localhost openssl-1.1.1c]# cd [root@localhost ~]# ln -s /usr/local/ssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 [root@localhost ~]# ln -s /usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 [root@localhost ~]# ln -sf /usr/local/ssl/bin/openssl /usr/bin/openssl Như trình biên dịch cài đặt OpenSSL 1.1.1c thành công − Biên dịch cài đặt Apache 2.4.39: a) Tài giải nén mã nguồn: [root@localhost ~]# cd /usr/local/src [root@localhost src]# wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz [root@localhost src]# tar xvf pcre-8.42.tar.gz [root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://www.apache.org/dist/httpd/httpd-2.4.39.tar.gz [root@localhost src]# tar xvf httpd-2.4.39.tar.gz [root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://mirror.downloadvn.com/apache//apr/apr-1.7.0.tar.gz [root@localhost src]# tar xvf apr-1.7.0.tar.gz [root@localhost src]# cp -rp apr-1.7.0 httpd-2.4.39/srclib/apr [root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://mirror.downloadvn.com/apache//apr/apr-util-1.6.1.tar.gz [root@localhost src]# tar xvf apr-util-1.6.1.tar.gz [root@localhost src]# cp -rp apr-util-1.6.1 httpd-2.4.39/srclib/apr-util b) Biên dịch cài đặt Apache 2.4.39: [root@localhost ~]# cd /usr/local/src/pcre-8.42 [root@localhost pcre-8.42]# /configure [root@localhost pcre-8.42]# make [root@localhost pcre-8.42]# make install [root@localhost ~]# cd /usr/local/src/httpd-2.4.39 [root@localhost httpd-2.4.39]# /configure prefix=/usr/local/apache2 \ 71 enable-so \ enable-ssl with-mpm=prefork \ with-included-apr \ with-included-apr-util \ with-pcre=/usr/local/bin/pcre-config \ with-ssl=/usr/local/ssl \ [root@localhost httpd-2.4.39]# make [root@localhost httpd-2.4.39]# make install 3.2 Triển khai TLS v1.3 server Apache Trong phần này, tơi trình bày q trình triển khai TLS phiên 1.3 máy chủ web server cụ thể Apache 2.4.39 sau biên dịch vài cài đặt trước Q trình gồm phần nhỏ tạo chứng (bộ chứng tự cấp sử dụng bên thứ ba Let’s Encrypt) Tuy nhiên trước triển khai tơi cần chắn chương trình biên dịch cài đặt bước thành công Chúng bao gồm OpenSSL 1.1.1c, Apache 2.4.39 hỗ trợ TLS 3.2.1 Tạo chứng Đối với chứng tự cấp (Seft-singed Certificate) sử dụng openssl với chuẩn x509, sử dụng ECDSA với SHA256 với lệnh sau: [root@localhost ~]# openssl req -x509 -sha256 -nodes -days 365 \ -newkey ec: