ACL访问控制列表的应用文档格式.docx
《ACL访问控制列表的应用文档格式.docx》由会员分享,可在线阅读,更多相关《ACL访问控制列表的应用文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
例子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<
ge-value<
=le-value
在大部分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
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:
59
如果在内部机器更改本地时间的话对ACL无影响。
但是更改GW的时间是有影响的。
GW#showipaccess-lists
ExtendedIPaccesslistaaa
10permitiphost12.1.1.1anytime-rangeOUT(inactive)如果是inactive是无效,如果是active是激活
GW#showtime-range
time-rangeentry:
OUT(inactive)
periodicweekdays12:
usedin:
IPACLentry
标准访问控制列表是没有time-range这个选项。
8、动态访问控制列表
可以动态的区分服务的对象。
与Autocommand命令结合使用
Autocommand例子:
linevty04
loginlocal
autocommandshowipintbr
username123password123
使用直连机器telnet这台设备输入用户名密码正确则会自动执行showipintbr这条命令,并且自动退出线程。
注意某些命令需要15级,比如showrun
联合dynamicacl使用
autocommandaccess-enable
usernamexxxprivilege15passwordxxx
ipaccess-listextendedaaa
permittcphostx.x.x.xhostx.x.x.xeq23
dynamicxxx(不能与aaa相同)permitipanyany
然后再接口上挂载acl,如果不使用linevty04线程登录的话是不可能启用动态acl的。
如果使用linevty04线程登录的话,启用动态acl则可以启用acl中的内容。
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
第一条:
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