Netman (netman@study-area.org) Linux 的防火牆設計與應用 Netman (netman@study-area.org)

Slides:



Advertisements
Similar presentations
ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 西安.
Advertisements

校園資訊安全與防火牆架設 嘉義市育人國小 黃士騰.
华特汽车配件有限公司网络改造解决方案 班级:网络技术-1101 答辩人:丁奇志 指导老师:欧阳炜昊.
朝阳区统计系统 网络基础知识培训 计算机中心
本周复习一下基本的网络知识 下周开始讲解路由器的配置方法 第四周开始到实验室做实验(主楼910,919)
Wireshark 03/03/2017.
第 8 章 IP 基礎與定址.
第7章 防 火 墙 技 术 7.1 防火墙概念 7.2 防火墙原理及实现方法 7.3 防火墙体系结构 7.4 防火墙的构成
第 4 章 网络层.
计算机网络教程(第 2 版) 第 7 章 网络互连 课件制作人:谢希仁.
中国科学技术大学 肖 明 军 《网络信息安全》 中国科学技术大学 肖 明 军
因特网 TCP/IP协议 IP路由技术 Internet接入技术 Internet服务.
《计算机网络技术》 课程整体设计介绍.
UBLink集團 裕笠科技股份有限公司 遠豐科技股份有限公司 鉅創科技股份有限公司
第10章 局域网与Internet互联 RCNA_T010.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
数据转发过程.
NetGuru 創新 網路通訊實驗教學解決方案 PART I TCP/IP通訊協定深入剖析/以NetGuru實作
海信FW3010PF防火墙介绍 北京海信数码科技有限公司
第一章 網路攻防概述.
網路基本概念與設定方法 林文宗 資管系助理教授
宽带路由器配置与应用.
网络地址转换(NAT) 及其实现.
学习目标: 1)理解包和包过滤 2)理解包过滤的方法 3)设置特殊的包过滤规则
第5章 總算走到Web伺服器 ~探險防火牆、Web伺服器~
文档维护者:白金(platinum)、陈绪(bjchenxu)
網路概論.
網路指令 講師 : 郭育倫
5.5 网桥 网桥是用来连接局域网的互连设备,工作在数据链路层。 转发局域网之间的数据帧,必要时进行帧格式转换 能隔离以太网中的碰撞
主讲:邓 志 龙 Linux网络技术 主讲:邓 志 龙
教师:陈有为 TCP/IP与Internet(A) 教师:陈有为
David liang 数据通信安全教程 防火墙技术及应用 David liang
利用 ISA Server 2004 建置應用層防護機制
华南师范大学 防火墙 华南师范大学
本章导读 Webmin简介 Webmin的安装和配置 停止和启动Webmin服务 使用Webmin配置Samba服务
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
網路安全技術期末報告 Proxy Server
计算机网络原理 计算机与信息工程分院 周文峰.
Transparent proxy 班級:資傳四A 組員:林佳辰 陳星宇 邱鈺翔
第 16 章 Internet架構.
網路伺服器應用 Linux Server Andres, Wen-Yuan Liao
網路服務 家庭和小型企業網路 – 第六章.
NetFilter IPTables.
P2P通信之 ——UDP穿越NAT方案的讨论
ARP, RARP & ICMP.
讲议: PXE 介绍及实现 Jarvis
基 礎 網 路 管 理 台東大學電算中心 郭俊賢 技術師.
第 2 章 TCP / IP 簡介.
防火墙技术介绍   严峻的网络安全形势,促进了防火墙技术的不断发展。防火墙是一种综合性的科学技术,涉及网络通信、数据加密、安全决策、信息安全、硬件研制、软件开发等综合性课题。
Windows 2003 server 進階介紹 麋鹿.
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
江西财经大学信息管理学院 《组网技术》课程组
NetST®防火墙培训教程 清华得实® 保留所有权利.
第十三章 TCP/IP 與 Internet 網路連結技術
Linux防火牆與NAT架設 2013/02/03.
2010電資院 「頂尖企業暑期實習」 經驗分享心得報告
TANet PROTOCOL ANALYSIS - WIRESHARK - 350.
ISA Server 2004.
第13章 IPv6协议.
Wireshark DNS&HTTP封包分析
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
網路安全管理 期末報告 A 許之青 24/04/2019.
NAT技术讲座 主讲:周旭 大唐电信科技股份有限公司光通信分公司 数据通信部.
IP Layer Basics, Firewall, VPN, and NAT
第10讲 Web服务.
RHCE.
Linux网络配置管理.
網際網路原理 網際網路源起與發展歷史 1968 ARPANET 1973 TCP/IP協定 1976 乙太網路,促成LAN的發展 … DNS
IP Layer Basics & Firewall
第 4 章 网络层.
Presentation transcript:

