HCL實驗-使用ACL進行SSH服務器的登錄源限制的簡單實驗(NAT+SSH+ACL)
文章目錄
- HCL實驗-使用ACL進行SSH服務器的登錄源限制的簡單實驗(NAT+SSH+ACL)
- 一、實驗描述
- 實驗要點
- 實驗拓撲圖
- 二、實作流程
- 1. 配置SSH
- 2. 配置NAT
- ① BASIC NAT
- ② NAPT(網路地址埠轉換)
- ③ Easy IP
- 3. 配置限制訪問源的ACL
- 三、文章結尾
一、實驗描述
??組網實作模擬區域內網通過NAT網路地址轉換登錄到外網SSH服務器,并且SSH服務器通過配置ACL來實作登錄源IP限制,即只有指定IP可以登錄,
??相關技術需要讀者自行了解(NAT、SSH、ACL),這里不在進行相關概念的贅述,
實驗要點
- 配置外網路由器開啟SSH服務
- 配置內網出口路由器開啟NAT
- 選取ACL的配置點進行相應策略配置
實驗拓撲圖

二、實作流程
??首先在HCL上布置好設備,并配置相應介面的IP地址,相互組成網路段,同時在HCL模擬器中是需要手動點擊啟動設備的,
1. 配置SSH
??華三路由器配置SSH(安全協議外殼),需要我們是用加密演算法,這里采用的是rsa公鑰加密演算法
配置的大致思路為:
??生成公鑰,開啟服務,創建并配置本地驗證用戶,指定認證方式,
[R-ssh]public-key local create rsa //生成公鑰的命令
The local key pair already exists. //先前有過一個了,為了演示重新生成一個
Confirm to replace it? [Y/N]:
Before pressing ENTER you must choose 'YES' or 'NO'[Y/N]:y
The range of public key modulus is (512 ~ 2048).
If the key modulus is greater than 512, it will take a few minutes.
Press CTRL+C to abort.
Input the modulus length [default = 1024]: //暫時不需要我們自主選擇長度之類的,默認就ok
Generating Keys...
Create the key pair successfully.
[R-ssh]ssh server enable //開啟SSH服務
[R-ssh]local-user luxa //創建一個本地用戶
[R-ssh-luser-manage-luxa]password ?
hash Specify a hashtext password
simple Specify a plaintext password
<cr>
[R-ssh-luser-manage-luxa]password simple 123456 //簡單配置一下,有需求也可以選hash
[R-ssh-luser-manage-luxa]service-type ssh //給這個用戶宣告一下使用的服務型別
[R-ssh-luser-manage-luxa]authorization-attribute user-role network-admin
//設定用戶的權限,有很多level等級等權限,這里選擇網管身份,有需要可以選其他
[R-ssh-luser-manage-luxa]qu
[R-ssh]user-interface vty 0 4 //配置用戶界面,使用經典的0 4,也就是支持同時接入5個用戶,可以自己調整
[R-ssh-line-vty0-4]authentication-mode scheme //組合認證方式,用戶名+密碼,可以自行設定成其他方式
至此,SSH配置完畢,現在我們嘗試用和這個路由器在同一個網段下的路由器的介面去登錄試試看(見拓撲圖)
PS:登錄要在用戶視圖下進行登錄,設備名字還是<>的視圖下,不是[]系統視圖!!!
<R-gateway>ssh 20.0.0.1
Username: luxa
Press CTRL+C to abort.
Connecting to 20.0.0.1 port 22.
The server is not authenticated. Continue? [Y/N]:y
Do you want to save the server public key? [Y/N]:y
luxa@20.0.0.1's password:
luxa@20.0.0.1's password:
Enter a character ~ and a dot to abort.
******************************************************************************
* Copyright (c) 2004-2017 New H3C Technologies Co., Ltd. All rights reserved.*
* Without the owner's prior written consent, *
* no decompiling or reverse-engineering shall be allowed. *
******************************************************************************
<R-ssh>
<R-ssh>qu
沒什么問題,接下來進入NAT配置環節,使得內網下的主機能夠通過NAT登錄我們剛配置好的SSH服務器,由于目前內網和外網(圖中的192.168.1.0/24和20.0.0.0/8)是兩個不同的網段,也沒有配置靜態路由,目前是無法相互訪問的,所以需要我們配置一個NAT來讓內網發出外面的包的源IP轉換成和目的IP同一個網段,
2. 配置NAT
??華三和思科配置NAT有所區別,因為這里介紹的還是HCL的實驗,只介紹華三的,有興趣的讀者自行了解,
??NAT需要ACL做支持,用于決定哪些資料包需要做轉換,
ACL常用兩種模式,BASIC和ADVANCED,當然還有MAC,這里主要介紹前兩種
- BASIC 用于配置針對源IP的策略,在BASIC的規則當中只填寫源IP,只對報文的源IP制定規則
- ADVANCED 用于配置較全面的策略 ,在ADVANCED中可以配置源目的IP、協議型別、協議特性等三四層規則
??本次實驗為了簡便配置的是BASIC ACL,同理讀者可以自行擴展ADVANCED ACL來把本次實驗擴展成對埠、協議進行限制訪問的功能,
??NAT在華三主要為BASIC NAT、NAPT、Easy IP三種,
- BASIC NAT主要用于配置一對一地址轉換,一個IP出去時占用一個地址池中用于轉換的IP,所以使用BASIC NAT要保證地址池夠大,否則如果出現資料量比較大多臺主機同時出去占用IP的情況下,后面還需要地址轉換的IP將會無法通過NAT進行地址轉換出去與外網通信,
- NAPT(網路地址埠轉換)主要用于配置一對多的基于埠的地址轉換 ,與BASIC NAT相似也需要配置地址池,但是NAPT是可以通過使用一個地址的多個埠來映射內網地址和埠,比如內網某地址某埠會在出口網關有一個NATP的映射表,記錄網關地址和某埠,這一條就對應了前者,NAPT不僅做地址轉換,更是基于埠地做了映射和轉換,
- Easy IP 直接使用出介面作為轉換后的源地址 ,不需要配置地址池,它是NAPT的一個特例,適用于撥號接入Internet或者動態獲得IP地址的場合
下面介紹各種NAT的配置方法
① BASIC NAT
??配置思路為
- 配置ACL規則2001
[R-gateway]acl basic 2001
[R-gateway-acl-ipv4-basic-2001]rule permit source 192.168.1.0 0.0.0.255
- 配置地址池address-group 1
[R-gateway]nat address-group 1
[R-gateway-address-group-1]address 20.0.0.10 20.0.0.50
- 出埠配置地址轉換
[R-gateway-GigabitEthernet0/1]nat outbound 2001 address-group 1 no-pat //配置BASIC一定要加no-pat,不配置就是NAPT了
??配置完畢后選取內網一臺主機(192.168.1.254)ping外網的SSH服務器(20.0.0.1),能夠ping通,并且抓包看到源IP已經發生了轉換


