Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Iptables and Netfilter Linux 防火牆 Wei-li Tang July 14, 2010.

Similar presentations


Presentation on theme: "1 Iptables and Netfilter Linux 防火牆 Wei-li Tang July 14, 2010."— Presentation transcript:

1 1 Iptables and Netfilter Linux 防火牆 Wei-li Tang July 14, 2010

2 2 Outline 為何需要防火牆? Linux 防火牆 Netfilter  Setting Netfilter Up iptables

3 3 為何需要防火牆? 限制某些服務的存取來源  防止未經同意與不明的連線傳輸 例如  限制僅來自學校的 IP 位址可連到我的 FTP 站。  限制外人只能連到我電腦上的 HTTP Server , 但不能連到其他 Port 。

4 4 Linux 防火牆 Netfilter  Linux 核心的封包過濾架構 設定工具  iptables (>= Linux 2.4)  ipchains (Linux 2.2)  ipfwadm (Linux 2.0)

5 5 Linux 防火牆 其他作業系統的防火牆  Windows Internet Connection Firewall (ICF) (>= XPSP1)  BSD OpenBSD PF (Packet Filter) (ported to FreeBSD) IPFILTER (IPF) IPFIREWALL (IPFW) (sponsored by FreeBSD)

6 6 Netfilter 功能  不只是防火牆  NAT (IP 分享器 )  延伸應用 辨識並處理 P2P 流量 (Layer 7 Filter) 網路限速 … 等 Image Ref.: http://cha.homeip.net/blog/

7 7 Netfilter Packet Flow

8 8 Netfilter Packet Flow PREROUTINGPOSTROUTING 接收封包 IN 送出封包 OUT INPUTOUTPUT FORWARD 目的地為本機 目的地非本機 本機程式 Localhost Filter 表 FORWARD 目的地非本機 FORWARD 目的地非本機 Raw / Mangle / NAT 表 表 Table 鏈 Chain 網路介面 Interface

9 9 Netfilter Filter  INPUT: 管制連入本機的連線  OUTPUT: 管制自本機連出的連線  FORWARD: 管制連往他處的連線 僅適用於路由器 (Router) 功能起動時

10 10 Setting Netfilter Up 簡單的設定工具  system-config-securitylevel

11 11 Setting Netfilter Up 簡單的設定工具  ufw (Uncomplicated Firewall) 簡化套件  Firestarter 圖型防火牆設定套件

12 12 Setting Netfilter Up 以上都是鄉民在用的工具。 專家只用: iptables

13 13 iptables 基本參數  -t : 設定表格 ( 預設為 “filter”)  -[A|D|F|I|P] -A : 增加規則 (rule) -D : 刪除第 條規則 -F : 清除所有 的規則 -I : 在第 條插入規則 -P : 設定該 的預設規則  target = ACCEPT, DROP …etc.  -j : 處理方式 (ACCEPT, DROP, REJECT…)

14 14 iptables 特徵參數  -p : Layer 4 通訊協定 (tcp, udp…etc.)  -m : match extension  -s : 來源 IP 位址 (source)  --sport : 來源 Port 埠號  -d : 目的 IP 位址 (destination)  --dport : 目的 Port 埠號

15 15 iptables 範例  當 INPUT Policy 為 DROP Policy 設定方式 iptables -P INPUT DROP 註: 任何連線連入,若無符合任何條件,即直接捨棄。 加入一條允許連入網頁伺服器的規則 iptables -A INPUT -p tcp --dport 80 -j ACCEPT 指定 Chain ( 鏈 ) 通訊協定 埠號 處理方式

16 16 iptables 比對規則的順序 ( 優先權 )  Netfilter 將規則由上而下依序比對  越上面的規則,優先權越高  一旦該連線符合某規則,即停止比對 該規則以下的規則將不會影響該連線  善用 iptables -L 檢視現有規則 必要時加上 -n 參數將所有協定與位址以數字表示 Rule 1 Rule 2 Rule 3 ……. ……. Last Rule

17 17 iptables 實戰: CentOS 5.5  自創的 Chain: RH-Firewall-1-INPUT 功能等同 INPUT 註:自 Fedora 13 改回使用 INPUT  設定檔 /etc/sysconfig/iptables  起動 / 關閉 / 重新起動 iptables 規則 /etc/init.d/iptables

