Score:2

การพยายามเข้าสู่ระบบโดยไม่ได้รับอนุญาตอาจใช้การเชื่อมต่อ MySQL เป็นเวลานานได้หรือไม่

ธง in

MySQL มีจำนวนจำกัดของการเชื่อมต่อพร้อมกันที่กำหนดโดย max_connections ตัวแปรโดยผู้ให้บริการคลาวด์ของฉัน ปัจจุบันจำกัดไว้ที่ 151 การเชื่อมต่อ

มีเว็บเซิร์ฟเวอร์เพียงเว็บเดียวที่ใช้ฐานข้อมูลนี้ ดังนั้นจึงเพียงพอแล้ว อย่างไรก็ตาม ฉันรู้สึกประหลาดใจที่เห็นว่าปัจจุบันฉันมีการเชื่อมต่อมากกว่า 30 รายการไปยังเซิร์ฟเวอร์ของฉัน:

mysql> แสดงสถานะโดยที่ `variable_name` = 'Threads_connected';
+----------------------+------+
| ชื่อตัวแปร | ค่า |
+----------------------+------+
| Threads_connected | 34 |
+----------------------+------+

แม้ว่าจะไม่มีอะไรเกือบใช้มันในขณะนี้และฉันสามารถตรวจสอบได้ด้วยรายการกระบวนการแสดง: (การเชื่อมต่อเดียวเท่านั้นที่นี่)

mysql> แสดงรายการกระบวนการ;
+--------+------------+------------+------ ------+---------+------+--------+------------ ---+-----------+------------+
| รหัส | ผู้ใช้ | โฮสต์ | ฐานข้อมูล | คำสั่ง | เวลา | รัฐ | ข้อมูล | Rows_sent | Rows_examined |
+--------+------------+------------+------ ------+---------+------+--------+------------ ---+-----------+------------+
| 272130 | ********** | ****************** | ********** | สอบถาม | 0 | เริ่มต้น | แสดงรายการกระบวนการ | 0 | 0 |
+--------+------------+------------+------ ------+---------+------+--------+------------ ---+-----------+------------+

ฉันพยายามที่จะอธิบายถึงที่อยู่ของการเชื่อมต่อที่เหลืออีก 33 รายการ และในที่สุดฉันก็รู้ว่า: นั่นอาจเป็นการโจมตีด้วยกำลังดุร้ายจำนวนมากหรือไม่ อาจมีแฮ็กเกอร์ 30-40 คนพยายามเดารหัสผ่านของฉัน และนั่นบล็อกเธรดต่อผู้โจมตีแต่ละคน

สมมติฐานของฉันถูกต้องหรือไม่?

อัปเดต 2021-07-07: เพิ่มรายละเอียดเพิ่มเติมของสถานะ MySQL

