Bạn Tìm Gì Hôm Nay ...?
Tất cả đều có chỉ trong 1 nốt nhạc !
Nếu cần hỗ trợ chi tiết gọi 1900 9477
SSH (Secure Shell) là một giao thức mạng được sử dụng rộng rãi để thiết lập kết nối an toàn giữa hai máy tính, cho phép người dùng điều khiển từ xa một máy tính khác một cách an toàn qua mạng không tin cậy. SSH mã hóa dữ liệu được truyền, giúp bảo vệ thông tin nhạy cảm như mật khẩu, khóa mã hóa, và dữ liệu đầu cuối khỏi việc bị đánh cắp hoặc giả mạo trong quá trình truyền.
Việc bảo mật SSH là vô cùng quan trọng vì nếu không được thiết lập bảo mật tốt, SSH có thể trở thành một điểm yếu dễ bị khai thác. Các cuộc tấn công phổ biến như tấn công brute-force (thử mật khẩu hàng loạt), tấn công man-in-the-middle (kẻ tấn công chèn vào giữa quá trình trao đổi dữ liệu), hoặc khai thác các lỗ hổng bảo mật đều có thể xảy ra.
Để tránh các nguy cơ này, việc thực hiện các biện pháp bảo mật như sử dụng xác thực khóa công khai, giới hạn truy cập IP, và thay đổi cổng mặc định là rất cần thiết trong quá trình quản trị hệ thống.
Config để phía ssh server chỉ cho phép những client nào sử dụng protocol ver 2 mới được quyền truy cập. Config trong file /etc/ssh/sshd_config như sau:
Protocol 2
Bình thường ta sẽ login ssh bằng cách nhập password, nhưng để nâng cao tính bảo mật ssh thì ta nên chuyển qua authen bằng public key. Config như sau trong /etc/ssh/sshd_config
để đổi từ password sang public key
HostbasedAuthentication no # ko xác thực theo host based
RhostsAuthentication no # ko xác thực theo host based
RhostsRSAAuthentication no # ko xác thực theo host based RSA
PasswordAuthentication no # ko sử dụng authen bằng password
ChallengeResponseAuthentication no # ko sử dụng authen bằng password
PermitEmptyPasswords no # ko cho phép truy cập bằng password rỗng (đối với user ko setup pass)
RSAAuthentication no # Không authen RSA(version 1 thôi)
PubkeyAuthentication yes # sử dụng public key để authen
Sau khi thiết lập xong ta chạy command sudo service sshd restart
để restart lại sshd
Vậy ta sẽ login vào server qua ssh như thế nào sau khi thiết lập như trên. Ta phải
ssh-keygen -t rsa -P '' -f <path>/mykey
~/.ssh/authorized_keys
(lưu ý file này phải để phân quyền là 600 ), mục đích là add public key đã sinh ra vào key được xác thực trên ssh server.cat mykey.pub >> ~/.ssh/authorized_keys
ssh <user>@<ssh_server_ip> -i <key_path>/mykey
Thay đổi cổng SSH mặc định từ 22 sang một cổng khác có thể giảm thiểu các cuộc tấn công tự động nhắm vào cổng 22 đồng thời tăng bao mật SSH.
Đổi sshd port trong file /etc/ssh/sshd_config
như sau
Port 2222
Lúc này để ssh vào ta phải thiết lập port number từ client ssh <user>@<ssh_server_ip> -p 2222
Giới hạn các địa chỉ IP cụ thể có quyền truy cập SSH sẽ giảm nguy cơ bị tấn công từ các mạng không xác định.
Sử dụng iptables (firewall của linux) để cấu hình. Ta chỉ cho phép những ip chuẩn chỉ mới được truy cập vào server thông qua ssh.
Ví dụ file cấu hình của iptables (lưu tại /etc/sysconfig/iptables)
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp -s 192.168.1.0/24 –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp -s 198.51.100.0/24 –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp -s 203.0.113.0/32 –dport 22 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
Không đọc các tệp ~/.rhosts và ~/.shosts của người dùng. Cập nhật file /etc/ssh/sshd_config với các cài đặt sau:
IgnoreRhosts yes
SSH có thể mô phỏng hành vi của lệnh rsh đã lỗi thời, vì vậy hãy vô hiệu hóa quyền truy cập không an toàn qua RSH.
Chắc bạn cũng hiểu là người dùng root có quyền hạn tuyệt đối trên Linux và thật sự rất nguy hiểm nếu chẳng may lộ mật khẩu của người dùng root và bị kẻ tấn công dò được, để bảo mật ssh bạn cần tắt truy cập tài khoản root.
Trước khi vô hiệu hóa đăng nhập người dùng root, hãy đảm bảo rằng người dùng thông thường có thể đăng nhập như root. Ví dụ, cho phép người dùng ktpa đăng nhập như root bằng lệnh sudo.
Cách thêm người dùng ktpa vào nhóm sudo trên Debian/Ubuntu
# sudo adduser ktpa sudo
Mở file /etc/ssh/sshd_config cấu hình ssh để vô hiệu hóa đăng nhập root bạn tìm đến dòng và sửa thành nội dung sau:
PermitRootLogin no
Fail2Ban theo dõi các lần đăng nhập không thành công và khóa tạm thời IP của kẻ tấn công sau một số lần thử sai.
Bạn có thể tham khảo hướng dẫn cài đặt Fail2ban trên Centos7 tại đây.
Giới hạn số lượng phiên SSH đang hoạt động có thể giúp giảm thiểu nguy cơ bị khai thác hệ thống từ một số lượng lớn kết nối bất hợp pháp.
Có 2 cách giới hạn là dùng iptables hashlimit hoặc config sshd thông số MaxStartups
1. Iptables hashlimi
Config như sau:
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -m hashlimit –hashlimit-name ssh –hashlimit-burst
3 –hashlimit 2/m –hashlimit-mode srcip –hashlimit-htable-expire 180000 -j ACCEPT
Giải thích: từ cùng 1 máy client (–hashlimit-mode srcip => chế độ source ip) nếu có tới 3 kết nối đồng thời (–hashlimit-burst 3) sẽ chỉ cho 2 kết nối trên mỗi phút (–hashlimit 2/m), và những kết nối quá 3 phút sẽ bị ngắt (htable-expire 180000)
2. OpenSSH MaxStartups
Config trong file : /etc/ssh/sshd_config
MaxStartups 3 # Chỉ cho phép tối đa 3 liên kết xác thực ssh
LogLevel DEBUG # để log level debug để kiểm tra config có hoạt động hay ko
Check file log của ssh /var/log/secure
ta sẽ thấy debug1: drop connection #3
là thể hiện kết nối xác thực tới ssh đã bị chặn
Aug 2 11:16:15 sshsrv sshd[1536]: debug1: Forked child 1544.
Aug 2 11:16:15 sshsrv sshd[1544]: Set /proc/self/oom_score_adj to 0
Aug 2 11:16:15 sshsrv sshd[1544]: debug1: rexec start in 5 out 5 newsock 5 pipe 9 sock 10
Aug 2 11:16:15 sshsrv sshd[1544]: debug1: inetd sockets after dupping: 3, 3
Aug 2 11:16:15 sshsrv sshd[1544]: Connection from 172.16.11.10 port 49784
Aug 2 11:16:18 sshsrv sshd[1536]: debug1: drop connection #3
Aug 2 11:16:18 sshsrv sshd[1536]: debug1: drop connection #3
3. Giới hạn truy cập từ chính ssh server ra ngoài
Hạn chế chính ssh server truy cập lung tung, ví dụ như server của chúng ta bị tấn công kiểu OS command injection ( hacker sẽ thực tiêm những command của hệ thống vào thông qua web service chẳng hạn để thực hiện ssh đến một máy chủ nào đó nhằm mục đích xấu). Ta lại sử dụng iptables để phòng chống. Config cho chain OUTPUT của iptables như sau:
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A OUTPUT -p tcp -d 192.168.1.200 –dport 22 -j ACCEPT
-A OUTPUT -j DROP
Bạn cần phải rõ ràng không cho phép đăng nhập từ xa từ các tài khoản có mật khẩu trống. Cập nhật file /etc/ssh/sshd_config với dòng sau:
PermitEmptyPasswords no
Cấu hình SSH để tự động ngắt kết nối sau một khoảng thời gian không hoạt động giúp bảo vệ hệ thống khỏi các phiên đăng nhập không giám sát.
Mở file sshd_config và đảm bảo cấu hình các giá trị sau:
ClientAliveInterval 300
ClientAliveCountMax 0
Thiết lập khoảng thời gian chờ khi không hoạt động tính bằng giây (300 giây = 5 phút). Sau khi khoảng thời gian này trôi qua, người dùng không hoạt động sẽ tự động bị ngắt kết nối.
Việc giữ cho phần mềm SSH và hệ thống luôn được cập nhật giúp tránh các lỗ hổng bảo mật có thể bị khai thác.
Kích hoạt tính năng ghi log chi tiết các hoạt động SSH sẽ giúp phát hiện và phân tích các hoạt động đáng ngờ, từ đó phản ứng kịp thời trước các mối đe dọa.
Bạn mở file: /etc/ssh/sshd_config
Tìm đến dòng LogLevel hoặc thêm nếu chưa có:
LogLevel VERBOSE
Lưu ý: Bạn có thể sử dụng các mức độ ghi log khác như INFO, ERROR, hoặc DEBUG, nhưng VERBOSE là lựa chọn tốt để ghi đầy đủ thông tin liên quan đến các hoạt động SSH.
Khởi động lại dịch vụ SSH để cấu hình được thực hiện.
Kiểm tra:
Trên hệ thống Ubuntu/Debian, log của SSH thường được ghi vào file /var/log/auth.log.
Trên hệ thống CentOS/RHEL, log của SSH được ghi vào file /var/log/secure.
_______________________________________________________________________________________________________
P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng
Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/