HCL实验-使用ACL进行SSH服务器的登录源限制的简单实验(NAT+SSH+ACL)
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 passwordsimple 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/60228Destination IP/port: 20.0.0.1/22
Initiator:Source IP/port: 192.168.1.253/32450Destination 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的相关配置和理解,是学习网络的又一进步,当然也参考、消化了非常多的内容,文中也写了很多关于配置实验的个人理解,不免有些纰漏,希望各路高手看到文中的错漏后能够提出,既是对自己学习记录的总结和实验的自主设计,也希望这篇文章能够帮助更多的人学习网络。
HCL实验-使用ACL进行SSH服务器的登录源限制的简单实验(NAT+SSH+ACL)相关推荐
- SSH服务器远程登录虚拟机及传输文件
SSH服务器 一.使用 Xshell 远程登录 XShell , 一个支持SSH协议的客户端 类似的还有 putty, SecureCRT等 XShell 只能运行控制台程序,不能启动窗口程序 ( 不 ...
- 玩转华为ENSP模拟器系列 | 配置SSH服务器支持其他端口号访问的举例
素材来源:华为路由器配置指南 一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:玩转华为ENSP模拟器系列 | 合集_COCOgsta的博客-CSDN博客_ensp实验大全 目 ...
- Linux配置SSH服务器
配置SSH服务器密码登录的操作步骤 实验一:客户机windows平台:ip地址以自己电脑的IP地址为 准,服务器Linux平台(设置ip地址的最后一个字节为自己学号 的后两位) 1.保证网络的连通性 ...
- ubuntu系统怎么安装ssh服务器配置,如何在Ubuntu 20.04 LTS上安装SSH服务器
Terminal Linux Logo 在 步骤1.首先,通过apt在终端中运行以下以下命令,确保所有系统软件包都是最新的. sudo apt update sudo apt upgrade 步骤2. ...
- MAC OS X 10.8 操作远程SSH服务器 + 无密码输入使用SSH服务器
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建. http://www.osssme.org/ 使用命令行连接连接远程SSH服务器,root为我使用的远程服务器用户名,@后为 ...
- linux搭建ssh服务器,并用xshell远程连接
由于本文是vip文章,如果没有vip的可以到我的博客阅读: linux搭建ssh服务器,并用xshell远程连接 - 玄博 搭建ssh服务器: 1:安装ssh服务: sudo apt-get inst ...
- Linux运维:Shell脚本实现ssh免密登录远程服务器
LInux系统日常运维过程中,经常需要在本地运行脚本执行对远程主机的命令,正常情况下,ssh登录远程服务器时会提示输入密码,这会影响到脚本的自动执行(因为shell脚本中没有自动填充密码的命令).有三 ...
- 无线控制器认证服务器,H3C WX系列无线控制器作为SSH服务器password认证典型配置举例...
H3C WX系列无线控制器作为SSH服务器password认证典型配置举例 一.组网需求: WX系列AC.FIT AP.便携机(安装有无线网卡).交换机 二.组网图: 本配置举例中的AC使用的是WX5 ...
- Linux SSH 免密登录
Linux SSH 免密登录 本篇我们来 看看 Linux 的免密登录的原理 以及实际操作一番 概述 什么是 Linux SSH 免密登录,我觉得大家应该都 多少听过 或者操作过,那你真的理解整个免密 ...
最新文章
- GPU高性能编程CUDA实战(二)
- 通信专业考研考C语言,2016年北京邮电大学信息与通信工程学院C语言程序设计考研复试题库...
- Spring中对于WebApplicationInitializer的理解
- dubbo优势_Dubbo 迈出云原生重要一步 应用级服务发现解析
- 逻辑数据库设计 - 单纯的树(邻接表、路径枚举、嵌套集、闭包表)(引)
- Tensorflow图像调整大小
- python 结构体嵌套_Python 3不更新嵌套包中的变量(使用“递归”相对导入)
- python 包含汉字的文件读写之每行末尾加上特定字符
- maya前台渲染_maya前台渲染MEL
- 跟着团子学SAP—SAP LTMC基础教程(物料主数据导入示例)
- 屏幕录制大师转换方法
- 电机与拖动(戚金清版)学习整理
- 音乐播放器的js代码
- CAD制图软件中如何设置选择对象的显示效果?
- Win10右下角小图标怎么叠起来?
- 2021MathorCup高校数学建模大数据竞赛解题思路
- 靠大数据 资讯网站“据”透世界杯?
- 计算机应用基础华工平时作业,计算机应用基础华工平时作业答案
- safari快捷图标不见了_桌面图标不见了(不是营销!)
- Java 内存溢出(一)原因、复现、排查