บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 12-07-62
ดูแลโดย วิบูลย์
UFW ย่อมาจาก Uncomplicated Firewall เป็นโปรแกรมที่ติดตั้งไว้ให้แล้วบน ubuntu 16.04 แต่ยังไม่เปิดใช้งาน
UFW ทำให้การ allow และ deny การเข้าถึง port ของ service ต่าง ๆ สะดวกกว่าการเขียนคำสั่ง iptables อย่างไรก็ตามหากเรารู้เรื่อง iptables ก็จะเป็นการดีมากทีเดียว
นอกจากโปรแกรม UFW แล้ว อีกตัวหนึ่งที่เคยเขียนบันทึกไว้และใช้งานกันอยู่คือ shorewall ก็ขอให้เลือกเอาว่าจะใช้งานตัวไหน แต่ผมคิดว่า เราน่าจะใช้ UFW นะ เพราะ ubuntu 16.04 ให้มาอยู่แล้ว และเขียน rule ได้ง่าย
การเปิดใช้ UFW จะเป็นการ DENY ALL ครับ ดังนั้นหลังจากคำสั่งนี้ เราจะต้อง allow port ที่ให้บริการทันทีครับ
ถ้าไม่ได้ทำที่หน้าเครื่อง แต่ remote ssh เข้าไปให้ทำคำสั่งเปิด ssh port 22 ก่อน enable ครับ
สมมติว่าคุณ ssh จาก client IP ใน net 192.168.1.0/24
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
การเปิดใช้ UFW
sudo ufw enable
การตรวจสอบสถานะ
sudo ufw status verbose
ผลลัพธ์
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip
ถ้าเคย allow 25/tcp, 22/tcp เราจะเห็นผลลัพธ์เป็นแบบนี้
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 25/tcp ALLOW IN Anywhere 22/tcp ALLOW IN Anywhere 25/tcp (v6) ALLOW IN Anywhere (v6) 22/tcp (v6) ALLOW IN Anywhere (v6)
การปิด UFW
sudo ufw disable
การตรวจสอบระดับล่าง (ดู iptables rules)
sudo ufw show raw
ไวยกรณ์ของคำสั่ง UFW ใช้ง่าย ประมาณนี้ครับ
คำสั่ง Allow
sudo ufw allow <port>/<optional: protocol>
เช่น
sudo ufw allow 53/udp
คำสั่ง Deny
sudo ufw deny <port>/<optional: protocol>
เช่น
sudo ufw deny 53/tcp
การลบ rule (delete rule)
sudo ufw delete <คำสั่ง><port>/<optional: protocol>
เช่น
sudo ufw delete allow 53/udp sudo ufw delete deny 53/tcp
การทำงานของ UFW rule
UFW อ่านจาก rule จากบนลงล่าง พบแล้ว matched เลย ไม่ทำต่อ rule ข้างล่าง จึงตัองเรียงลำดับให้ดี
ดังนั้นหากเราจะเปลี่ยนแปลง rule ก็จะต้องลบ rule เก่าด้วย ก่อนจะใส่ rule ใหม่เข้าไป
การลบหรือแทรก rule ตรงตำแหน่งบรรทัด
ตรวจสอบ
sudo ufw status numbered
เช่น ลบ rule ที่ 1
sudo ufw delete 1
แทรกให้เป็น rule ที่ 1
sudo ufw insert 1 allow from <ip address>
ตัวอย่าง การอนุญาต port
#http ufw allow to any port 80 proto tcp #https ufw allow to any port 443 proto tcp #nrpe ufw allow to any port 5666 proto tcp #ftp ufw allow to any port 21 proto tcp #ssh ufw allow from 192.168.0.0/16 to any port 22 proto tcp ufw allow from 172.16.0.0/12 to any port 22 proto tcp ufw allow from 10.0.0.0/8 to any port 22 proto tcp #radius ufw allow to any port 1812 proto udp ufw allow to any port 1813 proto udp
เราสงสัยว่า ufw เก็บ user rules ไว้ที่ไหน ก็ที่นี้เลยครับ
sudo cat /etc/ufw/user.rules
คำสั่งที่ใช้ในการ allow และ deny หรือ ลบ rule ที่สร้างไว้จะมีรายละเอียดเยอะมาก อ่านเอาจากที่นี่ได้เลยครับ
https://help.ubuntu.com/community/UFW