Chặn User Đăng Nhập SSH: Hướng Dẫn Chi Tiết Từ A Đến Z

Bạn lo lắng về bảo mật máy chủ của mình? Một trong những biện pháp quan trọng để tăng cường an ninh là Chặn User đăng Nhập Ssh. SSH (Secure Shell) là giao thức kết nối và quản lý máy chủ từ xa, nhưng cũng là mục tiêu tấn công phổ biến. Bài viết này sẽ hướng dẫn bạn từng bước cách chặn user đăng nhập SSH một cách hiệu quả, giúp bảo vệ máy chủ của bạn khỏi những truy cập trái phép.

SSH là một công cụ mạnh mẽ cho phép quản trị viên truy cập và điều khiển máy chủ từ xa, nhưng nếu không được cấu hình đúng cách, nó có thể trở thành một lỗ hổng bảo mật lớn. Việc chặn user đăng nhập SSH là một biện pháp phòng ngừa quan trọng để giảm thiểu rủi ro bị tấn công brute-force (dò mật khẩu bằng cách thử liên tục) hoặc các cuộc tấn công khác nhắm vào tài khoản người dùng.

Tại Sao Cần Chặn User Đăng Nhập SSH?

Việc chặn user đăng nhập SSH mang lại nhiều lợi ích thiết thực cho việc bảo mật máy chủ, bao gồm:

  • Giảm thiểu nguy cơ tấn công brute-force: Kẻ tấn công thường cố gắng đoán mật khẩu của các tài khoản người dùng để xâm nhập vào hệ thống. Bằng cách chặn user đăng nhập SSH, bạn giảm số lượng mục tiêu tiềm năng và làm cho cuộc tấn công trở nên khó khăn hơn.
  • Hạn chế quyền truy cập: Bạn có thể giới hạn quyền truy cập vào máy chủ chỉ cho những người dùng thực sự cần thiết, ngăn chặn những người dùng không cần thiết truy cập vào các tài nguyên quan trọng.
  • Tăng cường bảo mật: Bằng cách kết hợp việc chặn user đăng nhập SSH với các biện pháp bảo mật khác, như xác thực hai yếu tố (2FA), bạn có thể tạo ra một lớp bảo vệ vững chắc hơn cho máy chủ của mình.
  • Phòng ngừa rủi ro từ các tài khoản bị xâm nhập: Nếu một tài khoản người dùng bị xâm nhập, kẻ tấn công có thể sử dụng nó để truy cập vào máy chủ và gây ra thiệt hại. Việc chặn user đăng nhập SSH có thể giúp ngăn chặn hoặc hạn chế mức độ thiệt hại.

“Việc bảo vệ máy chủ là một quá trình liên tục và không ngừng nghỉ. Chặn user đăng nhập SSH là một bước quan trọng, nhưng bạn cũng cần phải theo dõi nhật ký hệ thống, cập nhật phần mềm thường xuyên và thực hiện các biện pháp bảo mật khác để đảm bảo an ninh tối đa,” theo ông Nguyễn Văn An, chuyên gia bảo mật hệ thống với hơn 10 năm kinh nghiệm.

Các Phương Pháp Chặn User Đăng Nhập SSH Hiệu Quả

Có nhiều cách để chặn user đăng nhập SSH, mỗi cách có ưu và nhược điểm riêng. Dưới đây là một số phương pháp phổ biến và hiệu quả nhất:

1. Chặn User Cụ Thể Trong File sshd_config

Đây là phương pháp đơn giản và phổ biến nhất để chặn user đăng nhập SSH. Bạn chỉ cần chỉnh sửa file cấu hình SSH (sshd_config) và thêm các tùy chọn để chỉ định những người dùng nào được phép hoặc không được phép đăng nhập.

Bước 1: Mở file sshd_config bằng trình soạn thảo văn bản với quyền root.

sudo nano /etc/ssh/sshd_config

Bước 2: Tìm các dòng AllowUsers hoặc DenyUsers.

  • AllowUsers: Chỉ cho phép những người dùng được liệt kê đăng nhập.
  • DenyUsers: Chặn những người dùng được liệt kê đăng nhập.

Bước 3: Chỉnh sửa hoặc thêm các dòng AllowUsers hoặc DenyUsers phù hợp.

  • Để chỉ cho phép người dùng adminjohn đăng nhập, hãy thêm dòng sau:

    AllowUsers admin john
  • Để chặn người dùng badusertestuser đăng nhập, hãy thêm dòng sau:

    DenyUsers baduser testuser

