首頁 資料庫 mysql教程 自反访问控制列表 (偶找的另一个版本)

自反访问控制列表 (偶找的另一个版本)

Jun 07, 2016 pm 03:04 PM
清單 控制 源自 版本 網路 訪問 資料

*****************************资料来源自网络,仅用于交流!********************************** 概念: 1.ESTABLISHED是 访问 列表 中用于反射性的,相当于反谢 访问 列表 --相似。 也就是只有TCP会话先建立,返回的数据包中必须有源TCP相对应的端口 和一定的

*****************************资料来源自网络,仅用于交流!**********************************

概念:

1.ESTABLISHED是访问列表中用于反射性的,相当于反谢访问列表--相似。
也就是只有TCP会话先建立,返回的数据包中必须有源TCP相对应的端口
和一定的标识字段,才被允许通过 ,换句话话说,它有局限性,
一是,会话必须邮内向外发起,
二是它只适合于TCP会话,不适合于UDP
三是对于FTP这种在客户端和服务器端建立会话时会改变PORT NUMBER的,它不适用。

 2.自反访问控制列表
自反访问列表的英文名字是Reflexive Access Lists,Reflexive这个词我们翻译成自反,他会根据一个方向的访问控制列表,自动创建出一个反方向的控制列表,是和原来的控制列表—IP的源地址和目的地址颠倒,并且源端口号和目的端口号完全相反的一个列表。并且还有一定的时间限制,过了时间,就会超时,这个新创建的列表就会消失,这样大大增加了安全性。

*******************************************************************************************

自反ACL】自反访问控制列表
Reflexive Access Lists
1.一个面临的控制问题

我们首先看下图


图片附件: outinnet.jpg

自反访问控制列表 (偶找的另一个版本)

有这样一个要求,就是我们要允许内部的机器可以访问外部,可是不允许外部的主机访问内部,有人说,这个简单,用一个访问控制列表,在Seial1上做如下配置
router(config)#access-list 100 deny ip any any
router(config-if)#ip access-group 100 in
这样做的结果是外面肯定不能访问内部了,可是我们从内部出去的数据包也甭想回来了,所以这种做法不行

我们可以继续开动脑筋,我们知道TCP在建立连接之前,有一个三次握手过程,在TCP的包头里面有一个标志位,我们的扩展访问控制列表可以对这个标志位进行控制。我们分析下,内部主机向外发起连接的时候,SYN位为1,而外部的主机回应包里面为 SYN=1 ACK=1
一个外部主机要想内部发起连接,他的第一个包只是SYN=1,而ACK=0,所以,我们可以通过这种方式来做

Router(config)#access-list 100 permit tcp any any ack
或者
Router(config)#access-list 100 permit tcp any any established
然后应用到接口上
router(config-if)#ip access-group 100 in

这个方法是可以,但是如果不是TCP的应用,是UDP的程序该如何办?很显然,通过这个方式是解决不了的。我们用自反访问列表就可以很好的解决这个问题

2.自反访问控制列表
自反访问列表的英文名字是Reflexive Access Lists,Reflexive这个词我们翻译成自反,如何自反呢?就是他会根据一个方向的访问控制列表,自动创建出一个反方向的控制列表,那么,创建一个什么样的控制列表呢?就是和原来的控制列表—IP的源地址和目的地址颠倒,并且源端口号和目的端口号完全相反的一个列表。并且还有一定的时间限制,过了时间,就会超时,这个新创建的列表就会消失,这样大大增加了安全性。
具体案例:
拓扑图如下



图片附件: 3router1.jpg


需求如下:
R1模仿内网,R3模仿外网,现在要求R1可以远程登录到R3,但是不允许R3发起任何到R1的连接。

三台路由器初始配置如下:
R1#sh run
interface Serial0
ip address 10.1.1.1 255.255.255.0

router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0

line vty 0 4
password cisco
login

R2#sh run
interface Serial0
ip address 10.1.1.2 255.255.255.0
clockrate 64000

interface Serial1
ip address 192.168.1.1 255.255.255.0
clockrate 64000

router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0

R3#sh run

interface Loopback0
ip address 3.3.3.3 255.255.255.0

interface Ethernet0
no ip address
shutdown

interface Serial0
no ip address

interface Serial1
ip address 192.168.1.2 255.255.255.0

router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0

line vty 0 4
password cisco
login

R1上的路由表

R1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
        E1 - OSPF external type 1, E2 - OSPF external type 2
        i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
        * - candidate default, U - per-user static route, o - ODR
        P - periodic downloaded static route

Gateway of last resort is not set

      3.0.0.0/32 is subnetted, 1 subnets
O        3.3.3.3 [110/129] via 10.1.1.2, 00:03:42, Serial0
      10.0.0.0/24 is subnetted, 1 subnets
