Cách dừng / ngăn chặn SSH bruteforce [đã đóng]


22

Tôi rất mới đối với quản trị mạng, vì vậy xin lưu ý rằng tôi chưa có kinh nghiệm.

Tôi có một máy chủ root Ubuntu với bảng điều khiển plesk.

Hôm qua bạn bè của tôi và tôi nhận thấy rằng chất lượng bài phát biểu trên TS3 của chúng tôi rất tệ. Tôi đã gửi một số ping đến máy chủ và bị mất gói rất cao. Sau đó tôi googled một chút và phát hiện ra rằng có một auth.log. Tôi đã tải xuống và cuộn một chút xung quanh, sau đó tôi tìm thấy điều này:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

Có vẻ như ai đó đã cố gắng đăng nhập qua SSH nhiều lần. Tôi cuộn một chút và thấy rằng ai đó đang cố sử dụng nhiều tên người dùng khác nhau:student, tech, psi, news,...

Hàng trăm thông tin đăng nhập đã được hiển thị trong tệp.

Tôi đã tra cứu số liệu thống kê lưu lượng truy cập tại trang web của trung tâm dữ liệu của tôi. Nó chỉ ở mức 17 MB mỗi giờ. Tôi có một xương sống 100Mbit, vì vậy việc truyền dữ liệu dường như không phải là vấn đề.

Hiện tại tôi không thể truy cập vào máy chủ bằng bất kỳ cách nào.

Câu hỏi của tôi là: làm thế nào tôi có thể nhận được acces một lần nữa, làm thế nào tôi có thể từ bỏ cuộc tấn công này và ngăn chặn các cuộc tấn công sau đây?


Vẫn đang học những thứ của tôi trong bộ phận này .... Nhưng liệu đây có phải là một cách sử dụng tốt cho việc gõ cổng không?
mjrider


Câu trả lời:


37

Làm thế nào để có được quyền truy cập?

Không rõ tại sao bạn không thể truy cập vào tài khoản của mình.

Nếu máy của bạn đang bị tấn công hoặc tải cao, bạn nên trao đổi với nhà cung cấp về việc hạn chế quyền truy cập (Hạn chế IP) hoặc đưa máy chủ ngoại tuyến (ngắt kết nối Internet).

Bạn cũng có thể yêu cầu truy cập ngoài băng mà nhà cung cấp của bạn có thể giúp đỡ.

Nếu ai đó đã xâm phạm máy chủ của bạn, bạn có thể cần khôi phục từ bản sao lưu hoặc sử dụng hình ảnh khôi phục.

Cách ngăn chặn các cuộc tấn công vào máy chủ của bạn, đặc biệt là SSH

cách tốt nhất để ngăn chặn đăng nhập vũ phu?

Đừng để họ đến máy của bạn ngay từ đầu! Có rất nhiều cách để ngăn chặn các nỗ lực vũ phu trước khi chúng đến máy chủ của bạn hoặc thậm chí ở cấp SSH.

Phải nói rằng, bảo vệ Hệ điều hành của bạn bằng một cái gì đó như fail2ban là một ý tưởng tuyệt vời. http://en.wikipedia.org/wiki/Fail2ban

Fail2ban tương tự như Denyhosts ... nhưng không giống như Denyhost tập trung vào SSH, fail2ban có thể được cấu hình để giám sát bất kỳ dịch vụ nào ghi các lần đăng nhập vào tệp nhật ký và thay vì chỉ sử dụng /etc/hosts.deny để chặn địa chỉ / máy chủ IP , fail2ban có thể sử dụng Netfilter / iptables và TCP Wrappers /etc/hosts.deny.

Có một số kỹ thuật bảo mật quan trọng bạn nên xem xét để giúp ngăn chặn đăng nhập vũ phu:

