0

Hướng dẫn cấu hình an toàn cho SSH trên CentOS 5/6

SSH là một giao thức rất phổ biến đối trên Linux, cho phép kết nối và đăng nhập từ xa vào máy chủ (thực ra là bất kỳ máy nào có cài SSH server) để sử dụng thông qua một SSH client. SSH có cơ chế mã hóa thông tin đủ mạnh để ngăn chặn các cuộc tấn công, đánh cắp thông tin, nghe lén trến đường truyền nhằm vào người dùng sử dụng SSH. Tuy nhiên không có gì trên đời là hoàn hảo. SSH cũng như nhiều công nghệ khác, sử dụng mật khẩu để xác thực nên nó có thể dễ dàng bị hạ gục khi người dùng sử dụng mật khẩu đơn giản; hacker có thể đơn giản dùng một bộ từ điển lớn và một phần mềm tấn công brute-force và chờ đợi. Để giảm thiểu nguy cơ bị tấn công, cướp quyền điều khiển, tôi đề nghị bước đầu tiên là chọn sử dụng một mật khẩu khó có độ dài trên 8 ký tự, kết hợp giữa ký tự hoa thường, số và các ký tự đặc biệt như !@#$%^&*.

Tuy nhiên, dù bạn đặt mật khẩu khó, việc để hacker “dò mật khẩu” trên máy chủ của bạn cũng gây ra các nguy cơ như DoS, tốn băng thông, tốn CPU và các tài nguyên như RAM, Hard disk,… Với bài viết này, tôi sẽ hướng dẫn các bạn cấu hình an toàn cho SSH, làm cho server của mình gần như vô hình đối với hacker bằng cách đổi port sử dụng SSH sang cổng khác 22.

level_boy Cú pháp: Đổi cổng sử dụng SSH trên CentOS Linux

Bạn có thể sử dụng một trong các tùy chọn trong file /etc/ssh/sshd_config  để thực hiện:

Hoặc

Nếu Port không được chỉ địng, sshd sẽ sử dụng Port được chỉ định trước đó. Mặc định sshd sẽ lắng nghe kết nổi ở cổng 22. Có thể khai báo nhiều dòng ListenAddress khác nhau trong sshd_config .

Chạy ssh trên cổng tùy chọn 2022 sử dụng Port option:

Để sửa /etc/ssh/sshd_config , gõ:

Sửa/thêm vào dòng sau sang 2022:

Lưu và đóng file lại.

Chạy ssh trên cổng tùy chọn 2022 sử dụng ListenAddress option:

Chú ý: nếu bạn có nhiều địa chỉ IP trên cùng server, thử cấu hình như sau:

Lưu và đóng file lại.

level_geek Reload dịch vụ SSHD

Trước khi khởi động lại server sshd, bạn cần cấu hình một chút cho:

  1. Cấu hình SELinux
  2. Cấu hình Firewall

Chú ý thực hiện cẩn thận, nếu không, bạn sẽ mất mãi mãi quyền truy cập vào hệ thống của mình. Đùa thôi! Nếu bị mất kết nối do vô tình đổi sang port bị tường lửa chặn, bạn có thể dùng console client cung cấp bởi nhà cung cấp dịch vụ VPS, server để kết nối vào và làm lại. Hay tệ hơn là vác laptop đến tận cái server và cắm cáp mạng vào để login.

Chú ý về OpenSSH cho người dùng SELinux

Nếu bạn dùng  SELinux, thêm port 2022 vào phần quản lý port cho OpenSSH server:

Cấu hình tường lửa

Đây mới thực sự là ma thuật trong bài viết này. Việc đổi port ssh đến đây bạn thấy là nó rất dễ. Song, chỉ đổi port thì không đủ để server ssh của bạn trở nên “vô hình” đối với các script-kiddie ôm mộng cướp server của bạn. Cổng SSH bạn mới đổi có thể dễ dàng bị dò ra bằng nmap , do đó, chúng ta cần làm thêm 1 việc là cấu hình tương lửa để chặn tất cả các kết nối không mong muốn!

Tôi sẽ có một bài viết cụ thể hơn để hướng dẫn cấu hình tường lửa, trong phạm vi ngắn ngủi của bài này, tôi chỉ đơn giản đưa ra giải pháp thực hiện:

Mở và sửa file /etc/sysconfig/iptables  để mở port 2022:

Nếu chưa có file này thì tạo mới luôn, nếu có rồi thì sửa/thêm vào cho có nội dung tương tự như sau:

Lưu và đóng file. Nếu bạn dùng IPv6, cũng cần sửa tương tự với file /etc/sysconfig/ip6tables . Sau đó tạm thời dừng firewall để đảm bảo bạn sẽ không bị mất kết nối đến server:

Khởi động lại dịch vụ SSHD trên CentOS

Gõ dòng lệnh sau để khởi động lại dịch vụ, có thể cần quyền root:

Để chắc chắn dịch vụ SSH đã chạy trên cổng mới 2022, chạy lệnh sau để xem:

Cuối cùng, khỏi động lại tường lửa trên CentOS

Một số câu hỏi?

Làm thế nào tôi kết nối đến SSH server trên port 2022 bằng dòng lệnh ssh?

Cú pháp là:

Làm thế nào tôi kết nối đến SSH server trên port 2022 bằng dòng lệnh scp?

Cú pháp là:

Làm thế nào tôi kết nối đến SSH server trên port 2022 bằng dòng lệnh sftp?

Cú pháp là:

Lời kết

Tới đây bạn đã giúp tăng khả năng bảo mật của server lên một cấp nữa. Từ nay, hacker sẽ không thể dùng nmap để dò port trên server của bạn nữa, và dĩ nhiên cũng không thể tấn công brute-force trên cổng mặc định 22 của ssh nữa.  Nếu hệ thống của bạn chưa làm như bài viết này, bạn có thể kiểm tra xem server có đang bị tấn công dịch vụ ssh không bằng dòng lệnh:

Dòng lệnh này sẽ đọc 300 dòng log của cùng của ssh, nếu đang bị tấn công, bạn sẽ thấy có rất nhiều dòng báo login fail từ các địa chỉ IP lạ; bạn nên thực hiện cấu hình ngay cho server của mình đi thôi!

Lời khuyên cuối, hãy dùng mật khẩu dài và gồm các ký tự ngẫu nhiên!

Hoàng Tựa

Yêu thích lập trình web và tạo ra những thứ đẹp đẽ.

Leave a Reply

Your email address will not be published. Required fields are marked *