บทความนี้ใช้กับเครื่องที่ลง CSF เรียบร้อยแล้ว หากยังไม่ได้ลงสามารถดูข้อมูลการลงได้ในโพส วิธีลง CSF ใน Ubuntu บน EC2
บางครั้งเราอาจจะอยากบล๊อคการเชื่อมต่อจากประเทศใดประเทศหนึ่ง อาจจะด้วยเหตุผลเพื่อจำกัดการดูเนื้อหาจากประเทศนั้น หรือเพื่อประหยัดแบนวิธจากการเชื่อมต่อจากประเทศที่ไม่ใช่กลุ่มเป้าหมายของเรา หรือในบางครั้งเซิฟเวอร์ก็จะตกเป็นเป้าการโจมตี อาจจะด้วยการ Brute Force Attach, DDOS หรือการโจมตีในรูปแบบอื่น การโจมตีนี้ในบางครั้งก็อาจจะมาจากกลุ่มเครื่องคอมพิวเตอร์ในประเทศใดประเทศหนึ่ง
โดยการตั้งค่า Country Code Deny สามารถทำได้โดยการใส่รหัสประเทศที่ต้องการบล๊อค (ดูรหัสประเทศได้ที่ Wikipedia ISO_3166-1 Alpha 2) ไปยัง CC_DENY ในไฟล์ csf.conf ดังนี้
# ใส่รหัส 2 ตัวของประเทศที่ต้องการบล๊อค หากมีมากกว่า 1 ประเทศ ให้คั่นด้วยเครื่องหมายลูกน้ำ (,)
CC_DENY = "RU,UA"
การเปิด Country Code Deny จะทำให้การเชื่อมต่อกับเซิฟเวอร์ช้าลงบ้าง เพราะต้องเปรียบเทียบรหัสประเทศเข้ากับฐานข้อมูล IP ทุกครั้ง
ข้อมูลการจับคู่ IP ที่เชื่อมต่อมาเข้ากับรหัสประเทศนั้นอาจจะมีที่ไม่ถูกต้องบ้าง เพราะฐานข้อมูลการจับคู่อาจจะไม่ถูกต้อง 100% หรือมีการใช้ Proxy เป็นต้น
เนื่องจากการบล๊อครายประเทศนี้อาจจะทำให้การเชื่อมต่อมายังเซิฟเวอร์ช้าลง และในเซิฟเวอร์ที่มีการเชื่อมต่อจำนวนมาก หรือเซิฟเวอร์มีขนาดเล็ก CPU น้อย/หน่วยความจำไม่เยอะ จึงอาจจะเลี่ยงไปบล๊อคหรืออนุญาต เป็นรายพอร์ทแทน โดยมีตัวเลือกคือ
Option 1: อนุญาตการเชื่อมต่อไปยังบางพอร์ท จากประเทศใดประเทศหนึ่งเท่านั้น
การอนุญาตเป็นรายพอร์ทนี้จะไม่กระทบการให้บริการบนพอร์ทอื่นๆ โดยจะเลือกอนุญาตให้บางประเทศ เชื่อมต่อกับบางพอร์ทได้เท่านั้น เช่น หากเราต้องการให้เชื่อมต่อ FTP (พอร์ท 21) ได้จากประเทศไทยประเทศเดียว สามารถทำได้โดย
# แก้ไข TCP_IN และ UDP_IN โดยลบพอร์ท 21 ออก
TCP_IN = "20,22,25,53,80,110,143,443,465,587,993,995"
UDP_IN = "20,53,80,443"
# รหัสประเทศที่อนุญาตให้เชื่อมต่อกับที่กำหนดได้
CC_ALLOW_PORTS = "TH"
# พอร์ทที่จะอนุญาตให้เชื่อมต่อได้จากรหัสประเทศใน CC_ALLOW_PORTS เท่านั้น
CC_ALLOW_PORTS_TCP = "21"
CC_ALLOW_PORTS_UDP = "21"
Option 2: บล๊อคการเชื่อมต่อจากบางประเทศ ในบางพอร์ทเท่านั้น
การบล๊อคบางประเทศเป็นรายพอร์ทนี้จะลดการทำงานของไฟร์วอลล์ไม่ให้ทำงานหนักมาก เนื่องจากจะไม่กระทบการกับเชื่อมต่อเข้าไปยังพอร์ทอื่นที่ไม่ได้ตั้งไว้ ซึ่งเราอาจจะเลือกบล๊อคเฉพาะพอร์ทที่มีการเชื่อมต่อเข้ามาไม่มาก แต่มีความเสี่ยงต่อความปลอดภัยสูง เช่น บล๊อคพอร์ท FTP และ SSH ดังนี้
# ใส่รหัส 2 ตัวของประเทศที่ต้องการบล๊อค หากมีมากกว่า 1 ประเทศ ให้คั่นด้วยเครื่องหมายลูกน้ำ (,)
CC_DENY_PORTS = "RU,UA"
# พอร์ทที่จะบล๊อคไม่ให้เชื่อมต่อจากประเทศที่อยู่ใน CC_DENY_PORTS
CC_DENY_PORTS_TCP = "21,22"
CC_DENY_PORTS_UDP = "21,22"
เมื่อแก้ไขเรียบร้อยแล้วให้ทำการบันทึกไฟล์ และรัน sudo csf -ra
เพื่อรีสตาร์ท CSF และ LFD