ดาวน์โหลดบทความ
ดาวน์โหลดบทความ
ถ้าต้องการอนุญาตการเชื่อมต่อ 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
ขั้นตอน
-
ล็อกอินเซิร์ฟเวอร์ Linux และ/หรือเปิดหน้าต่าง Terminal. Linux แทบทุกเวอร์ชั่น เช่น Ubuntu, Debian, CentOS, Fedora และ Red Hat จะมาพร้อม IPtables อยู่แล้ว ก็เปิดพอร์ทใน Iptables ด้วยคำสั่งง่ายๆ ได้เลย
-
run service iptables status ให้แน่ใจว่าเปิด firewall อยู่. ถ้า firewall ไม่ run อยู่ ให้ใช้คำสั่ง service iptables start
-
ใช้คำสั่ง 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
-
เปิดพอร์ทด้วย sudo iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT . ในตัวอย่างนี้ จะเปิดการเชื่อมต่อขาเข้า 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
-
ใช้ sudo service iptables save เซฟค่าใหม่. ถ้าไม่ได้ผล ให้ลองใช้หนึ่งในคำสั่งต่อไปนี้
- 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 เข้าเซิร์ฟเวอร์อยู่!
โฆษณา
-
ล็อกอินเซิร์ฟเวอร์ Ubuntu. ปกติ UFW จะติดมากับระบบ Ubuntu อยู่แล้ว ถ้าล็อกอินด้วย GUI interface ให้เปิดหน้าต่าง terminal
-
พิมพ์ sudo ufw status verbose แล้วกด ↵ Enter . ถ้าเปิด UFW อยู่ จะมีข้อความบอกสถานะ รวมถึงรายชื่อกฎของ firewall (รวมถึงพอร์ทที่เปิดไว้) ที่มี
- ถ้ามีข้อความ Status: inactive ต้องเปิดใช้ firewall ก่อน
- พิมพ์ sudo ufw enable แล้วกด Enter เพื่อเริ่ม firewall [1] X แหล่งข้อมูลอ้างอิง
- ถ้าจะเปิดการล็อกอิน firewall ให้ใช้ sudo ufw logging on
-
เปิดพอร์ทด้วย sudo ufw allow [port number] . เช่น ถ้าจะเปิด SSH port (22) ให้พิมพ์ kbd แล้วกด Enter เพื่อเปิดพอร์ท ไม่ต้องรีสตาร์ท firewall เพราะค่าใหม่จะมีผลทันที [2] X แหล่งข้อมูลอ้างอิง
- ถ้าพอร์ทที่จะเปิดนั้นสำหรับ 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 เป็นพอร์ทที่จะปิด
-
ลบกฎ firewall ที่ไม่จำเป็น. พอร์ทไหนที่ไม่ได้เปิดไว้ จะถูกบล็อกไว้ก่อน ถ้าเปิดพอร์ทแล้วอยากปิด ให้ทำตามขั้นตอนต่อไปนี้
- พิมพ์ sudo ufw status numbered แล้วกด Enter จะเห็นรายชื่อกฎ firewall ทั้งหมด แต่ละอันขึ้นต้นด้วยเลขประจำกฎในรายการ
- เช็คเลขต้นกฎที่จะลบ เช่น ถ้าจะลบกฎที่เปิด port 22 (ย้ำว่าอย่าลบ ถ้าใช้ SSH เข้าเซิร์ฟเวอร์อยู่) แล้วกฎนั้นอยู่บรรทัดที่ 2
- ให้พิมพ์ sudo ufw delete 2 แล้วกด Enter เพื่อลบกฎบรรทัด 2
โฆษณา
-
ล็อกอินเซิร์ฟเวอร์. ถ้าใช้ Firewalld ใน CentOS, Red Hat Enterprise, SUSE หรือ Fedora ก็เปิดพอร์ทได้ง่ายๆ จากใน command line โดย Firewalld เป็น default firewall solution ของทุกเวอร์ชั่นที่ว่ามา [3] X แหล่งข้อมูลอ้างอิง
-
run firewall-cmd --list-ports เพื่อเช็คพอร์ทที่เปิดอยู่. PUBLIC zone คือ
- หรือเช็ค firewalld configuration ทั้งหมด ว่าพอร์ทไหนอนุญาตและปฏิเสธ รวมถึง services ต่างๆ โดยใช้คำสั่ง sudo firewall-cmd --list-all
-
ใช้คำสั่ง firewall-cmd เปิดพอร์ท. ในตัวอย่างนี้ เป็นวิธีเปิด SSH port (22) สำหรับ remote access
- firewall-cmd --zone=public --add-port=22/tcp จะเปิดพอร์ททันที แต่ไม่ได้เปลี่ยนค่าถาวร
- ถ้าจะเปลี่ยนค่าถาวร ให้เติม --permanent ที่ท้ายคำสั่ง firewall-cmd --zone=public --permanent --add-port=22/tcp [4] X แหล่งข้อมูลอ้างอิง
- ถ้าจะเปิด UDP port ให้เปลี่ยน tcp เป็น udp
- ถ้าจะเปิดพอร์ทตามชื่อ service ให้ใช้ firewall-cmd --zone=public --permanent
-
เปิดพอร์ทแบบระบุ IP address. ถ้าแค่จะอนุญาตการเชื่อมต่อขาเข้าหรือขาออกจาก 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
-
ปิดพอร์ท. ถ้าจะปิดพอร์ท ก็ทำได้โดยใช้ flags ต่างกับคำสั่ง firewall-cmd เช่น จะปิด port 22 จาก public แบบถาวร ก็ firewall-cmd --zone=public --remove-port=22/tcp --permanent [5] X แหล่งข้อมูลอ้างอิงโฆษณา
-
ล็อกอินเซิร์ฟเวอร์. ถ้ายังไม่ได้ล็อกอินในฐานะ root user ก็ใช้ su เข้า root เพื่อปรับแต่ง configuration หรือนำหน้าคำสั่งด้วย sudo
-
ไปยัง directory ที่มีไฟล์ CSF config file. ไฟล์ชื่อ csf.conf และเซฟอยู่ที่ /etc/csf/csf.conf ตามค่า default [6] X แหล่งข้อมูลอ้างอิง ทำได้โดยพิมพ์ cd /etc/csf แล้วกด ↵ Enter
-
เปิด csf.conf ใน text editor. ใช้ text editor ไหนก็ได้ เช่น vim หรือ nano
- ถ้าจะเปิด csf.conf ใน vim ให้พิมพ์ vim csf.config แล้วกด ↵ Enter
-
เพิ่ม incoming port ในรายการ TCP_IN . 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 ที่คีย์บอร์ด
-
อนุญาต outgoing TCP ในรายการ TCP_OUT . เหมือนตอนทำกับ incoming port ให้เพิ่ม outbound TCP ports ที่จะเปิด ในรายการ TCP_OUT
-
เซฟค่าใหม่แล้วออกจากไฟล์. ทำตามขั้นตอนต่อไปนี้เพื่อเซฟแล้วออกจากไฟล์
- กดปุ่ม Esc
- พิมพ์ :wq!
- กด ↵ Enter
-
พิมพ์ service csf restart แล้วกด ↵ Enter . เพื่อรีสตาร์ท firewall แล้วเปิดพอร์ทใหม่
- ถ้าจะปฏิเสธพอร์ท ให้เปิดไฟล์ใหม่ แล้วลบพอร์ท เซฟไฟล์ จากนั้นรีสตาร์ท firewall
โฆษณา
-
ล็อกอินเซิร์ฟเวอร์ Linux. ถ้าใช้ APF ในระบบ Linux ต้องปรับ firewall configuration ในไฟล์ APF configuration file
-
ไปที่ directory ที่มีไฟล์ APF config. ไฟล์ที่หาชื่อ conf.apf อยู่ใน /etc/apf ตามค่า default [7] X แหล่งข้อมูลอ้างอิง พิมพ์ cd /etc/apf เพื่อเข้า directory
-
เปิด /etc/apf/conf.apf ใน text editor. จะใช้ text editor ไหนก็ได้ เช่น vim หรือ nano
- ถ้าจะเปิด conf.apf ใน vim ให้พิมพ์ sudo vim /etc/apf/conf.apf แล้วกด Enter
-
เพิ่ม inbound ports ในรายการ IG_TCP_CPORTS . พอเปิดไฟล์แล้ว จะเห็นส่วนของ 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 ที่คีย์บอร์ด
-
อนุญาต outbound ports ในรายการ EG_TCP_CPORTS . ก็เหมือนตอนทำของ incoming port คือเพิ่ม outbound TCP ports ที่จะเปิดในรายการ EG_TCP_CPORTS
-
เซฟค่าใหม่แล้วออกจากไฟล์. ทำตามขั้นตอนต่อไปนี้ เพื่อเซฟแล้วออกจากไฟล์
- กดปุ่ม Esc
- พิมพ์ :wq!
- กด Enter
-
พิมพ์ service apf -r แล้วกด ↵ Enter . เพื่อรีสตาร์ท APF firewall แล้วเปิดพอร์ทใหม่
- ถ้าจะปฏิเสธพอร์ท ให้เปิดไฟล์ใหม่ ลบพอร์ท เซฟไฟล์ แล้วรีสตาร์ท firewall
โฆษณา
เคล็ดลับ
- ถ้าเจอพอร์ทที่ไม่ใช้ หรือไม่ได้ run services ผ่าน ให้ปิดไปเลย! ไม่ต้องเปิดไว้ให้ใครแอบเข้ามา!
- ถ้าเพิ่มพอร์ทมั่วซั่ว ระวังถูกแฮก! ให้เปิดพอร์ทเฉพาะที่จำเป็นเท่านั้น
โฆษณา
ข้อมูลอ้างอิง
- ↑ https://wiki.ubuntu.com/UncomplicatedFirewall
- ↑ https://help.ubuntu.com/lts/serverguide/firewall.html
- ↑ https://firewalld.org/
- ↑ https://firewalld.org/documentation/howto/open-a-port-or-service.html
- ↑ https://docs.fedoraproject.org/en-US/quick-docs/firewalld/
- ↑ https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-config-server-firewall-csf-on-ubuntu
- ↑ https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-configure-your-firewall-for-cpanel-services/
เกี่ยวกับวิกิฮาวนี้
มีการเข้าถึงหน้านี้ 2,376 ครั้ง
โฆษณา