Security
น้องๆ เคยสงสัยมั้ยว่าทำไมเวลาเราเล่นเน็ตที่บ้าน หรือที่ออฟฟิศ ถึงไม่โดนแฮกเกอร์เข้ามาขโมยข้อมูลกันง่ายๆ? คำตอบก็คือ Firewall นี่แหละ! Firewall เปรียบเสมือนยามหน้าประตูบ้าน คอยตรวจตราว่าใครจะเข้าออกได้บ้าง ใครที่น่าสงสัยก็กันออกไป
สมัยผมทำร้านเน็ต SiamCafe เมื่อ 20 กว่าปีก่อน Firewall นี่แหละคือพระเอกตัวจริง คอยปกป้องเครื่องลูกข่ายจากไวรัส และการโจมตีต่างๆ ไม่งั้นเจ๊งไปนานแล้ว
Firewall ไม่ใช่แค่โปรแกรมนะ มันอาจจะเป็นอุปกรณ์ hardware ที่วางอยู่หน้า Router ของเราก็ได้ ทำหน้าที่เดียวกันคือ คัดกรอง traffic ที่วิ่งเข้าออก network ของเรา
Packet Filtering คือการทำงานของ Firewall ในระดับที่ basic ที่สุด มองกันที่ packet level เลย Packet คือหน่วยข้อมูลเล็กๆ ที่วิ่งไปมาบน network Firewall จะดู header ของ packet เช่น IP address ต้นทาง ปลายทาง, port number แล้วตัดสินใจว่าจะให้ผ่านหรือไม่ให้ผ่าน
เหมือนเราดูบัตรประชาชนของคนที่มาหน้าบ้าน ถ้าไม่ตรงตามเงื่อนไข ก็ไม่ให้เข้า
Stateful Inspection ฉลาดขึ้นมาอีกนิดนึง ไม่ได้ดูแค่ packet แต่จำ "สถานะ" (state) ของการเชื่อมต่อได้ด้วย เช่น ถ้าเราเปิด web browser แล้วเข้าเว็บ Google Firewall ก็จะจำได้ว่าการเชื่อมต่อนี้มาจากเครื่องเรา และเป็นการขอข้อมูลจาก Google ดังนั้น packet ที่ตอบกลับมาจาก Google ก็จะถูกอนุญาตให้เข้ามาได้
เหมือนยามที่จำได้ว่าเราเป็นลูกบ้าน และกำลังคุยกับเพื่อนที่มาหา ก็จะอนุญาตให้เพื่อนเราเข้ามาได้
Application-Level Gateway (ALG) นี่คือ Firewall ที่ฉลาดสุดๆ สามารถเข้าใจ protocol ของ application ต่างๆ ได้ เช่น HTTP, FTP, SMTP ทำให้สามารถตรวจสอบ traffic ได้ละเอียดมากขึ้น เช่น ตรวจสอบว่ามีการส่งไฟล์อันตรายผ่าน FTP หรือไม่
เหมือนยามที่รู้ว่าเราคุยอะไรกับเพื่อนอยู่ ถ้าคุยเรื่องไม่ดี ก็จะเข้ามาห้าม
การใช้งาน Firewall ขึ้นอยู่กับว่าเราใช้ Firewall แบบไหน ถ้าเป็น Firewall ที่มากับ Router ที่บ้าน ส่วนใหญ่ก็แค่เข้าไปตั้งค่าผ่าน web interface แต่ถ้าเป็น Firewall ระดับ enterprise ก็อาจจะต้องใช้ command line หรือ software เฉพาะ
สมัยผมทำร้านเน็ต ผมใช้ Linux Firewall (iptables) เซ็ตค่าเองหมด เหนื่อยแต่คุ้ม เพราะมัน flexible และ powerful มาก
อย่ากลัวที่จะลองผิดลองถูกครับ อ่าน document ให้เยอะๆ แล้วลองเซ็ตค่า Firewall ไปเรื่อยๆ เดี๋ยวก็เก่งเอง
ตัวอย่างการตั้งค่า Firewall ด้วย iptables เพื่ออนุญาตให้เข้า web server (port 80 และ 443) และ SSH (port 22) เท่านั้น
# ล้าง rules ทั้งหมด
iptables -F
# ตั้งค่า default policy ให้ drop ทุกอย่าง
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# อนุญาตให้เข้า web server (port 80 และ 443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# อนุญาตให้เข้า SSH (port 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# อนุญาตให้ traffic ที่มาจากเครื่องเราออกไปข้างนอกได้
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# บันทึก rules
iptables-save > /etc/iptables/rules.v4
คำสั่งข้างบนนี้เป็นแค่ตัวอย่างเบื้องต้นนะครับ การตั้งค่า Firewall จริงๆ ต้องพิจารณาหลายปัจจัย เช่น ประเภทของ server, application ที่ใช้งาน, และ security policy ขององค์กร
Windows ก็มี Firewall มาให้ในตัวนะ เข้าไปที่ Control Panel > Windows Defender Firewall แล้วลองดู จะเห็นว่าเราสามารถเปิดปิด Firewall และตั้งค่า rules ได้
การตั้งค่า Firewall บน Windows ค่อนข้างง่ายกว่า Linux เพราะมี GUI ให้ใช้งาน แต่ก็อาจจะไม่ flexible เท่า
Firewall ไม่ได้เป็นทางเลือกเดียวในการรักษาความปลอดภัยของ network นะ ยังมีทางเลือกอื่นๆ อีก เช่น Intrusion Detection System (IDS), Intrusion Prevention System (IPS), Web Application Firewall (WAF) แต่ละอย่างก็มีข้อดีข้อเสียต่างกัน
สมัยนี้มี Next-Generation Firewall (NGFW) ที่รวมเอาหลายๆ function เข้าไว้ด้วยกัน เช่น Firewall, IDS/IPS, Application Control, URL Filtering ทำให้การจัดการง่ายขึ้น
แต่ไม่ว่าจะใช้ทางเลือกไหน สิ่งสำคัญที่สุดคือ ต้องเข้าใจว่า network ของเราต้องการอะไร และเลือกใช้เครื่องมือที่เหมาะสม
| Feature | Firewall | IDS | IPS | WAF |
|---|---|---|---|---|
| หน้าที่หลัก | ป้องกันการเข้าถึงที่ไม่ได้รับอนุญาต | ตรวจจับการบุกรุก | ป้องกันการบุกรุก | ป้องกันการโจมตี web application |
| วิธีการทำงาน | คัดกรอง traffic ตาม rules | ตรวจสอบ traffic หา signature ของการโจมตี | บล็อก traffic ที่น่าสงสัย | ตรวจสอบ HTTP traffic และป้องกันการโจมตี เช่น SQL injection, XSS |
| ข้อดี | Basic security, ใช้งานง่าย | ตรวจจับการโจมตีได้หลากหลาย | ป้องกันการโจมตีได้แบบ real-time | ป้องกันการโจมตี web application ได้โดยเฉพาะ |
| ข้อเสีย | อาจจะไม่สามารถตรวจจับการโจมตีที่ซับซ้อนได้ | แค่ตรวจจับ ไม่ได้ป้องกัน | อาจจะบล็อก traffic ที่ถูกต้องได้ | ป้องกันได้เฉพาะ web application |
อ่านเรื่อง Security เพิ่มเติมได้ที่ SiamCafe Blog นะครับ
ถ้าอยากรู้เรื่อง Network Security เจาะลึกกว่านี้ ลองศึกษาเรื่อง VPN ด้วยก็ได้นะ SiamCafe Blog มีให้อ่านเหมือนกัน
เอาล่ะน้องๆ มาถึงส่วนที่สำคัญที่สุด นั่นก็คือเคล็ดลับที่พี่บอมสั่งสมมาจากการทำร้านเน็ต SiamCafe ตั้งแต่ยุคบุกเบิกเลยนะ สมัยนั้น Firewall ยังไม่ซับซ้อนเท่าสมัยนี้ แต่หลักการพื้นฐานยังใช้ได้เสมอ พี่จะเน้นเรื่องง่ายๆ ที่ทำตามได้จริง ไม่ต้องเทพก็ทำได้
อันนี้เบสิคแต่สำคัญมาก สมัยก่อน Port 135, 445 โดนเล่นงานประจำ ปิดไปเลยถ้าไม่ได้ใช้ พวก worm ชอบมาสแกนหา port เปิดแล้วก็ยิงใส่
# ตัวอย่าง iptables (Linux)
iptables -A INPUT -p tcp --dport 135 -j DROP
iptables -A INPUT -p tcp --dport 445 -j DROP
iptables -A INPUT -p udp --dport 137 -j DROP
iptables -A INPUT -p udp --dport 138 -j DROP
แทนที่จะ Blacklist ทุกอย่าง ให้คิดกลับกัน อนุญาตเฉพาะสิ่งที่เราต้องการจริงๆ สมัยก่อนพี่ทำ Web Server ก็จะเปิดแค่ Port 80, 443 แล้วก็ SSH (เปลี่ยน Port ด้วยนะ อย่าใช้ 22 default)
# ตัวอย่าง iptables (Linux)
iptables -P INPUT DROP # Drop everything by default
iptables -A INPUT -i lo -j ACCEPT # Allow localhost
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Allow established connections
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Allow HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Allow HTTPS
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT # Allow SSH (on a non-standard port)
ถ้าไม่ Log เราจะไม่รู้เลยว่าเกิดอะไรขึ้น สมัยก่อนพี่ใช้ syslog เก็บ Log ทุกอย่าง แล้วมานั่งไล่ดูทีหลังว่ามีอะไรแปลกๆ บ้าง การดู Log ช่วยให้เราเห็น pattern การโจมตีได้
# ตัวอย่าง syslog config (rsyslog.conf)
*.* /var/log/everything.log
อันนี้พลาดกันเยอะมาก Router, Firewall, Server อะไรก็ตาม เปลี่ยน Password เป็นอย่างแรกที่ต้องทำ password ต้องยาก เดาไม่ได้
Firewall เหมือนยามหน้าบ้าน คอยตรวจตราว่าใครเข้าออกบ้านเราบ้าง ถ้าไม่มี Firewall ใครๆ ก็เข้าบ้านเราได้สบายๆ
Software Firewall เหมาะกับเครื่อง PC, Server ส่วน Hardware Firewall เหมาะกับองค์กรใหญ่ๆ ที่ต้องการประสิทธิภาพสูงกว่า แต่จริงๆ แล้ว Software Firewall ก็เพียงพอสำหรับร้านเน็ตเล็กๆ แล้ว
ต้อง Update บ่อยๆ เลยน้อง เพราะช่องโหว่มันมาเรื่อยๆ เหมือนเรา Update Antivirus นั่นแหละ
อันนี้ยากหน่อย DDOS คือการโจมตีโดยส่ง Traffic จำนวนมหาศาลมาที่ Server เรา ทำให้ Server ล่ม วิธีแก้คือต้องมีระบบป้องกัน DDOS ที่ดี เช่น Cloudflare หรือ Incapsula
IDS ช่วยตรวจจับการบุกรุกได้ แต่ต้อง configure ดีๆ ไม่งั้นมันจะเตือนเยอะเกินไปจนน่ารำคาญ
Network Security ไม่ใช่เรื่องยากอย่างที่คิด เริ่มจากพื้นฐาน ปิด Port ที่ไม่ได้ใช้ Whitelisting Log ทุกอย่าง และ Update Firewall สม่ำเสมอ ที่สำคัญอย่าประมาท iCafeForex เพราะ Hacker เก่งขึ้นทุกวัน อย่าลืมแวะไปอ่านบทความอื่นๆ ที่ SiamCafe Blog ด้วยนะ