




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Packet filtering with Linux作者:hwhuwww 翻译 2004-10-05 18:23:13 来自:linuxfocus正文begin 防火墙在网络中的位置数据流通过标准链 Gateway, Proxy-Arp 和 Ethernet Bridge ? 过滤基本规则 Netfilter 安装实例 涉及资料 HEAD OF THE ARTICLE Gateway, Proxy-Arp 和 Ethernet Bridge ?过滤机构可以被考虑成一张能够过滤有害的数据包的网。最重要要的是找到合适大 小的网孔和安装他的正确位置。为了能够完全的过滤数据包,这个过滤机构必须无缝的插入他所要保护的网络和“其 余的世界”之间。在实践上,这个可以用一台带有两块网络接口(通常是以太网卡)的 设备来完成 ,一个连接内部的网络,另一块连接外部作为路由转发。这种方式,通信 将不得不通过防火墙,这样防火墙可以阻止他们或不依照他们的内容进行发送。设备运行过滤机构可以被配置成3种不同的方式:- simple Gateway: 这是最普通的配置。设备被用作两个网络或子网之间的网关。在本地网络内的电脑将使 用防火墙代替他们的默认路由。- Proxy-ARP Gateway: 前面那个配置暗示着把一个网络划分成两个子网,这个 会造成一半可利用的 ip 地址失效了。这是有点恼人的。举个例子,一个16个地址的子 网(28位子网掩码),除去网络地址和广播地址只有14个是有效的,子网添加一位,有 效地址将从14减少到6(8个ip减去网络地址和广播地址)。当你不能够接受失去一半有 效ip地址的情况,你可以使用这种技术,我们将会在稍后的文章里解释他。此外,这种 技术不需要对网络中存在的路由器和被保护的电脑做的任何改变。 - Ethernet bridge: 作为一个以太网网关安装 (不是ip网关),使过滤机构对于 其他设备来说是透明的。因此不分配ip地址给以太网接口是妥当的。于是,设备将不会 被ping,traceroute等工具发现。让我们注意一个数据包过滤执行,在2.4.x内核还 还没完成前提下,基于这个端口的特性需要2.2.x的内核。 过滤基本规则既然我们知道什么地方安装过滤器,那么我们必须定义什么应该阻止什么应该接受。这里有两种方式去配置一个过滤器:- 好的方法:没有数据被允许通过,除了规则允许的。- 坏的方法:(不幸的是经常被使用)明确地阻止被禁止数据包,所有的数据包被接受。这有一个简单的解释:在第一种情况,遗忘规则导致服务不完全工作或根本不工作。通 常,这会被很快的注意到,然后添加适当的规则使服务再运行起来。在第二中情况,遗忘一个规则会造成一个潜在的弱点,如果我们去找,很难去发现. Netfilter在linux 2.4内核上使用的最多的包过滤软件是Netfilter:它很好的取代了使 用在2.2内核的ipchains。Netfilter由两部分组成:内核支持这需要编译你的 内核和在你系统中可用到的iptables命令 安装实例一个实例的注释比一段长时间的演讲要好的多,下面我们将描述怎样去安装和配置 一个过滤器设备。首先,设备要先配置成一个网关,使用Proxy-ARP来限定ip地址的 数量,我们将配置过滤系统。著者偏好选择了Debian发布版来构建一个这样的系统,任何linux发行版都可以。首先,检查你的内核已经支持Netfilter。如果是的,引导信息将包含:ip_conntrack (4095 buckets, 32760 max)ip_tables: (c)2000 Netfilter core team另外,当Netfilter支持被激活后你不得不反编译内核。相应的选项将会在 Networking Options菜单里的Network Packet Filtering 子菜单里找到。从Netfilter Configuration选项,选择你需要的。 如果不能确定,你可以全部选择。此外,最好把Netfilter包含至内核,而不是作为加 载模块。如果因为一些原因或者Netfilter一个模块出错或不能加载,过滤器将不能工 作,我们不更多的谈论关于这么做所冒的风险了。你也应该安装iproute2包(这在最后是不必要做的,但是我们的实例将使 用从它允许我们建立配置脚本文件开始。)对于Debian,apt-get install iproute 命令足够了。其他的发行版,获得相应的软件包。用通常的方法,或从源程序安装。你可以在下面的 地址下载到相应的软件包:ftp:/ftp.inr.ac.ru/ip-routing/现在对两块以太网卡配置。我们必须注意Liunx的内核,自动检测硬件程序到检测 网络卡的这一步时就会发现它。可是,仅仅第一块被探测到。一个简单的解决方案是在lilo.conf文件里添加一句话:append=ether=0,0,eth1现在,我们配置以太网接口。我们选择对两块网卡使用同一个ip地址的方法,因而 可以节约一个地址。我们假定有一个6/28的子网。它的地址从6到11 路由器的地址是7,我们的过滤器设备的地址的8。eth0 接口之间如果没有通过hub或switch相连,那么将通过RJ45双绞线直接连接路由器; eth1接口将连接hub或switch, 通过他它到达本地网络设备。因此,两个接口将会被配置成下列参数:address : 8netmask : 40network : 6broadcast: 11gateway : 7接下来,我们使用下面的脚本,它必须在网卡初始化配置以后运行。net.vars: configuration variablesPREFIX=10.1.2DMZ_ADDR=$PREFIX.96/28# Interface definitionsBAD_IFACE=eth0DMZ_IFACE=eth1ROUTER=$PREFIX.97net-config.sh: network configuration script#!/bin/sh# Comment out the next line to display the commands at execution time# set -x# We read the variables defined in the previous filesource /etc/init.d/net.vars# We remove the present routes from the local networkip route del $PREFIX.96/28 dev $BAD_IFACEip route del $PREFIX.96/28 dev $DMZ_IFACE# We define that the local network can be reached through eth1# and the router through eth0.ip route add $ROUTER dev $BAD_IFACEip route add $PREFIX.96/28 dev $DMZ_IFACE# We activate Proxy-ARP for both interfacesecho 1 /proc/sys/net/ipv4/conf/eth0/proxy_arpecho 1 /proc/sys/net/ipv4/conf/eth1/proxy_arp# We activate the IP forwarding to allow the packets coming to one card# to be routed to the other one.echo 1 /proc/sys/net/ipv4/ip_forward让我们返回Proxy-ARP机制对我们的配置所必需的。当一个设备在同一个网段里同另一台设备会话时,他需要知道以太网地址(或者MAC地 址或者硬件地址)相应的ip地址。当源设备广播请求”ip地址位的MAC地址是 什么?”目标设备必须回答。这里有一个“会话”的实例,是通过tcpdump检测到的:- the request: the machine 2 asks the MAC address corresponding to the IP address IP 0.19:46:15.702516 arp who-has 0 tell 2- the answer: the machine 0 provides its card number.19:46:15.702747 arp reply 0 is-at 0:a0:4b:7:43:71通过这个简略的解释将引导我们到达目的地:ARP请求通过广播传播,因此它被限 定在同一个物理网段里。因此,受保护的设备想要去查找路由器MAC地址的请求将会被 过滤器设备阻止。激活着的Proxy-ARP的特色就是解决这个问题,它将传 输ARP请求。这下一阶段里,你将有一个运行着的网络,它是由一台设备管理整个本地网络和外 网的通信。现在,我们必须使用Netfilter建立过滤。Netfilter允许直接对经过的数据包有所行动。在基本配置里,数据包被3条规则链管理:- INPUT:数据包通过一个接口进来。- FORWARD:把所有的数据包从一个接口转发到另一个接口。- OUTPUT:数据包通过一个接口出去。iptables命令允许对这些链添加,改变或者移除规则从而修改过滤器的动作。此外,每一个链有一个默认的策略,换句话说,它知道当一个数据包没有规则匹配时该 怎么处理。 当前有四个选项:- ACCEPT:允许通过数据包。- REJECT:拒绝数据包通过,关联的错误信息被传送(ICMP端口不能到达,TCP重置 关于这些的),- LOG:把数据包记录写在syslog。- DROP:忽略数据包,不发送回答。这里有一些操作整个链常用到的iptables选项。我们将在稍后解释他们:-N:创建一条新链。-X:移除一条空链。-P:改变一条链的默认策略。-L:列出一条链的规则。-F:清空一条链里所的规则。-Z:清除已经通过这条链的字节和数据包包的计算器。修改一条链,下面的命令将会有用的:-A:添加一条规则在链的最后。-I:插入一条新规则在链的给定位置。-R:取代一条给定规则。-D:删除链里的规则,可以使用规则的编号或它的具体描述。 让我们看一个简单的实例:我们将阻止对给定设备PING回应(这是一个echo-reply 类型的ICMP数据包)。首先,让我们检测能ping通所给定的设备:# ping -c 1 4PING 4 (4): 56 data bytes64 bytes from 4: icmp_seq=0 ttl=255 time=0.6 ms- 4 ping statistics -1 packets transmitted, 1 packets received, 0% packet lossround-trip min/avg/max = 0.6/0.6/0.6 ms现在,我们对INPUT链添加一条规则,这将截取来自4(-s 4) 的ICMP-Reply数据包(-p icmp -icmp-type echo-reply)这些数据包将会被 忽略(-j DROP)。 # iptables -A INPUT -s 4 -p icmp -icmp-type echo-reply -j DROP让我们再PING那个设备:# ping -c 3 4PING 4 (4): 56 data bytes- 4 ping statistics -3 packets transmitted, 0 packets received, 100% packet loss这和我们所期望的一样,回应没有通过。我们检查已经被阻止的3个回 应。(3个数据包共252字节) # iptables -L INPUT -vChain INPUT (policy ACCEPT 604K packets, 482M bytes) pkts bytes target prot opt in out source destination 3 252 DROP icmp - any any 4 anywhere如果想返回到初始状态,我们要做的仅仅是移除INPUT链里的第一条规则:# iptables -D INPUT 1我们再PING一次:# ping -c 1 4PING 4 (4): 56 data bytes64 bytes from 4: icmp_seq=0 ttl=255 time=0.6 ms- 4 ping statistics -1 packets transmitted, 1 packets received, 0% packet lossround-trip min/avg/max = 0.6/0.6/0.6 ms#运行了!你可以对3条存在链添加其他的链(这3条链你无论如何不能移除),使通信通过他 们。这是有用,举个例子,可以避免在不同的链里重复规则。让我们设置一个最小化的防火墙所必需的规则。他将允许ssh,域(DNS),http, smtp服务和其他一些无关紧要的。为了简单化,将设置命令写在shell脚本比配置更容易一点。当这个脚本设立一个新的 规则前应当清空当前配置。这里有一个小诀窍去运行脚本,就是在配置没有副本规则下 被激活。rc.firewall#!/bin/sh# Flushing out the rulesiptables -Fiptables -F INPUTiptables -F OUTPUTiptables -F FORWARD# The chain is built according to the direction.# bad = eth0 (outside)# dmz = eth1 (inside)iptables -X bad-dmziptables -N bad-dmziptables -X dmz-badiptables -N dmz-badiptables -X icmp-acciptables -N icmp-acciptables -X log-and-dropiptables -N log-and-drop# Specific chain used for logging packets before blocking themiptables -A log-and-drop -j LOG -log-prefix drop iptables -A log-and-drop -j DROP# The packets having the TCP flags activated are dropped# and so for the ones with no flag at all (often used with Nmap scans)iptables -A FORWARD -p tcp -tcp-flags ALL ALL -j log-and-dropiptables -A FORWARD -p tcp -tcp-flags ALL NONE -j log-and-drop# The packets coming from reserved addresses classes are dropped# and so for multicastiptables -A FORWARD -i eth+ -s /4 -j log-and-dropiptables -A FORWARD -i eth+ -s /16 -j log-and-dropiptables -A FORWARD -i eth+ -s /12 -j log-and-dropiptables -A FORWARD -i eth+ -s /8 -j log-and-drop# The packets belonging to an already established connexion are acceptediptables -A FORWARD -m state -state INVALID -j log-and-dropiptables -A FORWARD -m state -state RELATED,ESTABLISHED -j ACCEPT# The corresponding chain is sent according to the packet originiptables -A FORWARD -s $DMZ_ADDR -i $DMZ_IFACE -o $BAD_IFACE -j dmz-badiptables -A FORWARD -o $DMZ_IFACE -j bad-dmz# All the rest is ignorediptables -A FORWARD -j log-and-drop# Accepted ICMPsiptables -A icmp-acc -p icmp -icmp-type destination-unreachable -j ACCEPTiptables -A icmp-acc -p icmp -icmp-type source-quench -j ACCEPTiptables -A icmp-acc -p icmp -icmp-type time-exceeded -j ACCEPTiptables -A icmp-acc -p icmp -icmp-type echo-request -j ACCEPTiptables -A icmp-acc -p icmp -icmp-type echo-reply -j ACCEPTiptables -A icmp-acc -j log-and-drop# Outside - Inside chain# mail, DNS, http(s) and SSH are acceptediptables -A bad-dmz -p tcp -dport smtp -j ACCEPTiptables -A bad-dmz -p udp -dport domain -j ACCEPTiptables -A bad-dmz -p tcp -dport domain -j ACCEPTiptables -A bad-dmz -p tcp -dport www -j ACCEPTiptables -A bad-dmz -p tcp -dport https -j ACCEPTiptables -A bad-dmz -p tcp -dport ssh -j ACCEPTiptables -A bad-dmz -p icmp -j icmp-acciptables -A bad-dmz -j log-and-drop# Inside - Outside chain# mail, DNS, http(s) and telnet are acceptediptables -A dmz-bad -p tcp -dport smtp -j ACCEPTiptables -A dmz-bad -p tcp -sport smtp -j ACCEPTiptables -A dmz-bad -p udp -dport domain -j ACCEPTiptables -A dmz-bad -p tcp -dport domain -j ACCEPTiptables -A dmz-bad -p tcp -dport www -j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地磅相关知识培训
- 土地资源开发利用监管协议
- 2025年法律知识考试模拟题库(附答案)
- 2025年养老机构安全主管岗位培训考试题库附答案
- 2025年高级电工定级试题及答案
- 网站建设合伙人协议
- 绿色创新人才植物养护协议
- 内部知识共享平台与资料归档系统
- 企业网络安全防护及响应模板
- 企业数字化转型支持服务协议
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 初中英语新课程标准测试试题及答案3套
- 计数型MSA分析表格
- 枢纽经济:区域经济发展新动能
- 积极心理学全套课件
- 临床实验中不良事件的管理
- 如何开展课题研究
- 炼钢厂电工应知应会考试题库500题(含各题型)
- GB/T 5069-2007镁铝系耐火材料化学分析方法
- GB/T 40565.2-2021液压传动连接快换接头第2部分:20 MPa~31.5 MPa平面型
- 旅游区奖惩制度管理办法
评论
0/150
提交评论