520 likes | 693 Views
第 十二 章. 代理 / 防火墙. 目标. 了解网络中防火墙的基本概念及其分类 了解代理服务的概念和分类 掌握使用 iptables 工具建立包过滤防火墙的方法 了解网络地址转换与路由的概念 掌握配置网络地址转换的方法 了解 squid 代理服务器的工作机制及其功能 掌握使用 squid 建立代理服务器的方法. 基本概念. 应用层代理 网络层防火墙 防火墙与代理的管理. 受保护网络. 路由器. 外部网络. 防火墙概念. 防火墙. 安全连接. 不安全连接. 不安全连接. 上层程序. 服务程序. 客户程序. 应用层. 应用代理. 应用层.
E N D
第十二章 代理/防火墙
目标 • 了解网络中防火墙的基本概念及其分类 • 了解代理服务的概念和分类 • 掌握使用iptables工具建立包过滤防火墙的方法 • 了解网络地址转换与路由的概念 • 掌握配置网络地址转换的方法 • 了解squid代理服务器的工作机制及其功能 • 掌握使用squid建立代理服务器的方法
基本概念 • 应用层代理 • 网络层防火墙 • 防火墙与代理的管理
受保护网络 路由器 外部网络 防火墙概念 防火墙 安全连接 不安全连接 不安全连接
上层程序 服务程序 客户程序 应用层 应用代理 应用层 传输层 传输层 传输层 网络层 网络层 网络层 链路层 链路层 链路层 应用层代理 TCP/IP协议模型 受保护客户端 代理服务器 外部网络
上层程序 服务程序 客户程序 应用层 应用代理 应用层 传输层 传输层 传输层 网络层 网络层 网络层 链路层 链路层 链路层 网络层防火墙 TCP/IP协议模型 外部网络 网络层防火墙 受保护网络
防火墙与代理的管理 • 防火墙管理 • Ipfwadm • Ipchains • Netfilter/iptables • 代理管理 • apache • squid • socks
iptables • iptables基本原理 • NAT与路由 • iptables安装配置
TCP/IP协议模型 netfilter框架结构 应用层 传输层 网络层 链路层 NF_IP_LOCAL_IN NF_IP_LOCAL_OUT 路由 NF_IP_PRE_ROUTING 路由 NF_IP_FORWARD NF_IP_POST_ROUTING 数据输出 iptables基本原理 • netfilter 包过滤检查框架 数据输入
PREROUTING FORWARD POSTROUTING INPUT OUTPUT 上层应用程序(接收或发送网络数据) iptables基本原理(Cont.) • iptables 安全规则管理工具 • 五条内建规则链,对应于netfilter钩子函数
iptables基本原理(Cont.) • iptables规则表 • Filter INPUT、FORWARD、OUTPUT • NAT PREROUTING、POSTROUTING、INPUT、OUTPUT • Mangle OUTPUT、PREROUTING
路由为A到B寻 找一条最小开 销的连接线路 A 路由器 互联网 B NAT与路由 • 路由
192.168.0.1202.13.6.10 192.168.0.1202.13.6.10 A 192.168.0.1 B 211.35.27.9 NAT 互联网 路由器 NAT与路由(Cont.) • NAT
NAT与路由(Cont.) • NAT的使用 • NAT的类型 • 静态网络地址转换 • 动态网络地址转换 • 端口转换 • iptables实现NAT • SNAT • DNAT • MASQUERADE
iptables安装配置 • 安装 • 配置
安装 • 源代码编译安装 • 下载 • 编译安装 • RPM包安装 • http://www.iptables.org/files/iptables-x.x.x.tar.bz2 • ftp://ftp.netfilter.org/pub/iptables/iptables-x.x.x.tar.bz2 rpm -ivh iptables-1.2.7a.i386.rpm
配置 • 语法 • 可以简化成以下形式: • iptables [-t table] CMD [chain][rule-amtcher][-j target] • iptables -[AD] chain rule-specification [options] • iptables -[RI] chain rulenum rule-spec [options] • iptables -D chain rulenum [options] • iptables -[LFZ] [chain] [options] • iptables -[NX] chain • iptables -E old-chain-name new-chain-name • iptables -P chain target [options] • iptables -h (print this help information)
配置(Cont.) 规则操作参数说明: • -A:在所选择的链末添加一条或多条规则 • -D:从所选链中删除一条或多条规则 • -R:从选中的链中取代一条规则 • -I:从所选链中插入一条或更多规则 • -L:显示所选链的所有规则 • -F:清空所选链 • -Z:把所有链的包及字节的计数器清空 • -N:根据给出的名称建立一个新的用户定义链 • -X:删除指定的用户自定义链 • -P:设置链的目标规则 • -E:根据用户给出的名子对指定链进行冲命名
配置(Cont.) • 规则选项
配置(Cont.) • 规则扩展选项 • tcp扩展 • udp扩展 • icmp扩展 • mac扩展 • limit扩展 • multiport扩展
配置(Cont.) • 目标扩展 • ACCEPT:让包通过 • DROP:把包拒绝 • REJECT:把包丢弃,并向发送者发送ICMP消息告知包被丢弃。 • SNAT:只适用于nat表的POSTROUTING链。它规定修改包的 源地址,停止对规则的检查。 • MASQUERADE :只用于转发链和用户定义链。包被伪装成从 本地主机发出,回应的包自动解伪。 • REDIRECT:只用于输入链和用户定义链。包被重定向到本地,尽管它们原是要发送给一个远地主机。可使用参数,指定重定向端口。缺省为0,表示使用包的目的地址端口做为重定向端口。
配置(Cont.) iptables –A INPUT –p tcp iptables –p tcp –sport 80 iptables –a FORWARD –p tcp –tcp-flags ALL SYN,ACK iptables –A INPUT –m limit –limit 300/hour iptables –A INPUT –m --state RELATED,ESTABLISHED
配置(Cont.) • 包过滤配置
配置(Cont.) • NAT配置 • DNAT • SNAT • MASQUERADE iptables -t nat -A PREROUTING -t tcp -d 10.25.0.7 -dport 80 -i eth1 -j DNAT --to 192.168.1.2:80 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 10.25.0.7 iptables -t nat -A POSTROUTING -o ppp0 -jMASQUERADE
缓存代理squid • squid工作机制与基本功能 • squid组成成分 • squid安装配置
代理进程 ? Y N 远端服务器 数据缓存 代理服务器 squid工作机制与基本功能 • 工作机制 客户端
squid工作机制与基本功能(Cont.) • 基本功能 • 代理服务:HTTP、FTP、GOPHER、SSL 等 • 高速缓存 • DNS查询缓存 • 级联服务支持 • 透明代理 • ACL支持
squid组成成分 • 代理进程 • squid 代理守护进程 • unlinkd 清理缓存数据 • RunCache squid进程的守护进程 • dnsserver 处理客户端域名查询进程 • 数据缓存目录 • 默认/var/spool/squid
squid安装配置 • 安装 • 配置 • 启动 • 访问 • 其它配置 • 透明代理
安装 • 源代码包安装 • 下载 • 编译安装 • RPM包安装 • 编译参数 --prefix=/usr/local/squid --disable-internal-dns --enable-storeio=ufs,null --enable-default-err-languages="Simplify_Chinese“ --enable-linux-netfilter http://www.squid-cache.org rpm -ivh squid-2.5.STABLE1-2.i386.rpm
配置 • http_port 192.168.0.2:3128 • cache_mgr admin@proxy.com • http_access allow all • cache_dir ufs /var/spool/squid 100 16 256
启动 • 使用/etc/rc.d/init.d/squid脚本启动代理服务器
访问 • 客户端设置 IE工具Internet 选项连接局域网设置代理服务器 • 直接在地址栏中输入访问地址进行访问
其它配置 • 缓存空间 • cache_dir Type Directory-Name Fs-specific-data [options] • 用户访问控制 • acl aclname acltype string1 ... • acl aclname acltype "file" ... • 进程管理 • cache_effective_user • cache_effective_group
允许列表中的机器访问 Internet • 允许列表中的机器访问 Internet。 • acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30 • http_access allow allowed_clients • http_access deny !allowed_clients • 这个规则只允许 IP 地址为 192.168.0.10、192.168.0.20 及 192.168.0.30 的机器访问Internet,其他 IP 地址的机器则都被拒绝访问
限制访问时段 • acl allowed_clients src 192.168.0.1/255.255.255.0 • acl regular_days time MTWHF 10:00-16:00 • http_access allow allowed_clients regular_days • http_access deny !allowed_clients • 这个规则允许子网192.168.0.1中的所有客户机在周一到周五的上午10:00到下午4:00 访问 Internet。
屏蔽含有某些特定字词 • acl allowed_clients src 192.168.0.1/255.255.255.0 • acl banned_sites url_regex dummy fake • http_access deny banned_sites • http_access allow allowed_machibes
自定错误反馈信息 • acl allowed_clients src 192.168.0.1/255.255.255.0 • acl banned_sites url_regex abc.com *()(*.com • http_access deny banned_sites • deny_info ERR_BANNED_SITE banned_sites • http_access allow allowed_clients
telnet 客户端 telnet 服务器 http 客户端 WWW 服务器 客户端 网关 外部服务器 透明代理 • 透明代理 代理 进程
透明代理(Cont.) • 透明代理网络图
本章总结 • 网络防火墙是保护用户网络安全的一种必要手段,它通过在网络数据传输的不同层次对数据包进行检测处理,对符合网络安全要求的数据包放行,而对不符合要求的数据包进行拒绝,很大程度上保证了网络的安全可靠
本章总结(Cont.) • 网络防火墙分为网络层防火墙和应用层代理服务器 • 网络层防火墙在TCP/IP网络结构的IP层工作,能够对通过IP路由传送的网络数据包的包头进行检测,根据包头中的信息来匹配防火墙规则,对连接进行相应处理。处理效率高,不能对网络数据进行检测. • 应用层代理服务器工作在TCP/IP网络协议结构的应用层,向受保护网络用户提供连接外部网络的代理服务,保证内外网之间的安全分隔。可对网络传送的内容进行检测,保证更多的安全控制方案,但处理效率较低.
本章总结(Cont.) • 基于Linux平台的网络层防火墙是netfilter/iptables防火墙框架系统。netfilter是嵌入在2.4内核的IP协议部分的防火墙框架,它在IP处理层设置了5个钩子,分别在网络数据包进入系统路由前、进入系统路由后、转发前、本地输出路由前、输出路由后进行检测处理。而iptables则是防火墙规则设置工具,它向netfilter提供网络数据包检测处理的规则,以完成管理员对防火墙的防护要求
本章总结(Cont.) • iptables包括3个表和5条内建的规则链,对应于netfilter的五个检测点,用户也可以新建自己的规则链,被内建规则链作为目标调用。iptables通过这些规则链完成了包安全过滤、网络地址转换、安全策略设置及其它功能 • squid是一个应用层代理服务器,能够为用户提供HTTP、FTP、GOPHER、WAIS、SSL的代理和缓存服务。并且能和iptables配合建立透明代理服务器。squid服务器的主要配置文件为/etc/squid/squid.conf
实验目标 • 学会iptables的安装配置 • 利用iptables设置防火墙规则 • 安装配置squid服务器 • 利用squid服务器实现正反向的代理缓存服务
实验完成标准1 • 执行新安装的iptables命令成功
实验完成标准2 • telnet连接被防火墙拒绝
实验完成标准2(Cont.) • ftp连接被防火墙拒绝
实验完成标准3 • 成功执行新安装的squid命令