mysql> แสดงสถานะโดยที่ `variable_name` เช่น '%threads%' หรือ `variable_name` เช่น '%connection%';
+--------------------------------+------------ --------+
| ชื่อตัวแปร | ค่า |
+--------------------------------+------------ --------+
| Connection_errors_accept | 0 |
| Connection_errors_internal | 0 |
| Connection_errors_max_connections | 0 |
| Connection_errors_peer_address | 8 |
| Connection_errors_select | 0 |
| Connection_errors_tcpwrap | 0 |
| การเชื่อมต่อ | 482365 |
| ล่าช้า_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 |
| Threads_created | 2882 ​​|
| Threads_running | 1 |
+--------------------------------+------------ --------+
in flag
หากการเชื่อมต่อถูกกำหนดให้กับบัญชีของคุณ การรับรองความถูกต้องในระดับ MySQL ได้ผ่านไปแล้ว ดังนั้นการใช้กำลังดุร้ายบัญชีจึงไม่สมเหตุสมผล จากคำอธิบายของคุณ ฉันจะถือว่าเธรดที่เชื่อมต่อทั้งหมดเป็นของกระบวนการเซิร์ฟเวอร์เดียว
adamsfamily avatar
in flag
ฉันไม่แน่ใจว่าการเชื่อมต่อถูกกำหนดให้กับบัญชีของฉันแล้วหรือไม่ ฉันสงสัยว่าฉันจะคิดออกได้อย่างไร BTW นี่คือบริการฐานข้อมูล MySQL แบบ 'แชร์' ของ Arubacloud ดังนั้นผู้ใช้รายอื่นอาจอยู่บนเซิร์ฟเวอร์เดียวกันเป็นไปได้ไหมที่ฉันเห็นการเชื่อมต่อที่ผ่านการรับรองความถูกต้องอื่นๆ ใน `Threads_connected' ที่เป็นของผู้ใช้รายอื่น (ฉันไม่เห็นว่าเป็นไปได้อย่างยิ่งที่สิ่งเหล่านั้นจะเป็นการเชื่อมต่อจากเซิร์ฟเวอร์ของฉัน เพราะแม้ว่าจะไม่มีทราฟฟิกบนเซิร์ฟเวอร์ การเชื่อมต่อก็ยังคงมีอยู่ - 12 ชั่วโมงต่อมา)
in flag
สมมติว่าเว็บไซต์ไม่ร้ายแรง มีมาตรการง่ายๆ อย่างหนึ่งในการดูว่าการเชื่อมต่อมาจากเว็บเซิร์ฟเวอร์ของคุณหรือไม่: หยุดเว็บเซิร์ฟเวอร์และตรวจสอบการเชื่อมต่ออีกครั้ง อีกทางเลือกหนึ่งหากไม่ได้แชร์เว็บเซิร์ฟเวอร์ คุณสามารถดูการเชื่อมต่อ TCP ระหว่างเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ mysql ทุกการเชื่อมต่อฐานข้อมูลจะมีการเชื่อมต่อ TCP หนึ่งรายการเสมอ (สมมติว่าการเชื่อมต่อ MYSQL ใช้ TCP)
adamsfamily avatar
in flag
ลองแล้วปิดเว็บและการเชื่อมต่อยังอยู่ระหว่าง 33-38 ฉันคิดว่ามันต้องเป็นอย่างใดอย่างหนึ่ง 1) ผู้ใช้รายอื่นของเซิร์ฟเวอร์ MySQL ที่ฉันมองไม่เห็นด้วย `รายการกระบวนการแสดง` หรือ 2) ผู้ใช้ที่ไม่ได้รับการตรวจสอบสิทธิ์ -- อย่างไรก็ตาม ฉันไม่สามารถพิสูจน์ได้เช่นกัน...
Score:1
ธง ua
  • แสดงรายการกระบวนการ แสดงเฉพาะการเชื่อมต่อสำหรับผู้ใช้ที่เรียกใช้คำสั่งนั้น อย่าลืมเชื่อมต่อเป็น ราก เพื่อรับรายการทั้งหมด "ราก" มีประสิทธิภาพมากกว่าที่คุณต้องการ อาจมีผู้ใช้รายอื่น ("ผู้ดูแลระบบ"?) ที่มีประสิทธิภาพเพียงพอ ในแง่ของ ยินยอมความต้องการของ 'ผู้ใช้' ทั้งหมดคือ กระบวนการ.

  • เมื่อคุณได้รับรายการกระบวนการแล้ว เวลา จะระบุว่าเชื่อมต่อกี่วินาที

  • แสดงสถานะเช่น 'Threads_running'; จะแสดงจำนวนการเชื่อมต่อที่ใช้งานอยู่

  • แสดงสถานะเช่น 'Max_used_connections'; เป็นรอยน้ำสูง ถ้ายังไม่โดน max_connections (คุณพูดถึง 151) แสดงว่าคุณยังไม่ได้ (ตั้งแต่รีสตาร์ท) "หมดการเชื่อมต่อ"

  • การหมดเวลาอาจมีขนาดใหญ่ ซึ่งนำไปสู่การเชื่อมต่อที่ติดขัด

adamsfamily avatar
in flag
ขอบคุณ Rick น่าเสียดายที่ฉันไม่สามารถเข้าสู่ระบบในฐานะ 'รูท' ได้เนื่องจากผู้ให้บริการฐานข้อมูลที่มีการจัดการไม่อนุญาตให้ฉัน อย่างไรก็ตาม ฉันเข้าสู่ระบบภายใต้บัญชีผู้ใช้เดียวที่ฉันมี ดังนั้นอย่างน้อยฉันควรเห็นการเชื่อมต่อของตัวเอง ฉันอัปเดตคำถามด้วยผลลัพธ์ที่ละเอียดยิ่งขึ้น 'ลายน้ำสูง' นั้นยอดเยี่ยม ตัวบ่งชี้ที่ดีมาก ขอบคุณ!
ua flag
@adamsfamily - ฉันเพิ่มในรายการสัญลักษณ์แสดงหัวข้อย่อยแรกของฉัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา