เคล็ดลับที่ดีที่สุดสำหรับการรักษาความปลอดภัย MySQL และ MariaDB
เผยแพร่แล้ว: 2022-01-08ความปลอดภัยเป็นปัญหาใหญ่สำหรับคนจำนวนมาก โพสต์นี้จะให้คำแนะนำสิบประการเกี่ยวกับวิธีการรักษาความปลอดภัยของ MySQL และ MariaDB เพื่อให้ฐานข้อมูลของคุณปลอดภัยจากแฮกเกอร์ เคล็ดลับเหล่านี้ได้แก่ การสำรองข้อมูล การใช้รหัสผ่านที่รัดกุม และการจำกัดสิทธิ์การเข้าถึง
เคล็ดลับที่ดีที่สุดสำหรับการรักษาความปลอดภัย MySQL และ MariaDB
นี่คือเคล็ดลับที่ดีที่สุดสำหรับการบรรลุการรักษาความปลอดภัย MySQL และ MariaDB:
ลบผู้ใช้โดยไม่ต้องใช้รหัสผ่าน
หากคุณมีผู้ใช้ในฐานข้อมูลของคุณโดยไม่มีรหัสผ่าน วิธีที่ดีที่สุดคือลบออก ซึ่งจะช่วยลดโอกาสที่ใครบางคนสามารถแฮ็คเข้าสู่ฐานข้อมูลของคุณได้ คุณสามารถใช้แบบสอบถามต่อไปนี้เพื่อลบผู้ใช้เหล่านี้:
ไม่ว่าผู้ใช้จะมีสิทธิ์เข้าถึงจาก localhost หรือไม่ก็ตาม พวกเขาควรถูกลบเพื่อหยุดการรันคำสั่งเชิงลบใดๆ นอกจากนี้ รหัสผ่านที่ไม่รัดกุมยังเป็นความเสี่ยงด้านความปลอดภัยในตัวเอง
คุณควรใช้รหัสผ่านที่คาดเดายากเสมอเมื่อสร้างผู้ใช้ในฐานข้อมูลของคุณ รหัสผ่านที่อ่อนแอนั้นง่ายต่อการถอดรหัสโดยแฮกเกอร์ ซึ่งอาจทำให้พวกเขาเข้าถึงฐานข้อมูลของคุณและสร้างความหายนะให้กับมันได้หากพวกเขาจัดการสิ่งนี้ การใช้ตัวสร้างรหัสผ่านอัตโนมัติจะช่วยสร้างรหัสผ่านที่รัดกุมขึ้นสำหรับคุณซึ่งยากต่อการถอดรหัส
คุณควรพิจารณาใช้การรับรองความถูกต้องด้วยสองปัจจัยสำหรับผู้ใช้ของคุณ ซึ่งจะต้องมีรหัสพิเศษ ซึ่งปกติแล้วจะถูกส่งไปยังโทรศัพท์ของพวกเขา เพื่อเข้าสู่ระบบฐานข้อมูล ซึ่งทำให้ยากขึ้นมากสำหรับผู้ที่เข้าถึงได้หากมีเพียงชื่อผู้ใช้และรหัสผ่านของคุณ
จำกัดการเข้าถึงระยะไกล
หากคุณไม่ต้องการให้การเข้าถึงฐานข้อมูลจากระยะไกล ทางที่ดีควรจำกัดฐานข้อมูล ซึ่งจะช่วยลดโอกาสที่ใครบางคนสามารถแฮ็คฐานข้อมูลของคุณจากตำแหน่งระยะไกล
โชคดีที่ MySQL และ MariaDB เวอร์ชันล่าสุดจะจำกัดการเข้าถึงฐานข้อมูลจากระยะไกลโดยอัตโนมัติ เว้นแต่จะระบุไว้เป็นอย่างอื่น อย่างไรก็ตาม คุณควรตรวจสอบการตั้งค่าความปลอดภัยเพื่อให้แน่ใจว่าเป็นกรณีนี้
ยังเป็นความคิดที่ดีที่จะให้ผู้ใช้ทุกคนเชื่อมต่อกับ MySQL โดยโฮสต์ที่คุณต้องการเท่านั้น ตัวอย่างเช่น สามารถทำได้โดยใช้ ([ป้องกันอีเมล])
ลบฐานข้อมูลการทดสอบ
เมื่อคุณติดตั้ง MySQL หรือ MariaDB ฐานข้อมูลทดสอบจะถูกสร้างขึ้นโดยอัตโนมัติ ฐานข้อมูลนี้มีข้อมูลที่สามารถใช้แฮ็คเข้าสู่ฐานข้อมูลจริงของคุณได้ หากตกไปอยู่ในมือของมิจฉาชีพ ทางที่ดีควรลบฐานข้อมูลนี้เพื่อไม่ให้นำไปใช้ในจุดประสงค์ที่ชั่วร้าย
ฐานข้อมูลการทดสอบนี้ยังทำให้เกิดความเครียดที่ไม่จำเป็นบนเซิร์ฟเวอร์ฐานข้อมูล จะใช้โดยผู้ทดสอบฐานข้อมูลเท่านั้นเพื่อทดสอบการสืบค้น จึงสามารถลบออกได้โดยไม่กระทบต่อฟังก์ชันการทำงานของฐานข้อมูลของคุณ
สับสนในการเข้าถึง MySQL
ถ้าคุณไม่ต้องการให้คนอื่นรู้ว่าฐานข้อมูลของคุณมีอยู่ คุณก็สามารถทำให้การเข้าถึงฐานข้อมูลนั้นสับสนได้ วิธีนี้จะทำให้ผู้อื่นค้นหาฐานข้อมูลของคุณและแฮ็กข้อมูลได้ยากขึ้น
การทำให้การเข้าถึงยุ่งเหยิงยังทำให้ใครก็ตามที่กำลังตรวจสอบการรับส่งข้อมูลของคุณยากขึ้นในการระบุว่า MySQL หรือ MariaDB ใช้พอร์ตใด
เป็นที่ทราบกันดีว่า MySQL ทำงานบนพอร์ต 3306 ในขณะที่ 'root' เป็นชื่อของ superuser คุณสามารถแก้ไขได้โดยแก้ไข my.cnf และเปลี่ยนตัวแปร 'พอร์ต'
รักษาความปลอดภัยไฟล์การกำหนดค่าของคุณ
เช่นเดียวกับแอปพลิเคชันอื่นๆ การรักษาความปลอดภัยไฟล์การกำหนดค่าสำหรับ MySQL หรือ MariaDB เป็นสิ่งสำคัญ ไฟล์เหล่านี้มีข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่านและข้อมูลผู้ใช้ การรักษาความปลอดภัยไฟล์เหล่านี้จะช่วยป้องกันไม่ให้ใครก็ตามเข้าถึงข้อมูลนี้หากพวกเขาเข้าถึงเซิร์ฟเวอร์ของคุณ
ความปลอดภัยของเครือข่าย
สิ่งสำคัญคือการรักษาความปลอดภัยเครือข่ายของคุณ เช่นเดียวกับเซิร์ฟเวอร์เอง ซึ่งจะช่วยลดโอกาสที่ใครบางคนจะแฮ็คฐานข้อมูลของคุณจากตำแหน่งระยะไกลและเรียกใช้คำสั่งที่ชั่วร้ายบนฐานข้อมูล
สิ่งแรกที่คุณควรตรวจสอบคือ MySQL เข้าถึงได้ผ่านการเชื่อมต่อในเครื่องเท่านั้น ไม่ใช่เครือข่าย คุณสามารถทำได้ผ่านซ็อกเก็ต Unix ป้อน 'ข้ามเครือข่าย' ลงใน my.cnf เพื่อหยุดการสื่อสาร TCP/IP ทั้งหมด