SSH:

  • Không cho phép root đăng nhập
  • Không cho phép mật khẩu ssh (sử dụng xác thực khóa riêng)
  • Đừng nghe trên mọi giao diện
  • Tạo giao diện mạng cho SSH (ví dụ: eth1), khác với giao diện bạn phục vụ các yêu cầu từ (ví dụ: eth0)
  • Không sử dụng tên người dùng phổ biến
  • Sử dụng danh sách cho phép và chỉ cho phép người dùng yêu cầu truy cập SSH
  • Nếu bạn yêu cầu truy cập Internet ... Hạn chế quyền truy cập vào một bộ IP hữu hạn. Một IP tĩnh là lý tưởng, tuy nhiên khóa nó xuống xx0.0 / 16 thì tốt hơn 0.0.0.0/0
  • Nếu có thể, hãy tìm cách kết nối mà không cần truy cập Internet, bằng cách đó bạn có thể từ chối tất cả lưu lượng truy cập internet cho SSH (ví dụ: với AWS, bạn có thể có kết nối trực tiếp bỏ qua Internet, đó gọi là Kết nối trực tiếp)
  • Sử dụng phần mềm như fail2ban để bắt bất kỳ cuộc tấn công vũ phu nào
  • Đảm bảo HĐH luôn cập nhật, đặc biệt là các gói ssh và bảo mật

Ứng dụng:

  • Đảm bảo ứng dụng của bạn luôn cập nhật, trong các gói bảo mật cụ thể
  • Khóa các trang 'quản trị viên' của ứng dụng của bạn. Nhiều lời khuyên ở trên cũng áp dụng cho khu vực quản trị viên của ứng dụng của bạn.
  • Mật khẩu Bảo vệ khu vực quản trị của bạn, một cái gì đó như htpasswd cho bảng điều khiển web sẽ chiếu bất kỳ lỗ hổng ứng dụng cơ bản nào và tạo thêm một rào cản để vào
  • Khóa quyền truy cập tập tin. 'Thư mục tải lên' nổi tiếng là điểm vào của tất cả các loại nội dung khó chịu.
  • Cân nhắc đặt ứng dụng của bạn phía sau một mạng riêng và chỉ hiển thị bộ cân bằng tải phía trước và hộp nhảy (đây là một thiết lập điển hình trong AWS sử dụng VPC)

1
Tôi đã cài đặt Fail2ban qua help.ubuntu.com/community/Fail2ban Nó có vẻ là rất mạnh mẽ và dễ sử dụng (thông báo Mail, ...)

Tôi nhận được một tin nhắn từ trung tâm dữ liệu của mình: Có một cuộc tấn công lũ lụt (đây là gì?) Và điều này làm cho kết nối rất tệ cho nhiều máy chủ. Đó không phải là một cuộc tấn công vào máy chủ của tôi đặc biệt.


1
Hấp dẫn. Vì vậy, có vẻ như trung tâm dữ liệu của tôi là mục tiêu của cuộc tấn công. Nhưng để biết tôi đã bị bruteforced bên cạnh điều này, cũng rất tốt. Và Fail2ban thực sự là một công cụ tốt. Tôi sẽ đọc về Iptables và SSH Config vào những ngày tiếp theo và cố gắng làm cho nó an toàn hơn nhiều.

3
Định cấu hình openssh để nghe một cổng khác ngoài 22 và định cấu hình iptables để thả bất kỳ thứ gì đến cổng 22. Nếu bạn không mong đợi ssh từ bất kỳ quốc gia nào khác ngoài quê hương của bạn, hãy tạo một danh sách chặn tại countryipblocks.net/country_selection. php và sử dụng nó với iptables.
ThoriumBR

4

Làm thế nào tôi có thể ngăn chặn cuộc tấn công này và ngăn chặn các cuộc tấn công sau

Thông thường tôi thay đổi cổng ssh mặc định từ 22 sang cổng khác như 1122. Điều này ngăn chặn nhiều cuộc tấn công tự động từ bot, nhưng quét cổng đơn giản có thể phát hiện ra nó. Dù sao:

