2012-06-25 26 views
7

Người dùng của tôi đang sử dụng trình kết nối MS Access và ODBC để kết nối với cơ sở dữ liệu MySQL từ xa của tôi. Tôi tự hỏi làm thế nào an toàn này là, theo nghĩa của tiết lộ mật khẩu có thể cho bên thứ 3. Giao thức xác thực mysql có an toàn để nghe lén hoặc thậm chí là các cuộc tấn công trung gian không? Tôi sẽ khá hài lòng với sự an toàn chống lại nghe lén. Lưu ý rằng mối quan tâm của tôi chỉ là xác thực, tôi không quan tâm đến việc tiết lộ dữ liệu.Bảo mật xác thực như thế nào trong giao thức mysql?

Vui lòng không trả lời rằng tôi nên sử dụng SSL. Tôi biết điều này sẽ là lý tưởng tuy nhiên các thiết lập không có vẻ rất đơn giản. Dù sao, tôi muốn biết mức độ an toàn của giao thức mysql đơn giản là gì.

Trả lời

12

Bạn muốn trở thành "an toàn để nghe lén hoặc thậm chí là các cuộc tấn công man-in-the-middle"? Mật khẩu của bạn, hoặc dữ liệu của bạn?

Tiêu đề câu hỏi của bạn đề cập cụ thể đến xác thực. MySQL thực hiện một công việc hợp lý để bảo vệ mật khẩu của bạn khỏi những kẻ nghe trộm (nó không được gửi bản rõ, và việc sử dụng một cuộc tấn công phát lại thất bại nonce). Trích dẫn MySQL protocol internals:

MySQL 4.1 trở lên

Hãy nhớ rằng các cửa hàng mysql.user.Password SHA1 (SHA1 (mật khẩu))

  • Các máy chủ sẽ gửi một chuỗi ngẫu nhiên (scramble) cho khách hàng
  • khách hàng tính:
    • stage1_hash = SHA1 (mật khẩu), sử dụng mật khẩu mà người dùng đã nhập .
    • thẻ = SHA1 (scramble + SHA1 (stage1_hash)) XOR stage1_hash
  • khách hàng sẽ gửi thẻ đến máy chủ
  • máy chủ tính toán
    • stage1_hash'= thẻ XOR SHA1 (scramble + mysql.user.Password)
  • server so sánh SHA1 (stage1_hash ') và mysql.user.Password
  • Nếu họ ar e giống nhau, mật khẩu vẫn ổn.

(Lưu ý SHA1 (A + B) là SHA1 của nối của A với B.)

giao thức này sửa chữa các lỗ hổng của cái cũ, không phải rình mò trên dây cũng không mysql. user.Password là đủ cho một kết nối thành công . Nhưng khi có cả mysql.user.Password và dữ liệu bị chặn trên dây, anh ta có đủ thông tin để kết nối.

Tuy nhiên, phiên được xác thực tiếp tục trong văn bản thuần túy: người nghe trộm sẽ có thể xem tất cả các truy vấn và kết quả; và một MITM sẽ có thể thay đổi như vậy.Như đã nêu trong the manual:

Theo mặc định, MySQL sử dụng kết nối không được mã hóa giữa máy khách và máy chủ. Điều này có nghĩa là ai đó có quyền truy cập vào mạng có thể xem tất cả lưu lượng truy cập của bạn và xem dữ liệu được gửi hoặc nhận. Họ thậm chí có thể thay đổi dữ liệu trong khi nó đang được chuyển tiếp giữa máy khách và máy chủ.

Trong khi bạn có thể không thích câu trả lời, SSL là công cụ thiết kế để đánh bại cả hai nghe trộm dữ liệu (làm thế nào khác các thông tin liên lạc có thể được mã hóa?) Và tấn công MITM (làm thế nào khác trong hai bên có thể xác minh rằng đồng đẳng của nó là ai nghĩ nó là?). Thật vậy, nếu giao thức client-server mysql một mình đánh bại các mối đe dọa thì sẽ không có lý do gì để sử dụng mysql trên SSL (và do đó nó sẽ không thể là một cấu hình được hỗ trợ).

+0

* Ý của bạn là gì "an toàn để nghe lén hoặc thậm chí là kẻ tấn công trung gian" *: như bạn đã nói, giao thức mysql đơn giản không phải là an toàn cho MITM, mối quan tâm của tôi bây giờ chỉ khi xác thực an toàn để nghe lén. Nếu ai đó đang nghe lén, liệu anh ta có thể thu thập đủ thông tin để xác thực với máy chủ mysql không? Tôi không phiền nếu anh ấy chỉ xem dữ liệu ... Cảm ơn câu trả lời của bạn! – TMS

+1

@Tomas: Không, như câu trả lời của tôi nói, anh ta sẽ chỉ nhìn thấy một dạng mã hóa của một mật khẩu băm mà không thể được phát lại do việc sử dụng một nonce. Tuy nhiên, nếu có thể thao tác các gói, anh ta có thể chiếm quyền điều khiển phiên để thực hiện bất kỳ lệnh nào anh ta thích. – eggyal

+0

Xin lỗi, tôi chưa hiểu ý bạn là gì với "nonce". Có một chuỗi ngẫu nhiên được gửi bởi máy chủ không? – TMS

-3

Câu trả lời ngắn gọn: Có, giao thức này an toàn với các cuộc tấn công Eavesdropping và MITM.

Chỉ khi kẻ tấn công quản lý để đánh hơi nỗ lực xác thực nếu kẻ tấn công biết nội dung của mysql.user, thì sau đó anh ta có thể xác thực với máy chủ. Ví dụ nếu bạn đang sử dụng cùng một mật khẩu trên hai máy chủ mysql khác nhau và kẻ tấn công có quyền truy cập vào một trong số họ, anh ta cũng có thể kết nối với máy chủ thứ hai.

+0

Bạn có chắc là giao thức này an toàn với MITM không? Và tôi không hiểu ý của bạn với đoạn 2. Tất nhiên khi kẻ tấn công đánh hơi mật khẩu, anh ta có thể kết nối với nó .. – TMS

Các vấn đề liên quan