Làm thế nào xấu là thiết lập địa chỉ liên kết của MySQL thành 0.0.0.0?


35

Tôi đang cố gắng cho phép một máy chủ từ xa truy cập vào một phiên bản MySQL hiện đang chia sẻ máy chủ Linux với một ứng dụng web. Theo tài liệu , cách duy nhất có thể xảy ra (trừ khi tôi không hiểu chính xác) là nếu chỉ thị địa chỉ liên kết được đặt thành 0.0.0.0 , điều này dẫn đến việc MySQL cho phép truy cập từ bất kỳ IP nào có thể tạo ra người dùng hợp lệ.

Vì vậy, hai câu hỏi:

  1. Làm thế nào bất lợi này sẽ được an ninh?
  2. Có cách tiếp cận nào tốt hơn để cho phép cả tương tác cục bộ và từ xa với MySQL không?

Câu trả lời:


36

Tôi nghĩ rằng bạn đang hiểu nhầm thiết lập địa chỉ liên kết một chút. Đây là các địa chỉ cục bộ mà MySQL sẽ lắng nghe các kết nối. Mặc định là 0.0.0.0 là tất cả các giao diện. Cài đặt này không hạn chế IP nào có thể truy cập máy chủ, trừ khi bạn chỉ định 127.0.0.1 chỉ cho localhost.

Nếu bạn cần hạn chế một số người dùng từ các địa chỉ IP cụ thể, hãy sử dụng tạo / cấp người dùng như thế nàyCREATE USER 'bobdole'@'192.168.10.221';


+1 nhưng chỉ cần lưu ý rằng địa chỉ nghe mặc định khác nhau tùy thuộc vào cách cài đặt MySQL.
John Gardeniers

Cảm ơn Doug, tôi nghĩ mặc định trong trường hợp này là máy chủ lưu trữ cục bộ của tôi, nhưng thật tốt khi biết rằng người dùng của một cơ sở dữ liệu cụ thể vẫn bị hạn chế bởi IP.
jonathanatx

@jonathanatx Địa chỉ liên kết mặc định của MySQL (trong 5.6 và theo như tôi biết) là 0.0.0.0. Mặc dù, tôi nghĩ rằng đối với nhiều cài đặt chỉ ràng buộc cục bộ là lựa chọn tốt nhất. Đừng mở cửa nếu bạn không muốn ai đi qua.
ebyrob 17/03 '

1

a. Thật tệ. Mặc dù bạn có thể hạn chế quyền truy cập của người dùng bằng ip trên mỗi cơ sở dữ liệu, tôi nghĩ sẽ an toàn hơn khi có tất cả các kết nối đến cục bộ. Trên các máy chủ của tôi, tôi cho phép MySQL chỉ chấp nhận các kết nối cục bộ, 127.0.0.1 là cấu hình mặc định. Để truy cập cơ sở dữ liệu từ xa, tất cả những gì bạn cần làm là tạo một đường hầm ssh trước khi kết nối với cơ sở dữ liệu và sau đó kết nối cục bộ. Nếu bạn đang mã hóa bằng php, thật dễ dàng để làm điều này. Nếu bạn đang sử dụng một ứng dụng máy tính để bàn thì dễ dàng thực hiện trên Linux (tra cứu đường hầm ssh), Trên Windows tôi thường sử dụng một chương trình như Putty để tạo đường hầm cho tôi.


7
Điều đó thật điên rồ. Cách tiêu chuẩn để làm điều đó là tạo người dùng chỉ có thể được truy cập từ một số tên máy chủ hoặc IP nhất định. Việc buộc mọi máy chủ web tạo một đường hầm SSH vào cơ sở dữ liệu sẽ tốn rất nhiều công sức hơn là cần phải thực hiện.
TheLQ

3
Máy chủ web và máy chủ cơ sở dữ liệu của bạn không phải lúc nào cũng là cùng một thiết bị. Đừng để kết nối đến từ internet, chắc chắn .. nhưng có những cách an toàn để kiến ​​trúc sư giải pháp với truy cập mạng MySQL.
Shane Madden

1
Đối với một thiết lập nhỏ (một db, một www), bạn có thể thực hiện ssh đường hầm. Đối với thiết lập thực, vpns và tường lửa của bạn sẽ bảo vệ bạn, do đó bạn sẽ mở qua 0.0.0.0 để cho phép truy cập từ xa.
Sonia Hamilton

2
Đối với mọi người nghĩ rằng ý tưởng đường hầm SSH là điên rồ, hãy xem xét rằng phần lớn lưu lượng truy cập MySQL là rõ ràng. Nếu vì lý do nào đó bạn phải kết nối qua một mạng không tin cậy (tức là Internet), hãy xem xét SSH hoặc thực hiện qua VPN. Bật Wireshark hoặc một số gói sniffer khác nếu bạn muốn xem những gì tôi đang nói.
Brad

2
@Brad MySQL hỗ trợ mã hóa nên điều này không chính xác.
Marti Markov
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.