Lưu ý quan trọng:

  • Nếu bạn sử dụng AllowUsers, hãy đảm bảo rằng bạn đã liệt kê tất cả những người dùng cần thiết, bao gồm cả tài khoản root (nếu cần thiết).
  • Bạn có thể sử dụng cả AllowUsersDenyUsers cùng nhau, nhưng hãy cẩn thận để tránh xung đột. DenyUsers sẽ được ưu tiên hơn AllowUsers.
  • Sử dụng dấu cách để phân tách các tên người dùng.

Bước 4: Lưu file sshd_config và khởi động lại dịch vụ SSH.

sudo systemctl restart sshd

Ví dụ:

Giả sử bạn muốn chặn người dùng attacker đăng nhập vào máy chủ của bạn. Bạn có thể thêm dòng DenyUsers attacker vào file sshd_config. Sau khi khởi động lại dịch vụ SSH, người dùng attacker sẽ không thể đăng nhập được nữa.

“Việc sử dụng AllowUsers có thể an toàn hơn DenyUsers, vì nó cho phép bạn kiểm soát chặt chẽ hơn những ai có thể truy cập vào máy chủ của bạn. Tuy nhiên, hãy cẩn thận để không vô tình chặn quyền truy cập của chính mình,” theo bà Trần Thị Mai, chuyên gia bảo mật mạng với kinh nghiệm tư vấn cho nhiều doanh nghiệp lớn.

2. Chặn User Thuộc Nhóm (Group) Cụ Thể

Ngoài việc chặn user đăng nhập SSH theo tên người dùng, bạn cũng có thể chặn theo nhóm người dùng. Điều này hữu ích khi bạn muốn chặn quyền truy cập của một nhóm người dùng nhất định mà không cần phải liệt kê từng người dùng một.

Bước 1: Mở file sshd_config bằng trình soạn thảo văn bản với quyền root.

sudo nano /etc/ssh/sshd_config

Bước 2: Tìm các dòng AllowGroups hoặc DenyGroups.

  • AllowGroups: Chỉ cho phép những người dùng thuộc nhóm được liệt kê đăng nhập.
  • DenyGroups: Chặn những người dùng thuộc nhóm được liệt kê đăng nhập.

Bước 3: Chỉnh sửa hoặc thêm các dòng AllowGroups hoặc DenyGroups phù hợp.

  • Để chỉ cho phép những người dùng thuộc nhóm adminsshusers đăng nhập, hãy thêm dòng sau:

    AllowGroups admin sshusers
  • Để chặn những người dùng thuộc nhóm blockedtestgroup đăng nhập, hãy thêm dòng sau:

    DenyGroups blocked testgroup

Lưu ý quan trọng:

  • Tương tự như AllowUsers, nếu bạn sử dụng AllowGroups, hãy đảm bảo rằng bạn đã liệt kê tất cả các nhóm cần thiết.
  • Bạn có thể sử dụng cả AllowGroupsDenyGroups cùng nhau, nhưng hãy cẩn thận để tránh xung đột. DenyGroups sẽ được ưu tiên hơn AllowGroups.
  • Sử dụng dấu cách để phân tách các tên nhóm.

Bước 4: Lưu file sshd_config và khởi động lại dịch vụ SSH.

sudo systemctl restart sshd

Ví dụ:

Giả sử bạn có một nhóm người dùng tên là interns và bạn không muốn họ truy cập vào máy chủ thông qua SSH. Bạn có thể thêm dòng DenyGroups interns vào file sshd_config. Sau khi khởi động lại dịch vụ SSH, bất kỳ người dùng nào thuộc nhóm interns sẽ không thể đăng nhập được nữa.

3. Chặn User Thông Qua File hosts.denyhosts.allow

Đây là một phương pháp cũ hơn, nhưng vẫn có thể hữu ích trong một số trường hợp. Phương pháp này sử dụng hai file: hosts.denyhosts.allow để kiểm soát quyền truy cập vào các dịch vụ mạng, bao gồm cả SSH.

Bước 1: Chỉnh sửa file hosts.deny để chặn tất cả các kết nối SSH.

sudo nano /etc/hosts.deny

Thêm dòng sau vào file hosts.deny:

sshd: ALL

Dòng này có nghĩa là chặn tất cả các kết nối đến dịch vụ SSH (sshd) từ tất cả các địa chỉ IP (ALL).

Bước 2: Chỉnh sửa file hosts.allow để cho phép các kết nối SSH từ những địa chỉ IP hoặc người dùng cụ thể.

sudo nano /etc/hosts.allow