② NAPT(網路地址埠轉換)
??我們在配置另一種模式的NAT時需要把之前的配置撤銷掉
[R-gateway-GigabitEthernet0/1]undo nat outbound 2001
??配置思路為
- 配置ACL規則2001(可以繼續沿用上面寫的)
[R-gateway]acl basic 2001
[R-gateway-acl-ipv4-basic-2001]rule permit source 192.168.1.0 0.0.0.255
- 配置地址池address-group 2(只配置一個IP,方便我們對比埠看看效果)
[R-gateway-address-group-2]address 20.0.0.123 20.0.0.123
- 出埠配置地址轉換
[R-gateway-GigabitEthernet0/1]nat outbound 2001 address-group 2
至此已經可以進行內網對外網的訪問,現在讓192.168.1.254和192.168.1.253登錄SSH,并且掛著,通過如下命令我們可以看一下轉換的情況
[R-gateway]dis nat session
Initiator:
Source IP/port: 192.168.1.254/60227 //254轉換情況
Destination IP/port: 20.0.0.1/22
Initiator:
Source IP/port: 192.168.1.253/32449 //253轉換情況
Destination IP/port: 20.0.0.1/22
通過上面的顯示我們可以看到源IP和埠都發生了改變
③ Easy IP
??Easy IP的配置比較簡單,不需要配置地址池,只需要配置ACL(已經配置好)然后在出埠配置轉換即可
[R-gateway]acl basic 2001
[R-gateway-acl-ipv4-basic-2001]rule permit source 192.168.1.0 0.0.0.255
[R-gateway]int gi 0/1
[R-gateway-GigabitEthernet0/1]nat outbound 2001
配置完畢后可以從內網登錄外網SSH,情況如下
[R-gateway-GigabitEthernet0/1]dis nat session
Slot 0:
Initiator:
Source IP/port: 192.168.1.254/60228
Destination IP/port: 20.0.0.1/22
Initiator:
Source IP/port: 192.168.1.253/32450
Destination IP/port: 20.0.0.1/22
可以看到,254和253轉換后的IP都是網關出口的IP,可以在拓撲圖中看到本來給他的IP就是20.0.0.1
??至此,我們完成了三種NAT的配置,接著往下我們會配置ACL策略來對訪問源進行限制,為了方便我們接著保持剛剛配置好的Nasy IP NAT
3. 配置限制訪問源的ACL
??配置ACL包過濾的思路:
- 啟動包過濾防火墻功能
- 根據實際網路需要選擇合適的ACL分類
- 創建正確的規則
設定正確的規則(rule)和動作(deny/permit) - 在路由器的介面應用ACL,并指明出/入
在配置防火墻前,我們還需要決定在網路中的位置
??根據拓撲圖,我們要完成的功能是限制訪問源,也就是說我們要對該路由器的入介面做文章,現在的情況是公網上還可能會有很多設備是彼此互通的,當然限于模擬器性能沒法加入太多設備,在拓撲圖中就加入了粉紅色的“第三者”作為其他在外網的設備,我們要限制的是“只有192.168.1.0/24網路的主機能夠登錄SSH”,所以我們總結為以下幾點
- 限制了埠,要選擇ADVANCED ACL
- 默認規則為拒絕所有網路
- 默認規則之上允許192.168.1.0/24通過,并且只能訪問22埠(SSH默認登錄的22埠,有需要可以手動指定)
具體配置如
??首先配置ACL,選擇ADVANCED,允許20.0.0.254(內網出口)的tcp協議報文通過(SSH使用的是TCP協議22號埠,但是在這里的命令中選擇source-port沒有SSH,所以先給tcp的都通過,同理我們可以配置對某協議某埠號的限制都是同一個思路),對于不匹配第一條的都拒絕,寫成第二條
??這里要說明一下,ACL支持兩種匹配順序,配置順序(config)和自動順序(auto),配置順序是根據用戶配置規則的順序逐個向下匹配,而自動順序是深度遍歷一直往下找只要找到就可以
??所以這里的思路是利用默認的配置順序,當IP不是20.0.0.254時,不滿足rule 1,繼續往下匹配,而這時已經有一個邏輯叫做他不滿足rule1,然后滿足rule 5,所以被deny
??如果選用自動順序,無論是否滿足IP是20.0.0.254,都因為滿足了0.0.0.0,全部都會deny,因為他沒有先后的邏輯了
[R-ssh]acl advanced 3001
[R-ssh-acl-ipv4-adv-3001]rule 1 permit tcp source 20.0.0.254 0.0.0.0
[R-ssh-acl-ipv4-adv-3001]rule 5 deny ip source any
[R-ssh]int GigabitEthernet 0/0
[R-ssh-GigabitEthernet0/0]packet-filter 3001 inbound
使用內網主機192.168.1.254能夠登錄SSH(因為經過Easy IP NAT,他已經變成20.0.0.254了)
<R2>ssh 20.0.0.1
Username: luxa
Press CTRL+C to abort.
Connecting to 20.0.0.1 port 22.
luxa@20.0.0.1's password:
luxa@20.0.0.1's password:
Enter a character ~ and a dot to abort.
******************************************************************************
* Copyright (c) 2004-2017 New H3C Technologies Co., Ltd. All rights reserved.*
* Without the owner's prior written consent, *
* no decompiling or reverse-engineering shall be allowed. *
******************************************************************************
<R-ssh>
使用外網主機20.0.0.253無法登錄
<R-out>ssh 20.0.0.1
Username: luxa
Press CTRL+C to abort.
Connecting to 20.0.0.1 port 22.
//然后就一直卡在這,超時自動退出
至此,目標已經達成,完成了利用ACL限制SSH登錄源,并在內網到外網使用NAT的實驗
三、文章結尾
??本次實驗在于鞏固NAT、SSH、ACL的相關配置和理解,是學習網路的又一進步,當然也參考、消化了非常多的內容,文中也寫了很多關于配置實驗的個人理解,不免有些紕漏,希望各路高手看到文中的錯漏后能夠提出,既是對自己學習記錄的總結和實驗的自主設計,也希望這篇文章能夠幫助更多的人學習網路,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291963.html
標籤:其他