vi /etc/ssh/sshd_config

và chỉnh sửa Cổng 22 thành Cổng 1122 , nhưng điều này là không đủ.

Quy tắc IPTables tự động về bruteforce

tôi sử dụng log2iptables https://github.com/theMiddleBlue/log2iptables thay vì Fail2ban, bởi vì một tập lệnh Bash đơn giản phân tích bất kỳ logfile nào bằng một biểu thức thông thường và thực thi iptables. Ví dụ: khi 5 trận đấu xảy ra, log2iptables thả địa chỉ IP cụ thể. Thật tuyệt vì sử dụng API Telegram và có thể gửi cho tôi một tin nhắn trên điện thoại của tôi khi anh ấy gặp sự cố :)

hy vọng điều này sẽ giúp!


8
Tôi đoán từ mối tương quan giữa URL dự án và xử lý SF của bạn, rằng bạn có liên quan đến dự án này. Vui lòng xem hướng dẫn của chúng tôi về việc giới thiệu các sản phẩm của riêng bạn, đặc biệt lưu ý yêu cầu " bạn phải tiết lộ liên kết của mình trong câu trả lời ".
MadHatter hỗ trợ Monica

1

Tôi vừa mới kết hợp nó, chạy cứ sau 15 phút như một cronjob, v.v.

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

0

Đây là giải pháp thay thế của tôi cho các cuộc tấn công SSH. Ý tưởng là tiếp tục đóng daemon SSH nếu không sử dụng. Không có cổng mở không có cuộc tấn công. Bạn có thể thử nó. Nó là mã nguồn mở https://github.com/indy99/nnet_port_guard


1
Chào mừng bạn đến với Lỗi Máy chủ! Câu trả lời của bạn cho thấy một giải pháp khả thi cho câu hỏi có sẵn thông qua một trang web khác. Các trang web Hỏi & Đáp của Stack Exchange thường cau mày với loại câu trả lời này vì các trang web khác có thể di chuyển, bị xóa hoặc thay đổi. Xin vui lòng đọc Làm thế nào để tôi viết một câu trả lời tốt? và xem xét sửa đổi câu trả lời của bạn để bao gồm các bước cần thiết để giải quyết vấn đề. Và đừng quên tham quan trang web .
Paul

0

Giải pháp tự động cho Centos / RHEL để chặn các diễn viên xấu

Đây là tập lệnh cho Centos để kiểm tra thông tin đăng nhập không thành công cho cả tài khoản người dùng không hợp lệ và mật khẩu xấu cho tài khoản hợp lệ. Nếu IP nguồn đã tấn công chúng tôi hơn 3 lần và chưa có trong danh sách từ chối, nó sẽ được thêm vào danh sách từ chối. Tôi chạy cái này cứ sau 15 phút từ crontab của root. Tôi cũng không cho phép đăng nhập root thông qua ssh, vì vậy sự kết hợp giữ cho mọi thứ khá yên tĩnh.

     #/bin/bash
     # Save a copy of the existing hosts.deny file for safety
     cp /etc/hosts.deny /etc/hosts.deny.bak
     # Get a list of the offending IP addresses and process them
     for z in `grep "Invalid\|Failed" /var/log/secure | awk '{ print $NF }' | sort | uniq`
     do
     # Get the number of times this IP hit us
     hits=`grep "Invalid\|Failed" /var/log/secure* | grep $z | wc -l`
     # Check whether this IP is already blocked
     blocked=`grep $z /etc/hosts.deny | wc -l`
     # If they hit us more than 3 times and are not already on the deny list
     # add them to the deny list
     if [ $hits -gt 3 -a $blocked -eq 0 ]
     then
          echo "sshd : $z" >> /etc/hosts.deny
     fi
     done

1
Nhìn một fail2bancái mà làm điều tương tự và được thử nghiệm chiến đấu.
Patrick Mevzek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.