Linux firewall

  • 805 views
Uploaded on

Linux 防火牆原理及 iptables 操作介紹。

Linux 防火牆原理及 iptables 操作介紹。

More in: Internet
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
805
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
11
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Linux 的防火牆設計 與應用 Netman ( netman@study-area.org )
  • 2. 講師簡介 姓名 陳思永 (Kenny Chen) 學歷 澳洲國立新南威爾斯州理工技術學院 ( 雪梨理工 ---SIT, NSW TAFE) 專長 – 系統管理: Linux Administration – 各種 Internet/Intranet servers 的建置 , Network Security, 專長 Open Source solution 。 – 網路系統設計佈署及維護 – MIS 系統規劃整合與管理 專業認證 LPIC, RHCE, NCLP
  • 3. 陳思永 (Kenny Chen) Linux 授課經驗 • 曾授課地點 :  巨匠電腦高雄認證中心、巨匠電腦台南認證中心  聯成電腦教育學苑 ( 台南 )  聚碩科技教育訓練中心 ( 高雄啟迪 )  奇科電腦 ( 台北 )  網虎國際集團 ( 高雄 ) • 曾授課內容 :  LPIC / NCLP / RHCE 國際認證課程 IBM Linux Linux Enterprise Security  Xlinux 1.0 System & Network Administrator
  • 4. 主題大綱 1. 防火牆的工作原理 2. Linux 的防火牆版本 3. Iptables 程式介紹 4. Iptables 應用例析 5. 常見問題及解決方案
  • 5.   防火牆的工作原理 Part I
  • 6. 所謂網路連線其實就是兩個端點的連線  1. 防火牆的工作原理
  • 7. 連線兩端透過封包 (packet) 傳遞資料  1. 防火牆的工作原理
  • 8. ● 封包基本由 header 與 payload 組成 ● Packet 透過封裝傳遞  1. 防火牆的工作原理
  • 9. 不同協定之封包封裝  1. 防火牆的工作原理
  • 10. TCP 封包之 header 內容     1. 防火牆的工作原理
  • 11. IP 封包之 header 內容    1. 防火牆的工作原理
  • 12. ● Socket 是連線兩端的封包起止站 ● Socket 由 Address 與 Port 組成  1. 防火牆的工作原理
  • 13. 每一個封包都含有一對 socket pair ● Source Socket: - Source Port (TCP Header bit 0-15) - Source Address (IP Header bit 96-127) ● Destination Socket: - Destination Port (TCP Header bit 16-31) - Destination Address (IP Header bit 128-159)  1. 防火牆的工作原理
  • 14. TCP 連線的建立方式 (three-way-handshake) ● TCP header 之 bit 106-111  1. 防火牆的工作原理
  • 15. NAT 的工作原理 ● 透過 socket 替換達成 routing  1. 防火牆的工作原理
  • 16. 防火牆原理 透過檢查封包 header(or payload) 的內容來 決定封包是否能夠通過  1. 防火牆的工作原理
  • 17. 防火牆常被部署在對內 ( 信任 ) 與對外 ( 不信任 ) 網路之間的必經通道之上  1. 防火牆的工作原理
  • 18. DMZ 是防火牆部署中常見的設計 ● 主要用來區隔堡壘主機,以降低入侵風險。  1. 防火牆的工作原理
  • 19. DMZ 之設計是多樣的 ● 安全與成本及難度成正比、與便利成反比。  1. 防火牆的工作原理
  • 20. Internet 的連線常經過多重的防火牆過濾  1. 防火牆的工作原理
  • 21. Linux 的防火牆版本 Part II
  • 22. Linux 的防火牆版本以 kernel 版本為別 - Kernel 2.0.x: ipfwadm ( 搭配模組 ip_fw_*.o) - Kernel 2.2.x: ipchains ( 搭配模組 ip_masq_*.o) - Kernel 2.4.x (2.6.x): iptables ( 搭配模組 ip*.o, ip_nat_*.o, ip_conntrack_*.o) 2. Linux 的防火牆版本
  • 23. * kernel 2.4/6.x 之 ipchains ● ipchains 仍可編譯以模組方式載入 ● ipchains 不能與 iptables 同時載入 ● 但沒提供 ipchains 可用的模組 結論: 盡量不要在 kernel 2.4/6.x 及以後版本使用 ipchains 2. Linux 的防火牆版本
  • 24. Iptables 程式介紹 Part III
  • 25. 防火牆程式根據規則 (rule) 來處理封包 ● rule by rule ● first match ● policy 3. Iptables 程式介紹
  • 26. 防火牆規則收集於不同的鏈 (chain) 中 ● chain by chain ● all through 3. Iptables 程式介紹
  • 27. 鏈存在於不同的表 (table) 中 ● different table for different job ● table by table 3. Iptables 程式介紹
  • 28. Iptables 內建三個 tables ( 及常用鏈 ) : ● filter INPUT FORWARD OUTPUT ● nat PREROUTING POSTROUTING OUTPUT ● mangle PREROUTING OUTPUT … 3. Iptables 程式介紹
  • 29. Linux 系統對封包的 routing 處理 ● To local ● To outside 3. Iptables 程式介紹
  • 30. 封包於 iptables 之穿行 ● When? ● Where? 3. Iptables 程式介紹
  • 31. 封包於 iptables 之處理 ● Which table? ● Which chain? 3. Iptables 程式介紹
  • 32. 一個非本機封包於 iptables 之處理 3. Iptables 程式介紹
  • 33. iptables 命令格式: iptables [-t table] -CMD CHAIN rule -j TARGET 常見 command : ● 列視規則: -L [CHAIN] [-n] ● 增加規則: -A CHAIN rule ● 插入規則: -I CHAIN [ln] rule ● 替換規則: -R CHAIN ln rule ● 刪除規則: -D CHAIN <ln | rule> ● 清空整鏈: -F [CHAIN] ● 設定原則: -P CHAIN <DROP | ACCEPT> --------------------- ● 建立自定鏈: -N C_CHAIN ● 刪除自定鏈: -X C_CHAIN 3. Iptables 程式介紹
  • 34. 常用 iptables 規則內容: -i interface (only in PREROUTING, INPUT, FORWARD) -o interface (only in POSTROUING, OUTPUT, FORWARD) -s src.addr (can be ip, net/mask, hostname) -d dest.addr (can be ip, net/mask, hostname) -p proto (can be TCP, UDP, ICMP, ALL) --sport src:port (only with -p TCP & -p UDP, can be port, port:range) --dport dest:port (only with -p TCP & -p UDP, can be port, port:range) --icmp-type (only with -p ICMP, can be type, type/error_code) -j TARGET (depends on table & CHAIN, can be ACCEPT, DROP, SNAT, DNAT, MASQUERADE, REDIRECT, RETURN… etc. ) * tips: 規則內容越多,符合之封包越少。反之,則越多 3. Iptables 程式介紹
  • 35. 關於 -m (match) 之應用: -m state --state <STATE> NEW ( 新建連線 ) ESTABLISHED ( 已成功建立之連線 ) RELATED ( 新建連線,但由已建立連線所引發 ) INVALID ( 非法連線 ) UNKOWN ( 不明連線 ) -m mac --mac-source <MAC> ( 比對封包的來源 MAC 位址,僅限 local subnet 。 ) -m limit --limit <nu/unit> [--limit-burst <burst>] ( 比對每一時間單位最大封包數,及觸發限制的數量。 ) -m owner --uid-owner <uid> ( 比對本機使用者 id 。 ) … 3. Iptables 程式介紹
  • 36. 常用 iptables 之 TARGET : ● filter TARGET ACCEPT: 允許封包通過當前的鏈 DROP: 拒絕封包通過當前的鏈 REJECT: 同 DROP ,但會送回 icmp 通知 ● nat TARGET SNAT: 修改 source socket DNAT: 修改 destination socket MASQUERADE: 動態修改 source socket ● others REDIRECT: 將連線導至本機行程 RETURN: 結束自定鏈返回原鏈之下一規則 3. Iptables 程式介紹
  • 37. iptables 命令行範例 ● 拒絕新建連線進入本機: iptables -t filter -A INPUT -m state --state NEW -j DROP ● 允許從外部界面 (eth0) 連至本機之 web 連線: iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT ● 允許穿過本機之確認連線 ( 為內部發起之連線 ) : iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT ● 將內部 (192.168.1.x) 送至 Internet 的封包作偽裝: iptables -t nat -A POSRTOUTING -o eth0 -s 192.168.1.0/24 --sport 1024:65535 -j MASQUERADE 3. Iptables 程式介紹
  • 38. Iptables 應用例析 Part IV
  • 39. 常見 Linux Firewall 應用: 單一 client 允許單向連外,集中在 filter INPUT 。 單一 server 允許本機連外及特定服務,集中在 filter INPUT 。 4. Iptables 應用例析
  • 40. 常見 Linux Firewall 應用 ( 續 ) : Gateway ● 允許本機連外及遠端操控,集中在 filter INPUT 。 ● 允許由內連外,集中在 filter FORWARD 。 ● 允許由外連內之服務,集中在 filter FORWARD 。 ● 需啟用 ip_forward 。 4. Iptables 應用例析
  • 41. 常見 Linux Firewall 應用 ( 續 ) : NAT ● 允許本機連外及遠端操控,集中在 filter INPUT 。 ● 允許由內連外,集中在 nat POSTROUTING 。 ● 允許由外連內之服務,集中在 nat PREROUTING 。 ● 需啟用 ip_forward 。 ● 可省略 filter FORWARD ( 路由不通 ) 。 4. Iptables 應用例析
  • 42. 4.1 單一 client 主機規則範例: # 清空規則 iptables -F # 接受確認連線 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 接受 loopback 連線 iptables -A INPUT -i lo -j ACCEPT # 除 ping 外,接受 ICMP 封包 iptables -A INPUT -p icmp --icmp-type 8 -j DROP iptables -A INPUT -p icmp -j ACCEPT # 其餘全部封殺 iptables -A INPUT -j DROP 4. Iptables 應用例析
  • 43. 4.2 單一 server 主機 (web) 規則範例: iptables -F iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT # 接受 www 之連線 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -j DROP 4. Iptables 應用例析
  • 44. 4.3 單一 gateway 主機 ( 可路由 ) 應用: 4. Iptables 應用例析
  • 45. 4.3 單一 gateway 主機 ( 可路由 ) 規則範例: iptables -F iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT # 允許信任操作主機連線 iptables -A INPUT -i eth1 -s 211.47.56.117 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -j DROP # 允許確認連線 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # 允許內部連線 iptables -A FORWARD -m state --state NEW -i eth1 -o eth0 -s 211.47.56.112/29 -j ACCEPT 4. Iptables 應用例析
  • 46. 4.3 單一 gateway 主機 ( 可路由 ) 規則範例 ( 續 ) : # 允許 DNS 服務連線 iptables -A FORWARD -p udp --dport 53 -d 211.47.56.114 -j ACCEPT # 允許 WEB 服務連線 iptables -A FORWARD -p tcp --dport 80 -d 211.47.56.115 -j ACCEPT # 允許 SMTP 服務連線 iptables -A FORWARD -p tcp --dport 25 -d 211.47.56.116 -j ACCEPT # 允許 SSH 服務連線 iptables -A FORWARD -p tcp --dport 22 -d 211.47.56.117 -j ACCEPT # 其餘拒絕 iptables -A FORWARD -j DROP # 開放封包轉發 echo 1 > /proc/sys/net/ipv4/ip_forward 4. Iptables 應用例析
  • 47. 4.4 單一 nat 主機 ( 不可路由 ) 應用: 4. Iptables 應用例析
  • 48. 4.4 單一 nat 主機 ( 不可路由 ) 規則範例: iptables -F iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -i eth1 -s 10.0.1.117 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -j DROP # 為內部連線作封包偽裝 iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward 4. Iptables 應用例析
  • 49. 4.4 單一 nat 主機 ( 不可路由 ) 規則範例 ( 續 ) : # 為 DNS 作 port-mapping iptables -t nat -A PREROUTING -i eth0 -d 211.47.56.113 -p udp --dport 53 -j DNAT --to 10.0.1.114 # 為 WEB 作 port-mapping iptables -t nat -A PREROUTING -i eth0 -d 211.47.56.113 -p tcp --dport 80 -j DNAT --to 10.0.1.115 # 為 SMTP 作 port-mapping iptables -t nat -A PREROUTING -i eth0 -d 211.47.56.113 -p tcp --dport 25 -j DNAT --to 10.0.1.116 # 為 SSH 作 port-mapping iptables -t nat -A PREROUTING -i eth0 -d 211.47.56.113 -p tcp --dport 22 -j DNAT --to 10.0.1.117 4. Iptables 應用例析
  • 50. 4.5 Transparent Proxy 應用: ● 免除 client 端設定 ● 增加可控性 4. Iptables 應用例析
  • 51. 4.5 Transparent Proxy 規則範例: ● iptables 設定: iptables -t nat -A PRETROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128 ● squid 設定 (squid.conf) : httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on NEW: … 3128 transparent 4. Iptables 應用例析
  • 52. 常見問題及解決方案 Part V
  • 53. 5.1 auth 協定所導至的服務延 ● 視服務程式需求而定 ● 由 server 端發起 ● 連至 client 端 tcp/113 * 解決方案 ● 允許 auth 連線 -p tcp --dport 113 -j ACCEPT ● 拒絕 auth 連線 -p tcp --dport 113 -j REJECT 5. 常見問題及解決方案
  • 54. 5.2 ftp 服務連線無法建立資料通道 ● ftp 連線分兩個通道進行: 5. 常見問題及解決方案
  • 55. 5.2 ftp 服務連線無法建立資料通道 ● 防火牆會擋掉由外之內的建立連線: 5. 常見問題及解決方案
  • 56. 5.2 ftp 服務連線無法建立資料通道 ● 使用 passive mode 可穿越: 5. 常見問題及解決方案
  • 57. 5.2 ftp 服務連線無法建立資料通道 ● 或搭配 ip_conntrack_ftp 模組亦可以解決: 5. 常見問題及解決方案
  • 58. 5.3 NAT 之下的 ftp 連線 ● NAT 只修改了 tcp/ip header ,並沒修改 ftp packet : 5. 常見問題及解決方案
  • 59. 5.3 NAT 之下的 ftp 連線 ● 使用 ip_conntrack_ftp, ip_nat_ftp 及 --state RELATED 來解決: 5. 常見問題及解決方案
  • 60. 5.4 在同一 subnet 裡的 DNAT ● Source Socket 沒被修改,及發生 ICMP host-redirect : 5. 常見問題及解決方案
  • 61. 5.4 在同一 subnet 裡的 DNAT ● 同時對 Source Socket 作修改即可解決: iptables -t nat -A POSTROUTING -d 10.1.2.4 -s 10.1.2.0/24 -j SNAT --to 10.1.2.254 * 其他方法: DNS 5. 常見問題及解決方案
  • 62. 5.5 Subnet 太小不便切割 ● 使用 proxy arp 降低浪費 : echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp 5. 常見問題及解決方案
  • 63. 5.6 Transparent Firewall 的應用 ● 減少 IP 浪費 & 簡化部署難度 ● 提高防禦安全 ( 本身無 IP 可連接 ) 5. 常見問題及解決方案
  • 64. 5.6 Transparent Firewall 的設定 ● 編譯核心修補,設為 bridge ( 以 kernel 2.4.25 為例 ) : cd /usr/src/linux-2.4.25 wget http://heanet.dl.sourceforge.net/sourceforge/ebtables/ebtables-brnf-5_vs_2.4.25.diff.gz zcat ebtables-brnf-5_vs_2.4.25.diff.gz | patch -p1 ● 將 802.1d Ethernet Bridging 與 Bridge: ebtables (NEW) 及其 子項目全選 ● 重編 kernel ,並以之開機。 ● 載入模組: modprobe bridge 5. 常見問題及解決方案
  • 65. 5.6 Transparent Firewall 的設定 ( 續 ): ● 安裝 bridge-utils ( 以 rh9 為例 ) : wget http://bridge.sourceforge.net/bridge-utils/bridge- utils-0.9.6.tar.gz tar zxvf bridge-utils-0.9.6.tar.gz cp bridge-utils/bridge-utils.spec /usr/src/redhat/SPECS/ cp bridge-utils-0.9.6.tar.gz /usr/src/redhat/SOURCES/ rpmbuild -bb /usr/src/redhat/SPECS/bridge-utils.spec rpm -ivh /usr/src/redhat/RPMS/i386/bridge-utils-* *NEW: yum install bridge-utils 5. 常見問題及解決方案
  • 66. 5.6 Transparent Firewall 的設定 ( 續 ): brctl addbr mybridge brctl addif mybridge eth0 brctl addif mybridge eth1 ifconfig eth0 0.0.0.0 promisc ifconfig eth1 0.0.0.0 promisc echo “1” > /proc/sys/net/ipv4/ip_forward 5. 常見問題及解決方案
  • 67. 謝謝﹗ Q & A