10/01/2560

CentOS แก้ไขคอนฟิก Firewall ด้วย system-config-firewall

คุณสมบัติ firewall ติดตั้งมาให้สามารถเลือกอนุญาต หรือปฏิเสธการ รับ/ส่ง packet เข้า/ออกเครื่องได้ จุดมุ่งหมายหลักๆ ของ firewall ก็เพื่อเพิ่มความปลอดภัยให้กับเครื่องเซิร์ฟเวอร์ หลายคนมักจะปิดคุณสมบัตินี้ไป ด้วยเหตุผลบอกว่ายากต่อการทำความเข้าใจ และแก้ไข

สำหรับผู้เริ่มต้นหัดใช้ แนะนำให้ใช้โปรแกรม 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

เครดิต : คลิกเลยครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น