Nếu bạn đã từng xem nhật ký xác thực cho máy chủ của mình, thì bạn biết rằng bất kỳ máy chủ nào được kết nối với Internet đều đang chịu hàng loạt nỗ lực đăng nhập liên tục từ tin tặc.
Ngay cả khi máy chủ của bạn là một máy chủ sở thích hoàn toàn không xác định, các tập lệnh tự động sẽ tìm thấy nó và liên tục cố gắng cưỡng bức theo cách của họ trong việc sử dụng SSH. Mặc dù họ không có khả năng truy cập miễn là bạn đang sử dụng mật khẩu phức tạp hoặc các biện pháp bảo mật khác, nhưng vẫn luôn có cơ hội là họ có thể thành công.
May mắn thay, có một cách hữu ích và thú vị để bẫy những tin tặc này trong máy chủ của bạn và khiến chúng quá mất tập trung để gây ra bất kỳ rắc rối nào.
Honeypot SSH là gì?
Nói một cách đơn giản, honeypot SSH là một mồi nhử có nghĩa là trông giống như một quả treo thấp để thu hút tội phạm mạng và nhử chúng nhắm vào nó. Nhưng đó không phải là mục tiêu thực sự và tin tặc thường không nhận ra điều đó cho đến khi quá muộn.
Một lọ mật ong có thể có nhiều dạng và có nhiều cách sử dụng khác nhau. Đôi khi, chúng không chỉ là một hành vi đánh lạc hướng, nhưng những lần khác, chúng được sử dụng để thu thập thông tin về kẻ tấn công.
Nhiều cơ quan chính phủ sử dụng honeypots để bắt tội phạm, dụ chúng tấn công, chỉ để thu thập thông tin về chúng để bắt chúng sau này. Nhưng honeypots cũng có thể được sử dụng bởi các quản trị viên hệ thống làm việc cho các công ty hoặc thậm chí chỉ những người có sở thích chạy máy chủ Linux cho vui.
Tại sao sử dụng Honeypot SSH?
Có nhiều lý do khiến ai đó có thể muốn triển khai honeypot SSH trên máy chủ của họ. Trong một số trường hợp, bạn có thể muốn sử dụng nó để có thể chặn mọi kết nối trong tương lai từ chúng. Có lẽ bạn chỉ muốn dụ chúng khỏi các mục tiêu thực trên hệ thống của bạn. Hoặc nó có thể dành cho mục đích giáo dục:giúp tìm hiểu cách thức hoạt động của các cuộc tấn công.
Đối với mục đích của hướng dẫn này, chúng tôi chủ yếu sử dụng honeypot như một sự phân tâm. Cụ thể, nó sẽ khiến hacker đánh lạc hướng tấn công các phần dễ bị tấn công hơn trên máy chủ của bạn cũng như khiến chúng quá bận rộn để tấn công máy chủ của người khác.
Và, ít nhất trong trường hợp này, phương pháp được sử dụng cũng sẽ tốt cho một hoặc hai tiếng cười.
Bị mắc kẹt trong SSH
Về cơ bản, những gì chúng tôi muốn làm là bẫy tin tặc khi họ cố gắng cưỡng bức đăng nhập SSH. Có một số cách để thực hiện việc này, nhưng một trong những cách đơn giản nhất là gửi từ từ cho họ một biểu ngữ SSH rất dài.
Bằng cách này, tập lệnh tự động của tin tặc sẽ bị kẹt khi chờ biểu ngữ. Điều này có thể kéo dài hàng giờ, nếu không phải vài ngày hoặc vài tuần. Vì tập lệnh được tự động hóa nên tin tặc có thể không chú ý nhiều đến nó và sẽ không nhận thấy rằng tập lệnh bị kẹt cho đến khi đã trôi qua nhiều thời gian.
Điều này đôi khi được gọi một cách vui nhộn là “SSH tarpit”, vì tập lệnh của tin tặc bị mắc kẹt trong đó và không thể tự thoát ra được.
Điều này yêu cầu bạn phải biết một số cách sử dụng SSH cơ bản. Nếu bạn không chắc chắn về cách sử dụng SSH, hãy đọc hướng dẫn này để giúp bạn bắt đầu.
vô tận
Chương trình mà chúng tôi đang sử dụng để thực hiện điều này có tên là vô tận và được tạo bởi xiên que.
Khi bạn đã đăng nhập vào máy chủ của mình, hãy sao chép kho lưu trữ. (Bạn cần có git
đã cài đặt nó.)
git clone https://github.com/skeeto/endlessh
Bây giờ bạn đã có kho lưu trữ trên máy chủ của mình, bạn sẽ cần chuyển sang thư mục đó và biên dịch nó.
cd endlessh make
Một số lỗi có thể xuất hiện khi cố gắng biên dịch chương trình. Điều này rất có thể có nghĩa là bạn đang thiếu phần phụ thuộc mà chương trình cần biên dịch. Bạn sẽ cần kiểm tra xem nó bị thiếu phụ thuộc nào, sau đó cài đặt nó với trình quản lý gói của phân phối của bạn.
Sau khi bạn có chương trình để biên dịch, bạn sẽ muốn chuyển nó vào thư mục bin để nó nằm trong đường dẫn của bạn.
sudo mv endlessh /usr/local/bin
Bạn sẽ muốn kiểm tra kỹ để đảm bảo rằng nó được phát hiện trong đường dẫn của bạn.
which endless
Nó sẽ in ra /usr/local/bin/endlessh
đường dẫn. Nếu không đúng như vậy, bạn sẽ muốn đảm bảo rằng nó đã được chuyển đến đúng thư mục.
Sau đó, biến chương trình thành daemon dịch vụ để nó có thể hoạt động như một systemd
dịch vụ.
sudo cp util/endlessh.service /etc/systemd/system/
sau khi hoàn tất, hãy bật dịch vụ để nó chạy trong nền.
sudo systemctl enable endlessh
Theo mặc định, endh sẽ chỉ hoạt động trên các cổng trên 1024, nhưng chúng tôi muốn nó sử dụng cổng SSH mặc định để chúng tôi có thể đánh lừa tin tặc cố gắng tấn công nó. Để thực hiện việc này, chúng tôi cần chỉnh sửa tệp dịch vụ.
Ví dụ này sử dụng nano để chỉnh sửa tệp cấu hình, nhưng hãy thoải mái sử dụng trình chỉnh sửa văn bản mà bạn chọn.
sudo nano /etc/systemd/system/endlessh.service
Khi tệp được mở, hãy bỏ ghi chú dòng sau bằng cách xóa ký tự #:
#AmbientCapabilities=CAP_NET_BIND_SERVICE
Sau đó, thêm dấu # vào đầu dòng này:
PrivateUsers=true
Lưu tệp và chạy lệnh này:
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
Bạn sẽ cần tạo và thiết lập tệp cấu hình để endh biết nó sẽ chạy trên cổng nào. Trước tiên, bạn cần tạo một thư mục mới cho nó, sau đó tạo tệp cấu hình.
sudo mkdir -p /etc/endlessh sudo vim /etc/endlessh/config
Tệp cấu hình sẽ chỉ cần một dòng duy nhất trong đó. Điều này sẽ thông báo cho endh chạy trên cổng 22, đây là cổng mặc định cho SSH. Chúng tôi làm điều này để nó trở thành mục tiêu hấp dẫn hơn đối với tin tặc. Họ sẽ thấy rằng cổng SSH mặc định đang mở, sau đó cố gắng đột nhập vào đó.
Nhập thông tin sau vào tệp cấu hình của bạn:
Port 22
Bạn sẽ cần khởi động dịch vụ vô tận.
sudo systemctl start endlessh
Thats tất cả để có nó! Giờ đây, bạn sẽ chạy vô tận trên cổng SSH mặc định của mình và đang bẫy tin tặc.
Thử nghiệm nó
Chỉ để đảm bảo honeypot đang hoạt động như dự kiến, hãy giả vờ là một tin tặc trong một giây và cố gắng giành quyền truy cập vào SSH trên máy chủ của bạn.
ssh root@<server-ip-address>
Miễn là mọi thứ đã được thiết lập chính xác, bạn sẽ thấy rằng ssh
lệnh bị kẹt và không làm được gì. Hãy xem điều gì đang thực sự xảy ra khi bạn (hoặc một tin tặc thực sự) đưa ra lệnh này.
Lặp lại lệnh tương tự nhưng thêm -vvv
cờ để sử dụng tùy chọn dài dòng.
ssh -vvv root@<server-ip-address>
Bây giờ sẽ rõ ràng là công cụ nhỏ này đang bẫy bạn và ngăn bạn truy cập SSH trên máy chủ của bạn như thế nào. Nó chậm rãi, từng dòng một, gửi một biểu ngữ SSH rất lớn đến khách hàng.
Và tất nhiên, vì một kẻ lừa đảo đã tự động hóa điều này với một bot, họ sẽ không nhận ra điều này đang xảy ra cho đến khi bạn đã lãng phí hàng giờ, nếu không phải là hàng ngày, cho thời gian của họ.
Các câu hỏi thường gặp
1. Điều này có ngăn tin tặc truy cập SSH không?
Mặc dù đây là một biện pháp ngăn chặn khá tốt, nhưng nó không đảm bảo ngăn chặn hoàn toàn tin tặc. Một tin tặc chú ý cuối cùng sẽ nhận thấy rằng bạn đã tạo một honeypot trên máy chủ của mình và có thể thử các cổng khác nhau để truy cập SSH trên máy chủ của bạn.
Tuy nhiên, điều này là đủ để ngăn chặn những tin tặc chỉ đang tìm kiếm trái cây thấp.
2. Làm cách nào để sử dụng SSH nếu chương trình này đang chạy trên cổng mặc định?
Bạn sẽ cần thay đổi cổng SSH đang chạy. Đây là một phương pháp hay ngay cả khi bạn không có honeypot trên máy chủ của mình, vì tin tặc sẽ luôn thử các cổng mặc định trước trước khi quét các cổng khác.
3. Có tùy chọn nào khác mà tôi có thể thêm vào tệp cấu hình không?
Có, bạn có thể thay đổi một số cài đặt khác, bao gồm cả việc thay đổi tốc độ trễ.
Bạn có thể xem danh sách các tùy chọn trong tệp cấu hình mẫu trên kho lưu trữ Github.
Lời cuối cùng
Bây giờ bạn đã học cách thiết lập honeypot trên máy chủ của mình để bẫy tin tặc và khiến chúng bị phân tâm để không thể tấn công bất cứ thứ gì khác, đó không phải là cách duy nhất để bảo mật quyền truy cập SSH vào máy chủ của bạn.
Hãy xem bài viết này hướng dẫn cách sử dụng khóa mã hóa để đăng nhập vào SSH nhằm giúp bảo mật máy chủ của bạn hơn nữa.