![]() Article ID: 1106
Cập nhật gần nhất: 18 Th11, 2024
SSH là gì ?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. Tại sao phải bảo mật SSH.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. Cách tăng cường bảo mật SSH1. Sử dụng SSH phiên bản 2 (SSHv2)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:
2. Sử dụng xác thực bằng khóa công khai (Public Key Authentication)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
Sau khi thiết lập xong ta chạy command
3. Đổi cổng mặc định của SSHThay đổ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
Lúc này để ssh vào ta phải thiết lập port number từ client 4. Sử dụng tường lửa để giới hạn IP truy cậpGiớ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)
5. Vô hiệu hóa các tệp .rhosts (xác minh)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:
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. 6. Giới hạn quyền truy cập root (Disable Root Login)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:
7. Sử dụng Fail2Ban để ngăn chặn tấn công brute-forceFail2Ban 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. 8. Giới hạn số lượng phiên đăng nhập đồng thờiGiớ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: 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
Check file log của ssh
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 9.Vô hiệu hóa mật khẩu trốngBạ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:
10. Cấu hình thời gian hết hạn phiên đăng nhập (Idle Timeout Interval)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:
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. 11. Cập nhật và vá các lỗ hổng bảo mật thường xuyênViệ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. 12. Giám sát và ghi lại các hoạt động SSH (Logging)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ó:
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:
Article ID: 1106
Cập nhật gần nhất: 18 Th11, 2024
Lần sửa đổi: 1
Lượt xem: 0
|