Thêm các dòng sau vào file hosts.allow để cho phép các kết nối SSH từ những địa chỉ IP hoặc người dùng cụ thể:

  • Để cho phép kết nối từ địa chỉ IP 192.168.1.100:

    sshd: 192.168.1.100
  • Để cho phép kết nối từ tất cả các địa chỉ IP trong mạng 192.168.1.0/24:

    sshd: 192.168.1.0/24
  • Để cho phép kết nối từ người dùng admin trên tất cả các địa chỉ IP:

    sshd: ALL EXCEPT admin@ALL

Lưu ý quan trọng:

  • Phương pháp này phụ thuộc vào việc dịch vụ SSH có được cấu hình để sử dụng TCP Wrappers hay không. Hầu hết các hệ thống hiện đại đều được cấu hình mặc định để sử dụng TCP Wrappers, nhưng bạn nên kiểm tra lại để đảm bảo.
  • hosts.allow sẽ được ưu tiên hơn hosts.deny.

Ví dụ:

Giả sử bạn muốn chặn tất cả các kết nối SSH ngoại trừ từ địa chỉ IP 192.168.1.100. Bạn sẽ thêm dòng sshd: ALL vào hosts.deny và dòng sshd: 192.168.1.100 vào hosts.allow.

4. Sử Dụng Firewall (Tường Lửa)

Firewall là một công cụ mạnh mẽ để kiểm soát lưu lượng mạng đến và đi từ máy chủ của bạn. Bạn có thể sử dụng firewall để chặn user đăng nhập SSH bằng cách chặn các kết nối đến cổng SSH (mặc định là cổng 22) từ các địa chỉ IP hoặc dải IP cụ thể.

Ví dụ sử dụng iptables (trên các hệ thống Linux):

  • Để chặn tất cả các kết nối đến cổng 22 từ địa chỉ IP 192.168.1.100:

    sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j DROP
  • Để cho phép kết nối đến cổng 22 từ địa chỉ IP 192.168.1.100:

    sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

Ví dụ sử dụng ufw (trên các hệ thống Ubuntu):

  • Để chặn tất cả các kết nối đến cổng 22 từ địa chỉ IP 192.168.1.100:

    sudo ufw deny from 192.168.1.100 to any port 22
  • Để cho phép kết nối đến cổng 22 từ địa chỉ IP 192.168.1.100:

    sudo ufw allow from 192.168.1.100 to any port 22

Lưu ý quan trọng:

  • Hãy cẩn thận khi cấu hình firewall, vì một lỗi nhỏ có thể khiến bạn mất quyền truy cập vào máy chủ của mình.
  • Đảm bảo rằng bạn đã cấu hình firewall để cho phép các kết nối SSH từ địa chỉ IP của bạn trước khi chặn các kết nối khác.

5. Thay Đổi Cổng SSH Mặc Định

Mặc dù không trực tiếp chặn user đăng nhập SSH, việc thay đổi cổng SSH mặc định (từ 22 sang một cổng khác) có thể giúp giảm thiểu nguy cơ bị tấn công brute-force. Kẻ tấn công thường quét các cổng mặc định để tìm kiếm các dịch vụ dễ bị tấn công. Bằng cách thay đổi cổng SSH, bạn làm cho việc tìm kiếm và tấn công máy chủ của bạn trở nên khó khăn hơn.

Bước 1: Mở file sshd_config bằng trình soạn thảo văn bản với quyền root.

sudo nano /etc/ssh/sshd_config

Bước 2: Tìm dòng Port 22 và thay đổi nó thành một số cổng khác (ví dụ: 2222).

Port 2222

Lưu ý quan trọng:

  • Chọn một số cổng lớn hơn 1024 và không được sử dụng bởi các dịch vụ khác.
  • Cập nhật cấu hình firewall của bạn để cho phép các kết nối đến cổng SSH mới.
  • Khi kết nối SSH đến máy chủ, bạn cần chỉ định số cổng mới bằng tùy chọn -p (ví dụ: ssh user@host -p 2222).

Bước 3: Lưu file sshd_config và khởi động lại dịch vụ SSH.

sudo systemctl restart sshd

6. Vô Hiệu Hóa Đăng Nhập Bằng Mật Khẩu và Sử Dụng SSH Keys

Đây là một biện pháp bảo mật mạnh mẽ, giúp loại bỏ hoàn toàn nguy cơ bị tấn công brute-force vào mật khẩu. Thay vì sử dụng mật khẩu, bạn sẽ sử dụng SSH keys (cặp khóa công khai và khóa riêng tư) để xác thực. ssh không yêu cầu mật khẩu là một giải pháp an toàn hơn.