C        10.1.1.0 is directly connected, Serial0
O     192.168.1.0/24 [110/128] via 10.1.1.2, 00:03:42, Serial0

测试一下
R1#ping 3.3.3.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/62/68 ms


R1#
R1#telnet 3.3.3.3
Trying 3.3.3.3 ... Open
User Access Verification
Password:
R3>

在R3上测试一下:
R3#ping 10.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/60/60 ms

R3#telnet 10.1.1.1
Trying 10.1.1.1 ... Open
User Access Verification
Password:
R1>
路由是通畅的,R1可以正常的远程登录到R3,因为没有作任何控制,所以R3照样可以访问R1

解决方案1:
使用扩展访问控制列表,控制TCP标志位
在R2上做如下配置
interface Serial1
ip address 192.168.1.1 255.255.255.0
ip access-group 100 in
clockrate 64000

access-list 100 permit tcp any any established   //用ACK也行
access-list 100 permit ospf any any           //保持ospf路由协议正常工作

R1上做测试:
R1#ping 3.3.3.3  

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#telnet 3.3.3.3
Trying 3.3.3.3 ... Open


User Access Verification

Password:
R3>
这个时候,我们发现不能ping 通了,原因是什么呢?
access-list 100 permit tcp any any established
access-list 100 permit ospf any any   
我们在访问控制列表中没有允许ICMP协议,所以返回的数据包在R2上面被拒绝掉了,但是telnet成功了,因为我们在进来的访问控制列表里允许了TCP。

在R3上做测试:
R3#ping 10.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
R3#telnet 10.1.1.1
Trying 10.1.1.1 ...
% Destination unreachable; gateway or host down
我们看R3是不能访问R1的任何东西了,为什么呢?ping不通的原因是我们在R2上阻止了ICMP,而telnet为什么不行呢,虽然我们允许了TCP包,但是因为是R3向R1发起初始化连接,TCP里面的标志位SYN=1,ACK=0,而我们的访问控制列表的关键词established定义了只有ACK=1的包才能被允许,所以,这个初始连接包就被拒绝了,那么我们这种做法就满足了试验要求。

解决方案2:
使用自反访问控制列表
在R2 做如下配置
interface Serial0
ip address 10.1.1.2 255.255.255.0
ip access-group tcp-out in
clockrate 64000
!         
interface Serial1
ip address 192.168.1.1 255.255.255.0
ip access-group tcp-in in
clockrate 64000

ip access-list extended tcp-in
permit ospf any any
evaluate telnet
ip access-list extended tcp-out
permit ospf any any
permit tcp any any reflect telnet

需要注意以下几点
1)         自反访问控制列表只能和基于名字的扩展访问控制列表一起工作
2)         他自己不能工作,必须寄生于扩展访问控制列表,并且有两个访问列表才行,也就是

一个列表创建自反列表
例如
ip access-list extended tcp-out
permit tcp any any reflect telnet

注意关键词 refect,当由符合tcp any any 的数据流通过的时候,就会产生一个名字叫做telnet的自反列表,但是它是产生而已,还不能被使用,因为没与应用到接口上

令外一个列表进行调用
ip access-list extended tcp-in
   evaluate telnet
在进来的访问列表里面,用关键字evaluate 来调用已经产生的telnet自反列表

在R1上做测试

R1>en
R1#telnet 3.3.3.3
Trying 3.3.3.3 ... Open
User Access Verification
Password:
R3>

我们看看R2上:
R2#show access-lists
Extended IP access list tcp-in
     10 permit ospf any any (72 matches)
     20 evaluate telnet
Extended IP access list tcp-out
     20 permit ospf any any (72 matches)
     30 permit tcp any any reflect telnet
Reflexive IP access list telnet
      permit tcp host 3.3.3.3 eq telnet host 10.1.1.1 eq 11003 (26 matches) (time left 258)

已经产生了一个自反访问控制列表,他的源端口是23,目的端口是11003,正好是我们刚才从R1上telnet的返回的数据流。

从R3上做下测试:
R3#telnet 10.1.1.1
Trying 10.1.1.1 ...
% Destination unreachable; gateway or host down
我们看不成功,这个连接的源端口号是一个大于10000得一个随机端口号,目的端口号是23 ,但是访问控制列表并不允许这样的数据流,所以访问失败,这个满足我们的试验需求。

我们还可以对这个自反列表存在时间进行控制,我们看看这个自反列表
permit tcp host 3.3.3.3 eq telnet host 10.1.1.1 eq 11003 (26 matches) (time left 258),time left 258是指如果没有数据流的情况下,再过258秒,这个自反列表既要从缓存中被清掉。这无疑增加了安全性,降低了被IP欺骗的可能。

这个时间我们可以用如下的方式修改:
ip access-list extended tcp-out
permit tcp any any reflect telnet timeout 600   //单位是秒

