Authenticated Origin Pulls (mTLS) คืออะไร?
Authenticated Origin Pulls หรือ mTLS (Mutual TLS) เป็นการยืนยันตัวตนแบบสองทางระหว่าง Cloudflare และ Origin Server ของคุณ โดย Cloudflare จะส่ง Client Certificate ไปยัง Origin Server ทุกครั้งที่เรียกข้อมูล ทำให้มั่นใจได้ว่า Traffic ที่มาถึง Origin นั้นมาจาก Cloudflare จริง
ทำไมต้องใช้ mTLS?
โดยปกติ ผู้โจมตีสามารถค้นหา IP จริงของ Origin Server และเข้าถึงโดยตรงได้ นี่เป็นจุดอ่อนที่สำคัญในการตั้งค่า Cloudflare เพราะว่า:
- ผู้โจมตีสามารถค้นหา IP ได้จากการสำรวจ DNS History หรือบันทึกสาธารณะ
- ผู้โจมตีสามารถข้าม Cloudflare ไปเข้า Origin Server โดยตรง
- WAF (Web Application Firewall) และ DDoS Protection ถูกข้ามไป
- Origin Server ได้รับ Traffic ที่ไม่ผ่านความปกป้อง Cloudflare
- ผู้โจมตีสามารถทำการ Brute Force, SQL Injection หรือ DDoS โดยตรง
Authenticated Origin Pulls แก้ปัญหาเหล่านี้โดยให้ Origin Server ตรวจสอบว่าทุก Request มาจาก Cloudflare จริง แม้ว่าผู้โจมตีจะรู้ IP Address ก็ยังไม่สามารถเข้าถึงได้
หลักการทำงานของ mTLS
mTLS ใช้ TLS Certificates ในการยืนยันตัวตนแบบสองทาง:
- ขั้นตอนที่ 1: Cloudflare สร้าง Client Certificate สำหรับการเชื่อมต่อ
- ขั้นตอนที่ 2: เมื่อ Cloudflare เรียกข้อมูลจาก Origin Server จะแนบ TLS Client Certificate ไปด้วย
- ขั้นตอนที่ 3: Origin Server ตรวจสอบ Certificate นี้อย่างอิสระ
- ขั้นตอนที่ 4: หากถูกต้อง Origin Server จะอนุญาตการเชื่อมต่อ หากไม่ถูกต้อง จะปฏิเสธ
วิธีนี้ยืนยันตัวตนในสองทิศทาง – Cloudflare ยืนยันตัวตนให้ Origin Server และ Origin Server ยืนยันตัวตนให้ Cloudflare เช่นกัน
ขั้นตอนที่ 1: เปิดใช้งาน Authenticated Origin Pulls บน Cloudflare
เข้าสู่ Cloudflare Dashboard → เลือก Domain ของคุณ → คลิก SSL/TLS ในเมนูด้านซ้าย → เลือก Origin Server → คุณจะเห็นส่วน Authenticated Origin Pulls → สลับปุ่มเปิดใช้งาน
ขั้นตอนที่ 2: ดาวน์โหลด Cloudflare Origin Pull Certificate
เมื่อเปิดใช้งานแล้ว Cloudflare จะให้ดาวน์โหลด Cloudflare Origin Pull Certificate ซึ่งเป็น CA Certificate ที่ใช้สำหรับยืนยันตัวตน คลิก Download certificate และเก็บไฟล์นี้ไว้อย่างปลอดภัย
ขั้นตอนที่ 3: ตั้งค่า Certificate บน Origin Server
คุณต้องอัปโหลดไฟล์ Certificate ที่ดาวน์ลงมาไปยัง Origin Server และตั้งค่า Web Server ให้ตรวจสอบ Certificate นี้
สำหรับ Nginx:
# อัปโหลดไฟล์ไป /etc/nginx/certs/
# แล้วแก้ไข /etc/nginx/nginx.conf หรือ config ของ Domain
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/your/server.crt;
ssl_certificate_key /path/to/your/server.key;
# Authenticated Origin Pulls
ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
ssl_verify_client on;
}
สำหรับ Apache:
<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/your/server.crt
SSLCertificateKeyFile /path/to/your/server.key
# Authenticated Origin Pulls
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/apache2/certs/cloudflare.crt
</VirtualHost>
สำหรับ IIS:
Import CA Certificate ไปยัง Trusted Root Certification Authorities แล้วตั้งค่า Client Certificate ใน IIS Manager ให้ Require
ขั้นตอนที่ 4: ทดสอบการทำงาน
หลังตั้งค่าเสร็จ ให้ทดสอบ:
- ทดสอบผ่าน Cloudflare: เข้าเว็บไซต์ของคุณผ่าน Domain ปกติ (ควรทำงานเช่นเคย)
- ทดสอบโดยตรง: SSH เข้า Origin Server แล้ว curl -k https://yourdomain.com (ควรได้ error 403 Forbidden)
- ตรวจสอบ Error Log: ดูว่า Web Server บันทึก SSL error หรือไม่
ข้อดีของ mTLS ต่อความปลอดภัย
- ความปลอดภัยสูงสุด: มั่นใจได้ว่า Traffic ที่มาถึง Origin มาจาก Cloudflare เท่านั้น
- ป้องกันการข้าม Cloudflare: แม้ว่าผู้โจมตีจะรู้ IP Address ก็ยังไม่สามารถเข้าได้
- ป้องกัน Direct Attack: ลดความเสี่ยงจาก Brute Force, SQL Injection, และ DDoS โดยตรง
- ตั้งค่าง่าย: เปิดสวิตช์บน Cloudflare และตั้งค่า Web Server เพียงไม่กี่บรรทัด
- ไม่มีค่าใช้จ่ายเพิ่มเติม: รวมอยู่ในทุกแพลน Cloudflare
- ใช้ได้กับทุก Origin Server: ไม่ว่าเป็น Nginx, Apache, IIS หรือ Server อื่นๆ
ข้อควรระวัง
- ต้องมี HTTPS บน Origin: Origin Server ต้องมี SSL Certificate ที่ถูกต้อง
- ทดสอบให้ดีก่อนเปิดใช้: ทดสอบให้ดีก่อนเปิดใช้งาน เพราะถ้าตั้งค่าผิด เว็บของคุณจะไม่สามารถเข้าถึงได้
- ติดตามการอัปเดต Certificate: ระวังการอัปเดต Certificate ของ Cloudflare ในอนาคต
- API Requests: หากมี API ที่เรียก Origin Server โดยตรง ต้องจัดการพิเศษ
- เปิด Authenticated Origin Pulls บน Cloudflare Dashboard
- SSH เข้า VPS แล้วอัปโหลดไฟล์ Certificate
- แก้ไข Nginx/Apache configuration ให้ตรวจสอบ Certificate
- Reload Web Server configuration
- ทดสอบเข้าเว็บผ่าน Cloudflare (ต้องทำงาน)
- ทดสอบเข้า Direct IP ของ VPS (ต้องถูกปฏิเสธ)