Bước 1: Tạo SSH key pair (nếu bạn chưa có).

Trên máy tính của bạn, hãy chạy lệnh sau:

ssh-keygen -t rsa -b 4096

Làm theo hướng dẫn để tạo key pair. Bạn sẽ được yêu cầu nhập một passphrase (mật khẩu bảo vệ cho khóa riêng tư). Nên sử dụng một passphrase mạnh để bảo vệ khóa riêng tư của bạn.

Bước 2: Sao chép khóa công khai (public key) lên máy chủ.

Bạn có thể sử dụng lệnh ssh-copy-id để sao chép khóa công khai lên máy chủ:

ssh-copy-id user@host

Hoặc bạn có thể sao chép nội dung của file ~/.ssh/id_rsa.pub trên máy tính của bạn và thêm nó vào file ~/.ssh/authorized_keys trên máy chủ.

Bước 3: Vô hiệu hóa đăng nhập bằng mật khẩu trong file sshd_config.

Mở file sshd_config bằng trình soạn thảo văn bản với quyền root:

sudo nano /etc/ssh/sshd_config

Tìm dòng PasswordAuthentication yes và thay đổi nó thành PasswordAuthentication no:

PasswordAuthentication no

Thêm hoặc chỉnh sửa dòng ChallengeResponseAuthentication no:

ChallengeResponseAuthentication no

Bước 4: Lưu file sshd_config và khởi động lại dịch vụ SSH.

sudo systemctl restart sshd

Sau khi thực hiện các bước này, bạn sẽ chỉ có thể đăng nhập vào máy chủ bằng SSH keys. Đăng nhập bằng mật khẩu sẽ bị vô hiệu hóa.

Kiểm Tra và Xác Nhận

Sau khi thực hiện bất kỳ thay đổi nào để chặn user đăng nhập SSH, hãy kiểm tra kỹ lưỡng để đảm bảo rằng các thay đổi đã được áp dụng thành công và không gây ra bất kỳ vấn đề nào.

  • Kiểm tra bằng cách thử đăng nhập: Thử đăng nhập vào máy chủ bằng tài khoản đã bị chặn hoặc từ địa chỉ IP đã bị chặn. Nếu bạn không thể đăng nhập, điều đó có nghĩa là các thay đổi đã được áp dụng thành công.
  • Kiểm tra nhật ký hệ thống: Xem nhật ký hệ thống (/var/log/auth.log hoặc /var/log/secure) để tìm các thông báo liên quan đến việc đăng nhập SSH. Bạn có thể thấy các thông báo về việc từ chối kết nối hoặc xác thực không thành công. ssh bị từ chối kết nối có thể là do cấu hình sai.
  • Sử dụng công cụ kiểm tra bảo mật: Sử dụng các công cụ kiểm tra bảo mật như nmap để quét máy chủ của bạn và xác định các cổng đang mở và các dịch vụ đang chạy. Điều này có thể giúp bạn xác định xem có bất kỳ lỗ hổng bảo mật nào hay không.

Các Lưu Ý Quan Trọng Khác

  • Bảo vệ tài khoản root: Tránh sử dụng tài khoản root để đăng nhập SSH trực tiếp. Thay vào đó, hãy sử dụng một tài khoản người dùng thông thường và sử dụng sudo để thực hiện các tác vụ quản trị khi cần thiết. Bạn có thể vô hiệu hóa đăng nhập root bằng cách đặt PermitRootLogin no trong file sshd_config.
  • Sử dụng mật khẩu mạnh: Nếu bạn vẫn sử dụng mật khẩu để đăng nhập SSH (không khuyến khích), hãy đảm bảo rằng bạn sử dụng mật khẩu mạnh và thay đổi mật khẩu thường xuyên.
  • Kích hoạt xác thực hai yếu tố (2FA): 2FA cung cấp một lớp bảo mật bổ sung bằng cách yêu cầu bạn nhập một mã xác thực từ điện thoại hoặc thiết bị khác ngoài mật khẩu của bạn.
  • Cập nhật phần mềm thường xuyên: Cập nhật phần mềm hệ thống và các ứng dụng liên quan (bao gồm cả SSH) thường xuyên để vá các lỗ hổng bảo mật đã biết.
  • Theo dõi nhật ký hệ thống: Theo dõi nhật ký hệ thống thường xuyên để phát hiện các hoạt động đáng ngờ hoặc các cuộc tấn công tiềm ẩn.
  • Sử dụng fail2ban: Fail2ban là một công cụ tự động quét nhật ký hệ thống và chặn các địa chỉ IP có hành vi đáng ngờ, chẳng hạn như cố gắng đăng nhập không thành công nhiều lần.
  • Tuân thủ các nguyên tắc bảo mật: Luôn tuân thủ các nguyên tắc bảo mật tốt nhất để bảo vệ máy chủ của bạn khỏi các mối đe dọa.