另外在全局模式下,可以使用另外一个命令修改超时时间:

r2(config)#ip reflexive-list timeout 600

这样就把时间改成了10分钟,而默认是5分钟

现在有一个新的需求:

我们要求在R2可以telnet到R3,但是R3不能访问R2
我们在R2 上做如下配置
interface Serial1
ip address 192.168.1.1 255.255.255.0
ip access-group tcp-in in
ip access-group tcp-out out
clockrate 64000

ip access-list extended tcp-in
permit ospf any any
evaluate telnet
ip access-list extended tcp-out
permit ospf any any
permit tcp any any reflect telnet

我们首先在R3上测试一下:
R3#telnet 192.168.1.1
Trying 192.168.1.1 ...
% Destination unreachable; gateway or host down
结果是满意的
我们再在R2上测试一下:
R2#telnet 3.3.3.3
Trying 3.3.3.3 ...
% Connection timed out; remote host not responding
结果却出乎我们的预料。原因在哪里?
我们看一下R2上的访问列表
R2#show access-lists
Extended IP access list tcp-in
     10 permit ospf any any (230 matches)
     20 evaluate telnet
Extended IP access list tcp-out
     20 permit ospf any any (202 matches)
     30 permit tcp any any reflect telnet
Reflexive IP access list telnet
自反列表竟然为空!这是为什么呢?原因在于访问列表一个特性,就是出去的访问列表不对这个路由器自己产生的数据包进行检查,也就是我们从R2上telnet 到R3的数据流是从R2产生的,所以没有经过这个下面这个访问控制列表的检查
ip access-list extended tcp-out
permit ospf any any
permit tcp any any reflect telnet

访问控制列表,那么自然就不会产生自反访问列表telnet了。

解决的办法有两个:

一个是通过本地路由策略(local policy route-map)

ip local policy route-map cisco

route-map cisco permit 10
match ip address tcp-out

在R2上再测试一下:
R2#telnet 3.3.3.3
Trying 3.3.3.3 ... Open

User Access Verification
Password:
R3>
R2上看下访问列表
//注意,不能在上面的配置中打exit,如果是这样,那么自反列表剩下的时间立刻被降为6秒,不好观察结果,我采用的是在R1上远程登录(telnet)到R2再观察
r2#show access-lists
Extended IP access list tcp-in
     10 permit ospf any any (8 matches)
     20 evaluate telnet
Extended IP access list tcp-out
     10 permit ospf any any
     20 permit tcp any any reflect telnet
Reflexive IP access list telnet
      permit tcp host 3.3.3.3 eq telnet host 192.168.1.1 eq 11002 (time left 297)
好的,我们看看现在就可以了!

当然,我们还有另外的一个方法:
R2上这样配置:
ip access-list extended tcp-in
permit ospf any any
evaluate telnet
permit tcp any eq telnet any ack---------------------------加上了这条指令
ip access-list extended tcp-out
permit ospf any any
permit tcp any any reflect telnet

在R2上测试:
r2#telnet 3.3.3.3
Trying 3.3.3.3 ... Open
User Access Verification
Password:
R3>

成功登陆,符合我们的期望:
在R3上进行测试:
R3#telnet 192.168.1.1
Trying 192.168.1.1 ...
% Destination unreachable; gateway or host down
结果也是我们所需要的

总结:
自反访问控制列表在第四层上分析数据流,是一个按需生成的控制列表,在没有数据流的时候,也就是不需要的时候,会自动消失,是一种较自动化的数据控制方式,在一定程度上防止了IP地址欺骗攻击,非常有效的保护了用户的网络免受黑客破坏,并且对UDP数据包最有效(对于UDP包,扩展访问控制列表毫无办法)。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
WLAN擴充模組已停止[修復] WLAN擴充模組已停止[修復] Feb 19, 2024 pm 02:18 PM

如果您的Windows電腦上的WLAN擴充模組出現問題,可能會導致您與網際網路中斷連線。這種情況常常讓人感到困擾,但幸運的是,本文提供了一些簡單的建議,可以幫助您解決這個問題,讓您的無線連線重新正常運作。修復WLAN擴充模組已停止如果您的Windows電腦上的WLAN可擴充性模組已停止運作,請依照下列建議進行修復:執行網路和Internet故障排除程式停用並重新啟用無線網路連線重新啟動WLAN自動設定服務修改電源選項修改高級電源設定重新安裝網路適配器驅動程式運行一些網路命令現在,讓我們來詳細看

win10無法上網右下角顯示地球怎麼辦 win10網路成地球無法上網的多種解決方法 win10無法上網右下角顯示地球怎麼辦 win10網路成地球無法上網的多種解決方法 Feb 29, 2024 am 09:52 AM

