SSH (Secure Shell) là giao thức quản trị mạng quan trọng, cho phép bạn truy cập và điều khiển máy chủ từ xa một cách an toàn. Tuy nhiên, Ssh Port Bị Scan Liên Tục là một vấn đề nhức nhối, tiềm ẩn nguy cơ xâm nhập trái phép và gây ảnh hưởng đến hệ thống. Bài viết này sẽ giúp bạn hiểu rõ nguyên nhân, cách nhận biết, và các biện pháp phòng tránh hiệu quả để bảo vệ máy chủ của mình.
Tại Sao SSH Port Bị Scan Liên Tục?
Việc SSH port bị scan liên tục là một hiện tượng phổ biến trên internet. Các botnet và hacker liên tục quét các dải IP để tìm kiếm các máy chủ đang chạy dịch vụ SSH trên cổng mặc định (port 22). Mục đích của việc này là:
- Tìm kiếm lỗ hổng bảo mật: Các scanner sẽ cố gắng khai thác các lỗ hổng bảo mật đã biết trong dịch vụ SSH để xâm nhập hệ thống.
- Thực hiện tấn công brute-force: Nếu không tìm thấy lỗ hổng, chúng sẽ thử tấn công brute-force bằng cách đoán mật khẩu của người dùng.
- Xây dựng botnet: Sau khi xâm nhập thành công, máy chủ của bạn có thể bị sử dụng để thực hiện các cuộc tấn công khác.
Chuyên gia bảo mật Nguyễn Văn An từ Mekong Security chia sẻ:
“Việc liên tục bị quét cổng SSH là dấu hiệu cho thấy máy chủ của bạn đang là mục tiêu của các cuộc tấn công. Đừng chủ quan, hãy thực hiện các biện pháp bảo mật cần thiết ngay lập tức.”
Làm Sao Nhận Biết SSH Port Bị Scan Liên Tục?
Có nhiều cách để nhận biết SSH port bị scan liên tục. Dưới đây là một số phương pháp phổ biến:
- Kiểm tra log file: File
/var/log/auth.log
(hoặc/var/log/secure
trên một số hệ thống) ghi lại tất cả các hoạt động liên quan đến xác thực, bao gồm cả các nỗ lực đăng nhập SSH. Nếu bạn thấy có quá nhiều dòng liên quan đến “Invalid user” hoặc “Failed password” từ các địa chỉ IP khác nhau, đó là dấu hiệu cho thấy máy chủ đang bị tấn công brute-force. - Sử dụng công cụ giám sát: Các công cụ giám sát hệ thống như
fail2ban
,DenyHosts
, hoặcpsad
có thể tự động phát hiện và chặn các địa chỉ IP có hành vi đáng ngờ. - Phân tích lưu lượng mạng: Sử dụng các công cụ như
tcpdump
hoặcWireshark
để theo dõi lưu lượng mạng đến cổng 22. Nếu bạn thấy có quá nhiều kết nối đến từ các địa chỉ IP lạ, đó có thể là dấu hiệu của việc quét cổng.
Các Biện Pháp Phòng Tránh SSH Port Bị Scan Liên Tục
Việc phòng tránh SSH port bị scan liên tục là một quá trình liên tục và cần được thực hiện một cách toàn diện. Dưới đây là một số biện pháp hiệu quả mà bạn có thể áp dụng:
1. Thay Đổi SSH Port Mặc Định
Đây là biện pháp đơn giản nhưng hiệu quả nhất để giảm thiểu nguy cơ bị tấn công. Thay vì sử dụng cổng 22, hãy chọn một cổng khác có số lớn hơn 1024 và ít phổ biến hơn.
- Cách thực hiện:
- Mở file cấu hình SSH:
/etc/ssh/sshd_config
- Tìm dòng
#Port 22
và bỏ dấu#
, sau đó thay đổi số 22 thành số cổng bạn muốn sử dụng, ví dụ:Port 2222
- Lưu file và khởi động lại dịch vụ SSH:
sudo systemctl restart sshd
- Mở file cấu hình SSH:
Sau khi thay đổi cổng, bạn cần chỉ định cổng mới khi kết nối SSH: ssh -p 2222 user@host
.
2. Sử Dụng Xác Thực Bằng Khóa SSH (SSH Key Authentication)
Thay vì sử dụng mật khẩu, bạn có thể sử dụng cặp khóa SSH (khóa công khai và khóa riêng tư) để xác thực. Phương pháp này an toàn hơn nhiều vì khóa SSH rất khó bị bẻ khóa.
- Cách thực hiện:
- Tạo cặp khóa SSH trên máy tính của bạn:
ssh-keygen -t rsa -b 4096
- Sao chép khóa công khai lên máy chủ:
ssh-copy-id -p 2222 user@host
(nếu bạn đã thay đổi cổng SSH) - Tắt xác thực bằng mật khẩu trong file
/etc/ssh/sshd_config
:PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
- Lưu file và khởi động lại dịch vụ SSH:
sudo systemctl restart sshd
- Tạo cặp khóa SSH trên máy tính của bạn:
Với xác thực bằng khóa SSH, ngay cả khi ai đó biết được tên người dùng, họ cũng không thể đăng nhập nếu không có khóa riêng tư tương ứng. Để hiểu rõ hơn về fail2ban chống brute force, bạn có thể tham khảo thêm tại đây.
3. Sử Dụng Fail2ban
Fail2ban là một công cụ tuyệt vời giúp tự động chặn các địa chỉ IP có hành vi đáng ngờ. Nó hoạt động bằng cách theo dõi log file và chặn các IP có quá nhiều nỗ lực đăng nhập thất bại trong một khoảng thời gian nhất định.
- Cách cài đặt và cấu hình Fail2ban:
- Cài đặt Fail2ban:
sudo apt install fail2ban
(hoặcsudo yum install fail2ban
trên CentOS) - Tạo file cấu hình cục bộ:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Chỉnh sửa file
/etc/fail2ban/jail.local
để cấu hình các jail (luật chặn) cho SSH:- Bật jail SSH:
enabled = true
- Thiết lập cổng SSH:
port = 2222
(nếu bạn đã thay đổi cổng) - Thiết lập số lần thử đăng nhập thất bại tối đa:
maxretry = 3
- Thiết lập thời gian chặn:
bantime = 3600
(giây)
- Bật jail SSH:
- Lưu file và khởi động lại Fail2ban:
sudo systemctl restart fail2ban
- Cài đặt Fail2ban:
Fail2ban giúp giảm đáng kể số lượng nỗ lực tấn công brute-force vào máy chủ của bạn. Tương tự như nginx limit login bằng fail2ban, Fail2ban giúp bảo vệ các dịch vụ khác.
4. Sử Dụng tường lửa (Firewall)
Tường lửa là một phần không thể thiếu trong hệ thống bảo mật của bất kỳ máy chủ nào. Nó giúp kiểm soát lưu lượng mạng ra vào và chỉ cho phép các kết nối hợp lệ.
-
Sử dụng UFW (Uncomplicated Firewall) trên Ubuntu:
- Cài đặt UFW:
sudo apt install ufw
- Cho phép kết nối SSH từ một số địa chỉ IP cụ thể (ví dụ: địa chỉ IP của bạn):
sudo ufw allow from your_ip_address to any port 2222
- Cho phép kết nối SSH từ bất kỳ địa chỉ IP nào (nếu cần thiết):
sudo ufw allow 2222
- Từ chối tất cả các kết nối đến cổng 2222 (nếu bạn muốn chỉ cho phép các kết nối đã được cho phép rõ ràng):
sudo ufw deny 2222
- Bật UFW:
sudo ufw enable
- Cài đặt UFW:
-
Sử dụng FirewallD trên CentOS:
- Cài đặt FirewallD:
sudo yum install firewalld
- Bật FirewallD:
sudo systemctl start firewalld
- Cho phép kết nối SSH từ một số địa chỉ IP cụ thể:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="your_ip_address" port port="2222" protocol="tcp" accept'
- Cho phép kết nối SSH từ bất kỳ địa chỉ IP nào:
sudo firewall-cmd --permanent --add-port=2222/tcp
- Khởi động lại FirewallD:
sudo firewall-cmd --reload
- Cài đặt FirewallD:
Tường lửa giúp hạn chế các kết nối không mong muốn và giảm thiểu nguy cơ bị tấn công. Bạn có thể tham khảo thêm cách chặn brute-force bằng iptables để tăng cường bảo mật.
5. Vô Hiệu Hóa Đăng Nhập Root Trực Tiếp
Việc cho phép đăng nhập trực tiếp bằng tài khoản root là một lỗ hổng bảo mật lớn. Hacker có thể dễ dàng tấn công brute-force vào tài khoản root để giành quyền kiểm soát hệ thống.
- Cách thực hiện:
- Mở file cấu hình SSH:
/etc/ssh/sshd_config
- Tìm dòng
#PermitRootLogin yes
và bỏ dấu#
, sau đó thay đổiyes
thànhno
:PermitRootLogin no
- Lưu file và khởi động lại dịch vụ SSH:
sudo systemctl restart sshd
- Mở file cấu hình SSH:
Sau khi vô hiệu hóa đăng nhập root trực tiếp, bạn cần đăng nhập bằng một tài khoản người dùng thông thường và sử dụng lệnh sudo
để thực hiện các tác vụ quản trị.
6. Sử Dụng Mật Khẩu Mạnh
Nếu bạn vẫn sử dụng mật khẩu để xác thực, hãy đảm bảo rằng bạn sử dụng mật khẩu mạnh và phức tạp. Mật khẩu mạnh nên có độ dài ít nhất 12 ký tự, bao gồm cả chữ hoa, chữ thường, số và ký tự đặc biệt.
- Một số mẹo để tạo mật khẩu mạnh:
- Sử dụng trình quản lý mật khẩu để tạo và lưu trữ mật khẩu an toàn.
- Tránh sử dụng các từ trong từ điển hoặc các thông tin cá nhân dễ đoán như ngày sinh, tên thú cưng, v.v.
- Sử dụng cụm mật khẩu (passphrase) thay vì một từ duy nhất.
7. Cập Nhật Phần Mềm Thường Xuyên
Các bản cập nhật phần mềm thường chứa các bản vá bảo mật quan trọng giúp khắc phục các lỗ hổng đã biết. Việc cập nhật phần mềm thường xuyên giúp bảo vệ máy chủ của bạn khỏi các cuộc tấn công khai thác các lỗ hổng này.
- Cách cập nhật phần mềm:
- Trên Ubuntu:
sudo apt update && sudo apt upgrade
- Trên CentOS:
sudo yum update
- Trên Ubuntu:
Chuyên gia bảo mật Lê Thị Mai Hương từ Cybersafe Vietnam cho biết:
“Cập nhật phần mềm là một trong những biện pháp bảo mật cơ bản nhất nhưng lại rất quan trọng. Đừng bỏ qua việc này, vì nó có thể giúp bạn tránh khỏi nhiều cuộc tấn công.”
8. Giám Sát Hệ Thống Thường Xuyên
Việc giám sát hệ thống thường xuyên giúp bạn phát hiện sớm các dấu hiệu bất thường và kịp thời ứng phó với các cuộc tấn công.
- Các hoạt động giám sát nên thực hiện:
- Kiểm tra log file thường xuyên.
- Theo dõi tài nguyên hệ thống (CPU, RAM, disk I/O).
- Sử dụng các công cụ giám sát hệ thống để phát hiện các hành vi đáng ngờ.
9. Sử Dụng Geolocation Blocking
Nếu bạn biết rằng chỉ có người dùng từ một số quốc gia nhất định mới cần truy cập vào máy chủ của bạn, bạn có thể sử dụng geolocation blocking để chặn các kết nối từ các quốc gia khác. Điều này giúp giảm đáng kể số lượng nỗ lực tấn công từ các khu vực có nguy cơ cao.
- Cách thực hiện (sử dụng iptables):
- Cài đặt
xtables-addons
:sudo apt install xtables-addons-common
(hoặcsudo yum install xtables-addons
trên CentOS) - Tải về danh sách IP của các quốc gia bạn muốn chặn (ví dụ: từ IP2Location hoặc MaxMind).
- Tạo các rule iptables để chặn các IP này.
- Cài đặt
10. Sử Dụng Port Knocking
Port knocking là một kỹ thuật cho phép bạn ẩn các cổng dịch vụ bằng cách yêu cầu người dùng gửi một chuỗi các gói tin TCP/UDP đến các cổng khác nhau theo một trình tự nhất định trước khi có thể truy cập vào cổng dịch vụ thực tế.
- Cách hoạt động:
- Cấu hình một chuỗi “knock” (ví dụ: gửi gói tin đến cổng 12345, sau đó đến cổng 67890, sau đó đến cổng 98765).
- Chỉ khi người dùng gửi đúng chuỗi knock này, cổng SSH mới được mở ra để cho phép kết nối.
Port knocking giúp giảm thiểu nguy cơ bị quét cổng vì các scanner sẽ không thể tìm thấy cổng SSH nếu nó không được mở.
Kết luận
Việc SSH port bị scan liên tục là một vấn đề nghiêm trọng cần được quan tâm đúng mức. Bằng cách áp dụng các biện pháp phòng tránh đã được trình bày trong bài viết này, bạn có thể tăng cường đáng kể bảo mật cho máy chủ của mình và giảm thiểu nguy cơ bị tấn công. Hãy nhớ rằng bảo mật là một quá trình liên tục, do đó bạn cần thường xuyê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. Cũng giống như block ip login sai quá 3 lần, mỗi biện pháp đều góp phần tăng cường an ninh. Bạn có thể tìm hiểu thêm về csf chống đăng nhập sai để có thêm giải pháp bảo mật.
FAQ (Câu hỏi thường gặp)
-
Tại sao nên thay đổi SSH port mặc định?
- Việc thay đổi SSH port mặc định (22) giúp “ẩn” dịch vụ SSH khỏi các cuộc quét cổng tự động, giảm thiểu đáng kể số lượng nỗ lực tấn công brute-force.
-
Xác thực bằng khóa SSH (SSH Key Authentication) có an toàn hơn so với mật khẩu không?
- Có, xác thực bằng khóa SSH an toàn hơn nhiều vì khóa SSH rất khó bị bẻ khóa so với mật khẩu, đặc biệt là mật khẩu yếu.
-
Fail2ban là gì và nó hoạt động như thế nào?
- Fail2ban là một công cụ giúp tự động chặn các địa chỉ IP có hành vi đáng ngờ, như quá nhiều nỗ lực đăng nhập thất bại. Nó theo dõi log file và chặn các IP này trong một khoảng thời gian nhất định.
-
Có nên vô hiệu hóa đăng nhập root trực tiếp qua SSH không?
- Có, việc cho phép đăng nhập trực tiếp bằng tài khoản root là một lỗ hổng bảo mật lớn. Nên vô hiệu hóa và sử dụng tài khoản người dùng thông thường với quyền sudo.
-
Cập nhật phần mềm có quan trọng không?
- Rất quan trọng. Các bản cập nhật phần mềm thường chứa các bản vá bảo mật giúp khắc phục các lỗ hổng đã biết, bảo vệ máy chủ khỏi các cuộc tấn công.
-
Tường lửa (Firewall) giúp bảo vệ SSH như thế nào?
- Tường lửa kiểm soát lưu lượng mạng ra vào và chỉ cho phép các kết nối hợp lệ đến cổng SSH, ngăn chặn các kết nối không mong muốn từ các địa chỉ IP lạ.
-
Nếu tôi bị scan SSH port liên tục, có cần phải cài lại hệ điều hành không?
- Không nhất thiết. Nếu bạn đã thực hiện các biện pháp bảo mật như thay đổi SSH port, sử dụng khóa SSH, cài đặt Fail2ban và tường lửa, việc cài lại hệ điều hành có thể không cần thiết. Tuy nhiên, bạn nên kiểm tra kỹ hệ thống để đảm bảo không có phần mềm độc hại nào được cài đặt.