FC4 中的 Iptables 設定

○、1.什麼是防火牆?

防火牆就像是一道柵欄,它會檢查來自網際網路或網路的資訊 (通常稱為「流量」),然後根據防火牆的設定決定將其轉向、丟棄或允許它通過您的電腦。

 

一、關閉IPV6功能

FC4預設 IPv6 是打開的,關閉 IPv6 可能網路速度會更快點,主要是DNS查詢速度的提升。
(This may speed up your DNS lookup times when using the internet.)

要關閉 IPv6 可用以下方法如下:

1. 開啟 /etc/modprobe.conf
2. 加入這一行:
alias net-pf-10 off

更改以上檔案後重新啟動系統,這時 IPv6 便會關閉。

註:FC6 IPv6 OFF

1./etc/sysconfig/network

NETWORKING_IPV6=no

2. /etc/modprobe.conf

alias net-pf-10 off
alias ipv6 off

3.Stop IPv6 Firewall

/etc/init.d/ip6tables stop
chkconfig –level 35 ip6tables off

4. /etc/hosts

127.0.0.1 localhost.localdomain localhost

5.Reboot

參考網址:http://www.mjmwired.net/resources/mjm-fedora-fc6.html#ipv6

二、關閉 SELinux

vi /etc/sysconfig/selinux

SELINUX=enforcing 改成--> SELINUX=disabled

參考網址:http://linux.vbird.org/somepaper/

三、使用SETUP設定防火牆

1.setup

2.啟用(自訂規則)

3.選擇需要的服務(也可自訂)

四、檢查防火牆規則

1.使用 iptables -L -n 命令檢查防火牆規則

2.由  setup 所設定的規則會存放在 /etc/sysconfig/iptables 中,我們可以再作進一步的調整。

五、防火牆規則說明

1.iptables firewall 封包比對判斷流程圖

來源:http://ebtables.sourceforge.net/br_fw_ia/bridge3b.png

2.參考網址:
http://phorum.study-area.org/viewtopic.php?t=41142

3.使用 setup 設定規則 filter table 中除了預設的 INPUT OUTPUT FORWARD 外再自行建立了 RH-Firewall-1-INPUT

4.將 INPUT 及 FORWARD 導向 RH-Firewall-1-INPUT 中。
註:INPUT是指進入本機;FORWARD是指由一個介面流向另一個介面(例:eth0 <--> eth1)。

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT

5.完全接受 loopback interface 的封包(主機可以存取本身的所有服務項目)

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

6.允許主機可以接受 ping 等 icmp 封包

-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT

7.下面這三行與ipv6 有關,(224.0.0.251 is a multicast address ... you can disable it if you don't want to use mdns ...)

註:可刪除規則下列規則

-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

8.網際網路印表機服務

631/tcp # Internet Printing Protocol
631/udp # Internet Printing Protocol

註:可刪除規則下列規則

-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

9.允許連線出去後對方主機回應進來的封包(包括主動式與被動式的ftp連線)。

當主機對外要建立連線時,遠端主機勢必也要回應封包到原主機,所以回應的封包是要被允許的。

-m state --state ESTABLISHED 扮演很重要角色,那就是允許連線出去後對方主機回應進來的封包。

RELATED 配合 ip_conntrack_ftp (ip_nat_ftp)模組 可以針對連入與連外目的 port 為 21 的 ftp 協定命令溝通進行攔截

在 /etc/sysconfig/iptables-config 中加入

IPTABLES_MODULES="ip_conntrack_ftp"

重新啟動 iptables 服務即可載入指定的模組!

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

10.允許連線服的項目(tcp/1000、tcp/873、tcp/22、tcp/80等)

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

11.除了允許的服務外其它回應 icmp封包 「icmp-host-prohibited」

每個type所對應的訊息如下:

icmp-net-unreachable => Destination Net Unreachable
icmp-host-unreachable => Destination Host Unreachable
icmp-port-unreachable => Destination Port Unreachable
icmp-proto-unreachable => Destination Protocol Unreachable
icmp-net-prohibited => Dest Unreachable, Bad Code: 9
icmp-host-prohibited => Dest Unreachable, Bad Code: 10

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

12.調整過後的規則:

附錄一:Net Ports List

附錄二:一般常用的 PORT

附錄三:解決 Linux NAT ip_conntrack: table full 的方法