Netman (netman@study-area.org) Linux 的防火牆設計與應用 Netman (netman@study-area.org)

防火牆的工作原理 Linux 的防火牆版本 iptables 程式介紹 iptables 應用例析 常見問題及解決方案  主題大綱 防火牆的工作原理 Linux 的防火牆版本 iptables 程式介紹 iptables 應用例析 常見問題及解決方案

 1.防火牆的工作原理 所謂網路連線其實就是兩個端點的連線

 1.防火牆的工作原理 連線兩端透過封包傳遞資料

封包基本由 header 與 payload 組成 Packet 透過封裝傳遞  1.防火牆的工作原理 封包基本由 header 與 payload 組成 Packet 透過封裝傳遞

 1.防火牆的工作原理 不同協定之封包封裝

 1.防火牆的工作原理 TCP 封包之 header 內容

 1.防火牆的工作原理 IP 封包之 header 內容

Socket 是連線兩端的封包起止站 Socket 由 Address 與 Port 組成  1.防火牆的工作原理 Socket 是連線兩端的封包起止站 Socket 由 Address 與 Port 組成

1.防火牆的工作原理 每一個封包都含有一對 socket pair Source Socket:  1.防火牆的工作原理 每一個封包都含有一對 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)

TCP 連線的建立方式 (three-way-handshake) tcp header 之 bit 106-111  1.防火牆的工作原理 TCP 連線的建立方式 (three-way-handshake) tcp header 之 bit 106-111

NAT 的工作原理 透過 socket 替換達成 routing  1.防火牆的工作原理 NAT 的工作原理 透過 socket 替換達成 routing

防火牆可透過檢查封包 header(or payload) 的內容來決定封包是否能夠通過。  1.防火牆的工作原理 防火牆可透過檢查封包 header(or payload) 的內容來決定封包是否能夠通過。

防火牆常被部署在對內(信任)與對外(不信任) 網路之間的必經通道之上  1.防火牆的工作原理 防火牆常被部署在對內(信任)與對外(不信任) 網路之間的必經通道之上

DMZ 是防火牆部署中常見的設計 主要用來區隔堡壘主機,以降低入侵風險。  1.防火牆的工作原理 DMZ 是防火牆部署中常見的設計 主要用來區隔堡壘主機,以降低入侵風險。

DMZ 之設計是多樣的 安全與成本及難度成正比、與便利成反比。  1.防火牆的工作原理 DMZ 之設計是多樣的 安全與成本及難度成正比、與便利成反比。

Internet 的連線常經過多重的防火牆過濾  1.防火牆的工作原理 Internet 的連線常經過多重的防火牆過濾

2. Linux 的防火牆版本 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 的防火牆版本 kernel 2.4.x 之 ipchains ipchains 仍可編譯以模組方式載入 ipchains 不能與 iptables 同時載入 但 2.4.x 並沒提供 ipchains 可用的模組 結論: 盡量不要在 kernel 2.4.x 及以後版本使用 ipchains。

防火牆程式根據規則(rule)來處理封包 rule by rule first match policy 3. Iptables 程式介紹 防火牆程式根據規則(rule)來處理封包 rule by rule first match policy

防火牆規則收集於不同的鏈(chain)中 chain by chain all through 3. Iptables 程式介紹 防火牆規則收集於不同的鏈(chain)中 chain by chain all through

不同的鏈存在於不同的表(table)中 different table for different job table by table 3. Iptables 程式介紹 不同的鏈存在於不同的表(table)中 different table for different job table by table

3. Iptables 程式介紹 Iptables 內建三個 tables (及常用鏈): filter nat mangle INPUT FORWARD OUTPUT nat PREROUTING POSTROUTING mangle …

Linux 系統可能處理的封包 From outside From local 3. Iptables 程式介紹 Linux 系統可能處理的封包 From outside From local

Linux 系統對封包的 routing 處理 To local To outside 3. Iptables 程式介紹 Linux 系統對封包的 routing 處理 To local To outside

封包於 iptables 之穿行 When? Where?

封包於 iptables 之處理 Which table? Which chain? Concentrated

3. Iptables 程式介紹 一個非本機封包於 iptables 之處理

3. Iptables 程式介紹 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 程式介紹 常用 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 程式介紹 關於 -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 程式介紹 常用 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 程式介紹 iptables 命令行範例 拒絕新建連線進入本機: 允許從外部界面(eth0)連至本機之 web 連線: 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