這篇文章將介紹Win10系統網路顯示地球標誌但無法上網的解決方法。文章將提供詳細的操作步驟,幫助讀者解決Win10網路顯示地球無法上網的問題。方法一:直接重啟先檢查網路線是否沒插好,寬頻是否欠費,路由器或光貓可能會卡死,這時需重新啟動路由器或光貓。假如目前電腦沒有重要的事宜在操作,能直接重啟電腦,大部分的小問題能透過重新啟動電腦來快速解決。如果確定寬頻沒有欠費,網路正常,那便是另一回事。方法二:1、按【Win】鍵,或點選左下角的【開始選單】,在開啟的選單項目中,點選電源按鈕上方的齒輪狀圖標,這個就是【設

大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五 大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五 Apr 23, 2024 pm 03:28 PM

關於Llama3,又有測試結果新鮮出爐-大模型評測社群LMSYS發布了一份大模型排行榜單,Llama3位列第五,英文單項與GPT-4並列第一。圖片不同於其他Benchmark,這份榜單的依據是模型一對一battle,由全網測評者自行命題並評分。最終,Llama3取得了榜單中的第五名,排在前面的是GPT-4的三個不同版本,以及Claude3超大杯Opus。而在英文單項榜單中,Llama3反超了Claude,與GPT-4打成了平手。對於這一結果,Meta的首席科學家LeCun十分高興,轉發了推文並

檢查網路連線:lol無法連接伺服器 檢查網路連線:lol無法連接伺服器 Feb 19, 2024 pm 12:10 PM

LOL無法連接伺服器請檢查網路近年來,網路遊戲已經成為了許多人的日常娛樂活動。其中,英雄聯盟(LOL)作為一款非常受歡迎的多人線上遊戲,吸引了億萬玩家的參與和愛好。然而,有時候我們在玩LOL的時候會遇到「無法連接伺服器請檢查網路」的錯誤提示,這無疑給玩家們帶來了一些困擾。接下來,我們將探討該錯誤的出現原因和解決方法。首先,LOL無法連接伺服器的問題可能是

查看麒麟作業系統版本和核心版本 查看麒麟作業系統版本和核心版本 Feb 21, 2024 pm 07:04 PM

查看麒麟作業系統版本和核心版本在麒麟作業系統中,了解如何檢視系統版本和核心版本是進行系統管理和維護的基礎。查看麒麟作業系統版本方法一:使用/etc/.kyinfo檔案要查看麒麟作業系統的版本,您可以檢視/etc/.kyinfo檔案。此檔案包含了作業系統的版本資訊。執行以下指令:cat/etc/.kyinfo此指令將顯示作業系統的詳細版本資訊。方法二:使用/etc/issue檔案另一個檢視作業系統版本的方法是透過檢視/etc/issue檔案。這個文件同樣提供了版本信息,但可能不如.kyinfo文件

Linux下更新curl版本教程! Linux下更新curl版本教程! Mar 07, 2024 am 08:30 AM

在Linux下更新curl版本,您可以按照以下步驟進行操作:檢查目前curl版本:首先,您需要確定目前系統中安裝的curl版本。開啟終端,並執行以下指令:curl--version該指令將顯示目前curl的版本資訊。確認可用的curl版本:在更新curl之前,您需要確定可用的最新版本。您可以造訪curl的官方網站(curl.haxx.se)或相關的軟體來源,尋找最新版本的curl。下載curl原始碼:使用curl或瀏覽器,下載您選擇的curl版本的原始碼檔案(通常為.tar.gz或.tar.bz2

網路連不上wifi怎麼回事 網路連不上wifi怎麼回事 Apr 03, 2024 pm 12:11 PM

1.檢查wifi密碼:確保自己輸入的wifi密碼是正確的,並注意區分大小寫。 2.確認wifi是否正常運作:檢查wifi路由器是否正常運作,可將其他裝置連接至相同路由器,以確定問題是否出在裝置上。 3.重新啟動設備和路由器:有時候,設備或路由器發生故障或網路問題,重新啟動設備和路由器可能會解決問題。 4.檢查設備設定:確保設備無線功能為開啟狀態,且未將wifi功能停用。

如何輕鬆查看Oracle的安裝版本 如何輕鬆查看Oracle的安裝版本 Mar 07, 2024 am 11:27 AM

如何輕鬆查看Oracle的安裝版本,需要具體程式碼範例作為一款被廣泛應用於企業級資料庫管理系統的軟體,Oracle資料庫具有許多版本和不同的安裝方式。在日常工作中,我們經常需要查看Oracle資料庫的安裝版本,以便進行相應的操作和維護。本文將介紹如何輕鬆查看Oracle的安裝版本,並給出具體的程式碼範例。方法一:透過SQL查詢在Oracle資料庫中,我們可以通

See all articles