18 18 iptables /etc/sysconfig/iptables # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter # 以下使用 filter 表 ( 相當 –t filter) :INPUT ACCEPT [0:0] # INPUT 鏈預設 Policy 為 ACCEPT ( 相當 –P INPUT ACCEPT) :FORWARD ACCEPT [0:0] # FORWARD 鏈預設 Policy 為 ACCEPT :OUTPUT ACCEPT [0:0] # OUTPUT 鏈預設 Policy 為 ACCEPT :RH-Firewall-1-INPUT - [0:0] # 建立 RH-Firewall-1-INPUT 鏈 ( 自創的鏈無法指定 Policy) -A INPUT -j RH-Firewall-1-INPUT # INPUT 鏈規則一律參照 RH-Firewall-1-INPUT 鏈 -A FORWARD -j RH-Firewall-1-INPUT # FORWARD 鏈規則一律參照 RH-Firewall-1-INPUT 鏈 -A RH-Firewall-1-INPUT -i lo -j ACCEPT # 接受 loopback 一切連線 -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT # 接受所有 icmp 封包 -A RH-Firewall-1-INPUT -p 41 -j ACCEPT # 接受 IPv6-in-IPv4 通道封包 -A RH-Firewall-1-INPUT -p 50 -j ACCEPT # 接受 ESP(50) -A RH-Firewall-1-INPUT -p 51 -j ACCEPT # 接受 AH(51) -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT # 接受 MDNS(Avahi) 封包 -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT # 接受網路列印協定 (ipp,631/udp) 封包 -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT # 接受網路列印協定 (ipp,631/tcp) 封包 -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 接受一切已建立與相關連線 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # 接受建立 SSH 連線 # 在此行加入新規則 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited # 拒絕一切連線並回覆 ICMP COMMIT

19 19 iptables Red Hat 系列的 -m state 哲學  State 種類 NEW, ESTABLISHED, RELATED, INVALID  TCP/Reliable Protocol State Transition 逐條接受各種條件「建立」連線 (NEW) 嗣後一切已建立 (ESTABLISHED)/ 相關 (RELATED) 連線由一條 規則同意接受 -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 優點:已建立連線的封包可不必在上述條件之後繼續 match

20 20 iptables 規則數量對效能的影響  約超過 100 條規則後會漸降低效能 Ref.: József Kadlecsik, György Pásztor “ Netfilter Performance Testing ”.

21 21 實習 1. 請試著將 SSH Listen Port 從 22 修改為 2222 ,並於防 火牆設定做相對應的修改。 註: OpenSSH Daemon 設定檔為 sshd_config. 如果在遠端電腦練習,請特別注意可能的斷線問題。 2. 請試著允許外人連入網頁伺服器 (HTTP) 。 3. 請試著禁止特定 IP 位址連入網頁伺服器。 您可以詢問隔壁同學的 IP 位址進行測試。 4. 請試著禁止從本機連到其他網站的 SSH 連線。 使用 OUTPUT Chain 5. REJECT 與 DROP 的不同處?

22 22 Appendix Layer 4 協定代碼  用於 -p 參數  /etc/protocols Service Port Number 服務的名稱與埠號  用於 --sport 與 --dport 參數  /etc/services

23 23 Reference IPTABLES(8)  man -s 8 iptables netfilter.org 鳥哥的 Linux 私房菜 - Linux 防火牆與 NAT 主機 鳥哥的 Linux 私房菜 - Linux 防火牆與 NAT 主機 圖書館藏  Linux iptables 速查手冊 = Linux iptables pocket reference / Gregor N. Purdy 原著 ; 林長毅編譯, 歐萊禮, 2004.  Linux firewalls : attack detection and response with iptables, psad, and fwsnort / by Michael Rash

24 24 實習 ( 參考答案 ) Press any key or remove the mask. 1. /etc/ssh/sshd_config: Port 2222 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 2. iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 3. iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 10.10.39.161 --dport 80 -j REJECT 10.10.39.161 為欲禁止的來源 IP 位址 4. iptables -A OUTPUT -p tcp --dport 22 -j REJECT 5. REJECT 會回覆 ICMP , DROP 則會直接捨棄封包。


Download ppt "1 Iptables and Netfilter Linux 防火牆 Wei-li Tang July 14, 2010."

Similar presentations


Ads by Google