จากบทความ แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables ผู้ที่จะแก้ไขคอนฟิกแบบนี้ได้ ต้องมีความรู้ทางด้านเน็ตเวิร์ก มีความเข้าใจเรื่อง firewall รวมทั้งต้องทราบว่าเซอร์วิสที่รันใช้พอร์ตอะไร
ซึ่งอาจทำให้เกิดความยากสำหรับผู้เริ่มต้น เพราะไม่รู้ว่าจะเพิ่ม หรือลบ rule อย่างไร ใส่ออปชั่นอะไรบ้าง
สำหรับผู้เริ่มต้นหัดใช้ แนะนำให้ใช้โปรแกรม system-config-firewall เพื่อช่วยแก้ไข rule ของ firewall บนลีนุกซ์
โปรแกรม system-config-firewall มีสองเวอร์ชั่น ทำงานได้เหมือนกัน
- system-config-firewall รันเป็น GUI บน X Window เช่น GNOME
- system-config-firewall-tui รันบนหน้าจอคอนโซล จะเป็นแบบเมนูให้เลือก
ในที่นี้จะแสดงวิธีการใช้แบบรันบนหน้าจอคอนโซล
เพื่อเปรียบเทียบสิ่งที่โปรแกรม system-config-firewall จะแก้ไข ก่อนรันคำสั่ง ใช้คำสั่ง iptables -L เพื่อแสดงคอนฟิก firewall ที่ทำงานอยู่
[root@cent6 ~]# iptables -L -v -n --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 2414 180K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 64 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 1379 packets, 505K bytes) num pkts bytes target prot opt in out source destination
พิมพ์คำสั่ง system-config-firewall-tui
[root@cent6 ~]# system-config-firewall-tui
หมายเหตุ หากรันคำสั่งแล้วขึ้น “command not found” ให้ติดตั้งไฟล์ rpm ชื่อ system-config-firewall-tui-1.2.27-5.el6.noarch.rpm
หน้าจอ Firewall Configuration สามารถเลือกที่จะเปิด ปิด firewall ได้
[*] Enabled เปิดใช้งาน firewall [ ] Enabled ปิดการใช้ firewall (ไม่แนะนำ)
กดปุ่ม [Tab] เพื่อเลื่อนแถบสีไปยัง [Customize] แล้วกดปุ่ม [Enter]
หน้าจอแสดง Services ต่างๆ ที่โปรแกรมเตรียมไว้ให้สามารถเลือกคอนฟิกได้
กดปุ่มลูกศร (cursor) ขึ้นลง เพื่อเลื่อนไปยังเซอร์วิสต่างๆ ได้
โดยดีฟอลต์จากการติดตั้ง ถ้าไม่ได้แก้ไข จะอนุญาตให้เครื่องอื่นเข้ามาใช้ SSH ได้อย่างเดียว
เครื่องหมายดอกจัน ในวงเล็บสี่เหลี่ยม [*] หน้าเซอร์วิส หมายถึงการอนุญาตเซอร์วิสนั้น
กดปุ่มลูกศรลง เพื่อไปยังชื่อเซอร์วิสที่ต้องการอนุญาตให้เครื่องอื่นสามารถเข้ามาใช้บนเครื่องลีนุกซ์นี้ได้
เช่นต้องการให้เครื่องอื่น สามารถใช้เว็บเซิร์ฟเวอร์พอร์ต 80 WWW (HTTP) บนเครื่องเราได้
กดปุ่ม [Spacebar] เพื่อเปลี่ยนค่าในวงเล็บสี่เหลี่ยม ต้องเปลี่ยนให้เป็นเครื่องหมายดอกจัน
หลังจากเปลี่ยนเป็นเครื่องหมายดอกจันเรียบร้อยแล้ว กดปุ่ม [Tab] เพื่อเลื่อนแถบสีมาที่ [Close] แล้วกดปุ่ม [Enter]
จะกลับมาหน้าจอหลัก กดปุ่ม [Tab] เลื่อนไปยัง [OK] แล้วกดปุ่ม [Enter]
หน้าจอเตือน Warning ว่าจะมีการสร้างคอนฟิกไฟล์ของ firewall ใหม่ เลื่อนแถบสีอยู่ที่ [Yes] แล้วกดปุ่ม [Enter]
ลองใช้คำสั่ง iptables -L เพื่อดูคอนฟิก firewall ที่เปลี่ยนไป จะเห็น num 5 เพิ่มขึ้นมา เพื่ออนุญาต tcp dpt:80 หรือพอร์ตเว็บ WWW (HTTP) นั่นเอง
[root@cent6 ~]# iptables -L -v -n --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 13 916 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 1 100 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
6 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 8 packets, 960 bytes)
num pkts bytes target prot opt in out source destination
หากต้องการยกเลิก หรือไม่ต้องการให้เครื่องอื่นเข้าใช้งานพอร์ตเว็บบนเครื่องนี้อีกต่อไปแล้ว ก็ใช้คำสั่ง system-config-firewall-tui เข้าไปเอาเครื่องหมายดอกจันหน้าเซอร์วิส WWW (HTTP) ออกไป ทำตามขั้นตอนอื่นๆ เหมือนเดิม
การใช้คำสั่ง system-config-firewall ไม่ว่าจะแบบ GUI หรือคอนโซล เมื่อแก้ไขเสร็จแล้วกดยืนยันเพื่อให้คอนฟิกใหม่มีผล นอกจากจะทำให้คอนฟิกใหม่มีผลทันทีแล้ว คำสั่งนี้จะเข้าไปแก้ไขไฟล์คอนฟิกของ iptables เพื่อให้มีผลต่อการบู๊ตเครื่องครั้งต่อไปด้วย
ไฟล์คอนฟิกของ iptables ของ CentOS คือไฟล์ /etc/sysconfig/iptables
ตัวอย่างของไฟล์หลังจากเพิ่ม การอนุญาตพอร์ต 80
[root@cent6 ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
ชื่อเซอร์วิสที่มาอ่านไฟล์นี้ก็คือ iptables โดยดีฟอลต์จะถูกรันเมื่อเข้าสู่ runlevel 2,3,4,5 หรือการบู๊ตเครื่องใหม่
[root@cent6 ~]# chkconfig --list iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ข้อมูลอ้างอิง