คุณยังสามารถใช้ไฟร์วอลล์เพื่อบล็อกการเข้าถึง MySQL จากที่อยู่หรือช่วง IP บางอย่างได้ ซึ่งจะช่วยลดโอกาสที่ใครบางคนจะแฮ็คฐานข้อมูลของคุณจากตำแหน่งระยะไกล
ใช้ปลั๊กอินการตรวจสอบ
คุณยังสามารถใช้ปลั๊กอินการตรวจสอบเพื่อติดตามสิ่งที่เกิดขึ้นในฐานข้อมูลของคุณได้ ข้อมูลเหล่านี้จะช่วยให้คุณทราบได้ว่ามีใครเจาะเข้าไปในฐานข้อมูลของคุณหรือไม่ หรือมีสิ่งที่น่าสงสัยที่อาจแนะนำสิ่งนี้ได้
มีตัวเลือกมากมายทั้งแบบฟรีและมีค่าใช้จ่ายสำหรับปลั๊กอินเหล่านี้ทางออนไลน์ในปัจจุบัน การตรวจสอบ MySQL Enterprise เป็นตัวเลือกที่ดี หากมีการใช้ MySQL Enterprise ในองค์กรของคุณอยู่แล้ว MariaDB ยังมีปลั๊กอินการตรวจสอบของตัวเองอีกด้วย
ปลั๊กอินเหล่านี้ทำงานได้อย่างยอดเยี่ยมในการตรวจสอบฐานข้อมูลของคุณสำหรับกิจกรรมที่น่าสงสัย พวกเขายังสามารถส่งการแจ้งเตือนถึงคุณหากตรวจพบสิ่งผิดปกติ คุณจึงไม่ต้องตรวจสอบบันทึกด้วยตนเองทุกครั้ง
ปิดการใช้งาน LOAD DATA LOCAL INFILE
อีกวิธีในการป้องกันไม่ให้ผู้อื่นเข้าถึงฐานข้อมูลของคุณคือการปิดใช้งานความสามารถ LOCAL ใน MySQL และ MariaDB คำสั่งนี้อนุญาตให้คุณโหลดไฟล์ข้อมูลจากไฟล์ในเครื่อง แต่ยังก่อให้เกิดความเสี่ยงด้านความปลอดภัย – โดยเฉพาะอย่างยิ่งหากไม่ได้เข้ารหัส หากต้องการปิดใช้งานฟังก์ชันนี้ ให้ตั้งค่า local-infile=0 ใน my.cnf
สิทธิ์ของไฟล์
สิ่งสำคัญคือต้องตั้งค่าสิทธิ์ของไฟล์ที่ถูกต้องสำหรับไฟล์ MySQL และ MariaDB ของคุณ เพื่อให้แน่ใจว่ามีเพียงผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงได้ คุณสามารถทำได้โดยตั้งค่าการอนุญาตที่เหมาะสมกับไฟล์เหล่านี้
ตัวอย่างเช่น คุณสามารถตั้งค่าเจ้าของไฟล์ MySQL ทั้งหมดของคุณเป็น 'mysql' และกลุ่มเป็น 'mysql' โดยที่ผู้ใช้รายอื่นทั้งหมดจะถูกปฏิเสธการเข้าถึง เพื่อให้แน่ใจว่ามีเพียงผู้ใช้ที่มีสิทธิ์ที่ถูกต้องเท่านั้นที่จะสามารถเข้าถึงไฟล์ MySQL ของคุณได้
SSL และการเข้ารหัสข้อมูลในการส่งผ่าน
หากคุณใช้งาน MySQL หรือ MariaDB โดยเปิดใช้งาน SSL การติดตั้งใบรับรองที่จำเป็นบนเซิร์ฟเวอร์ของคุณเป็นสิ่งสำคัญ หากยังไม่เสร็จสิ้น ทุกคนสามารถสกัดกั้นข้อมูลที่ส่งระหว่างฐานข้อมูลของคุณและไคลเอ็นต์ของฐานข้อมูลได้
นอกจากนี้ คุณควรเข้ารหัสข้อมูลทั้งหมดที่อยู่ระหว่างการส่งเพื่อเพิ่มการป้องกันข้อมูลที่ละเอียดอ่อนใดๆ ที่ส่งผ่านเครือข่ายสาธารณะโดยใช้ SSH
คุณยังสามารถเข้ารหัสข้อมูลที่ส่งระหว่างเซิร์ฟเวอร์ฐานข้อมูลของคุณและอุปกรณ์อื่นๆ เพื่อให้แน่ใจว่าทุกคนที่ตรวจสอบการรับส่งข้อมูลบนเครือข่ายของคุณไม่สามารถเข้าถึงข้อมูลใด ๆ ที่พวกเขากำลังส่งหรือรับ แม้ว่าพวกเขาจะสามารถแฮ็คเข้าสู่ระบบเหล่านี้ได้ก็ตาม
SSL จะเป็นวิธีที่ดีในการบรรลุเป้าหมายนี้สำหรับผู้ใช้ MySQL เนื่องจากมีอยู่แล้วในโปรโตคอล ผู้ใช้ MariaDB สามารถใช้ stunnel เพื่อให้ได้ผลลัพธ์ที่คล้ายคลึงกัน
การเข้ารหัสข้อมูลที่พักผ่อน
สุดท้ายนี้ คุณควรพิจารณาเข้ารหัสข้อมูลของคุณเมื่อไม่ได้ใช้งาน ซึ่งหมายความว่าข้อมูลจะถูกเข้ารหัสแม้ว่าจะไม่ได้ถูกส่ง
ซึ่งสามารถทำได้โดยใช้เครื่องมือเช่น MySQL Enterprise Encryption หรือ MariaDB Column Encryption
เครื่องมือทั้งสองนี้เสนอวิธีที่ยอดเยี่ยมในการปกป้องข้อมูลของคุณจากการถูกเข้าถึง หากมีคนจัดการแฮ็คเข้าสู่เซิร์ฟเวอร์ฐานข้อมูลของคุณ นอกจากนี้ยังใช้งานง่ายมาก ดังนั้นคุณไม่จำเป็นต้องเป็นผู้เชี่ยวชาญในการเข้ารหัสเพื่อใช้ประโยชน์จากเครื่องมือเหล่านี้
บทสรุป
ตัวเลือกทั้งหมดที่กล่าวถึงในที่นี้จะช่วยให้คุณบรรลุการรักษาความปลอดภัย MySQL และ MariaDB แต่ก็ไม่ได้สมบูรณ์แบบสำหรับทุกสถานการณ์ คุณควรพิจารณาถึงความต้องการเฉพาะของคุณเมื่อพิจารณาเพื่อที่คุณสามารถเลือกสิ่งที่ดีที่สุดได้ อย่างไรก็ตาม เคล็ดลับเหล่านี้ควรให้ความคิดที่ดีแก่คุณเกี่ยวกับวิธีการเลือกตัวเลือกที่จะทำงานได้ดีสำหรับคุณ
หวังว่าบทความนี้จะให้แนวคิดดีๆ แก่คุณเกี่ยวกับวิธีบรรลุการรักษาความปลอดภัย MySQL และ MariaDB ในองค์กรของคุณ เพื่อไม่ให้ใครแฮ็กเข้าไปในฐานข้อมูลของคุณ หากพวกเขาสามารถฝ่าการป้องกันอื่นๆ ได้