ACL访问控制列表的应用.docx
- 文档编号:6217299
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:17
- 大小:247.72KB
ACL访问控制列表的应用.docx
《ACL访问控制列表的应用.docx》由会员分享,可在线阅读,更多相关《ACL访问控制列表的应用.docx(17页珍藏版)》请在冰豆网上搜索。
ACL访问控制列表的应用
ACL的应用
一、概述
属于IOS包过滤防火墙的一部分,但是现在不仅仅是用在这个方面。
现在可以应用在:
1、dataplan通过一些对数据包的匹配,抓到数据包对数据包进行丢弃或者转发等操作(对象:
数据包、数据帧)
2、controlplan对路由条目的匹配,对路由条目执行策略(路由条目)
二、理论以及命令
全局模式下:
access-list
<1-99>IP标准访问控制列表
<100-199>IP扩展访问控制列表
<200-299>协议类型代码访问控制列表没有明确标准的应用的流量
<300-399>DECnet访问控制列表
<700-799>48bitMAC地址访问控制列表
<1100-1199>扩展的48bitMAC地址访问控制列表
<1300-1999>IP标准访问控制列表
<2000-2699>IP扩展访问控制列表
这些包含了常见的IP的二层协议和三层协议
1、标准
只能匹配协议中的一个地址(源地址)
命令
access-list1permit(允许)/deny(拒绝)/remarkhostname/x.x.x.x/any(所有主机通配符32个1)/host(一台单一主机通配符32个0)掩码:
/nn&x.x.x.xlog/
例子access-list1permit1.1.1.1
访问控制列表必须在某种技术环节下调用,否则不存在任何意义。
一般调用在接口下,比较常用。
调用的时候有方向:
in或者out
注意:
每条访问控制列表后面都有一个隐式拒绝
一个编号的访问控制列表可以使用多行,默认一般都是以10开始编号,间隔是10,最大是2147483647。
一般认为无上限。
ACL书写的时候注意,是金字塔式的,从上到下,匹配的范围越来越大。
因为ACL一旦匹配,就会立即执行动作,不会放到后一条。
例子:
first:
deny192.168.1.0
Second:
permit192.168.0.0
Third:
deny192.0.0.0
ACL使用反掩码(标识一个子网的范围)和通配符(不连续)确定所写的网段的路由范围
反掩码与通配符的不同,是通配符不用连续
例子:
192.168.1.0192.168.3.0192.168.5.0如何用通配符匹配
192.168.1.0192.168.00000001.0
192.168.3.0192.168.00000011.0
192.168.5.0192.168.00000101.0
红位标注为不一致的地方,其他均为一致的地方,一致的地方使用0标识不一致的地方使用1标识,而且匹配IP地址最后的几个比特不做严格限制,最后结果是:
192.168.1.0(3.0、5.0都行最后默认都会变成1.0)0.0.6.255(通配符)
网络号是匹配路由的时候使用,IP是对数据包进行匹配
showipaccess-lists查询出匹配了多少包
clearipaccess-listscounters[aclnum]/
没加反掩码或者通配符的话,那么后面自动跟上0.0.0.0
如果先permitany再permit明细的话,会报错。
扩展访问控制列表不会(因为有不同协议等)
2、扩展
可以匹配两个地址(源目的)、协议号、端口号等
扩展访问控制列表可以控制源和目的。
全局模式下:
access-list100permit/deny/remark协议/协议编号范围x.x.x.x(源地址)/any/host/object-groupx.x.x.x(目的地址)/any/host/object-group
如果用的是IP协议最后还可以加上IP包头当中的不同字段
如果是TCP协议最后还可以加tcp包中的各种位
如果加上eq(等于)/gt(大于)/lt(小于)可以匹配TCP端口号
如果在eqxx后面还可以加某些端口下的特殊位
eqxx还可以放在源地址和目的地址之间。
如果eqxx放在源地址后,匹配源端口;放在目的地址后匹配目的端口号
和标准访问控制列表一样需要调用。
3、访问控制列表调用
接口下调用:
in/out
切记ACL不能控制本地始发流量,环回接口也是一样。
ciscoIOS特性
如果想过滤始发流量:
第一种方法:
route-map
第二种方法:
service-policy
4、偏移列表
偏移列表(只能跟标准的)
offset-listxin/outxfx/x(进接口)
aclx匹配的路由都会在原有的metric上加x
此时acl时需要注意匹配的写法需要和路由表中的显示的一样,如果不想保持一致,可以使用通配符匹配,例如:
1.1.1.00.0.0.255
注意:
标准访问控制列表只能匹配路由条目,扩展访问控制列表可以匹配条目和掩码。
5、前缀列表
特点:
可以增量修改,比numberACL来讲删除一条整条就删除了,前缀列表可以单独删除活添加。
在IOS12.0以后的版本使用。
比ACL有性能的改进。
如果ACL超过1000条以上,此时更改成前缀列表,那么可能消耗资源占用会降低70%-85%。
命令:
ipprefix-listxxxdeny/permit/description/seqx.x.x.x/nnge大于/le小于/
规则:
len 在大部分IGP当中扩展访问控制列表不生效。 应当使用标准访问控制列表。 列表中的序列号: 可以将列表排序和动态单独删除、插入,前缀列表起始是5,间隙是5。 ipprefix-listsequence-number不起作用 前缀列表注意命名的时候不要使用s或者seq,因为有命令混淆。 6、命名访问控制列表 命令: ipaccess-listextended(扩展)/standard(标准)word/number permit/denyx.x.x.x等等与普通ACL一样 还可以在动作之间直接加上序号。 但是都显示在末尾。 例如 为什么会这样,是因为这几个地址都是32位主机地址,互相不冲突就会添加到最后。 但如果形成冲突 例如: 这样的金字塔匹配,明显中间似乎少匹配了一个1.1.1.0 输入这样的命令: R1(config)#ipaccess-liststandard1 R1(config-std-nacl)#11permit1.1.1.00.0.0.255 显示结果: 命名访问控制列表可以兼容号和名称,最好用名称。 利于标记。 命名注意: 对于字母来讲: 没有空格 对于数字来讲: 开头如果就是数字,那么一直是数字。 否则出错。 如果都是数字不能与默认ACL的号冲突。 类型需要匹配。 对于特殊字符来讲: 不能作为开头,特殊的就是“? ”如果想输入的话要同时按住ctrl+v松手输入“? ”。 注意带问号的命令可以敲,但是不可以复制,因为复制不上。 在acl进程下还有一些命令: R1(config)#ipaccess-liststandardaaa R1(config-std-nacl)#? StandardAccessListconfigurationcommands: <1-2147483647>SequenceNumber defaultSetacommandtoitsdefaults初始化命令 denySpecifypacketstoreject exitExitfromaccess-listconfigurationmode noNegateacommandorsetitsdefaults permitSpecifypacketstoforward remarkAccesslistentrycomment标记 在外面也有一些命令: R1(config)#ipaccess-list? extendedExtendedAccessList扩展 helperAccessListactsonhelper-address访问控制列表扮演帮助地址,只能做egress上面的check(做出项检查,对目的地的过滤检查) log-updateControlaccesslistlogupdates控制日志更新 R1(config)#ipaccess-listlog-updatethreshold? <0-2147483647>Accesslistlog-updatethreshold(numberofhits)更新间隔的阀值匹配多少个包显示一次 loggingControlaccesslistlogging控制日志输入 R1(config)#ipaccess-listlogging? hash-generationEnablesysloghashcodegeneration生成系统日志的hash代码 intervalSetaccesslistlogginginterval达到了每x毫秒一个包的时候,产生一个log信息。 范围0-2147483647 resequenceResequenceAccessList重新排序 如果有个acl是这样: 需要在11和12之间插入4.4.0.0插入不进去,则需要重新排序。 R1(config)#ipaccess-listresequencexxx[startingsequencenumber](起始号)[steptoincrementthesequencenumber](间隔号) 比如输入: R1(config)#ipaccess-listresequencebbb1010 显示: 这样很显然就可以在30和40之间插入了。 standardStandardAccessList 7、基于时间的访问控制列表 会有很多策略需要在某段时间内生效。 比如中午午休,晚上加班等等。 GW(config)#ipaccess-listextendedaaa GW(config-ext-nacl)#permitiphost12.1.1.1anytime-rangeOUT 启用aclaaa关联上time-range名字叫OUT,证明aclaaa中的那条acl只能在time-rangeOUT生效的情况下生效。 GW(config)#inte0/1 GW(config-if)#ipaccess-groupaaain挂起在e0/1接口in方向 time-range配置: GW(config)#time-rangeOUT GW(config-time-range)#? Timerangeconfigurationcommands: absoluteabsolutetimeanddate 命令: GW(config-time-range)#absolute? endendingtimeanddate结束时间,没有没有定义则永远生效 startstartingtimeanddate开始时间,没有定义的话就是从现在开始,直到某一个时间点结束。 defaultSetacommandtoitsdefaults exitExitfromtime-rangeconfigurationmode noNegateacommandorsetitsdefaults periodicperiodictimeanddate周期性生效每x怎么怎么样 GW(config-time-range)#periodic? FridayFriday MondayMonday SaturdaySaturday SundaySunday ThursdayThursday TuesdayTuesday WednesdayWednesday dailyEverydayoftheweek每天都生效 weekdaysMondaythruFriday工作日生效 weekendSaturdayandSunday周末生效 命令: GW(config-time-range)#periodicweekdays[Startingtime]to[Endingtime] 例子: GW(config-time-range)#periodicweekdays12: 00to13: 00 时间范围: 是从12: 00: 00到13: 00: 59 如果在内部机器更改本地时间的话对ACL无影响。 但是更改GW的时间是有影响的。 GW#showipaccess-lists ExtendedIPaccesslistaaa 10permitiphost12.1.1.1anytime-rangeOUT(inactive)如果是inactive是无效,如果是active是激活 GW#showtime-range time-rangeentry: OUT(inactive) periodicweekdays12: 00to13: 00 usedin: IPACLentry 标准访问控制列表是没有time-range这个选项。 8、动态访问控制列表 可以动态的区分服务的对象。 与Autocommand命令结合使用 Autocommand例子: linevty04 loginlocal autocommandshowipintbr username123password123 使用直连机器telnet这台设备输入用户名密码正确则会自动执行showipintbr这条命令,并且自动退出线程。 注意某些命令需要15级,比如showrun 联合dynamicacl使用 linevty04 autocommandaccess-enable loginlocal usernamexxxprivilege15passwordxxx ipaccess-listextendedaaa permittcphostx.x.x.xhostx.x.x.xeq23 dynamicxxx(不能与aaa相同)permitipanyany 然后再接口上挂载acl,如果不使用linevty04线程登录的话是不可能启用动态acl的。 如果使用linevty04线程登录的话,启用动态acl则可以启用acl中的内容。 GW#showipaccess-lists ExtendedIPaccesslistaaa 10permittcphost12.1.1.1host12.1.1.2eqtelnet(23matches) 20Dynamicbbbpermitipanyany permitipanyany(5matches)动态列表激活后会生成一个一摸一样的aclcopy下来。 动态访问控制列表可以添加扩展访问控制列表后面的参数 还可以控制动态访问控制列表的存活时间。 GW(config-ext-nacl)#dynamicbbbtimeout1permitipanyany Timeout是时间范文1-9999以分钟计数。 每telnet一次时间清零重新计数。 一个访问控制列表只能写一个dynamic,最好把所有的dynamic属性放在acl最后输入。 在vty线程下使用autocommandaccess-enablehost,做出谁telnet谁才能上网,不能一个人telnet成功所有人都能上了。 但是如果换成与认证成功的主机的ip,那么acl就检测不到了 只有扩展的访问控制列表才能支持。 命令: access-listdynamic-extended将密钥超时时间延长到6分钟。 9、自反ACL 内部网络可以发送数据出去,但是一般从internet以外为源发起的数据进来的话可能会引起安全隐患。 但是如果在外网口做策略防止流量进入,那么就会把一些合法的数据流量阻止,比如,内网发起的连接,外网响应的数据回包。 自反ACL可以控制内部发起的连接的回包可以进来,其他的回包不可以。 单用established缺点: 只能使用TCP,因为他匹配的就是TCP中的established位 黑客如果伪装,虽然不可以窃取数据,但是完全可以DOS攻击 自反使用三个ACL组成: 内网允许出去的acl 外网拒绝所有的acl 外网生成的返回数据的acl 第一条: ipaccess-listextendedaaa permitipanyanyreflectbbb 放过数据以后建立一个反向的acl叫做bbb,然后把这个acl挂在接入内网的接口上 ipaccess-listextendeddenyall evaluatebbb先行评估bbb denyipanyany 此时从内ping外 此时从外ping内 此时再查看ACL 多出来一条acl,超时时间是300s,使用命令可调 GW(config-ext-nacl)#permitipanyanyreflectbbbtimeout? <1-2147483>Maximumtimetoliveinseconds 自反访问控制列表的缺点: 多端口号的业务,因为没有表项造成不能回来数据流。 10、ACL的LOG 如果在一个网络当中,某一台服务器收到了某一台PC的攻击,可以使用ACL的LOG属性很快的定位出是哪台机器发起的攻击。 类似于下图 R1、R2上使用换回接口1.1.1.1和2.2.2.2模拟PC R3上利用换回接口4.4.4.4模拟server 那么其中的一台PC向4.4.4.4发起狂ping,那么我在R3上如何看到是那个IP给我发过来的攻击呢? 可以使用ACL的LOG 使用标准acl的方法 access-list1permitanylog 挂在进接口上 此时由2.2.2.2ping4.4.4.4在R3上会显示 此时我们可以看出访问4.4.4.4的IP是2.2.2.2 但是为了防止日志刷屏,只显示出1个包的日志 如果想看看剩余的发包情况,可以直接no掉access-list就会显示出剩余包的日志 局限性: 只能基于any去做,因为标准访问控制列表是基于源来匹配的,并且只能精确到IP地址。 在使用DHCP网络中或者攻击者虚拟IP,那么就不能确定是真实的是哪台机器发起的攻击。 那么使用扩展访问控制列表: access-list100permitipanyhost4.4.4.4log/log-input 仅使用log的时候和标准访问控制列表一样,使用log-input的时候可以显示很多 access-list100permitipanyany此条我觉得应该在真实环境下写,因为不写的话可能,只能放过对4.4.4.4的流量不能放过对其他的流量。 但是对于本实验没有影响。 把着个acl挂在接口进方向上 可以得到信息: 显示出了使用什么协议访问,攻击者的ip,攻击者的MAC,攻击者的物理端口号。 Logloginput默认5分钟提示一次结果 Loggingrate-limit[num]限制debug的输出/all限制所有的信息/console只限制console消息 Terminalmonitor Terminalnomonitor关闭 11、ACLprecedence(dscp在QOS中介绍) 如果在ACL中匹配了precedence的值,那么他会查询数据包的IP层字段中的TOS位。 access-list100permitipanyhost4.4.4.4precedence0 此命令是指匹配访问4.4.4.4,并且TOS=1的数据包 应当使用扩展ping 默认使用的precedence就是0那么就会允许 如果把precedence的值设置为50 就不通了 12、ACLfragments 是否允许分片包的发送。 会检查DF位. access-list100permitipanyhost4.4.4.4fragments 检查所有访问4.4.4.4的数据包flagoffset位的值 如果FO>0则允许如果FO=0则不允许 挂在接口的进方向 不过如果是两台机器直连,类似于这样的拓扑 在f0/0下使用ipmtu100然后再R1上ping的时候大小用size关键字设置为400那么这些ping包就会分片。 但是依然是ping不通。 因为ping包的分片里面的第一个包FO=0其他的FO>1,那么导致FO=0的数据被去掉,包不完整,所以ping不通(个人理解)。 那么一般的来说在上网的路由器,会接受到很多很多分片的,不完整的包。 类似于网关内部有一台webserver。 那么可以在外网的接口使用deny语句把那些分片的deny掉。 类似于这样的拓扑 只允许所有的人使用HTTP访问wwwserver可以这么写: access-list100permittcpanyhost171.16.23.1eq80 access-list100denyipanyany 如果想拒绝一些个分片包可以这么写: access-list101denyipanyhost171.16.23.1fragments access-list101permittcpanyhost171.16.23.1eq80 access-list101denyipanyany 13、ACLoption选项 IP数据包里面有OPTION选项,如果需要匹配OPTION选项的话需要在访问控制列表以后加上。 但是在新的IOS中有一个问题,当你写入的时候会提示一个错误 R3(config)#access-list100permitipanyhost4.4.4.4optionnsapa %IPOptionfilteringisallowedonnamedACLsonly 在新的IOS中对于Option选项的匹配需要写在命名的ACL当中 R3(config)#ipaccess-listextendedaaa R3(config-ext-nacl)#permitipanyhost4.4.4.4optionnsapa 14、ACLremark access-list100remarkR1-2-R2-ICMP-DENY access-list100denyicmphost192.168.1.1host192
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACL 访问 控制 列表 应用