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 ตรวจ:

  1. MariaDB รองรับ TLS

  2. ตรวจ have_ssl

  3. Certificate ถูกต้อง

  4. Private Key ถูกป้องกัน

  5. CA ถูกต้อง

  6. MariaDB TLS Config โหลดแล้ว

  7. MariaDB Restart/Reload สำเร็จ

  8. Database Client Test ผ่าน

  9. Verify Ssl_version

  10. oxmysql Connection ผ่าน

  11. ตรวจ Driver/Version Compatibility

  12. ไม่เดา Client TLS Parameters

  13. Test Character Load

  14. Test Character Save

  15. Test Vehicles

  16. Test Settings

  17. Test Resource Restart

  18. Dedicated Database User

  19. Host Scope จำกัด

  20. Database Privileges จำกัด

  21. Firewall จำกัด FXServer

  22. ใช้ Private Network เมื่อทำได้

  23. Connection String ไม่เปิดเผย

  24. Private Key ไม่อยู่ Public Repository

  25. Backup Database

  26. Backup Config

  27. Certificate Renewal Plan

  28. Monitor Expiration

  29. Monitor Connection Errors

  30. Verify TLS หลัง Upgrade

ตาราง MariaDB TLS Options ที่ควรรู้

ตัวเลือกความหมาย
REQUIRE NONEAccount ไม่ถูกบังคับให้ใช้ TLS
REQUIRE SSLAccount ต้องใช้ TLS
REQUIRE X509ต้องใช้ TLS และ Valid X509 Client Certificate
ssl_certServer Certificate
ssl_keyServer Private Key
ssl_caCertificate 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

Popular posts from this blog

FiveM ยังน่าเล่นไหม? Enhanced เปลี่ยน FiveM แค่ไหน

FiveM คืออะไร เล่นอย่างไร สำหรับมือใหม่ เริ่มต้นตั้งแต่ศูนย์

วิธีตั้ง Admin Permission ด้วย add_ace และ add_principal FiveM แบบละเอียด