SSH Và Bảo Mật Nâng Cao

Để tăng cường hơn nữa bảo mật cho kết nối SSH, bạn có thể xem xét một số biện pháp nâng cao hơn:

  • Sử dụng TCP Wrappers (hosts.allow/hosts.deny): Như đã đề cập, TCP Wrappers cho phép bạn kiểm soát quyền truy cập dựa trên địa chỉ IP.
  • Sử dụng VPN (Virtual Private Network): VPN tạo ra một kết nối an toàn và mã hóa giữa máy tính của bạn và máy chủ, bảo vệ dữ liệu của bạn khỏi bị chặn hoặc nghe lén.
  • Sử dụng Port Knocking: Port Knocking là một kỹ thuật cho phép bạn mở một cổng firewall chỉ khi một chuỗi các gói tin được gửi đến các cổng khác nhau theo một trình tự nhất định.
  • Giới hạn thời gian phiên SSH: Bạn có thể 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 nhất định.
  • Sử dụng SSH Multiplexing: mở nhiều kết nối ssh cùng lúc (SSH Multiplexing) cho phép bạn sử dụng một kết nối SSH duy nhất để tạo nhiều kênh giao tiếp khác nhau, giảm thiểu overhead và tăng hiệu suất.

“Bảo mật là một cuộc chạy đua không hồi kết. Kẻ tấn công luôn tìm kiếm những lỗ hổng mới, và bạn cần phải liên tục cập nhật kiến thức và áp dụng các biện pháp bảo mật mới nhất để bảo vệ máy chủ của mình,” theo ông Lê Thanh Tùng, chuyên gia an ninh mạng với nhiều năm kinh nghiệm trong lĩnh vực pentesting (kiểm thử xâm nhập).

Kết luận

Chặn user đăng nhập SSH là một bước quan trọng trong việc bảo vệ máy chủ của bạn khỏi các cuộc tấn công. Bằng cách áp dụng các phương pháp được trình bày trong bài viết này, bạn có thể giảm thiểu nguy cơ bị tấn công brute-force, hạn chế quyền truy cập và tăng cường bảo mật tổng thể cho hệ thống của mình. Hãy nhớ rằng bảo mật là một quá trình liên tục, và bạn cần phải luôn cập nhật kiến thức và áp dụng các biện pháp bảo mật mới nhất để đối phó với các mối đe dọa ngày càng gia tăng.

Câu hỏi thường gặp (FAQ)

1. Tại sao tôi không nên sử dụng tài khoản root để đăng nhập SSH?

Tài khoản root có quyền truy cập không giới hạn vào hệ thống, do đó nếu tài khoản root bị xâm nhập, kẻ tấn công có thể gây ra thiệt hại nghiêm trọng. Sử dụng một tài khoản người dùng thông thường và sử dụng sudo để thực hiện các tác vụ quản trị khi cần thiết là an toàn hơn.

2. Làm thế nào để biết địa chỉ IP của mình?

Bạn có thể sử dụng các trang web như whatismyip.com để tìm địa chỉ IP công cộng của mình.

3. Làm thế nào để thay đổi cổng SSH mặc định?

Bạn có thể thay đổi cổng SSH mặc định bằng cách chỉnh sửa file sshd_config và thay đổi dòng Port 22 thành một số cổng khác.

4. Tôi có thể sử dụng những loại SSH keys nào?

Bạn có thể sử dụng RSA, DSA, ECDSA hoặc Ed25519 SSH keys. Ed25519 được coi là an toàn hơn và nhanh hơn RSA.

5. Làm thế nào để tạo SSH key pair?

Bạn có thể tạo SSH key pair bằng lệnh ssh-keygen -t rsa -b 4096 hoặc ssh-keygen -t ed25519.

6. Làm thế nào để vô hiệu hóa đăng nhập bằng mật khẩu?

Bạn có thể vô hiệu hóa đăng nhập bằng mật khẩu bằng cách đặt PasswordAuthentication no trong file sshd_config.

7. SSH port mặc định là bao nhiêu?

ssh port mặc định là bao nhiêu là 22. Tuy nhiên, bạn nên thay đổi để tăng cường bảo mật.