การติดตั้งลีนุกซ์ส่วนใหญ่รวมทั้ง fedora จะติดตั้ง และเปิดคุณสมบัติ firewall มาด้วย ซึ่งโดยดีฟอลต์แล้ว จะอนุญาตให้ packet ขาเข้า (INPUT) ได้เฉพาะ ping และ SSH เท่านั้น
ลีนุกซ์จะใช้โปรแกรมที่ชื่อ iptables ทำหน้าที่เป็น firewall และใช้คำสั่งนี้ในการแสดงและแก้ไขคอนฟิก (rules) ของ firewall
ตัวอย่างการใช้คำสั่ง iptables เพื่อแสดง rule
[root@fc11-64min ~]# iptables -L -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 42 2148 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- any any anywhere anywhere 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh 0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 63 packets, 7412 bytes) pkts bytes target prot opt in out source destination
ถ้าเราติดตั้งและคอนฟิกโปรแกรมเพิ่มเติมบนเครื่องนี้ เช่น ลงเว็บเซิร์ฟเวอร์ จะทำให้ไม่สามารถเรียกมาจากเครื่องอื่นๆ ได้ นอกจากต้องแก้ไขคอนฟิกของ firewalll ก่อน
บน Fedora จะมี script ชื่อ system-config-firewall-tui ช่วยในการคอนฟิกของ iptables เช่น ถ้าต้องการอนุญาตให้ เครื่องอื่นสามารถเรียกเว็บเซิร์ฟเวอร์ที่รันพอร์ตดีฟอลต์ http (TCP 80) ได้ ต้องแก้ไขดังนี้
[root@fc11-64min ~]# system-config-firewall-tui
┌────────────┤ Firewall Configuration ├────────────┐
│ │
│ A firewall protects against unauthorized │
│ network intrusions. Enabling a firewall blocks │
│ all incoming connections. Disabling a firewall │
│ allows all connections and is not recommended. │
│ │
│ Firewall: [*] Enabled │
│ │
│ ┌────┐ ┌───────────┐ ┌────────┐ │
│ │ OK │ │ Customize │ │ Cancel │ │
│ └────┘ └───────────┘ └────────┘ │
│ │
│ │
└──────────────────────────────────────────────────┘
กด [tab] เพื่อเลื่อนไปที่ “Customize”
┌───────────────────┤ Trusted Services ├────────────────────┐ │ │ │ Here you can define which services are trusted. Trusted │ │ services are accessible from all hosts and networks. │ │ │ │ [ ] RADIUS ↑ │ │ [*] SSH ▒ │ │ [ ] Samba ▒ │ │ [ ] Samba Client ▒ │ │ [ ] Secure WWW (HTTPS) ▮ │ │ [*] WWW (HTTP) ↓ │ │ │ │ ┌─────────┐ ┌───────┐ │ │ │ Forward │ │ Close │ │ │ └─────────┘ └───────┘ │ │ │ │ │ └───────────────────────────────────────────────────────────┘
ในหน้า “Trusted Services” กดปุ่มลูกศรเพื่อเลื่อนลงมาบรรทัด [x] WWW (HTTP) แล้วกดปุ่ม [space-bar] เพื่อเลือก แล้วกด “Close”
หน้าจอจะขึ้นถามให้ บันทึกคอนฟิกใหม่ เลือก [Yes]
┌────────────────┤ Warning ├─────────────────┐
│ │
│ Clicking the 'Yes' button will override │
│ any existing firewall configuration. Are │
│ you sure that you want to do this? │
│ │
│ Please remember to check if the services │
│ iptables and ip6tables are enabled. │
│ │
│ ┌─────┐ ┌────┐ │
│ │ Yes │ │ No │ │
│ └─────┘ └────┘ │
│ │
│ │
└────────────────────────────────────────────┘
ใช้คำสั่ง iptables อีกครั้ง เพื่อแสดงคอนฟิก firewall ปัจจุบัน หลังการแก้ไข
[root@fc11-64min ~]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
11 752 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- any any anywhere anywhere
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:http
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 10 packets, 1072 bytes) pkts bytes target prot opt in out source destination
หลังจากอนุญาต http แล้ว ตอนนี้เครื่องอื่น ก็สามารถเรียกเว็บเซิร์ฟเวอร์ที่รันบนเครื่องนี้ได้แล้ว