FiveM MariaDB SSL/TLS คืออะไร? วิธีเข้ารหัสการเชื่อมต่อ oxmysql กับ Remote Database ให้ปลอดภัยขึ้น
FiveM MariaDB SSL/TLS คือการเข้ารหัสข้อมูลที่ส่งระหว่าง FXServer/oxmysql กับ MariaDB โดยเฉพาะกรณีที่ Database อยู่คนละเครื่องกับ FiveM Server เพื่อป้องกันข้อมูลระหว่างทางถูกอ่านหรือแก้ไขได้ง่ายจาก Network ที่ไม่ควรเข้าถึง
oxmysql ทำหน้าที่เป็น MySQL Resource สำหรับ FXServer และใช้ node-mysql2 เป็น Database Driver ส่วน MariaDB รองรับ TLS สำหรับการเข้ารหัส Client/Server Connections โดยตรง.
โครงสร้างทั่วไป:
FXServer
↓
oxmysql
↓
TLS-encrypted connection
↓
MariaDB
จุดสำคัญคือ การใช้ Remote Database ไม่ได้หมายความว่าการเชื่อมต่อถูกเข้ารหัสโดยอัตโนมัติทุก Environment ต้องตรวจทั้ง MariaDB Server Configuration, Database Account และ Client Connection จริง.
① TLS คืออะไร
TLS ย่อมาจาก:
Transport Layer Security
ใช้เข้ารหัสข้อมูลที่ส่งผ่าน Network
MariaDB ระบุว่า TLS สามารถใช้เข้ารหัสข้อมูลระหว่าง Client กับ Server และสามารถใช้ตรวจสอบ Identity ของ Server/Client เพิ่มเติมได้ตาม Configuration.
② SSL กับ TLS เหมือนกันไหม
คำว่า:
SSL
ยังถูกใช้ในชื่อ Variables และ Configuration หลายจุดเพื่อ Compatibility
แต่ MariaDB ระบุว่า SSL Protocol รุ่นเก่าถูกแทนที่ด้วย TLS และในระบบปัจจุบันคำว่า SSL มักถูกใช้เรียกรวมกับ TLS.
ดังนั้นเมื่อเห็น:
SSL
TLS
ใน MariaDB Documentation ควรเข้าใจว่าระบบสมัยใหม่กำลังพูดถึง Secure TLS Connections เป็นหลัก
③ ทำไม FiveM Remote Database ควรสนใจ TLS
สมมติ:
FXServer
Server A
↓
Network
↓
MariaDB
Server B
ข้อมูลที่เดินทางอาจรวม:
SQL Queries
Identifiers
Character Data
Persistent Settings
Database Authentication
TLS ทำหน้าที่เข้ารหัส Traffic ระหว่าง Client และ MariaDB Server.
ยิ่ง Database Communication เดินทางผ่าน Network ที่ไม่ใช่ Loopback ภายในเครื่องเดียว เรื่อง Data-in-transit Encryption ยิ่งควรถูกพิจารณา
④ Local Database ต้องใช้ TLS ไหม
ถ้า:
FXServer
+
MariaDB
อยู่เครื่องเดียวกันและเชื่อมผ่าน Local Interface ความเสี่ยงจาก Network Path ภายนอกย่อมน้อยกว่า Remote Database
แต่ Security Requirement ของแต่ละระบบแตกต่างกัน
ดังนั้นอย่าใช้สูตร:
Local
=
ไม่ต้อง TLS เสมอ
หรือ:
Remote
=
TLS ทำงานเองเสมอ
ต้องตรวจ Environment จริง
⑤ MariaDB รองรับ TLS หรือไม่
รองรับ
MariaDB ระบุว่า Packages ที่เผยแพร่โดย MariaDB Foundation และ MariaDB Corporation ถูก Build พร้อม TLS Support และสามารถตรวจความพร้อมได้ผ่าน System Variable ที่เกี่ยวข้อง.
⑥ วิธีตรวจ MariaDB รองรับ TLS
MariaDB Documentation ระบุว่าสามารถตรวจ:
SHOW VARIABLES LIKE 'have_ssl';
เพื่อดู TLS Capability ของ Server.
อย่าเดาจาก Version Name เพียงอย่างเดียวถ้ากำลัง Debug Production Environment
⑦ TLS Server Configuration ใช้อะไร
MariaDB มี Configuration Variables เช่น:
ssl_cert
ssl_key
ssl_ca
สำหรับกำหนด Certificate, Private Key และ Certificate Authority ที่ใช้กับ TLS.
แนวคิด:
MariaDB Server
ssl_cert
↓
Server Certificate
ssl_key
↓
Private Key
ssl_ca
↓
Certificate Authority
⑧ Certificate คืออะไร
Certificate ใช้ช่วยระบุ Identity และสร้างความเชื่อถือในการเชื่อมต่อ TLS
โครงสร้างทั่วไป:
CA
↓
ลงนาม Certificate
↓
MariaDB Server
Client สามารถใช้ CA ที่เชื่อถือได้เพื่อ Verify ว่ากำลังเชื่อมกับ Server ที่ถูกต้อง ไม่ใช่เพียง Connection ที่เข้ารหัสแบบไม่ตรวจ Identity.
⑨ Encryption อย่างเดียวกับ Verification ต่างกันอย่างไร
มีสองแนวคิด:
Encryption
=
ข้อมูลอ่านยากระหว่างทาง
และ:
Identity Verification
=
ตรวจว่าปลายทางคือ Server ที่เชื่อถือจริง
MariaDB TLS Documentation ระบุว่า TLS สามารถให้ทั้ง Data Encryption และ Identity Validation ตาม Configuration.
⑩ REQUIRE SSL คืออะไร
MariaDB สามารถกำหนด Database Account ให้ ต้องเชื่อมผ่าน TLS
ตัวอย่าง:
CREATE USER
'fivem_app'@'10.0.0.20'
IDENTIFIED BY
'STRONG_PASSWORD'
REQUIRE SSL;
MariaDB ระบุว่า:
REQUIRE SSL
หมายถึง Account ต้องใช้ TLS แต่ไม่ได้บังคับว่าต้องมี Valid Client X509 Certificate.
⑪ REQUIRE NONE คืออะไร
MariaDB ระบุว่า:
REQUIRE NONE
หมายถึง Account ไม่ถูกบังคับให้ใช้ TLS
แต่ Connection ยังสามารถใช้ TLS ได้ถ้า Client และ Server Negotiation รองรับ.
⑫ REQUIRE X509 คืออะไร
MariaDB รองรับ:
REQUIRE X509
ซึ่งบังคับให้ Account ใช้ TLS และมี Valid X509 Client Certificate.
นี่เป็นระดับที่เข้มกว่า:
REQUIRE SSL
เพราะ Client ต้องแสดง Certificate ที่ถูกต้องด้วย
⑬ FiveM จำเป็นต้อง REQUIRE X509 ไหม
ไม่จำเป็นสำหรับทุก Server
สำหรับหลายระบบ Requirement อาจเป็นเพียง:
FXServer
↓
Encrypted Connection
↓
MariaDB
จึงอาจพิจารณา REQUIRE SSL
ส่วน Mutual Certificate Authentication ด้วย X509 เพิ่ม Complexity และต้องจัดการ Certificates ฝั่ง Client ด้วย
เลือกตาม Threat Model และ Infrastructure จริง
⑭ เปลี่ยน Existing User ให้ Require SSL ได้ไหม
MariaDB รองรับ TLS Requirements ใน Account Definition และ Account Management.
ก่อนเปลี่ยน Production User ให้บังคับ TLS ต้องแน่ใจก่อนว่า Client ที่ FiveM ใช้สามารถเชื่อม TLS สำเร็จจริง
ไม่เช่นนั้น:
ALTER Account
↓
REQUIRE SSL
↓
oxmysql Client ไม่พร้อม
↓
Database Connection ใช้ไม่ได้
⑮ อย่าบังคับ TLS ก่อนทดสอบ Client
ลำดับที่ควรใช้:
① เปิด TLS บน MariaDB
② ตรวจ Server TLS
③ ทดสอบ TLS ด้วย Database Client
④ ตรวจ Connection ใช้ TLS จริง
⑤ ทดสอบ FiveM/oxmysql
⑥ ค่อยพิจารณา REQUIRE SSL
ไม่ควรเริ่มจากบังคับ Database User ก่อนรู้ว่า Client Configuration พร้อมหรือไม่
⑯ oxmysql รองรับ Connection String อย่างไร
Official oxmysql Documentation รองรับ Connection String แบบ:
mysql://USER:PASSWORD@HOST:PORT/DATABASE
และ:
user=USER;password=PASSWORD;host=HOST;port=PORT;database=DATABASE
พร้อมระบุให้ตั้งค่าก่อน Start Resources และใช้ set.
ตัวอย่าง:
set mysql_connection_string "mysql://fivem_app:PASSWORD@10.0.0.30:3306/fivem"
⑰ แล้วเปิด TLS ใน oxmysql ด้วยอะไร
จุดนี้ต้องระวังมาก
เอกสาร Setup หลักของ oxmysql ที่เผยแพร่ปัจจุบันอธิบาย Connection String พื้นฐาน แต่ไม่ได้ให้ Recipe มาตรฐานแบบเดียวสำหรับ TLS Certificate Configuration ในทุก Environment.
oxmysql ใช้ node-mysql2 เป็น Driver ดังนั้น TLS Capability ฝั่ง Client เชื่อมโยงกับ Driver/Version ที่ bundled อยู่ด้วย.
เพราะฉะนั้น อย่า Copy Parameter เช่น ssl=true, CA Path หรือ Certificate Options จาก Tutorial ที่ไม่ตรง Version แล้วใส่ Production ทันที
⑱ ทำไมไม่ควรเดา TLS Parameter
เพราะ Database Client Libraries สามารถมี:
Option Names
Connection String Parsing
Certificate Handling
Verification Behavior
ต่างกันตาม Driver และ Version
ถ้า Configuration ผิดอาจเกิดสองสถานการณ์:
Connection ไม่ได้
หรือที่อันตรายกว่า:
คิดว่าเข้ารหัสแล้ว
แต่จริงๆ ไม่ได้ Verify ตามที่คาด
ดังนั้นต้อง Verify Connection ที่ Database Server ด้วย
⑲ วิธี Verify ว่า Connection ใช้ TLS จริง
MariaDB ระบุว่าสามารถตรวจ:
Ssl_version
ของ Connection ได้
ถ้ามี TLS จะเห็น TLS Version ที่ใช้ แต่ถ้า Connection ไม่ได้ Encrypt ค่านั้นจะว่าง.
นี่เป็นวิธีสำคัญมาก เพราะ:
Configuration ดูเหมือนถูก
≠
Connection ใช้ TLS จริง
⑳ ตัวอย่างตรวจ TLS Session
หลัง Login ด้วย Client ที่กำลังทดสอบ สามารถตรวจ TLS Status ตาม MariaDB Documentation เช่นตรวจ Session Status Variable ที่เกี่ยวข้องกับ Ssl_version.
เป้าหมายคือให้เห็น Version เช่น TLS ที่ Negotiated จริง แทนการเดาจาก Config File
㉑ SSL Status Variables มีอะไร
MariaDB มี Status Variables กลุ่ม:
Ssl_*
เพื่อรายงานรายละเอียด TLS/SSL Session และ Library
MariaDB ระบุว่าชื่อยังใช้ Prefix Ssl_ เพื่อ Compatibility แม้ระบบปัจจุบันใช้ TLS.
㉒ Connection Encrypt แล้วแต่ยังไม่ Verify Server ได้ไหม
เป็นไปได้ตาม Client Configuration
TLS Encryption กับ Certificate Verification เป็นคนละขั้น
MariaDB Connector Documentation ระบุว่าสามารถใช้ TLS เพื่อ Encrypt และเลือกตรวจ Server Identity เพิ่มเติมได้.
ดังนั้นเป้าหมายที่แข็งแรงกว่าคือ:
Encrypted
+
Verified
ไม่ใช่เพียงเห็นคำว่า SSL ใน Configuration
㉓ Self-signed Certificate ใช้ได้ไหม
ทำได้ใน Infrastructure ที่ควบคุมเอง แต่ Client ต้อง Trust CA/Certificate Chain ที่ถูกต้องตาม Design
ไม่ควรแก้ปัญหาด้วยการปิด Certificate Verification เพียงเพื่อให้ Connection ผ่าน เพราะจะลดคุณค่าด้าน Identity Verification ของ TLS
㉔ Certificate File ต้องเก็บที่ไหน
Server Certificate และ Private Key ควรถูกเก็บในพื้นที่ที่ MariaDB Service อ่านได้ตาม Permission ที่จำเป็น
โดยเฉพาะ:
Private Key
ไม่ควรถูกเปิด Public หรือแชร์ร่วมกับ Client/ผู้เล่น
MariaDB TLS Configuration ใช้ ssl_key สำหรับ Private Key ของ Server.
㉕ Private Key ต่างจาก Certificate
จำง่ายๆ:
Certificate
→ เปิดเผยให้ Client ใช้ตรวจได้
Private Key
→ Secret ของ Server
อย่า Upload Private Key ไปใน GitHub Public Repository หรือส่งใน Discord เพื่อขอ Debug
㉖ Certificate หมดอายุมีผลไหม
ถ้า Client ทำ Certificate Validation อย่างถูกต้อง Certificate ที่หมดอายุสามารถทำให้ TLS Verification ล้มเหลวได้ตาม PKI Design
ดังนั้นระบบที่ใช้ Certificates ต้องมี:
Expiry Monitoring
Renewal
Deployment Procedure
ไม่ใช่ตั้งครั้งเดียวแล้วลืม
㉗ FiveM Server ย้าย IP แล้ว TLS มีผลไหม
อาจมีหาก Certificate Identity/Hostname Validation ผูกกับชื่อหรือ Infrastructure เดิม
นอกจาก Connection String ต้องเปลี่ยนแล้ว ควรตรวจ:
Certificate Identity
DNS
Firewall
User@Host
พร้อมกัน
㉘ Hostname ดีกว่า IP สำหรับ TLS ไหม
ขึ้นกับ Certificate Design
หาก Certificate ออกให้:
db.example.internal
Client Verification ควรเชื่อมกับ Identity ที่ Certificate รองรับตาม Configuration
อย่าเปลี่ยนจาก Hostname เป็น Raw IP แบบสุ่มเมื่อระบบกำลังใช้ Certificate Verification เพราะอาจทำให้ Identity Validation ไม่ตรง
㉙ Private Network ยังต้อง TLS ไหม
Private Network ลด Exposure เมื่อเทียบกับ Public Internet แต่ไม่ได้แปลว่าต้องไม่มี Encryption
Security แบบหลายชั้นสามารถใช้:
Private Network
+
Firewall
+
Dedicated DB User
+
TLS
ร่วมกันได้
TLS และ Network Isolation ทำหน้าที่ต่างกัน
㉚ VPN ระหว่าง FXServer กับ Database แทน TLS ได้ไหม
VPN สามารถ Encrypt Network Tunnel ได้ แต่ไม่ได้เหมือน Application-level Database TLS ทุกประการ
ในระบบที่ต้องการ Defense-in-depth สามารถใช้:
Private/VPN Network
+
MariaDB TLS
ร่วมกัน
การเลือกขึ้นกับ Infrastructure และ Operational Complexity
㉛ TLS ทำให้ Database ช้าลงไหม
TLS มี Cryptographic Processing และ Handshake Cost แต่ Performance Impact จริงขึ้นกับ:
Hardware
Connection Reuse
Query Workload
Network
TLS Implementation
ไม่ควรปิด TLS เพียงเพราะกลัว Lag โดยไม่ Benchmark
oxmysql ใช้ Driver ที่มี Connection Management อยู่แล้ว และ Database Performance ควรถูกวัดจาก Workload จริง.
㉜ Connection Pool ช่วย TLS อย่างไร
เมื่อ Connections ถูก Reuse ผ่าน Pool จะไม่จำเป็นต้องสร้าง Connection ใหม่จากศูนย์สำหรับทุก SQL Query
oxmysql ใช้ node-mysql2 ซึ่งรองรับ Database Connection Pooling.
จึงไม่ควรคิดว่า:
ทุก Query
=
TLS Handshake ใหม่ทั้งหมด
ใน Architecture ที่ Connection Pool ถูกใช้ตามปกติ
㉝ TLS แก้ Slow Query ได้ไหม
ไม่ได้
TLS:
ป้องกัน Data in Transit
Index:
ช่วย Query Access
Cache:
ลด Query
Profiler:
หา Runtime Bottleneck
ดังนั้นถ้า Query ใช้ 800 ms เพราะ Table Scan การเปิด TLS ไม่ได้แก้ Query Plan
㉞ Slow หลังเปิด TLS ต้องตรวจอะไร
ตรวจ:
Network Latency
TLS Configuration
CPU
Database Load
Connection Reuse
Query Timing
แล้วเปรียบเทียบ Before/After ใน Environment เดิม
อย่าสรุปจากความรู้สึกว่า Server โหลดช้าลงเพียงอย่างเดียว
㉟ REQUIRE SSL แล้ว oxmysql ต่อไม่ได้
ให้ไล่:
① MariaDB TLS Enabled?
② Certificate ถูก?
③ Client TLS Configuration ถูก?
④ Connection String ถูก?
⑤ Client Trust CA?
⑥ Driver Version รองรับ Configuration?
⑦ MariaDB Error Log ว่าอะไร?
ถ้าปัญหาเริ่มทันทีหลัง REQUIRE SSL ให้ตรวจ Client TLS Negotiation ก่อน Permission CRUD
㊱ Access Denied หลัง REQUIRE SSL อาจเกี่ยวกับอะไร
Account ที่กำหนด:
REQUIRE SSL
จะต้องเชื่อมด้วย TLS ตามกฎ MariaDB.
ดังนั้น Credential ถูกอย่างเดียวไม่พอ ถ้า Connection ไม่ได้ใช้ TLS ตาม Requirement Account ก็ไม่ควรถูกอนุญาตให้ Login ตามนโยบายดังกล่าว
㊲ REQUIRE X509 แล้วต่อไม่ได้
ถ้า Account ใช้:
REQUIRE X509
Client ต้องมี Valid X509 Certificate ตาม MariaDB Requirement.
ถ้า FiveM Client Configuration ไม่มี Client Certificate ที่ถูกต้อง การเชื่อมต่อจะไม่ตรง Requirement นี้
㊳ REQUIRE SSL กับ Firewall ต้องใช้ทั้งคู่ไหม
ควรพิจารณาเป็นคนละ Layer
Firewall
→ จำกัดว่าใครติดต่อ Port ได้
User@Host
→ จำกัด Account Source
TLS
→ Encrypt Traffic
Privileges
→ จำกัดว่า Account ทำอะไรได้
ระบบ Production ที่แข็งแรงมักใช้หลายชั้นร่วมกัน
㊴ TLS ไม่ได้แทน Password
ต่อให้ Connection Encrypt แล้ว Database Account ยังต้องมี Authentication ที่เหมาะสม
MariaDB REQUIRE SSL ไม่ได้หมายความว่า:
ไม่ต้องมี Password
มันเพิ่ม Connection Requirement ให้ Account เท่านั้น.
㊵ TLS ไม่ได้แทน Least Privilege
ถ้า fivem_app มี:
ALL PRIVILEGES ON *.*
TLS จะเพียงป้องกัน Network Traffic
มันไม่ได้ลดสิทธิ์ของ Account
ควรใช้:
TLS
+
Dedicated User
+
Restricted Privileges
ร่วมกัน
㊶ TLS ไม่ได้แทน Backup
ถ้า Script Execute:
DELETE FROM `characters`;
โดยได้รับ Permission
TLS จะ Encrypt Query นั้นอย่างดี แต่ข้อมูลยังถูกลบ
ดังนั้นยังต้องมี:
Backup
Restore Test
Least Privilege
เหมือนเดิม
㊷ TLS ไม่ได้แทน Query Parameterization
Database Connection ที่ Encrypt ไม่ได้ป้องกัน SQL Injection ใน Resource Logic
ยังต้องใช้:
?
Parameters และไม่ต่อ Player Input เข้า SQL String แบบสุ่ม
เป็นคนละ Security Layer
㊸ TLS ไม่ได้แทน Server-side Validation
Flow ยังควรเป็น:
Client
↓
Server Validate
↓
oxmysql
↓
TLS
↓
MariaDB
ไม่ใช่:
TLS เปิดแล้ว
=
Client เชื่อได้
Gameplay Authorization ยังคงต้องตรวจฝั่ง Server
㊹ Zero-Configuration SSL คืออะไร
MariaDB มี Feature ที่เรียกว่า Zero-Configuration SSL ในรุ่นที่รองรับ ซึ่งออกแบบให้ Encrypted Connections เป็น Default โดยลดภาระการจัดการ Certificate ด้วยมือ.
อย่างไรก็ตามต้องตรวจ MariaDB Version และ Client Compatibility จริงก่อนพึ่ง Feature นี้กับ Production FiveM Stack
㊺ Zero-Configuration SSL หมายความว่าไม่ต้องตรวจอะไรเลยไหม
ไม่
ถึงระบบสามารถ Auto-configure TLS ได้ ก็ควรตรวจ:
Ssl_version
Certificate Verification
Client Compatibility
Account REQUIRE Settings
หลัง Connection
เพราะเป้าหมายคือพิสูจน์ว่า Connection ที่ FiveM ใช้อยู่จริงถูก Encrypt ตามที่ตั้งใจ
㊻ วิธี Migration Remote DB จากไม่ใช้ TLS ไปใช้ TLS
ใช้แนวทาง:
① Backup Database
② ตรวจ MariaDB Version
③ ตรวจ TLS Support
④ เตรียม Certificate/CA
⑤ เปิด TLS บน MariaDB
⑥ Restart/Reload ตาม Procedure
⑦ Test Database Client ผ่าน TLS
⑧ Verify Ssl_version
⑨ Test oxmysql
⑩ Monitor Errors
⑪ ค่อย Require TLS สำหรับ FiveM User
⑫ Verify FiveM Read/Write
อย่าเปลี่ยนทุกอย่างพร้อมกัน
㊼ Backup ก่อนเปิด TLS จำเป็นไหม
การเปิด TLS ไม่ได้ตั้งใจแก้ Schema/Data
แต่ Production Configuration Change ควรมี Backup Config และ Database Backup ตาม Operational Policy โดยเฉพาะหาก Maintenance เดียวกันมี Database Upgrade หรือ Account Changes
㊽ Backup Certificate Configuration ด้วยไหม
ควร Backup:
MariaDB Config
Certificate Chain
CA
Renewal Documentation
แต่ Private Key Backup ต้องจัดเก็บอย่างปลอดภัยและจำกัด Access อย่างเข้มงวด
อย่านำ Private Key ไปเก็บใน Public Backup Location
㊾ Database User สำหรับ FiveM ควรใช้ REQUIRE SSL ไหม
ถ้า Remote Database Architecture ถูกออกแบบให้ TLS เป็น Requirement และ oxmysql Client ถูกทดสอบว่าสามารถใช้งานได้จริง การใช้:
REQUIRE SSL
ช่วยบังคับ Policy ฝั่ง Database ว่า Account นั้นห้าม Login แบบไม่ใช้ TLS.
นี่แข็งแรงกว่าการหวังว่า Client จะเปิด TLS เองทุกครั้งโดยไม่มี Server-side Requirement
㊿ ตรวจ FiveM หลังเปิด TLS
ทดสอบอย่างน้อย:
Player Join
Character Load
Character Save
Vehicle Load
Settings Save
Resource Restart
FXServer Restart
Database Restart ใน Staging
พร้อมตรวจ MariaDB ว่า Session ใช้ TLS จริง ไม่ใช่เพียงทดสอบว่า Resource ไม่มี Error
51. Connection ผ่านแต่ Ssl_version ว่าง
MariaDB ระบุว่าถ้า Ssl_version ว่าง หมายความว่า Connection นั้นไม่มี Encryption อยู่.
ดังนั้น:
Connection Success
ไม่ได้แปลว่า:
TLS Success
ต้อง Verify แยก
52. TLS Version ควรดูไหม
ควร
MariaDB Status Variables สามารถรายงาน TLS Version ของ Session ได้ และ Documentation ปัจจุบันระบุว่าชื่อ Variables ยังคงใช้ Ssl_ Prefix เพื่อ Compatibility.
จึงสามารถใช้เป็นหลักฐานฝั่ง Server ว่า Connection Negotiated Protocol ใด
53. SSL Cipher คืออะไร
Cipher Suite คือชุด Algorithms ที่ TLS Connection ใช้ในการเข้ารหัส/แลกเปลี่ยน Keys ตาม Protocol Negotiation
MariaDB มี SSL/TLS Status Variables ที่ใช้ดูข้อมูล Cipher และ Session Security ได้.
สำหรับ Server Owner ทั่วไปควรใช้ Secure Defaults ของ Version ที่ได้รับการสนับสนุนแทนปรับ Cipher แบบสุ่ม
54. อย่าบังคับ Cipher แปลกๆ โดยไม่จำเป็น
Configuration ที่เข้มเกินแต่ไม่ Compatible กับ Client อาจทำให้:
TLS Handshake Fail
ดังนั้นเริ่มจาก:
Supported Secure Defaults
↓
Verify
↓
Hardening เพิ่มเมื่อมี Requirement
ดีกว่า Copy Security Config ที่ไม่รู้ว่าออกแบบมาสำหรับ Software Version ใด
55. TLS Error หลัง Database Upgrade
ตรวจ:
MariaDB Version
Certificate Paths
Permissions
TLS Defaults
Client Compatibility
oxmysql/mysql2 Version
เพราะ Server และ Client Components อาจเปลี่ยน Behavior หลัง Upgrade
56. TLS Error หลังย้าย Certificate
ตรวจ:
File Path
Owner
Permissions
Certificate
Private Key
CA Chain
Expiration
MariaDB TLS Configuration อาศัย ssl_cert, ssl_key และ ssl_ca ตาม Server Configuration.
57. TLS Certificate กับ Firewall ใครสำคัญกว่า
ทั้งคู่สำคัญแต่ทำคนละงาน
Firewall
→ ลดคนที่เข้าถึง Database Endpoint
TLS
→ ป้องกัน Traffic และ Identity ตาม Configuration
ไม่ควรเลือกอย่างใดอย่างหนึ่งแล้วละทิ้งอีกชั้น
58. Remote Database ผ่าน Public Internet ควรทำอย่างไร
ถ้าหลีกเลี่ยงได้ ควรพิจารณา:
Private Network
VPN
Network ACL
Firewall Source Restriction
TLS
แทนการเปิด MariaDB Public Port ให้ Internet ทั้งหมด
ยิ่ง Database Exposure กว้าง ยิ่งต้องเข้มกับ Authentication และ Network Controls
59. Remote DB ที่อยู่ Provider เดียวกัน
ถ้า Provider มี Private VLAN/VPC Network:
FXServer
↓
Private Network
↓
MariaDB
มักเป็น Architecture ที่ควรพิจารณาก่อน Public IP
จากนั้นยังสามารถเพิ่ม TLS เป็นอีก Security Layerได้ตาม Requirement
60. Remote Database TLS Checklist
ก่อน Production ตรวจ:
MariaDB รองรับ TLS
ตรวจ
have_sslCertificate ถูกต้อง
Private Key ถูกป้องกัน
CA ถูกต้อง
MariaDB TLS Config โหลดแล้ว
MariaDB Restart/Reload สำเร็จ
Database Client Test ผ่าน
Verify
Ssl_versionoxmysql Connection ผ่าน
ตรวจ Driver/Version Compatibility
ไม่เดา Client TLS Parameters
Test Character Load
Test Character Save
Test Vehicles
Test Settings
Test Resource Restart
Dedicated Database User
Host Scope จำกัด
Database Privileges จำกัด
Firewall จำกัด FXServer
ใช้ Private Network เมื่อทำได้
Connection String ไม่เปิดเผย
Private Key ไม่อยู่ Public Repository
Backup Database
Backup Config
Certificate Renewal Plan
Monitor Expiration
Monitor Connection Errors
Verify TLS หลัง Upgrade
ตาราง MariaDB TLS Options ที่ควรรู้
| ตัวเลือก | ความหมาย |
|---|---|
REQUIRE NONE | Account ไม่ถูกบังคับให้ใช้ TLS |
REQUIRE SSL | Account ต้องใช้ TLS |
REQUIRE X509 | ต้องใช้ TLS และ Valid X509 Client Certificate |
ssl_cert | Server Certificate |
ssl_key | Server Private Key |
ssl_ca | Certificate Authority |
Ssl_version | รายงาน TLS Version ของ Session |
MariaDB Document ระบุ Account TLS Requirements และวิธีตรวจ TLS Connection ผ่าน Status Variables เหล่านี้โดยตรง.
FiveM oxmysql ใช้ TLS ได้ไหม
oxmysql ใช้ node-mysql2 เป็น Database Driver และ Driver Layer รองรับ Secure Database Connections ตามความสามารถของ Client Library แต่ oxmysql Setup Documentation ปัจจุบันไม่ได้กำหนด Recipe TLS ชุดเดียวสำหรับทุก Installation.
ดังนั้นต้องตรวจ Version และ Configuration ของ Stack ที่ใช้อยู่จริง แล้ว Verify ฝั่ง MariaDB ว่า Connection ใช้ TLS
FiveM MariaDB REQUIRE SSL คืออะไร
ใช้บังคับ Account ให้เชื่อมด้วย TLS
ตัวอย่าง:
CREATE USER
'fivem_app'@'10.0.0.20'
IDENTIFIED BY
'PASSWORD'
REQUIRE SSL;
MariaDB ระบุว่า Account ที่ใช้ REQUIRE SSL ต้องเชื่อมผ่าน TLS.
FiveM REQUIRE SSL กับ REQUIRE X509 ต่างกันอย่างไร
REQUIRE SSL:
ต้องใช้ TLS
REQUIRE X509:
ต้องใช้ TLS
+
ต้องมี Valid X509 Certificate
ตาม MariaDB Account Requirements.
FiveM ตรวจว่า Database ใช้ TLS ยังไง
ตรวจ Session:
Ssl_version
MariaDB ระบุว่าถ้ามี TLS ค่านี้จะแสดง TLS Version และถ้าไม่ได้ใช้ Encryption จะว่าง.
นี่เป็นวิธีที่ควรใช้ยืนยันหลังตั้งค่า
FiveM Remote Database จำเป็นต้อง TLS ไหม
ไม่มีคำตอบเดียวสำหรับทุก Infrastructure แต่ Remote Database เพิ่ม Network Path ระหว่าง FXServer กับ Database จึงควรพิจารณา Data-in-transit Encryption อย่างจริงจัง
MariaDB มี TLS Support สำหรับ Client/Server Connections โดยตรง.
FiveM ใช้ Private Network แล้วยังต้อง TLS ไหม
Private Network และ TLS ป้องกันคนละ Layer
สามารถใช้ร่วมกัน:
Private Network
+
Firewall
+
TLS
+
Dedicated User
เพื่อ Defense-in-depth
FiveM TLS ทำให้ Ping สูงไหม
TLS ไม่ใช่ Player Network Ping โดยตรง
มันอยู่ใน:
FXServer ↔ Database
Performance Impact ต้อง Benchmark จาก Database Workload จริง โดยเฉพาะ Query Timing และ Connection Behavior
FiveM TLS แก้ Connection Refused ได้ไหม
ไม่ได้
Connection Refused ต้องแก้:
MariaDB Listener
Port
Firewall
Network
ก่อน
TLS Negotiation เกิดหลัง Network Path พร้อมรับ Connectionแล้ว
FiveM TLS แก้ Access Denied ได้ไหม
ถ้า Account ถูกตั้ง:
REQUIRE SSL
แต่ Client ไม่ใช้ TLS การเปิด TLS อย่างถูกต้องอาจเป็นส่วนของการแก้
แต่ Access Denied ยังอาจเกิดจาก:
Username
Password
User@Host
Privileges
ด้วย จึงต้องอ่าน Error จริง
FiveM ควรใช้ SSL=true ใน Connection String ไหม
ไม่ควร Copy Parameter ใดๆ แบบเดา
oxmysql Public Setup Documentation ที่ตรวจสอบปัจจุบันไม่ได้กำหนด TLS Connection Parameter สูตรเดียวสำหรับทุก Environment ขณะที่ oxmysql ใช้ node-mysql2 อยู่ภายใน.
ให้ตรวจ Driver/Version ที่ใช้จริงและ Verify TLS ฝั่ง MariaDB แทนการเชื่อเพียง Connection String
FAQ FiveM MariaDB SSL/TLS
FiveM MariaDB TLS คืออะไร
คือการ Encrypt Connection ระหว่าง Database Client เช่น oxmysql Stack กับ MariaDB Server เพื่อป้องกัน Data in Transit.
SSL กับ TLS ต่างกันไหม
SSL เป็น Protocol รุ่นเก่า ส่วนระบบสมัยใหม่ใช้ TLS แม้ MariaDB Variables หลายตัวยังคงชื่อ Ssl_* เพื่อ Compatibility.
MariaDB รองรับ TLS ไหม
รองรับ และ MariaDB Packages ที่เผยแพร่โดย Foundation/Corporation ถูก Build พร้อม TLS Support ตาม Documentation ปัจจุบัน.
ตรวจ TLS Support ยังไง
ตรวจ have_ssl และ Server TLS Configuration ตาม MariaDB Documentation.
REQUIRE SSL คืออะไร
บังคับ Database Account ให้ใช้ TLS ในการ Connection.
REQUIRE X509 คืออะไร
บังคับ TLS พร้อม Valid X509 Client Certificate.
ตรวจ Connection ใช้ TLS จริงอย่างไร
ตรวจ Ssl_version; ถ้ามี TLS จะเห็น Version และถ้าไม่มี Encryption ค่านี้จะว่าง.
TLS แทน Firewall ได้ไหม
ไม่ได้ TLS Encrypt Traffic ส่วน Firewall จำกัด Network Access
TLS แทน Dedicated Database User ได้ไหม
ไม่ได้ Database User และ Privileges ยังคงต้องจำกัดตาม Least Privilege
TLS แทน Backup ได้ไหม
ไม่ได้ TLS ป้องกัน Data in Transit แต่ไม่ได้กู้ข้อมูลเมื่อ Query หรือ Migration ทำข้อมูลเสีย
oxmysql ใช้ node-mysql2 หรือไม่
ใช่ Official oxmysql Repository ระบุว่า oxmysql ใช้ node-mysql2 เพื่อสื่อสารกับ MySQL Database.
เปิด TLS แล้วต้อง Verify ไหม
ต้อง เพราะ Connection สำเร็จไม่ได้ยืนยันว่ากำลัง Encrypt อยู่ ควรตรวจ Session TLS Status จาก MariaDB.
ประเด็นสำคัญ
เมื่อ FiveM ใช้ Remote MariaDB ควรคิด Security เป็นหลายชั้น:
Private Network
↓
Firewall
↓
Dedicated User
↓
Restricted Privileges
↓
TLS
↓
MariaDB
MariaDB รองรับ TLS สำหรับ Client/Server Connections และสามารถกำหนด Account ให้ REQUIRE SSL หรือเข้มขึ้นเป็น REQUIRE X509 ได้.
แต่สิ่งสำคัญที่สุดคือ อย่าคิดว่าเห็นคำว่า SSL ใน Config แล้ว Connection ปลอดภัยเรียบร้อย หลังตั้งค่าต้อง Verify Session ด้วย Ssl_version เพราะ MariaDB ระบุว่าค่านี้จะแสดง TLS Version เมื่อ Connection ใช้ Encryption และจะว่างเมื่อไม่ได้ใช้.
สำหรับ oxmysql ให้ระวังเรื่อง Client Configuration เพราะเอกสาร Setup หลักระบุ Connection String Formats และ oxmysql ใช้ node-mysql2 เป็น Driver แต่ไม่ได้มี TLS Recipe ชุดเดียวที่ควร Copy ไปใช้กับทุก Version โดยไม่ตรวจสอบ.
ดังนั้นแนวทางที่ถูกคือ:
MariaDB TLS
↓
Test Client
↓
Verify TLS
↓
Test oxmysql
↓
Verify อีกครั้ง
↓
ค่อย REQUIRE SSL
สำหรับผู้อ่าน comsiam ให้จำสูตร “Encrypt ไม่พอ ต้อง Verify” และ comsiam แนะนำให้ใช้ TLS ร่วมกับ Private Network, Firewall, Dedicated Database User และ Backup แทนการพึ่ง Security Layer เดียว เพราะ Remote Database ที่ปลอดภัยต้องป้องกันทั้งการเข้าถึง การรับส่งข้อมูล และผลกระทบหาก Credential หรือ Resource เกิดปัญหา
Comments
Post a Comment