Điểm:2

Một nỗ lực đăng nhập trái phép có thể chiếm kết nối MySQL trong một thời gian dài không?

lá cờ in

MySQL của tôi có số lượng kết nối đồng thời hạn chế được xác định bởi max_connections biến bởi nhà cung cấp đám mây của tôi. Hiện tại giới hạn ở 151 kết nối.

Chỉ có một máy chủ web sử dụng cơ sở dữ liệu này, do đó, nó là quá đủ. Tuy nhiên, tôi rất ngạc nhiên khi thấy rằng tôi hiện có hơn 30 kết nối đang hoạt động với máy chủ của mình:

mysql> hiển thị trạng thái trong đó `tên_biến` = 'Threads_connected';
+--------------------+-------+
| Tên_biến | Giá trị |
+--------------------+-------+
| Threads_connected | 34 |
+--------------------+-------+

Mặc dù hiện tại không có hầu hết mọi thứ sử dụng nó và tôi có thể xác minh nó bằng danh sách quy trình hiển thị: (chỉ có một kết nối ở đây)

mysql> hiển thị danh sách quy trình;
+---------+------------+---------+------ ------+---------+------+----------+---------- -----+------------+-----------+
| ID | Người dùng | Người dẫn chương trình | đb | Lệnh | Thời gian | Nhà nước | Thông tin | Hàng_gửi | Rows_examined |
+---------+------------+---------+------ ------+---------+------+----------+---------- -----+------------+-----------+
| 272130 | ********** | ****************** | ********** | Truy vấn | 0 | bắt đầu | hiển thị danh sách quy trình | 0 | 0 |
+---------+------------+---------+------ ------+---------+------+----------+---------- -----+------------+-----------+

Tôi đã cố gắng tìm ra tung tích của 33 kết nối còn lại và cuối cùng tôi nhận ra: đó có thể là các cuộc tấn công vũ trang hàng loạt không? Có thể 30-40 tin tặc đang cố đoán mật khẩu của tôi và chặn một luồng cho mỗi kẻ tấn công?

Giả định của tôi có đúng không?

CẬP NHẬT 2021-07-07: Đã thêm chi tiết về trạng thái MySQL

mysql> hiển thị trạng thái trong đó `tên_biến` như '%threads%' hoặc `tên_biến` như '%connection%';
+---------------------------------+--------- --------+
| Tên_biến | Giá trị |
+---------------------------------+--------- --------+
| Connection_errors_accept | 0 |
| Connection_errors_internal | 0 |
| Connection_errors_max_connections | 0 |
| Connection_errors_peer_address | 8 |
| Connection_errors_select | 0 |
| Lỗi kết nối_tcpwrap | 0 |
| Kết nối | 482365 |
| Delayed_insert_threads | 0 |
| Max_used_connections | 74 |
| Max_used_connections_time | 2021-07-05 09:10:27 |
| Slow_launch_threads | 0 |
| Threadpool_idle_threads | 0 |
| Threadpool_threads | 0 |
| Threads_cached | 5 |
| Threads_connected | 36 |
| Chủ đề được tạo | 2882 ​​|
| Chủ đề_chạy | 1 |
+---------------------------------+--------- --------+
lá cờ in
Nếu các kết nối được chỉ định cho tài khoản của bạn thì xác thực ở cấp độ MySQL đã được thông qua nên tài khoản brute force không có ý nghĩa gì. Dựa trên mô tả của bạn, tôi cho rằng tất cả các luồng được kết nối thuộc về một quy trình máy chủ.
adamsfamily avatar
lá cờ in
Tôi thực sự không chắc liệu các kết nối đã được xác nhận với tài khoản của mình hay chưa. Tôi đang tự hỏi làm thế nào tôi có thể tìm ra điều này? Nhân tiện, đây là dịch vụ cơ sở dữ liệu MySQL 'được chia sẻ' của Arubacloud, vì vậy những người dùng khác có thể ở trên cùng một máy chủ.Có thể nào tôi thấy các kết nối được xác thực khác trong `Threads_connected` thuộc về những người dùng khác không? (Tôi không thấy nhiều khả năng đó sẽ là các kết nối từ máy chủ của tôi vì ngay cả khi không có lưu lượng truy cập trên máy chủ, các kết nối vẫn tồn tại - 12 giờ sau)
lá cờ in
Giả sử rằng trang web không quan trọng, có một biện pháp đơn giản để xem liệu kết nối có đến từ máy chủ web của bạn hay không: dừng máy chủ web và kiểm tra lại các kết nối. Ngoài ra, nếu máy chủ web không được chia sẻ, bạn có thể xem các kết nối TCP giữa máy chủ web và máy chủ mysql. Mọi kết nối cơ sở dữ liệu luôn có một kết nối TCP (giả sử kết nối MYSQL sử dụng TCP).
adamsfamily avatar
lá cờ in
Đã thử, tắt trang web và các kết nối vẫn nằm trong khoảng 33-38. Tôi nghĩ rằng đó phải là 1) người dùng khác của máy chủ MySQL mà tôi không thể thấy bằng `show processlist` hoặc 2) người dùng chưa được xác thực -- tuy nhiên tôi cũng không thể chứng minh được...
Điểm:1
lá cờ ua
  • HIỂN THỊ DANH SÁCH QUY TRÌNH chỉ hiển thị các kết nối cho người dùng đang chạy lệnh đó. Đảm bảo kết nối như nguồn gốc để có được danh sách đầy đủ. "root" thực sự mạnh hơn mức bạn cần; có thể có một số người dùng khác ("quản trị viên"?) đủ mạnh. xét về KHOẢN TRỢ CẤP, tất cả nhu cầu của 'người dùng' là TIẾN TRÌNH.

  • Khi bạn nhận được danh sách quy trình, Thời gian sẽ cho biết bao nhiêu giây kể từ khi chúng được kết nối.

  • HIỂN THỊ TÌNH TRẠNG NHƯ 'Threads_running'; sẽ hiển thị có bao nhiêu kết nối hiện đang hoạt động.

  • HIỂN THỊ TÌNH TRẠNG NHƯ 'Max_used_connections'; là mực nước cao. Nếu nó chưa đánh max_connections (bạn đề cập đến 151), thì bạn vẫn chưa (kể từ khi khởi động lại) "hết kết nối".

  • Thời gian chờ có thể lớn, dẫn đến các kết nối bị treo xung quanh.

adamsfamily avatar
lá cờ in
Cảm ơn Rick, tiếc là tôi không thể đăng nhập bằng `root` vì nhà cung cấp cơ sở dữ liệu được quản lý không cho phép tôi. Tuy nhiên, tôi đã đăng nhập bằng tài khoản người dùng duy nhất mà tôi có, do đó ít nhất tôi sẽ thấy các kết nối của chính mình. Tôi đã cập nhật câu hỏi với một đầu ra chi tiết hơn. 'Hình mờ cao' là chỉ số tuyệt vời, rất tốt, cảm ơn!
lá cờ ua
@adamsfamily - Tôi đã thêm vào mục dấu đầu dòng đầu tiên của mình.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.