ดาวน์โหลดบทความ ดาวน์โหลดบทความ

ถ้าต้องการอนุญาตการเชื่อมต่อ inbound หรือ outbound ในระบบ Linux แล้วใช้โปรแกรม firewall อย่าง Iptables, Uncomplicated Firewall (UFW) หรือ Firewalld ก็เปิดพอร์ทได้ง่ายๆ ผ่าน command line ถ้าใช้ ConfigServer Firewall (CSF) หรือ Advanced Policy Firewall (ADP) ต้องเพิ่มกฎ firewall เพื่อเปิดพอร์ท ทำได้ง่ายๆ โดยแก้ไขไฟล์ firewall configuration บทความวิกิฮาวนี้จะแนะนำวิธีการเปิดและปิดพอร์ทใน 5 firewall ยอดนิยมของทั้ง Ubuntu, Debian, CentOS, Red Hat, Fedora และเวอร์ชั่นอื่นๆ ของ Linux ให้คุณเอง

สิ่งที่ควรรู้

  • คุณเปิดพอร์ทของ TCP และ UDP ได้ง่ายๆ ในทุก firewall ของ Linux
  • Iptables จะติดมากับ Linux ทุกเวอร์ชั่นอยู่แล้ว แถมปรับแต่งง่ายมาก
  • ถ้าใช้ Firewalld ใส่ --permanent ในคำสั่ง firewall-cmd จะช่วยให้ไม่ต้องมาตั้งค่าใหม่หลังปิดและรีสตาร์ท firewall
วิธีการ 1
วิธีการ 1 ของ 5:

Iptables

ดาวน์โหลดบทความ
  1. ล็อกอินเซิร์ฟเวอร์ Linux และ/หรือเปิดหน้าต่าง Terminal. Linux แทบทุกเวอร์ชั่น เช่น Ubuntu, Debian, CentOS, Fedora และ Red Hat จะมาพร้อม IPtables อยู่แล้ว ก็เปิดพอร์ทใน Iptables ด้วยคำสั่งง่ายๆ ได้เลย
  2. ถ้า firewall ไม่ run อยู่ ให้ใช้คำสั่ง service iptables start
  3. ใช้คำสั่ง sudo iptables -L แล้วจะเห็นรายชื่อกฎของ firewall ปัจจุบัน. กฎหรือ rules จะแยกย่อยเป็น chains ตามนี้
    • INPUT chain สำหรับการเชื่อมต่อ inbound หรือ ขาเข้า host system
    • FORWARD chain สำหรับ routing
    • OUTPUT chain สำหรับข้อมูล outbound ขาออก จาก host system
    • แต่ละ chain จะมี policy กำหนดว่าจะเกิดอะไรกับ packets เวลาเปิดพอร์ท ต้องกำหนด chain เช่น ถ้าจะเปิดการเชื่อมต่อ SSH ขาเข้า ก็ต้องใช้ INPUT chain
  4. ในตัวอย่างนี้ จะเปิดการเชื่อมต่อขาเข้า port 22 แต่เปลี่ยน 22 เป็นพอร์ทอื่นที่จะเปิดได้
    • ถ้าจะเปิดพอร์ทขาออก ให้เปลี่ยน INPUT เป็น OUTPUT
    • ถ้าจะเปิดพอร์ท UDP ให้เปลี่ยน tcp เป็น udp
    • ถ้าจะเปิดแค่พอร์ทของบาง IP address หรือ subnet ให้ใช้ sudo iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp -m tcp --dport 22 -j ACCEPT
  5. ถ้าไม่ได้ผล ให้ลองใช้หนึ่งในคำสั่งต่อไปนี้
    • sudo /sbin/iptables-save สำหรับ Ubuntu และ Debian
    • /sbin/service iptables save สำหรับ CentOS, Red Hat และ Fedora
    • ถ้าจะปิดพอร์ท ให้ใช้ iptables -I INPUT -p tcp –-dport 22 -j REJECT เปลี่ยน "22" เป็นพอร์ทที่จะปิด และห้าปิด port 22 ถ้าใช้ SSH เข้าเซิร์ฟเวอร์อยู่!
    โฆษณา
วิธีการ 2
วิธีการ 2 ของ 5:

Uncomplicated Firewall