4. Iptables 應用例析 常見 Linux Firewall 應用: 單一 client 允許單向連外,集中在 filter INPUT 。 單一 server 允許本機連外及特定服務,集中在 filter INPUT 。

4. Iptables 應用例析 常見 Linux Firewall 應用(續): Gateway 允許本機連外及遠端操控,集中在 filter INPUT 。 允許由內連外,集中在 filter FORWARD 。 允許由外連內之特定服務,集中在 filter FORWARD 。 需啟用 ip_forward。 NAT 允許由內連外,集中在 nat POSTROUTING 。 允許由外連內之特定服務,集中在 nat PREROUTING 。 可省略 filter FORWARD (路由不通) 。

4. Iptables 應用例析 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 應用例析 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 應用例析 4.3 單一 gateway 主機(可路由)應用:

4. Iptables 應用例析 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 應用例析 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

4. Iptables 應用例析 4.4 單一 nat 主機(不可路由)應用:

4. Iptables 應用例析 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

4. Iptables 應用例析 4.4 單一 nat 主機(不可路由)規則範例(續): # 為 DNS 作 port-mapping iptables -t nat -A PRETROUTING -i eth0 -d 211.47.56.113 \ -p udp --dport 53 -j DNAT –to 10.0.1.114 # 為 WEB 作 port-mapping -p tcp --dport 80 -j DNAT –to 10.0.1.115 # 為 SMTP 作 port-mapping -p tcp --dport 25 -j DNAT –to 10.0.1.116 # 為 SSH 作 port-mapping -p tcp --dport 22 -j DNAT –to 10.0.1.117

4.5 Transparent Proxy 應用: 免除 client 端設定 增加可控性 4. Iptables 應用例析 4.5 Transparent Proxy 應用: 免除 client 端設定 增加可控性

4. Iptables 應用例析 4.5 Transparent Proxy 規則範例: iptables 設定: iptables -t nat -A PRETROUTING -i eth0 -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

5.常見問題及解決方案 5.1 auth 協定所導至的服務延 解決方案 視服務程式需求而定 由 server 端發起 連至 client 端 tcp/113 解決方案 允許 auth 連線 -p tcp --dport 113 -j ACCEPT 拒絕 auth 連線 -p tcp --dport 113 -j REJECT

5.2 ftp 服務連線無法建立資料通道 ftp 連線分兩個通道進行: 5.常見問題及解決方案 5.2 ftp 服務連線無法建立資料通道 ftp 連線分兩個通道進行:

5.2 ftp 服務連線無法建立資料通道 防火牆會擋掉由外之內的建立連線: 5.常見問題及解決方案 5.2 ftp 服務連線無法建立資料通道 防火牆會擋掉由外之內的建立連線:

5.2 ftp 服務連線無法建立資料通道 使用 passive mode 可穿越: 5.常見問題及解決方案 5.2 ftp 服務連線無法建立資料通道 使用 passive mode 可穿越:

5.2 ftp 服務連線無法建立資料通道 或搭配 ip_conntrack_ftp 模組亦可以解決: 5.常見問題及解決方案 5.2 ftp 服務連線無法建立資料通道 或搭配 ip_conntrack_ftp 模組亦可以解決:

5.3 NAT 之下的 ftp 連線 NAT 只修改了 tcp/ip header ,並沒修改 ftp packet: 5.常見問題及解決方案 5.3 NAT 之下的 ftp 連線 NAT 只修改了 tcp/ip header ,並沒修改 ftp packet:

5.常見問題及解決方案 5.3 NAT 之下的 ftp 連線 使用 ip_conntrack_ftp, ip_nat_ftp 及 --state RELATED 來解決:

5.4 在同一 subnet 裡的 DNAT Source Socket 沒被修改,及發生 ICMP host-redirect : 5.常見問題及解決方案 5.4 在同一 subnet 裡的 DNAT Source Socket 沒被修改,及發生 ICMP host-redirect :

5.常見問題及解決方案 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.常見問題及解決方案 5.6 Subnet 太小不便切割 使用 proxy arp 降低浪費: echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp

5.7 Transparent Firewall 的應用 減少 IP 浪費 & 簡化部署難度 提高防禦安全(本身無 IP 可連接) 5.常見問題及解決方案 5.7 Transparent Firewall 的應用 減少 IP 浪費 & 簡化部署難度 提高防禦安全(本身無 IP 可連接)

5.常見問題及解決方案 5.7 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.常見問題及解決方案 5.7 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-* 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

謝謝﹗ Q & A