SSH, viết tắt của Secure SHell, là một giao thức điều khiển từ xa cho phép người dùng kiểm soát và chỉnh sửa server từ xa thông qua internet. Dịch vụ được tạo ra nhằm thay thế cho trình telnet vốn không có mã hóa và sử dụng kỹ thuật cryptographic để đảm bảo tất cả giao tiếp gửi tới và gửi từ server từ xa diễn ra trong tình trạng mã hóa. Nó cung cấp thuật toán để chứng thực người dùng từ xa, chuyển input từ client tới host, và relay kết quả trả về tới khách hàng.
Ở bài viết này, mình sẽ giải thích cho các bạn ý nghĩa của các thông số trong file cấu hình dịch vụ SSHD (khi nói SSHD, ta hiểu là đang nói tới SSH server, còn SSH thì là SSH client). Từ đó, ta có thể tự tùy chỉnh cấu hình dịch vụ SSHD để đảm bảo chỉ những người dùng có phận sự được phép truy cập vào server.
Dưới đây là một file cấu hình dịch vụ SSHD mẫu (mình sẽ lược bỏ một số dòng thông tin trong file cho gọn):
#Port 22
#AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key #RekeyLimit default none #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO #LoginGraceTime 2m PermitRootLogin no #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 PubkeyAuthentication no AuthorizedKeysFile .ssh/authorized_keys #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody #HostbasedAuthentication no #IgnoreUserKnownHosts no #IgnoreRhosts yes #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication no #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes GSSAPIAuthentication yes GSSAPICleanupCredentials no #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no #GSSAPIEnablek5users no UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation sandbox #PermitUserEnvironment no #Compression delayed ClientAliveInterval 300 ClientAliveCountMax 3 #ShowPatchLevel no UseDNS no #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none #Banner none AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server Match Address 125.212.220.68,123.30.136.124 PasswordAuthentication yes X11Forwarding no PermitRootLogin yes RSAAuthentication yes PubkeyAuthentication yes |
Giải thích:
1. | Port | Quy định port mà dịch vụ SSHD sẽ lắng nghe. Mặc định: 22. |
2. | AddressFamily | Quy định loại IP address mà dịch vụ SSHD sẽ dùng. Các giá trị khả dụng: any, inet (IPv4), inet6 (IPv6). Mặc định: any. |
3. | ListenAddress | Quy định địa chỉ mà dịch vụ SSHD sẽ lắng nghe. Các giá trị khả dụng:
host|IPv4_addr|IPv6_addr host|IPv4_addr:port [host|IPv6_addr]:port |
4. | HostKey | Quy định file chứa private host key được sử dụng bởi dịch vụ SSHD. Khi ta ssh tới server lần đầu, ta sẽ lưu public key của server về máy tính. Ở các lần ssh sau, ssh client sẽ ghép cặp public key trên máy tính với private key trên server để xác định đang ssh tới đúng server trước đó. |
5. | RekeyLimit | Quy định số lượng dữ liệu có thể được truyền đi trước khi session key được đàm phán lại. |
6. | SyslogFacility | Log của dịch vụ SSHD sẽ được xử lý bởi syslog, thông số này quy định facility nào trong cấu hình của syslog sẽ xử lý log. Mặc định: AUTHPRIV. |
7. | LogLevel | Quy định mức độ chi tiết của log. Mặc định: INFO. |
8. | LoginGraceTime | Quy định khoảng thời gian sẽ ngắt kết nối nếu không login thành công. |
9. | PermitRootLogin | Quy định cho phép người dùng ssh bằng user root của hệ thống hay không. |
10. | StrictModes | Tính năng không cho phép sử dụng private key và public key nếu các file này chưa đạt tiêu chuẩn bảo mật nhất định (owner, permission…). |
11. | MaxAuthTries | Quy định số lần thử truy cập tối đa của mỗi phiên kết nối. Nếu số lần thử thất bại lớn hơn một nửa số lần thử tối đa, phiên đó sẽ được ghi log lại. |
12. | MaxSessions | Quy định số session tối đa được mở cùng lúc trong một phiên ssh ghép kênh (multiplexed ssh session). |
13. | PubkeyAuthentication | Quy định cho phép sử dụng public key để chứng thực hay không. |
14. | AuthorizedKeysFile | Quy định file chứa public key được dùng cho việc chứng thực. |
15. | AuthorizedPrincipalsFile | Quy định file chứa các principle name được phép chứng thực bằng chứng chỉ (certificate). |
16. | AuthorizedKeysCommand | Quy định chương trình được dùng để tra cứu public key của user. |
17. | AuthorizedKeysCommandUser | Quy định user sẽ chạy chương trình được cấu hình ở phần AuthorizedKeysCommand. |
18. | HostbasedAuthentication | Quy định việc chứng thực bằng rhosts hay /etc/hosts.equiv kết hợp với public key có được cho phép hay không. |
19. | IgnoreUserKnownHosts | Quy định việc dịch vụ SSHD có bỏ qua file ~/.ssh/known_hosts trong suốt quá trình RhostsRSAAuthentication hay HostbasedAuthentication hay không. Mặc định: no |
20. | IgnoreRhosts | Quy định việc file .rhosts và .shosts sẽ không được dùng trong RhostsRSAAuthentication hay HostbasedAuthentication. |
21. | PermitEmptyPasswords | Khi tính năng PasswordAuthentication được bật (yes), thông số này quy định việc cho phép người dùng login vào server bằng user không có password hay không. Mặc định: no. |
22. | PasswordAuthentication | Quy định cho phép sử dụng password để chứng thực hay không. |
23. | ChallengeResponseAuthentication | Quy định việc cho phép chứng thực bằng Challenge – Response hay không. Mặc định: yes. |
24. | KerberosAuthentication | Quy định việc password được cung cấp bởi người dùng để PasswordAuthentication có được xác thực tiếp bởi Kerberos KDC hay không. Mặc định: no. |
25. | KerberosOrLocalPasswd | Nếu chứng thực bằng password thông qua Kerberos thất bại, thông số này quy định password sẽ được xác thực lại bằng cơ chế khác ví dụ như dùng /etc/passwd. Mặc định: yes. |
26. | KerberosTicketCleanup | Quy định việc có tự động xóa các ticket cache của user khi user logout hay không. Mặc định: yes. |
27. | KerberosGetAFSToken | |
28. | KerberosUseKuserok | Quy định việc có tra cứu file .k5login cho tên định danh của user hay không. Mặc định: yes. |
29. | GSSAPIAuthentication | Quy định cho phép sử dụng GSSAPI để chứng thực hay không. |
30. | GSSAPICleanupCredentials | Quy định việc có tự động xóa cache thông tin đăng nhập của user khi user logout hay không. Mặc định: yes. |
31. | GSSAPIStrictAcceptorCheck | |
32. | GSSAPIKeyExchange | Quy định việc có cho phép trao đổi khóa dựa vào GSSAPI hay không. |
33. | GSSAPIEnablek5users | Quy định việc có tra cứu file .k5users cho việc quản lý truy cập bằng chứng thức GSSAPI hay không. |
34. | UsePAM | Bật giao diện Pluggable Authentication Module. Nếu thông số này đặt là “yes”, dịch vụ sẽ bật chứng thực PAM sử dụng ChallengeResponseAuthentication và PasswordAuthentication thêm vào tài khoản PAM và session module processing cho tất cả các loại chứng thực. |
35. | AllowAgentForwarding | Quy định cho phép chuyển tiếp ssh-agent hay không. Mặc định: yes. |
36. | AllowTcpForwarding | Quy định cho phép chuyển tiếp TCP hay không. Mặc định: yes. |
37. | GatewayPorts | Quy định việc máy từ xa có được phép kết nối tới các port chuyển tiếp đến client hay không. |
38. | X11Forwarding | Quy định cho phép chuyển tiếp X11 hay không. Mặc định: no. |
39. | X11DisplayOffset | Quy định con số hiển thị đầu tiên khả dụng cho việc chuyển tiếp X11 của dịch vụ SSHD. Điều này giúp cho dịch vụ SSHD không can thiệp vào các server X11 thật. Mặc định: 10. |
40. | X11UseLocalhost | Quy định việc dịch vụ SSHD có gán server chuyển tiếp X11 vào địa chỉ loopback hay là vào đỉa chỉ wildcard. |
41. | PermitTTY | Quy định cho phép phân bổ pty hay không. Mặc định: yes. |
42. | PrintMotd | Quy định việc dịch vụ SSHD có in file /etc/motd ra màn hình khi user tương tác hay không. Mặc định: yes. |
43. | PrintLastLog | Quy định việc dịch vụ SSHD có in ngày và thời gian ra màn hình khi user tương tác hay không. Mặc định: yes. |
44. | TCPKeepAlive | Quy định việc dịch vụ SSHD có gửi gói tin keepalive tới phía người dùng hay không. Mặc định: yes. |
45. | UseLogin | Quy định việc login có được dùng cho các session login tương tác hay không. Mặc định: no. |
46. | UsePrivilegeSeparation | Quy định việc dịch vụ SSHD phân chia quyền bằng cách tạo ra một process con không quyền để xử lý các lưu lượng mạng đầu vào. Mặc định: yes. |
47. | PermitUserEnvironment | Quy định việc file ~/.ssh/environment và option environment= trong file ~/.ssh/authorized_keys có được xử lý bởi dịch vụ SSHD hay không. Mặc định: no. |
48. | Compression | Quy định có bật tính năng nén hay không, hay sẽ bị hoãn cho tới khi user chứng thực thành công. Các giá trị khả dụng: yes, no, delayed. Mặc định: delayed. |
49. | ClientAliveInterval | Quy định thời gian timeout (tính bằng giây) mà sau đó nếu không có bất kỳ dữ liệu nào được nhận từ phía client, dịch vụ SSHD sẽ gửi một thông báo thông qua một kênh mã hóa để yêu cầu phản hồi từ client. Mặc định: 0. |
50. | ClientAliveCountMax | Quy định số lượng thông báo client đang alive sẽ được gửi đi khi dịch vụ SSHD không nhận được bất kỳ phản hồi nào từ client. |
51. | ShowPatchLevel | Quy định việc dịch vụ SSHD có hiển thị mức độ vá của binary trong chuỗi định danh hay không. Mặc định: no. |
52. | UseDNS | Quy định việc dịch vụ SSHD có truy vấn hostname của máy từ xa và kiểm tra hostname đã phân giải xem địa chỉ IP từ xa đó có khớp với địa chỉ IP nào không. Mặc định: yes. |
53. | PidFile | Quy định file chưa process ID (PID) của dịch vụ SSHD. Mặc định: /var/run/sshd.pid |
54. | MaxStartups | Quy định số kết nối chưa chứng thực tối đa đến dịch vụ SSHD. Mặc định: 10. |
55. | PermitTunnel | Quy định việc có cho phép chuyển tiếp thiết bị tun hay không. Các giá trị khả dụng: yes, point-to-point (layer 3), ethernet (layer 2), no. |
56. | ChrootDirectory | Quy định đường dẫn tới chroot sau khi chứng thực. |
57. | VersionAddendum | Quy định đoạn văn bản kèm thêm để chèn vào banner giao thức SSH được gửi đi bởi server. Mặc định: none. |
58. | Banner | Nội dung từ một file nhất định sẽ được gửi đến người dùng từ xa trước khi chứng thực được cho phép. |
59. | AcceptEnv | Quy định các tham số môi trường nào được gửi đi bởi client sẽ được sao chép vào môi trường của session. |
60. | Subsystem | Cấu hình một hệ thống phụ bên ngoài (ví dụ như truyền tải file – sftp). |
61. | Match User | Điều kiện và cấp quyền nhật định cho user. |
62. | Match Address | Điều kiện và cấp quyền nhật định cho địa chỉ IP từ xa. |
THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST
>> SERVER – COLOCATION – CDN
>> HOSTING
>> WEBSITE
>> TÊN MIỀN