ดาวน์โหลดบทความ
  1. ปกติ UFW จะติดมากับระบบ Ubuntu อยู่แล้ว ถ้าล็อกอินด้วย GUI interface ให้เปิดหน้าต่าง terminal
  2. ถ้าเปิด UFW อยู่ จะมีข้อความบอกสถานะ รวมถึงรายชื่อกฎของ firewall (รวมถึงพอร์ทที่เปิดไว้) ที่มี
    • ถ้ามีข้อความ Status: inactive ต้องเปิดใช้ firewall ก่อน
    • พิมพ์ sudo ufw enable แล้วกด Enter เพื่อเริ่ม firewall [1]
    • ถ้าจะเปิดการล็อกอิน firewall ให้ใช้ sudo ufw logging on
  3. เช่น ถ้าจะเปิด SSH port (22) ให้พิมพ์ kbd แล้วกด Enter เพื่อเปิดพอร์ท ไม่ต้องรีสตาร์ท firewall เพราะค่าใหม่จะมีผลทันที [2]
    • ถ้าพอร์ทที่จะเปิดนั้นสำหรับ service ใน /etc/services ก็แค่พิมพ์ชื่อ service แทนเลขพอร์ทได้เลย เช่น sudo ufw allow ssh
    • ถ้าจะเปิดทีเดียวหลายพอร์ท ให้ใช้ syntax sudo ufw allow 6000:6007/tcp เปลี่ยน 6000:6007 เป็น range หรือช่วงของพอร์ทที่จะเปิด ถ้า range เป็น UDP ports ให้เปลี่ยน tcp เป็น udp
    • ถ้าจะกำหนด IP address ที่เข้าถึงพอร์ทได้ ให้ใช้ syntax sudo ufw allow from 10.0.0.1 to any port 22 เปลี่ยน 10.0.0.1 เป็น IP address นั้น แล้วเปลี่ยน 22 เป็นพอร์ทที่จะเปิดไปยัง address นั้น
    • ถ้าจะปิดพอร์ท ให้ใช้ sudo ufw deny 22 เปลี่ยน 22 เป็นพอร์ทที่จะปิด
  4. พอร์ทไหนที่ไม่ได้เปิดไว้ จะถูกบล็อกไว้ก่อน ถ้าเปิดพอร์ทแล้วอยากปิด ให้ทำตามขั้นตอนต่อไปนี้
    • พิมพ์ sudo ufw status numbered แล้วกด Enter จะเห็นรายชื่อกฎ firewall ทั้งหมด แต่ละอันขึ้นต้นด้วยเลขประจำกฎในรายการ
    • เช็คเลขต้นกฎที่จะลบ เช่น ถ้าจะลบกฎที่เปิด port 22 (ย้ำว่าอย่าลบ ถ้าใช้ SSH เข้าเซิร์ฟเวอร์อยู่) แล้วกฎนั้นอยู่บรรทัดที่ 2
    • ให้พิมพ์ sudo ufw delete 2 แล้วกด Enter เพื่อลบกฎบรรทัด 2
    โฆษณา
วิธีการ 3
วิธีการ 3 ของ 5:

Firewalld

ดาวน์โหลดบทความ
  1. ถ้าใช้ Firewalld ใน CentOS, Red Hat Enterprise, SUSE หรือ Fedora ก็เปิดพอร์ทได้ง่ายๆ จากใน command line โดย Firewalld เป็น default firewall solution ของทุกเวอร์ชั่นที่ว่ามา [3]
  2. PUBLIC zone คือ
    • หรือเช็ค firewalld configuration ทั้งหมด ว่าพอร์ทไหนอนุญาตและปฏิเสธ รวมถึง services ต่างๆ โดยใช้คำสั่ง sudo firewall-cmd --list-all
  3. ในตัวอย่างนี้ เป็นวิธีเปิด SSH port (22) สำหรับ remote access
    • firewall-cmd --zone=public --add-port=22/tcp จะเปิดพอร์ททันที แต่ไม่ได้เปลี่ยนค่าถาวร
    • ถ้าจะเปลี่ยนค่าถาวร ให้เติม --permanent ที่ท้ายคำสั่ง firewall-cmd --zone=public --permanent --add-port=22/tcp [4]
    • ถ้าจะเปิด UDP port ให้เปลี่ยน tcp เป็น udp
    • ถ้าจะเปิดพอร์ทตามชื่อ service ให้ใช้ firewall-cmd --zone=public --permanent
  4. ถ้าแค่จะอนุญาตการเชื่อมต่อขาเข้าหรือขาออกจาก IP ไหน ให้สร้าง firewall zone ใหม่สำหรับ address นั้น
    • ถ้าจะสร้าง zone ใหม่ ให้ใช้ firewall-cmd --new-zone=MYZONENAME --permanent .
    • แล้ว run firewall-cmd –reload เพื่อรีเฟรช configuration
    • run firewall-cmd --get-zones เพื่อเช็ค zones จะเห็น zone ใหม่
    • ถ้าจะลิงก์ IP address กับ zone ให้ใช้ firewall-cmd --zone=MYZONENAME --add-source=10.0.0.1 --permanent เปลี่ยน IP address เป็นอันที่เหมาะสม
    • แล้วเปิดพอร์ทไปยัง zone นั้น โดยกำหนดชื่อ zone แทน "public:" firewall-cmd --zone=MYZONENAME --permanent --add-port=22/tcp
  5. ถ้าจะปิดพอร์ท ก็ทำได้โดยใช้ flags ต่างกับคำสั่ง firewall-cmd เช่น จะปิด port 22 จาก public แบบถาวร ก็ firewall-cmd --zone=public --remove-port=22/tcp --permanent [5]
    โฆษณา
วิธีการ 4
วิธีการ 4 ของ 5:

ConfigServer Firewall

