TÌM HIỂU VÀ CẤU HÌNH DỊCH VỤ SSH TRÊN LINUX

55 1.1K 26
TÌM HIỂU VÀ CẤU HÌNH DỊCH VỤ SSH TRÊN LINUX

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ngày nay rất nhiều người dùng có nhiều tài khoản máy tính. Và nhu cầu kết nối giữa chúng cũng gia tăng. Ví dụ như bạn muốn sao chép một file giữa hai máy thông qua mạng, đăng nhập vào một tài khoản ở xa từ một máy khác, hoặc truyền dòng lệnh đến một máy tính ở xa để thực hiện. có nhiều chương trình khác nhau đã tồn tại để phục vụ cho những mục đích đó như FTP và RCP để truyền file, TELNET và RLOGIN để đăng nhập từ xa, và RSH để thực hiện lệnh từ xa.

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TOÀN THÔNG TIN ĐỀ TÀI TÌM HIỂU VÀ CẤU HÌNH DỊCH VỤ SSH TRÊN LINUX Sinh viên thực hiện: Lê Văn Vũ Nguyễn Thị Thu Hiền Vũ Xuân Huy Trần Nhật Trường Lớp: AT8B Mục Lục KÝ TỰ VIẾT TẮT Ký tự Ý nghĩa AES Advanced Encryption Standard: tiêu chẩn mã hóa tiên tiến ARCFOU RC4 (Rivest Cipher 4) CA Certificate Authority CRC Cyclic Redundancy Check DES Data Encryption Standard : tiêu chuẩn mã hóa liệu DNS Domain Name System: hệ thông tên miền DSA Digital Signature Algorithm: giải thuật ký số DSS Decision Support System R ECDSA HĐH IETF IMAP MD5 Elliptic Curve Digital Signature Algorithm : Giải thuật chữ ký số đường cong elliptic Hệ Điều Hành Internet Engineering Task Force Internet Message Access Protocol :Giao thức truy nhập Thông báo Internet Message-Digest algorithm MITM Man-in-the-middle attack: công xen NIS Network Information Service: Dịch vụ thông tin Mạng NIST NNTP NSA RIPEMD National Institute of Standards and Technology: Viện tiêu chuẩn Công nghệ Quốc gia Network News Transfer Protocol: Giao thức chuyển tin mạng máy tính National Security Agency: Cơ quan An ninh Quốc gia Hoa Kỳ/Cục An ninh Trung ương Integrity Primitives Evaluation Message Digest RSADSI RSA Data Security: Bảo mật liệu RSA SSH/SFT SSH File Transfer Protoco: Giao thức truyền tệp tin P DANH MỤC HÌNH ẢNH DANH MỤC BẢNG LỜI MỞ ĐẦU Ngày nhiều người dùng có nhiều tài khoản máy tính Và nhu cầu kết nối chúng gia tăng Ví dụ bạn muốn chép file hai máy thông qua mạng, đăng nhập vào tài khoản xa từ máy khác, truyền dòng lệnh đến máy tính xa để thực có nhiều chương trình khác tồn để phục vụ cho mục đích FTP RCP để truyền file, TELNET RLOGIN để đăng nhập từ xa, RSH để thực lệnh từ xa Trên nhiều hệ thống, chương trình ứng dụng “telnet” dùng phiên giao dịch tương tác TCP dạng sơ đẳng (interactive raw – TCP sessions), dùng để thông nối với dịch vụ máy chủ POP3, mà không cần đến trình khách chuyên dụng Tuy nhiên, tồn vấn đề bạn truyền file nhạy cảm thông qua Internet, có khả kẻ xấu chặn lại đọc liệu Thậm chí, bạn đăng nhập vào máy tính từ xa khác việc sử dụng chương trình telnet username password bạn bị lộ chúng truyền mạng Có cách giải kinh tế hiệu là, sử dụng giao thức SSH Bản báo cáo nhóm thực trình bày SSH gì? Và nội dung bạn báo cáo giúp bạn hiểu giao thức lại giải vấn đề nêu Cấu trúc báo cáo gồm hai chương: - Chương 1: Giới thiệu giao thức SSH, giúp bạn biết giao thức SSH gì? - Chương 2: Trình bày cách cấu hình, cài đặt để sử dụng giao thức Để đảm bảo đưa nhìn tổng quan dễ hiểu giao thức SSH, nên kiến thức khác, chuyên sâu giao thức SSH mà báo cáo chưa nêu Và thời gian hạn chế mà báo cáo không tránh khỏi thiếu sót, mong thầy cô bạn đóng góp thông cảm Cuối cùng, nhóm hy vọng báo cáo tài liệu hữu ích giúp bạn hiểu giao thức mạng an toàn CHƯƠNG I: TÌM HIỂU SSH 1.1 Giới thiệu SSH SSH (Secure Shell) giao thức mạng dùng để thiết lập kết nối mạng cách bảo mật SSH hoạt động lớp ứng dụng mô hình phân lớp TCP/IP Các công cụ sử dụng SSH (như OpenSSH, …) cung cấp cho người dùng cách thức để thiết lập kết nối mạng mã hoá để tạo kênh kết nối bí mật SSH chương trình tương tác servers clients có sử dụng chế mã hoá Mỗi liệu gửi máy tính vào mạng, SSH tự động mã hoá Khi liệu nhận vào, SSH tự động giải mã Kết việc mã hoá thực suốt: người dùng làm việc bình thường, việc truyền thông họ mã hoá an toàn mạng SSH phát minh công ty tư nhân SSH chủ yếu sử dụng HĐH Unix/ Linux server tảng Windows Giao thức SSH bao gồm:xác thực, mã hóa toàn vẹn liệu truyền mạng, hình bên Hình Xác thực, mã hóa toàn vẹn 1.2 Lịch sử phát triển SSH1 giao thức SSH-1 trình bày năm 1995 Tatu Ylõnen, nhà nghiên cứu trường đại học kĩ thuật Helsinki Phần Lan Sau mạng trường đại học ông ta nạn nhân công đánh cắp password vào đầu năm Tháng năm 1995, SSH1 phát hành rộng rãi dạng phần mềm miễn phí có source code, cho phép người chép sử dụng mà không thu phí Vào cuối năm đó, ước tính có khoảng 20.000 người dùng 50 quốc gia sử dụng SSH1, ngày Ylõnen nhận 150 mail yêu cầu hỗ trợ Để đáp lại, Ylõnen thành lập SSH Communications Security (SCS, http://www.ssh.com) vào tháng 12 năm 1995 để trì, thương nghiệp hoá tiếp tục phát triển SSH Cũng năm 1995, Ylõnen soạn thảo giao thức SSH-1 gọi Internet Engineering Task Force (IETF), diễn tả hoạt động phần mềm SSH1 thực tế Nó giao thức có phần quảng cáo số lỗi giới hạn phổ biến Năm 1996, SCS giới thiệu phiên phiên giao thức, SSH 2.0 hay SSH-2, phiên kết hợp chặt chẽ thu 1ật toán không hợp với SSH-1 Trong lúc đó, IETF thành lập nhóm làm việc gọi SECSH (Secure Shell) để chuẩn hoá giao thức đạo phát triển lợi ích chung Nhóm làm việc SECSH trình bày phác thảo Internet giao thức SSH-2 vào tháng năm 1997 Năm 1998, SCS phát hành sản phẩm phần mềm “SSH Secure Shell” (SSH2), dựa giao thức SSH-2 Tuy nhiên, SSH2 không thay SSH1 số lĩnh vực, có lí Thứ nhất, SSH2 số tiện ích, đặc điểm có ích cấu hình tuỳ chọn SSH1 Thứ hai, SSH2 có nhiều giới hạn việc đăng kí Bản SSH1 có sẵn miễn phí từ Ylõnen trường đại học kĩ thuật Helsinki Phiên SSH1 từ SCS có sẵn miễn phí cho hầu hết người dùng, chí cấu hình thương mại miễn phí cần phần mềm không trực tiếp bán cho việc thu lợi nhuận tặng dịch vụ cho khách hàng Vì thế, SSH2 xuất hiện, hầu hết người sử dụng SSH1 nhận vài ưu điểm SSH1 so với SSH2 tiếp tục sử dụng SSH1, ba năm sau SSH2 đời SSH1 phiên sử dụng phổ biến Internet vượt qua SSH2 giao thức tốt bảo mật Tuy nhiên, SSH2 có hai phát triển hưa hẹn, nới lỏng SSH2 quyền xuất SSH-2 bổ sung Năm 2000, SCS mở rộng SSH2 quyền phép sử dụng làm việc riêng lẻ tổ chức hoạt động phi lợi nhuận Nó mở rộng cho phép dùng miễn phí Linux, NetBSD, FreeBSD hệ điều hành OpenBSD Cùng thời gian đó, OpenSSH (http://www.openssh.com) phát triển bật SSH bổ sung, phát triển hoạt động dự án OpenBSD (http://www.openbsd.org) miễn phí sẵn bên OpenBSD có đăng kí OpenSH hỗ trợ SSH-1 SSH-2 chương trình Tuy OpenSSH phát triển OpenBSD hoạt động Linux, Solais, AIX hệ điều hành khác Mặc dù OpenSSH tương đối vài đặc điểm có SSH1 SSH2 đà phát triển nhanh chóng hứa hẹn trở thành SSH thức 1.3 Các đặc điểm SSH Các đặc điểm giao thức SSH là: - Tính bí mật (Privacy) : liệu mã hóa, hiển thị với người dùng định danh, lại khó hiểu - Tính toàn vẹn (Integrity) : đảm bảo liệu không bị biến đổi, bên thức ba chụp sửa đổi liệu bạn trình chuyển SSH phát thực tế - Chứng minh xác thực (Authentication) nghĩa chứng để nhận dạng bên gửi bên nhận Nếu bạn cố gắng đăng nhập vào tài khoản máy tính từ xa, SSH yêu cầu chứng kỹ thuật số nhận dạng bạn Nếu vượt qua tất kiểm tra, bạn đăng nhập, không bác bỏ yêu cầu - Giấy phép (Authorization) :dùng để điều khiển truy cập đến tài khoản - Chuyển tiếp (Forwarding) tạo đường hầm (Tunneling) để mã hoá phiên khác dựa giao thức TCP/IP - Cổng giao tiếp 22 Thuật ngữ: - ssh: client - sshd:server - Nếu sshd không hoạt động client kế nối đến server ssh 1.3.1 Tính bí mật (Privacy) Tính bí mật có nghĩa bảo vệ liệu không bị phơi bày Mạng máy tính bình thường không bảo đảm tính bí mật, truy cập đến phần cứng mạng đến host kết nối với mạng đọc tất liệu qua mạng Mặc dù mạng chuyển mạch đại giảm vấn đề mạng vùng cục vấn đề nghiêm trọng mật dễ bị kẻ xấu đánh cắp SSH cung cấp tính bí mật việc mã hoá liệu qua mạng Đó việc mã hoá hai đầu dựa khoá ngẫu nhiên (sinh để phục vụ cho phiên kết nối huỷ phiên kết nối thành công) SSH hỗ trợ nhiều thuật toán mã hoá phiên liệu, thuật toán mã hoá chuẩn như: AES, ARCFOUR, Blowfish, Twofish, IDEA, DES triple-DES (3DES) 1.3.2 Tính toàn vẹn (Integrity) Tính toàn vẹn nghĩa bảo đảm liệu truyền từ đầu đến đầu mạng không bị thay đổi Giao thức SSH sử dụng phương pháp kiểm tra toàn vẹn mật mã, phương pháp kiểm tra việc liệu có bị biến đổi liệu đến có đầu gửi hay không Nó sử dụng thuật toán băm khoá MD5 SHA-1 1.3.3 Chứng minh xác thực (Authentication) Chứng minh xác thực kiểm tra định danh để xác định xác người hay không Mỗi kết nối SSH bao gồm hai việc xác thực: client kiểm tra định danh SSH server (server authentication) server kiểm tra định danh người sử dụng yêu cầu truy cập (user authentication) Server authentication chắn SSH server xác kẻ lừa đảo để đề phòng kẻ công lại gửi kết nối mạng đến máy khác Server authentication bảo vệ việc bị kẻ xấu ngồi hai bên, lừa gạt hai bên, nghĩa kẻ xấu nói với server client nói với client server để đọc liệu trao đổi hai bên User authentication theo truyền thống làm việc với mật Để xác thực định danh bạn, bạn phải đưa mật khẩu, dễ bị lấy cắp Thêm nữa, để dễ nhớ mật khẩu, người ta thường đặt ngắn có ý nghĩa nên dễ bị kẻ xấu đoán Đối với mật dài người ta thường chọn từ câu ngôn ngữ bẩm sinh nên dễ bị bẻ khoá SSH hỗ trợ xác thực mật khẩu, mã hoá mật truyền mạng Đây cải thiện lớn so với giao thức truy cập từ xa thông thường khác (Telnet, FTP) mà chúng gửi mật qua mạng dạng clear text Tuy nhiên, việc chứng thực chứng thực mật đơn giản, SSH cung cấp chế mạnh dễ sử dụng hơn: user có nhiều chữ kí khoá công khai (peruser public-key signature) cải tiến rlogin-style xác thực với định danh host kiểm tra khoá công khai Hơn nữa, bổ sung khác SSH hỗ trợ vài hệ thống khác bao gồm Kerberos, RSA, mật S/Key one-time PAM Một SSH client SSH server đàm phán với để xác định chế xác thực sử dụng dựa cấu hình chúng server chí yêu cầu nhiều kiểu xác thực Có hai phương pháp xác thực chủ yếu: • Dựa khóa công khai 10 Điều có ý nghĩa việc làm việc với nhiều servers khác Ví dụ có 100 servers có tên từ b1.at8b.com -> b100.at8b.com, cần cài vim lên 100 servers Việc thực dễ dàng sau cài đặt cặp key từ a.at8b.com lên 100 servers kia, sau: [root@a.at8b.com:~]# for i in {1 100}; ssh b${i}at8b.com apt-get install -y vim; done 41 KẾT LUẬN Các ứng dụng sử dụng giao thức SSH hoạt động tốt có tính bảo mật cao Một ưu điểm khác hầu hết chúng miễn phí nên thuận tiện để có hệ thống bảo mật với SSH Có nhiều phần mềm client server khác hỗ trợ tốt cho hệ điều hành sử dụng rộng rãi Window, Linux, Macintosh Tuy nhiên, SSH mẻ hệ thống mạng Việt Nam, phần vấn đề ngôn ngữ Hơn nữa, ứng dụng SSH phần lớn miễn phí miễn phí với client số server chạy Linux, server chạy Window thường thương mại nên khó khăn muốn có hệ thống mạng có ứng dụng bảo mật SSH Window vốn quen thuộc với người từ lâu Từ nhận xét đó, Tôi có ý tưởng nghiên cứu xây dựng phần mềm Remote Login dựa giao thức SSH có giao diện tiếng Việt chạy Window client lẫn server Hi vọng sau nghiên cứu, xây dựng, sản phẩm có phần đóng góp vào nghành công nghệ thông tin nước ta 42 TÀI LIỆU THAM KHẢO [01] Server World http://www.server-world.info/en/ [02] Wikilinux http://wikilinux.vn/ [03] Openssh http://wiki.centos.org/HowTos/Network/SecuringSSH [04] Cấu hình chức thực ssh http://docs.gocloud.vn/cau-hinh-chung-thuc-ssh-bang-private-key-public-key/ 43 PHỤ LỤC Inside SSH-2 Giao thức vận chuyển SSH-TRANS  Tiến trình tạo kết nối Để minh hoạ, lấy ví dụ Client SSH chạy máy Macintosh đọc cấu hình file sau tạo kết nối TCP đến phía bên đầu xa ( ví dụ đến host.foo.net) sau: $ ssh -vv host.foo.net OpenSSH_3.6.1p1+CAN-2003-0693, SSH protocols 1.5/2.0, OpenSSL 0x0090702f • • • • • • debug1: Reading configuration data /Users/res/.ssh/config debug1: Applying options for com debug1: Applying options for * debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to host.foo.net [10.1.1.1] port 22 debug1: Connection established  Tiến trình chọn lựa phiên giao thức Càng sớm tốt server chấp nhận kết nối, giao thức SSH bắt đầu Server thông báo phiên giao thức chuỗi văn bản: Debug1: Remote protocol version 2.0, remote software version 4.1.0.34 SSH Secure Shell Bạn thấy chuỗi kết nối đơn giản bạn đến server telnet: $ telnet at8b.com 22 Trying 10.1.1.1… Connected to at8b.com Escape character is ‘^]’ SSH-2.0-4.1.0.34 SSH Secure Shell ^] telnet> quit Connection closed Định dạng thông báo là: SSH-- Trong trường hợp này, server dùng giao thức SSH-2 phần mềm 4.1.0.34 SSH từ công ty bảo mật truyền thông (SSH Communication Security) Mặc dù trường 44 thích bao gồm thứ SSH server thường đưa vào tên phiên sản phẩm Điều có ích để client thường nhận biết xác server dùng sản phẩm phiên để làm việc cho tránh lỗi không tương thích với Phiên giao thức số “1.99” có ý nghĩa đặc biêt: hỗ trợ hai giao thức SSH-1 SSH-2 Tiếp theo, OpenSH phân tích lời thích: • debug1: no match: 4.1.0.34 SSH Secure Shell • debug1: Enabling compatibility mode for protocol 2.0 • debug1: Local version string SSH-2.0-OpenSSH_3.6.1p1+CAN-2003-0693 Nhưng không tìm thấy hợp với danh sách biết có vấn đề Nó chọn SSH-2 (chỉ chọn ví dụ này) gửi chuỗi phiên đến server giống cách mà server gửi Nếu client server đồng ý phiên chúng tương thích tiến trình kết nối tiếp tục, không hai kết thúc kết nối  Tiến trình thương lượng tham số Đã thiết lập kết nối đồng ý phiên bản, nhiệm vụ SSHTRANS chuẩn bị thuộc tính bảo mật SSH: • • • • Tính bí mật (privacy) Tính toàn vẹn (integrity) Xác thực server Nén liệu Nhưng đầu tiên, hai bên phải đồng ý thông số phiên, bao gồm phương thức để đạt thuộc tính Tiến trình diễn gian đoạn gọi tiến trình trao đổi khoá • Debug1: SSH2_MSG_KEXINIT sent • Debug1: SSH2_MSG_KEXINIT receive Client gửi thông báo KEXINIT (khởi tạo tao đổi khoá) nhận tữ server Ở có chọn lựa đưa cho server: debug2: kex_parse_kexinit: gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group1-sha1-A/vxljAEU54gt9a48EiANQ==, diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1 Thuật toán trao đổi khoá mà client hỗ trợ là: diffie-hellman-group1-sha1 45 Thuật toán định nghĩa yêu cầu SSH-TRANS, rõ cho biết dùng thủ tục Diffie-Hellman để thoả thuận khoá với tham số cụ thể khác (Oakley Group thuật toán băm SHA-1) diffie-hellman-group-exchange-sha1 Tương tự, cho phép client chọn từ danh sách nhóm tham số, địa liên quan khả bị công dựa nhóm bố trí trước, định nghĩa tài liệu phác thảo IETF “secsh-dh-group-exchange” gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g== gss-group1-sha1-A/vxljAEU54gt9a48EiANQ== Những tên trông kỳ quặc mã hóa Base64 – chúng hiển thị hai giá trị khác xác thực Kerberos, trao đổi Diffe-Hellman Một sở hạ tầng Kerberos có sẵn cung cấp xác thực server tự động linh hoạt mà không cần xác nhận SSH host key file known-host riêng Xác thực Kerberos cung cấp GSSAPI tên phía sau mã hóa Base64 hàm băm MD5 Trong điều kiện tóm tắt thỏa thuận, thuật toán trao đổi khoá SSH có hai đầu : Một share secret, K Một “exchange hash”, H K tham số bí mật phiên: SSH-TRANS định nghĩa phương thức secret K từ nguồn gốc khoá khác tham số mã hoá khác cần thiết cho việc mã hoá cụ thể thuật toán toàn vẹn liệu sử dụng kết nối SSH Exchange hash H không bí mật, không cần thiết để lộ phiên Trao đổi khoá diễn xác thực server để đề phòng việc giả mạo công man-in-the-middle lặp lại kết nối để thay cũ xác thực lại server Tiếp theo, client cung cấp kiểu SSH host key mà cháp nhận : debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,null Trong trường hợp này, cung cấp RSA, DSA null trường hợp khoá Nó bao gồm null hỗ trợ Kerberos cho xác thực host Nếu dùng trao đổi khoá Kerberos SSH host key cần thiết việc xác thực server Sau đó, client liệt kê thuật toán mã hoá liệu mà hỗ trợ : 46 debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128cbc,arcfour, aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se Dữ liệu không mã hoá trực tiếp với phương thức khoá công khai RSA DSA chúng làm qua chậm Thay vào đó, sử dụng thuật toán khoá đối xứng danh sách phia để bảo vệ khoá phiên việc mã hoá phương thức khoá công khai thích hợp Kế đến, client hiển thị danh sách thuật toán toàn vẹn liệu mà có sẵn: debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160, hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 Thuật toán toàn vẹn ứng dụng để thông điệp gửi giao thức hồ sơ SSH với chuỗi số khoá phiên toạ mã xác nhận thông điệp (MAC:message authentication code) thêm vào thông điệp Bên nhận dùngg MAC chép khoá phiên để kiểm tra thông điệp không bị biến đổi đường truyền, không bị truyền lặp lại phiên khác gửi tới, thuộc tính toàn vẹn liệu Cuối cùng, client cho biết kỹ thuật nén liệu mà hỗ trợ: debug2: kex_parse_kexinit: none,zlib Sau gửi thông điệp thoả thuận nó, client nhận từ server danh sách tham số mà server hỗ trợ: • • • • • • • debug2: kex_parse_kexinit: diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-dss,x509v3-sign-rsa debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,twofish128-cbc,cast128-cbc, twofish-cbc, blowfish-cbc,aes192-cbc,aes256-cbc, twofish192-cbc,twofish256-cbc,arcfour debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib Kế đến, bên chọn thuật toán tương ứng từ thuật toán hõ trợ bên kia: • debug1: kex: server->client aes128-cbc hmac-md5 none • debug1: kex: client->server aes128-cbc hmac-md5 none Trong trường hợp này, việc chọn lựa hai bên giống Tuy nhiên, chúng không cần thiết phải giống Việc bên chọn lựa thuật toán hay khoá độc lập với hại  Tiến trình trao đổi khoá xác thực server 47 Tại thời điểm này, chúng sẵn sàng để đưa danh sách trao đổi khoá • debug2: dh_gen_key: priv key bits set: 131/256 • debug2: bits set: 510/1024 • debug1: sending SSH2_MSG_KEXDH_INIT Client chọn mọt thuật toán trao đổi khoá từ thông báo server, trường hợp server đưa có Nó sinh khoá tạm thời phần thuật toán Diffe-Hellman gửi thông điệp khởi tạo trao đổidiffiehellman-group1-sha1, lúc server biết phương thức mà hai bên sử dụng bắt đầu trao đổi Tiếp theo, client đợi server gửi thông điệp KEXDH_INIT chúng: • • • • • debug1: expecting SSH2_MSG_KEXDH_REPLY debug1: Host ‘host.foo.net’ is known and matches the DSA host key debug1: Found key in /Users/res/.ssh/known_hosts:169 debug2: bits set: 526/1024 debug1: ssh_dss_verify: signature correct Bao gồm phần trả lời server khoá công khai SSH nó, với chữ kí cung cấp khoá bí mật tương ứng mà giữ Dĩ nhiên chữ kí kiểm tra ý nghĩa quan trọng, bước quan trọng kiểm tra định danh khoá công khai server Trong ví dụ này, client tìm kết hợp tên foo.host.net với khoá cung cấp server SSH-2 hỗ trợ hệ thống PKI (Public Key Infrastructure) để kiểm tra khoá công khai, định nghĩa số kiểu khoá bao gồm gắn với giấy xác thực ssh-rsa Plain RSA key Giao thức kết nối SHH_CONN Giao thức kết nối SSH-CONN Khi yêu cầu xác thực thành công, client se có dịch vụ tên “ssh-con” không hiển thị client mà hiển thị server sau: debug1: userauth-request for user res service ssh-connection method publickey Server bắt đầu chạy dịch vụ hai bên đến giao thức kết nối SSH Kênh (channels) Dịch vụ SSH-CONN cung cấp multilexing SSH-CONN điều khiển kênh đơn, bảo đảm, luồng byte đôi cung cấp SSH-TRANS cho phép client tạo kênh kênh SSH-CONN khác chạy qua Kênh nhận dạng số kênh tạo huỷ bỏ client server Kênh điều khiển 48 lưu lượng riêng lẻ kênh có kiểu kênh định nghĩa theo mục đích sử dụng Kiểu định nghĩa sau: • session: Đơn mở kênh phiên không bắt đầu chạy chuơng trình.Một phiên SSH-CONN có nhiều kênh phiên, hỗ trợ đồng thời, ví dụ chạy giao thức truyền file thực thi chương trình phiên SSH-CONN • x11: kết nối X11 client • orward-tcpip: kết nối bên để chuyển tiếp cổng xa Khi kết nối đến cổng TCP chuyển tiếp xa, server mở kênh trở lại client để mang kết nối • direct-tcpip: kết nối TCP bên Kết nối trực tiếp đến mở kết nối TCP socket định sẵn thêm kênh đến kết nối Socket dùng tên miền địa IP Yêu cầu (request) Thêm vào dãy kênh hoạt động- mở, đóng, gủi liệu, gửi liệu khẩn cấp,…SSH-CONN định nghĩa thiết lập cho yêu cầu với tính đầy đủ kênh phận Một yêu cầu đầy đủ ảnh hưởng đến toàn trạng thái kết nối yêu cầu kênh (bộ phận) mở kênh cụ thể Yêu cầu dầy đủ là: • tcpip-forward: yêu cầu cổng chuyển tiếp TCP đằng xa • cancel-tcpip-forward: huỷ bỏ chuyển tiếp từ xa • pty-req: định pty, bao gồm kích cỡ cửa sổ kiểu thiết bị đầu cuối • x11-req: cài đặt chuyển tiếp x11 • env: thiết lập biến điều kiện • shell, exec, subsystem: chạy tiện ích tài mặc định tài khoản, chương trình tuỳ ý, dịch vụ đơn giản • window-change: thay đổi kích thước cửa sổ thiết bị đầu cuối • xon-xoff: dùng điều khiển bên client • signal: gửi tín hiệu đặc biệt đến tiến trình xa • exit-signal: trả tín hiệu kết thúc chương trình Khi SSH-CONN chạy, client gửi yêu cầu mở kênh phiên Sau gửi số yêu cầu muốn thực thông qua kênh… Bây client đăng nhập thành công vào máy chủ SHH từ xa SSH sau vài đặt Tập tin cầu hình SSH nằm thư mục /etc/ssh.Ta khảo sát sơ lược số file thư mục ssh này: 49 - module: Chứa nhóm DiffieHellman sử dụng cho việc trao đổi khóa - DiffieHellman, thực quan trọng để xây dựng lớp bảo mật tầng vận chuyển liệu.Khi khóa trao đổi với bắt đấu phiên kết nối SSH, share secret value tạo xác định hai bên kết nối, giá trị sau dùng để cung cấp chứng thực cho host ssh_config: file cấu hình mặc định cho SSH client hệ thống sshd_config: File cấu hình cho sshd deamon ssh_host_dsa_key: DSA private key sử dụng với sshd deamon ssh_host_dsa_key.pub: DSA public key sử dụng sshd deamon ssh_host_key: RSA private key sử dụng sshd deamon cho phiên giao thức SSH - ssh_host_key.pub: RSA public key sử dụng sshd deamon cho phiên giao thức SSH - ssh_host_rsa_key: RSA private key sử dụng sshd deamon cho phiên giao thức SSH ssh_host_rsa_key.pub: RSA public key sử dụng sshd deamon cho phiên giao thức SSH Bảo mật SSH nâng cao Phần giúp bạn nâng cao tính bảo mật cho dịch vụ Secure Shell (SSH) File cấu hình server SSH đặt thư mục /etc/ssh/sshd_conf Bạn cần khởi động lại dịch vụ SSH sau lần thay đổi để thay đổi thực thi Thay đổi cổng SSH Mặc định, SSH tuân theo kết nối đến cổng 22 Kẻ công thường sử dụng phần mềm quét cổng xem liệu host có sử dụng dịch vụ SSH không Thay đổi cổng SSH lên cao 1024 lựa chọn khôn ngoan, hầu hết chương trình quét cổng (gồm nmap) mặc định rà soát cổng cao Mở file /etc/ssh/sshd_config tìm dòng có ghi: Port 22 Thay đổi số cổng khởi động lại dịch vụ SSH: /etc/init.d/ssh restart Chỉ cho phép sử dụng giao thức SSH 50 Như nói trên, có hai loại giao thức SSH Nếu dùng giao thức SSH an toàn nhiều SSH thường gặp phải vấn đề bảo mật với kiểu công manin-the-middle insertion Mở file /etc/ssh/sshd_config tìm dòng sau: Protocol 2,1 Thay đổi dòng thành protocol Chỉ cho phép số đối tượng người dùng đăng nhập qua SSH Bạn không nên cho phép người dùng root đăng nhập qua SSH, điều gây nên mối đe doạ bảo mật lớn mà không cần thiết Nếu kẻ công thu đặc quyền root đăng nhập vào máy, khả phá hoại gấp lần người dùng thông thường Bạn nên cấu hình server SSH không cho phép người dùng root đăng nhập Đầu tiên, tìm dòng ghi: PermitRootLogin yes Thay đổi yes thành no khởi động lại dịch vụ Sau bạn đăng nhập lại hệ thống với vai trò người dùng xác định chuyển sang người dùng root muốn trở thành siêu người dùng Sẽ khôn ngoan tạo user cục giả hoàn toàn đặc quyền hệ thống dùng tên user để đăng nhập SSH Sử dụng cách thức giúp máy tính không bị hại dù tài khoản người dùng có bị xâm phạm Khi tạo người dùng này, chắn phải nằm nhóm wheel để bạn chuyển sang nhóm superuser (siêu người dùng) cần Nếu muốn tạo danh sách số đối tượng người dùng phép đăng nhập vào SSH, bạn mô tả chúng file sshd_config Ví dụ, muốn cho phép người dùng anze, dasa, kimy đăng nhập qua SSH, cuối file sshd_config, thêm vào dòng sau: AllowUsers anze dasa kimy Tạo banner SSH tuỳ biến Nếu muốn mời người dùng kết nối tới dịch vụ SSH để xem thư đó, bạn tạo banner SSH tuỳ biến Thực đơn giản cách tạo file text (trong ví dụ file etc/ssh-banner.txt) đặt kiểu thư text bạn có vào Ví dụ: **************************************************************** *This is a private SSH service You are not supposed to be here.* *Please leave immediately * 51 ************************************************** Khi muốn chỉnh sửa ghi file, sshd_conf, tìm dòng ghi: #Banner /etc/issue.net Không cần bình luận dòng mà thay đổi đường dẫn tới file text banner SSH tuỳ biến bạn Sử dụng chế thẩm định khoá công khai DSA Thay sử dụng tên mật đăng nhập vào SSH, bạn dùng chế thẩm định khoá công khai DSA Chú ý bạn sử dụng username, password khoá DSA lúc Sử dụng chế thẩm định khoá công khai DSA cho phép hệ thống ngăn chặn kiểu công theo sách vở, bạn đăng nhập vào dịch vụ SSH mà không cần dùng đến tên mật Thay vào đó, bạn cần cặp khoá DSA: khoá công khai (public) khoá bí mật (private) Khóa bí mật giữ máy bạn, khóa công khai đưa lên server Khi muốn đăng nhập vào phiên SSH, server kiểm tra khoá Nếu tất thông số khớp, bạn đưa vào hệ thống Nếu khoá không khớp, kết nối bị ngắt Ở ví dụ đây, máy riêng kết nối tới máy chủ đặt tên station1 máy chủ server1 Trên hai máy có thư mục chủ (home folder) Chú ý kết nối không hoạt động thư mục chủ client server khác Đầu tiên, tạo cặp khoá máy riêng với lệnh ~$ ssh-keygen -t dsa Bạn nhắc cụm mật cho khoá riêng, để trống, chưa quan tâm đến phương thức vội Một cặp khoá tạo: khoá riêng nằm ~/.ssh/id_dsa khoá chung đặt ssh/id_dsa.pub Tiếp theo, copy nội dung ~/.ssh/id_dsa.pub to server1 vào file ~/.ssh/authorized_keys Nội dung ~/.ssh/id_dsa.pub có dạng $ cat ssh/id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7 YEqtrdfFCUVwMWcJYDusNG AIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV 91lbG7z604ZTdrLZVSFhCI/Fm4yROH Ge0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7nM7a KxIBPDrQwKNyPQAAAIEA 52 q+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5pu Fe7eplmr6t7Ljl7JdkfEA5De0k3WDs 9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgC WvsghIoD0AMRC7ngIe6btaNIhBbq ri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfD f61rbWOqrARuHFRF0 Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP3 4fST1amc0YNeB p28EQi 0xPEFUD0IXzZtXtHVLziA1/NuzY= at8b@gmail.com Nếu file ~/.ssh/authorized_keys tồn tại, gắn thêm nội dung ~/.ssh/id_dsa.pub vào file ~/.ssh/authorized_keys server1 Bạn cần thực việc thiết lập xác đặc quyền file ~/.ssh/authorized_keys server1: ~$ chmod 600 ~/.ssh/authorized_keys Bây cấu hình file sshd_conf để sử dụng chế thẩm định khoá DSA Hãy chắn bạn có ba dòng không thích sau: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys Khởi động lại dịch vụ Nếu thứ cấu hình xác, bạn sử dụng SSH cho server đặt trực tiếp vào thư mục chủ mà không cần tương tác khác Nếu muốn sử dụng chế thẩm định DSA, không cần thích hay thay đổi dòng PasswordAuthentication file sshd_config từ yes thành no: PasswordAuthentication no Nếu cố gắng kết nối tới dịch vụ SSH mà khoá chung server, bị từ chối chí không đưa đăng nhập với thông báo lỗi: Permission denied (publickey) Sử dụng hàm bao TCP phép số host kết nối Phương thức hữu ích nều bạn muốn giới hạn số host mạng kết nối tới dịch vụ SSH Nhưng sử dụng kết hợp với cấu hình 53 bảng IP (iptable) Thay vào đó, bạn dùng hàm bao TCP, cụ thể sshd TCP Bạn đưa quy tắc cho phép số host định mạng cục (local subnet) 192.168.1.0/24 host từ xa 193.180.177.13 kết nối tới dịch vụ SSH Các hàm bao TCP mặc định xem file /etc/hosts.deny danh sách host bị từ chối kết nối tới dịch vụ Tiếp theo file /etc/hosts để xem liệu có quy tắc cho phép số host kết nối tới dịch vụ đặc biệt không Ví dụ, tạo quy tắc tư mục /etc/hosts.deny: sshd: ALL Quy tắc có nghĩa là, mặc định tất host bị cấm truy cập dịch vụ SSH Điều cần thiết, không tất host có quyền truy cập dịch vụ SSH Do hàm bao TCP xem xét file hosts.deny, quy tắc liên quan đến ngăn chặn sử dụng dịch vụ SSH, host đến nôi đến Tiếp theo, tạo quy tắc /etc/hosts phép số host cụ thể (như định nghĩa trên) sử dụng dịch vụ SSH: sshd: 192.168.1 193.180.177.13 Bây giờ, có host mạng 192.168.1.0/24 host 193.180.177.13 có quyền truy cập dịch vụ SSH Tất host khác bị ngắt kết nối trước đăng nhập nhận thông báo lỗi sau: ssh_exchange_identification: Connection closed by remote host Sử dụng iptables để giới hạn số lượng host kết nối Một lựa chọn khác hàm bao TCP giới hạn truy cập SSH với iptables (các bảng địa IP) Song, bạn sử dụng kết hợp hai phương thức lúc Dưới ví dụ đơn giản cách cho phép số host định kết nối tới SSH: # iptables -A INPUT -p tcp -m state state NEW source 193.180.177.13 dport 22 -j ACCEPT Và để chắn host khác truy cập dịch vụ SSH: # iptables -A INPUT -p tcp dport 22 -j DROP Ghi lại số quy tắc hoàn chỉnh công việc Một số mẹo thời gian SSH Bạn dùng tham số iptables khác để giới hạn kết nối tới dịch vụ SSH khoảng thời gian định Kiểu thời gian giây, phút, giờ, ngày (/second, /minute, /hour, /day ), ví dụ 54 Ở ví dụ đầu, người dùng nhập mật sai, truy cập vào dịch vụ SSH bị khoá phút Và sau người dùng phép gõ thông tin đăng nhập vào sau phút: # iptables -A INPUT -p tcp -m state syn state NEW dport 22 -m limit limit 1/minute limit-burst -j ACCEPT # iptables -A INPUT -p tcp -m state syn state NEW dport 22 -j DROP Trong ví dụ thứ hai, iptables thiết lập cho phép host 193.180.177.13 kết nối tới dịch vụ SSH Sau ba lần đăng nhập thất bại, iptables cho phép host đăng nhập lại sau phút: # iptables -A INPUT -p tcp -s 193.180.177.13 -m state syn state NEW dport 22 -m limit limit 1/minute limit-burst -j ACCEPT # iptables -A INPUT -p tcp -s 193.180.177.13 -m state syn state NEW dport 22 -j DROP 55 [...]... socket này, từ B chúng ta có thể ssh ngược về A, như sau: 15 ssh root@localhost -p 2222 Để B2 cũng có thể kết nối ssh tới A thông qua B, thì trên cấu hình /etc /ssh/ sshd_config của B phải thêm GatewayPorts yes Sau khi thay đổi cấu hình ssh, chúng ta cần khởi động lại dịch vụ ssh và khởi tạo lại kết nối Bây giờ trên B2 chúng ta có thể kết nối tới A, như sau: [root@B2:~]# ssh root@172.16.0.111 -p 2222 1.3.5.3... chúng ta có thể sử dụng SOCKS này để ra Internet an toàn, ví dụ có thể cấu hình vào Firefox như hình bên dưới Hình 6 VD cấu hình Firefox 16 Để kiểm tra việc cấu hình và SOCKS có hoạt động đúng, chúng ta có thể đi tới địa chỉ http://www.google.vn để kiểm tra IP ra Internet 1.3.6 Một hệ thống SSH Hình 7 Cấu trúc của một hệ thống SSH SSH có khoảng một bộ 12 thuộc tính riêng lẻ, các thành phần tác động lẫn... giao thức SSH- 2 và SSH- 1 1.4.2.2 Thực hiện khác biệt Có rất nhiếu sự khác nhau trong thực hiện SSH- 1 và SSH- 2 hiện nay Một số là vì hai giao thức khác nhau, như đã nói ở trên Tuy nhiên, ở đây, chỉ nói đến một số thiết kế và tính năng khác biệt không giao thức (nonprotocol ) liên quan đến OpenSSH, SSH1 và SSH2 : - Host key: SSH host keys là khóa đối xứng dài hạn, phân biệt và xác định các máy chạy SSH, hoặc... Server Một chương trình cho phép đi vào kết nối SSH với một bộ máy, trình bày xác thực, cấp phép, … Trong hầu hết SSH bổ sung của Unix thì server thường là sshd Client Một chương trình kết nối đến SSH server và đưa ra yêu cầu như là “log me in” hoặc “copy this file” Trong SSH1 , SSH2 và OpenSSH, client chủ yếu là ssh và scp Session Một phiên kết nối giữa một client và một server Nó bắt đầu sau khi client... bổ sung của SSH Dĩ nhiên những server, client và khoá là bắt buộc nhưng nhiều bản bổ sung không có agent và thậm chí vài bản không có bộ sinh khoá 1.4 Hai phiên bản SSH 1.4.1 SSH- 1 Hình 8 1.4.1.1 Cấu trúc SSH- 1 Thiết lập kênh kết nối an toàn 19 Trước khi tương tác có ý nghĩa xảy ra, SSH server và SSH client phải thiết lập một kết nối an toàn Điều này cho phép họ: chia sẻ khóa, mật khẩu và dữ liệu với... một phiên SSH mang lại hiệu quả bảo mật của SSH đến với các dịch vụ dựa trên TCP khác Ví dụ, một kết nối Telnet bình thường truyền username, password của bạn và phiên đăng nhập của bạn ở dạng clear text Bằng cách chuyển tiếp telnet thông qua SSH, tất cả dữ liệu sẽ tự động được mã hoá và kiểm tra định danh và bạn có thể xác nhận dùng SSH tin cậy Hình 2 SSH Forwarding 11 TCP port forwarding: SSH dùng... sổ của chúng trên màn hình hiển thị cục bộ của bạn và Agent forwarding SSH client có thể làm việc với một SSH agent trên cùng một máy Sử dụng một đặc trưng gọi là agent forwarding, client cũng có thể liên lạc với các agent trên những máy từ xa Điều thuận lợi là nó cho phép client trên nhiều máy làm việc với một agent và có thể tránh vấn đề liên quan đến tường lửa Hình 3 SSH Tunneling SSH Port Forwarding... nào đó Vì thế, trên thực tế việc chứng thực khoá công khai đòi được hỏi bởi SSH- AUTH không có nghĩa là nó luôn luôn có sẵn cho client từ bất cứ máy nào chạy SSH server, nó chỉ có nghĩa là nó phải có sẵn và có thể được bật lên nếu cần Hình 10 Cấu trúc SSH- 2 1.4.2.1 • Giao thức khác biệt (SSH- 1 với SSH- 2) SSH- 1 là giao thức nguyên khối, bao gồm nhiều chức năng trong một giao thức Giao thức SSH- 2 được chia... plaintext password cho server và được bảo vệ bằng cách mã hóa tại tầng SSH Transport Layer Protocol 28 Tại tầng SSH Connection Protocol Thiết lập kết nối an toàn, bảo mật, xác thực để trao đổi thông tin giữa user và server - Hình 13 Hoạt động của SSH tại tầng SSH User Authentication Sự khác biệt lớn giữa SSH- 1 và SSH- 2 Chúng bao gồm: Thỏa thuận thuật toán mở rộng giữa client và server Nhiều phương pháp... key và host key) cho SSH SSH1, SSH2 và OpenSSH có chương trình ssh- keygen Known hosts database 18 Là một chồng host key Client và server dựa vào cơ sở dữ liệu này để xác thực lẫn nhau Agent Một chương trình lưu user key trong bộ nhớ Agent trả lời cho yêu cầu đối với khoá quan hệ hoạt động như là kí hiệu một giấy xác thực nhưng nó không tự phơi bày khoá của chúng Nó là một đặc điểm rất có ích SSH1 , SSH2 ... cấu hình vào Firefox hình bên Hình VD cấu hình Firefox 16 Để kiểm tra việc cấu hình SOCKS có hoạt động đúng, tới địa http://www.google.vn để kiểm tra IP Internet 1.3.6 Một hệ thống SSH Hình Cấu. .. B ssh ngược A, sau: 15 ssh root@localhost -p 2222 Để B2 kết nối ssh tới A thông qua B, cấu hình /etc /ssh/ sshd_config B phải thêm GatewayPorts yes Sau thay đổi cấu hình ssh, cần khởi động lại dịch. .. key sử dụng sshd deamon cho phiên giao thức SSH Bảo mật SSH nâng cao Phần giúp bạn nâng cao tính bảo mật cho dịch vụ Secure Shell (SSH) File cấu hình server SSH đặt thư mục /etc /ssh/ sshd_conf Bạn

Ngày đăng: 28/02/2016, 14:57

Từ khóa liên quan

Mục lục

  • KÝ TỰ VIẾT TẮT

  • DANH MỤC HÌNH ẢNH

  • DANH MỤC BẢNG

  • LỜI MỞ ĐẦU

  • CHƯƠNG I: TÌM HIỂU SSH

  • CHƯƠNG II: CÀI ĐẶT SSH

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

  • PHỤ LỤC

Tài liệu cùng người dùng

Tài liệu liên quan