การตั้งค่าการเชื่อมโยงของ MySQL เป็น 0.0.0.0 แย่แค่ไหน?


35

ฉันพยายามอนุญาตให้เซิร์ฟเวอร์ระยะไกลเข้าถึงอินสแตนซ์ MySQL ที่ปัจจุบันแชร์เซิร์ฟเวอร์ Linux กับเว็บแอป ตามเอกสารวิธีเดียวที่เป็นไปได้ (เว้นแต่ฉันจะไม่เข้าใจอย่างถูกต้อง) คือถ้าbind-address directive ถูกตั้งค่าเป็น0.0.0.0ซึ่งส่งผลให้ MySQL อนุญาตการเข้าถึงจาก IP ใด ๆ ที่สามารถสร้างผู้ใช้ที่ถูกต้อง

ดังนั้นสองคำถาม:

  1. สิ่งนี้เป็นอันตรายต่อความปลอดภัยอย่างไร
  2. มีวิธีที่ดีกว่าในการอนุญาตให้มีการโต้ตอบทั้งในท้องถิ่นและระยะไกลกับ MySQL

คำตอบ:


36

ฉันคิดว่าคุณเข้าใจผิดเกี่ยวกับการตั้งค่าการเชื่อมโยงเล็กน้อย เหล่านี้เป็นที่อยู่ในพื้นที่ที่ MySQL จะรับฟังการเชื่อมต่อ ค่าเริ่มต้นคือ 0.0.0.0 ซึ่งเป็นอินเตอร์เฟซทั้งหมด การตั้งค่านี้ไม่ได้ จำกัด ว่า IP ใดที่สามารถเข้าถึงเซิร์ฟเวอร์ยกเว้นว่าคุณได้ระบุ 127.0.0.1 สำหรับโฮสต์ท้องถิ่นเท่านั้น

หากคุณต้องการ จำกัด ผู้ใช้บางรายจากที่อยู่ IP เฉพาะให้ใช้การสร้าง / ให้สิทธิ์ผู้ใช้เช่นนี้CREATE USER 'bobdole'@'192.168.10.221';


+1 แต่เพียงทราบว่าที่อยู่เริ่มต้นการฟังแตกต่างกันไปขึ้นอยู่กับวิธีการติดตั้ง MySQL
John Gardeniers

ขอบคุณ Doug ฉันคิดว่าค่าเริ่มต้นในกรณีนี้คือโฮสต์ในพื้นที่ของฉัน แต่ก็ดีที่รู้ว่าผู้ใช้ฐานข้อมูลเฉพาะนั้นยังคงถูก จำกัด โดย IP
jonathanatx

@jonathanatx MySQL เริ่มต้นผูกอยู่ (ใน 5.6 และไกลกลับเป็นฉันรู้) 0.0.0.0เป็น แม้ว่าฉันคิดว่าสำหรับการติดตั้งจำนวนมากที่มีผลผูกพันเฉพาะในพื้นที่เป็นตัวเลือกที่ดีที่สุด อย่าเปิดประตูถ้าคุณไม่ต้องการให้ใครเดินผ่านมันไป
ebyrob

1

มันไม่ดี. แม้ว่าคุณจะสามารถ จำกัด การเข้าถึงของผู้ใช้โดย ip ในแต่ละฐานข้อมูล แต่ฉันคิดว่ามันปลอดภัยกว่าที่จะมีการเชื่อมต่อทั้งหมดเข้ามาในเครื่อง บนเซิร์ฟเวอร์ของฉันฉันอนุญาตให้ MySQL ยอมรับเฉพาะการเชื่อมต่อภายในเครื่องเท่านั้น 127.0.0.1 ซึ่งเป็นค่าเริ่มต้น ในการเข้าถึงฐานข้อมูลจากระยะไกลสิ่งที่คุณต้องทำคือสร้างอุโมงค์ ssh ก่อนเชื่อมต่อกับฐานข้อมูลแล้วเชื่อมต่อภายในเครื่อง หากคุณกำลังเขียนโค้ดด้วย PHP มันค่อนข้างง่ายที่จะทำ หากคุณใช้แอพพลิเคชั่นเดสก์ท็อปมันง่ายที่จะทำบน Linux (ค้นหาอุโมงค์ ssh) บน Windows ปกติฉันใช้โปรแกรมเช่น Putty เพื่อสร้างอุโมงค์ให้ฉัน


7
นั่นมันค่อนข้างบ้า วิธีมาตรฐานในการสร้างผู้ใช้ที่สามารถเข้าถึงได้จากชื่อโฮสต์หรือ IP ที่แน่นอนเท่านั้น การบังคับให้ทุกเว็บเซิร์ฟเวอร์สร้างอุโมงค์ SSH ไปยังฐานข้อมูลนั้นเป็นงานที่มากเกินความจำเป็นที่จะต้องทำ
TheLQ

3
เว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ฐานข้อมูลของคุณไม่ใช่อุปกรณ์เดียวกัน อย่าปล่อยให้การเชื่อมต่อเข้ามาจากอินเทอร์เน็ตแน่นอน .. แต่มีวิธีที่ปลอดภัยในการแก้ไขปัญหาสถาปนิกด้วยการเข้าถึงเครือข่าย MySQL
Shane Madden

1
สำหรับการตั้งค่าขนาดเล็ก (หนึ่งฐานข้อมูล, www หนึ่งตัว) คุณอาจทำการสร้างช่องสัญญาณ ssh สำหรับการติดตั้งจริง vpns และไฟร์วอลล์ของคุณจะปกป้องคุณดังนั้นคุณจะเปิดขึ้นผ่าน 0.0.0.0 เพื่ออนุญาตการเข้าถึงระยะไกล
Sonia Hamilton

2
สำหรับทุกคนที่คิดว่าแนวคิดอุโมงค์ SSH นั้นบ้าไปแล้วให้พิจารณาว่าปริมาณข้อมูล MySQL จำนวนมากนั้นชัดเจน หากด้วยเหตุผลบางประการที่คุณต้องเชื่อมต่อผ่านเครือข่ายที่ไม่น่าเชื่อถือ (เช่นอินเทอร์เน็ต) ให้พิจารณา SSH หรือทำผ่าน VPN ดับไฟ Wireshark หรือแพ็คเก็ตดมกลิ่นอื่น ๆ ถ้าคุณต้องการที่จะเห็นสิ่งที่ฉันกำลังพูดถึง
แบรด

2
@Brad MySQL รองรับการเข้ารหัสดังนั้นจึงไม่ถูกต้อง
Marti Markov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.