ดาวน์โหลดบทความ
  1. ถ้ายังไม่ได้ล็อกอินในฐานะ root user ก็ใช้ su เข้า root เพื่อปรับแต่ง configuration หรือนำหน้าคำสั่งด้วย sudo
  2. ไฟล์ชื่อ csf.conf และเซฟอยู่ที่ /etc/csf/csf.conf ตามค่า default [6] ทำได้โดยพิมพ์ cd /etc/csf แล้วกด Enter
  3. ใช้ text editor ไหนก็ได้ เช่น vim หรือ nano
    • ถ้าจะเปิด csf.conf ใน vim ให้พิมพ์ vim csf.config แล้วกด Enter
  4. TCP ports พอเปิดไฟล์แล้ว จะเห็นส่วนของ TCP_IN กับ TCP_OUT รายการของ TCP_IN ใช้เปิด inbound TCP ports แบ่งด้วยลูกน้ำ โดยพอร์ทจะเรียงตามลำดับตัวเลขให้หาง่าย แต่ไม่จำเป็นว่าพอร์ทต้องเรียงตามนั้น คุณเพิ่มพอร์ทต่อท้ายได้เลย แค่คั่นด้วยลูกน้ำ
    • เช่น ถ้าอยากจะเปิด port 999 แล้วพอร์ทที่เปิดอยู่คือ 20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995
    • พอเพิ่ม port 999 เข้ารายการ ก็จะออกมาเป็น 20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995, 999
    • ถ้าจะเข้า insertion/typing mode ใน vim ให้กดปุ่ม i ที่คีย์บอร์ด
  5. เหมือนตอนทำกับ incoming port ให้เพิ่ม outbound TCP ports ที่จะเปิด ในรายการ TCP_OUT
  6. ทำตามขั้นตอนต่อไปนี้เพื่อเซฟแล้วออกจากไฟล์
    • กดปุ่ม Esc
    • พิมพ์ :wq!
    • กด Enter
  7. เพื่อรีสตาร์ท firewall แล้วเปิดพอร์ทใหม่
    • ถ้าจะปฏิเสธพอร์ท ให้เปิดไฟล์ใหม่ แล้วลบพอร์ท เซฟไฟล์ จากนั้นรีสตาร์ท firewall
    โฆษณา
วิธีการ 5
วิธีการ 5 ของ 5:

Advanced Policy Firewall

ดาวน์โหลดบทความ
  1. ถ้าใช้ APF ในระบบ Linux ต้องปรับ firewall configuration ในไฟล์ APF configuration file
  2. ไฟล์ที่หาชื่อ conf.apf อยู่ใน /etc/apf ตามค่า default [7] พิมพ์ cd /etc/apf เพื่อเข้า directory
  3. จะใช้ text editor ไหนก็ได้ เช่น vim หรือ nano
    • ถ้าจะเปิด conf.apf ใน vim ให้พิมพ์ sudo vim /etc/apf/conf.apf แล้วกด Enter
  4. พอเปิดไฟล์แล้ว จะเห็นส่วนของ IG_TCP_CPORTS กับ EG_TCP_CPORTS รายการใน IG_TCP_CPORTS จะเปิด inbound ports คั่นด้วยลูกน้ำ โดยพอร์ทจะเรียงตามลำดับตัวเลขให้หาง่าย แต่ไม่จำเป็นว่าพอร์ทต้องเรียงตามนั้น คุณเพิ่มพอร์ทต่อท้ายได้เลย แค่คั่นด้วยลูกน้
    • เช่น ถ้าจะเปิดพอร์ท 999 แล้วพอร์ทที่เปิดอยู่คือ 20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995
    • พอเพิ่ม port 999 ในรายการ IG_TCP_CPORTS จะออกมาเป็น 20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995, 999
    • ถ้าจะเข้า insertion/typing mode ใน vim ให้กด i ที่คีย์บอร์ด
  5. ก็เหมือนตอนทำของ incoming port คือเพิ่ม outbound TCP ports ที่จะเปิดในรายการ EG_TCP_CPORTS
  6. ทำตามขั้นตอนต่อไปนี้ เพื่อเซฟแล้วออกจากไฟล์
    • กดปุ่ม Esc
    • พิมพ์ :wq!
    • กด Enter
  7. เพื่อรีสตาร์ท APF firewall แล้วเปิดพอร์ทใหม่
    • ถ้าจะปฏิเสธพอร์ท ให้เปิดไฟล์ใหม่ ลบพอร์ท เซฟไฟล์ แล้วรีสตาร์ท firewall
    โฆษณา

เคล็ดลับ

  • ถ้าเจอพอร์ทที่ไม่ใช้ หรือไม่ได้ run services ผ่าน ให้ปิดไปเลย! ไม่ต้องเปิดไว้ให้ใครแอบเข้ามา!
  • ถ้าเพิ่มพอร์ทมั่วซั่ว ระวังถูกแฮก! ให้เปิดพอร์ทเฉพาะที่จำเป็นเท่านั้น
โฆษณา

เกี่ยวกับวิกิฮาวนี้

มีการเข้าถึงหน้านี้ 1,963 ครั้ง

บทความนี้เป็นประโยชน์กับคุณไหม

โฆษณา