เชื่อมต่อกับ MySQL อย่างปลอดภัย - SSL ของ Stunnel กับ SSH Tunneling ใน MySQL


15

เรามีแอปพลิเคชั่น PHP ที่เชื่อมต่อกับเซิร์ฟเวอร์ MySQL และเราต้องการความปลอดภัยในการเชื่อมต่อระหว่างเว็บ & แอปพลิเคชันเซิร์ฟเวอร์และฐานข้อมูล

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

เราไม่มีการเชื่อมต่อกับฐานข้อมูลที่เปิดอยู่ในปัจจุบันและแม้ว่าเราจะตั้งใจในอนาคตฉันต้องการที่จะใช้สิ่งนี้อย่างเป็นอิสระ

ฮาร์ดแวร์ฉลาด - เซิร์ฟเวอร์ MySQL ค่อนข้างหนา (16 คอร์) เหมือนกับเว็บเซิร์ฟเวอร์ พวกเขากำลังทุ่มเทเซิร์ฟเวอร์

คำถามของฉันจะล้อมรอบวิธีที่มีประสิทธิภาพที่สุดในการรักษาความปลอดภัยและเข้ารหัสการเชื่อมต่อไปยังเซิร์ฟเวอร์ฐานข้อมูล

งานวิจัยของฉันได้แนะนำว่าค่าใช้จ่ายหลักของประสิทธิภาพคือการตั้งค่าการเชื่อมต่อ SSL - เมื่อเชื่อมต่อ SSL แล้วจะมีโทษประสิทธิภาพเล็กน้อย และนี่คือสิ่งที่ฉันมีเกี่ยวกับการรักษาความปลอดภัยการเชื่อมต่อแต่ละวิธี:

  1. ใบรับรอง SSL SSL - ทำงานเหมือนกับ SSL ปกติ สามารถใช้ใบรับรองไคลเอ็นต์เพื่อป้องกันการเชื่อมต่อที่ไม่ได้รับอนุญาต ไม่มีการเชื่อมต่อถาวรกับการตั้งค่าที่มีอยู่ของเรา ยังคงต้องมี MySQL ฟังบนพอร์ตที่เปิดในไฟร์วอลล์
  2. stunnel ตั้งค่าพอร์ตไปยังพอร์ต ssl tunnel ไม่ต้องกำหนดค่า MySQL ใหม่ สามารถปิดพอร์ตการฟัง MySQL ปกติเพื่อป้องกันการพยายามเชื่อมต่อ MySQL ที่เป็นอันตราย ไม่รองรับการเชื่อมต่อแบบต่อเนื่อง ผลการดำเนินงานที่ไม่รู้จัก
  3. SSH Tunneling สร้างอุโมงค์ SSH ระหว่างไคลเอนต์และเซิร์ฟเวอร์ ไม่ต้องกำหนดค่า MySQL ใหม่ สามารถปิดพอร์ตการฟัง MySQL ปกติเพื่อป้องกันการพยายามเชื่อมต่อ MySQL ที่เป็นอันตราย รองรับการเชื่อมต่อแบบถาวร แต่บางครั้งก็เลื่อนออก ผลการดำเนินงานที่ไม่รู้จัก

นี่คือเท่าที่ฉันได้รับ ฉันตระหนักถึงข้อ จำกัด ของการวัดประสิทธิภาพ - จากประสบการณ์การใช้งานมันเป็นการยากที่จะจำลองการรับส่งข้อมูลในโลกแห่งความเป็นจริง ฉันหวังว่าบางคนมีคำแนะนำตามประสบการณ์ของพวกเขาในการรักษาความปลอดภัย MySQL?

ขอบคุณ


คุณมีสถาปัตยกรรมเซิร์ฟเวอร์ / เครือข่ายประเภทใด คุณพยายามป้องกันสถานการณ์ประเภทใด หากการสื่อสารระหว่างเซิร์ฟเวอร์ของคุณกับสวิตช์ / VLAN แยกจากกันคุณอาจไม่ต้องการการป้องกันการดมกลิ่น สำหรับประสิทธิภาพให้เรียกใช้openssl speedและเลือกรหัสที่เหมาะกับความต้องการของคุณสำหรับการป้องกันและลดประสิทธิภาพ
Marcin

@Marcin - ขอบคุณสำหรับเคล็ดลับความเร็ว openssl สถานการณ์ที่ฉันพยายามป้องกันคือการเชื่อมต่อกับ mysql โดยไม่ได้รับอนุญาตและเข้ารหัสการสื่อสารระหว่างเซิร์ฟเวอร์ ความช่วยเหลือเพิ่มเติมใด ๆ ที่คุณสามารถให้เปรียบเทียบวิธีที่สามจะได้รับสุดซึ้ง
dastra

1
ถึง 3) ใช้autosshเพื่อลดเอฟเฟกต์การออกกลางคัน มันจะเชื่อมต่อใหม่โดยอัตโนมัติในกรณีที่มีการยกเลิกการเชื่อมต่อ ทำงานได้ดีที่นี่ในหลาย ๆ สถานการณ์
ansi_lumen

คำตอบ:


5

ฉันจะไปกับ SSH อุโมงค์และทำมันด้วยแทนautossh sshเกี่ยวกับประสิทธิภาพที่ฉันจะบอกว่าโปรโตคอล SSH สามารถปรับแต่งได้อย่างมากและคุณสามารถปรับการเชื่อมต่อของคุณถ้าจำเป็น

แต่ฉันจะไม่คาดหวังค่าใช้จ่ายที่เห็นได้ชัดเจนหลังจากการเชื่อมต่อถูกตั้งค่า


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