290 likes | 440 Views
NetFilter. IPTables. Introduction. 當封包抵達 Linux 防火牆的時候,依照它的目的地可以進入 Linux 主機由應用程式接收,或者是經由另外的介面轉送出去。 Netfilter 就是在封包進入以及轉出主機中的路徑上,加上一些掛載點( Hook) 並使用封包所屬的 table 來決定如何處置封包。 掛載點 (Hook) 、表格 (Table). 在 netfilter 中,定義了五個掛載點 (Hook) 分別是 Pre-Routing 、 Local-in 、 Local-out 、 Forward 和 Post-Routing.
E N D
NetFilter IPTables
Introduction • 當封包抵達 Linux 防火牆的時候,依照它的目的地可以進入 Linux 主機由應用程式接收,或者是經由另外的介面轉送出去。 • Netfilter 就是在封包進入以及轉出主機中的路徑上,加上一些掛載點(Hook)並使用封包所屬的table來決定如何處置封包。 • 掛載點(Hook)、表格(Table)
在netfilter中,定義了五個掛載點(Hook)分別是Pre-Routing、Local-in、Local-out、Forward和Post-Routing 在netfilter中,定義了五個掛載點(Hook)分別是Pre-Routing、Local-in、Local-out、Forward和Post-Routing
Pre-Routing Forward • Post-Routing Routing Routing Local-in Local-out Linux Protocol Stack
當封包經過這些掛載點,就可以依照事先規定的動作來處理封包,如Accept、Drop、Queue、Return、Log、Mark、Reject、 Masquerade、Redirect等動作。
當封包由介面可接收後會先進入Pre-Routing Hook,再由Routing判斷封包是要進入本機或是要送到另依個網路中 • 如果是送到本機上則會進入Local-In來檢查封包 • 如果是要送到另依個網路則送到Forward 檢查 • 如果封包由本機送出則會先進入Local-out 檢查,最後如果封包要送到媒體上則會進入Post-Routing中檢查
Pre-Routing Forward • Post-Routing Routing Routing Local-in Local-out Linux Protocol Stack
Pre-Routing Forward • Post-Routing Routing Routing Local-in Local-out Linux Protocol Stack
Pre-Routing Forward • Post-Routing Routing Routing Local-in Local-out Linux Protocol Stack
Netfilter還定義了三種表格 filter、NAT、Mangle,讓使用者能夠在不同的表格中取得他所需要的功能
filter table • filter table中所包含的掛載點一共有三個分別是Local-in、Forward以及Local-out • 在filter table中主要是用來設定封包過濾的動作,常用的動作分別是 • DROP、REJECT、ACCEPT以及LOG
Filter • LOG紀錄該封包資訊 • REJECT退回該封包 • ACCEPT讓封包通過 • DROP丟棄封包
NAT table • 在NAT table中包含三個掛載點Pre-Routing、Local-Out和Post-Routing,提供了操作NAT時所需要的全部功能。 • 轉譯封包位址資訊
Nat • SNAT轉譯來源位址 • DNAT轉譯目的位址 • MASQUERADE轉譯來源位址成為 NIC 的位址 • REDIRECT轉送至本機某個 Port
mangle table • mangle table中所包含的掛載點Pre-Routing、Local-out,他是用來在封包標頭中增加一些資料來幫助linux kernel network sub-system來分類封包 • 他的動作包括TTL、TOS以及增加MARK標示封包。
Mangle • TTL修改 Time To Live 資訊 • MARK標記該封包 • TOS設定 Type Of Service 資訊
Pre-Routing Forward • Post-Routing Routing Routing Local-in Local-out Linux Protocol Stack
如果當我分別在Pre-Routing、Post-Routing和filter上分別增加:如果當我分別在Pre-Routing、Post-Routing和filter上分別增加: • iptables –A INPUT –p icmp –j LOG • iptables –A OUTPUT –p icmp –j LOG • iptables –A FORWARD –p icmp –j LOG
Pre-Routing Forward • Post-Routing Routing Routing Local-in Local-out Linux Protocol Stack
心得 • 參數 • PORT • Protocol • IP
iptables 指令 • -N建立新的chain • -X移除空的chain • -P變更chain的標準規則 • -L列示在chain中的規則 • -F將一個chain中的規則排除掉 • -Z將封包和位元組計數器歸零
-A加入一個新的規則 • -I插入一個新的規則 • -R置換一個規則 • -D刪除一個規則 • 參數值前面加”!”代表”Not” • -p !TCP
清空現有的rules • iptables –F • 刪除自訂chains • iptables –X • 設定預設policy • iptables –P INPUT DROPiptables –P FORWARD DROPiptables –P OUTPUT DROP
Example • 允許192.168.2.0/24能夠telnet 到140.134.4.20 • #iptables –A FORWARD –s 192.168.2.0/24 –d 140.134.4.20 –p tcp --dport 23 –j ACCEPT • #iptables –A FORWARD –s 140.134.4.20 –d 192.168.2.0/24 –p tcp --sport 23 –j ACCEPT
192.168.2.200上逢甲BBS轉到210.64.125.5 • #iptables –t nat –A PREROUTING –s 192.168.2.200 –d 140.134.4.5 –p tcp --dport 23 –j DNAT --to-destination 210.64.125.5
netfilter處理判斷順序 • Tables Chains Rules Policy