草庐IT

玩转华为ENSP模拟器系列 | 配置SSH服务器支持其他端口号访问的举例

COCOgsta 2023-04-12 原文

素材来源:华为路由器配置指南

一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:玩转华为ENSP模拟器系列 | 合集_COCOgsta的博客-CSDN博客_ensp实验大全


目标

在本示例中,通过设定SSH服务器端的侦听端口号为其他端口号,实现只有合法的用户才能建立SSH连接。

组网需求

SSH协议的标准侦听端口号为22,如果攻击者不断访问标准端口,将会使带宽和服务器性能不断下降,从而导致其他正常用户无法访问。

设定SSH服务器端的侦听端口号为其他端口号,攻击者并不知道SSH侦听端口号的更改,仍然发送标准端口号22的socket连接,SSH服务器检测发现请求连接端口号不是侦听的端口号,就不建立socket连接。

这样只有合法的用户采用SSH服务器设定的非标准侦听端口才能建立socket连接,进行SSH协议的版本号协商、算法协商及会话密钥生成、认证、会话请求、会话阶段等过程。

配置思路

  • 在SSH服务器上配置用户client001和client002,分别使用不同的认证方式登录SSH服务器。
  • 分别在STelnet客户端Client002和SSH服务器端生成本地密钥对,并为用户client002绑定SSH客户端的RSA公钥,实现客户端登录服务器端时,对客户端进行验证。
  • SSH服务器端STelnet和SFTP服务使能。
  • 配置SSH用户的服务方式和授权目录。
  • 配置SSH服务器侦听端口号,实现客户端以其他端口号访问服务器。
  • 用户client001和client002分别以STelnet和SFTP方式登录SSH服务器。

操作步骤

  1. 在服务器端生成本地密钥对
SSH Server:
sysname SSH Server
rsa local-key-pair create
  1. 配置服务器端RSA公钥

客户端生成客户端的本地密钥对

client002:
sysname client002
rsa local-key-pair create

查看客户端上生成RSA公钥。

[~client002] dis rsa local-key-pair public
======================Host Key==========================
Time of Key pair created : 2019-10-23 15:03:29
Key Name : client002_Host
Key Type : RSA Encryption Key
========================================================
Key Code:
3082010A
  02820101
    00E82738 8AE4F3B0 DDB06A28 0FD054FE E1D91B40
    EC99AF7A 7C14B247 52C618C8 8E1825D5 62B2F267
    FAA0D7EE 9CFDA4AA 2B490EA7 A4DCFDDC FE723F99
    3316A3D4 EC822D4E 8D80CD6E 3A6402BB 9432B648
    D24C056E E7547BC1 F596DEBB 09B10F8D 1361B5AD
    1D204870 9D8D4881 68F0B1C7 E73161BE 7BBFF754
    9430B8FA E28B57AA C87A7F7F 5D29E300 F5067FA5
    53783658 A68BAD0A 486CFB7B 37C2BF7A A5F68CE4
    DD488D5E 06A78E80 5836B668 BC8341A0 CDDEFE9A
    228FF048 18E4FD46 8C1A128F 14761DC3 E939B4F1
    2C4FDCD3 B8BEAD7B B2454E8C 39247383 A186F8A8
    AA04AC81 BB12A436 FE07C3B9 85E88677 3A44357C
    3CDDD288 29648FFA F4C963D7 2F622981 83
  0203
    010001
                
Host public key for PEM format code:
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAADAQABAAABAQDoJziK5POw3bBqKA/QVP7h2RtA7JmvenwU
skdSxhjIjhgl1WKy8mf6oNfunP2kqitJDqek3P3c/nI/mTMWo9Tsgi1OjYDNbjpk
AruUMrZI0kwFbudUe8H1lt67CbEPjRNhta0dIEhwnY1IgWjwscfnMWG+e7/3VJQw
uPrii1eqyHp/f10p4wD1Bn+lU3g2WKaLrQpIbPt7N8K/eqX2jOTdSI1eBqeOgFg2
tmi8g0Ggzd7+miKP8EgY5P1GjBoSjxR2HcPpObTxLE/c07i+rXuyRU6MOSRzg6GG
+KiqBKyBuxKkNv4Hw7mF6IZ3OkQ1fDzd0ogpZI/69Mlj1y9iKYGD
---- END SSH2 PUBLIC KEY ----
Public key code for pasting into OpenSSH authorized_keys file:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDoJziK5POw3bBqKA/QVP7h2RtA7JmvenwUskdSxhjIjhgl1WKy8mf6oNfunP2kqitJDqek3P3c/nI/mTMWo9Tsgi1OjYDNbjpkAruUMrZI0kwFbudUe8H1lt67CbEPjRNhta0dIEhwnY1IgWjwscfnMWG+e7/3VJQwuPrii1eqyHp/f10p4wD1Bn+lU3g2WKaLrQpIbPt7N8K/eqX2jOTdSI1eBqeOgFg2tmi8g0Ggzd7+miKP8EgY5P1GjBoSjxR2HcPpObTxLE/c07i+rXuyRU6MOSRzg6GG+KiqBKyBuxKkNv4Hw7mF6IZ3OkQ1fDzd0ogpZI/69Mlj1y9iKYGD rsa-key
Host public key for SSH1 format code:
2048 65537 29306627283638245027301637315280770431415530389244244975230531145561759626104057970787610929852299674051395034571703345660143794244307882155154183686531050878005010504329393633643469936953292070720937043694787072356480898127877140144815696800882401273992857152377313067297762846394698713180419093593469245126220992027251595773791728199966720913069181242916745109496146151516479321425637311898828414799574285972911331742416528185408208809863571790947427202191938582337262508462023617308198414038686321260976602728478298553565503910030065605290194687201091479154797244037233152226680632686743021553740244651535856402819
======================Server Key========================
Time of Key pair created : 2019-10-23 15:03:29
Key Name : client002_Server
Key Type : RSA Encryption Key
========================================================
Key Code:
3081B9          
  0281B1
    009BA1EB 31436F37 BC8D0209 5B316C22 468A2C5F
    B7354FF4 2EF2BD23 7F60D6C1 9F731BA9 004F77E7
    6713AD7D A9367413 E308FA7A 86B3379F 6CEF8D99
    5CA7873F 023E806B 0FA6234D 80DC8C07 4069C284
    C37E66BE 16B58A3F 6A0A74C8 BA3C0995 7FDF76C7
    9D09A126 F1CD89B6 EBFD6EE3 521DC175 5FEC0163
    E13D7D5A 84A41C6E 3DEC9FFB D338CEC1 0A8FEE6E
    7FAF56BA 66EF7F3A 2580DC1E 2B752B44 0BD94C15
    BED635E3 501074E2 070F970A 4D1D5332 75
  0203
    010001
[~client002]  

将客户端上产生的RSA公钥传送到服务器端。

SSH Server:
rsa peer-public-key rsakey001
 public-key-code begin
 3082010A
  02820101
    00E82738 8AE4F3B0 DDB06A28 0FD054FE E1D91B40 EC99AF7A 7C14B247 52C618C8
    8E1825D5 62B2F267 FAA0D7EE 9CFDA4AA 2B490EA7 A4DCFDDC FE723F99 3316A3D4
    EC822D4E 8D80CD6E 3A6402BB 9432B648 D24C056E E7547BC1 F596DEBB 09B10F8D
    1361B5AD 1D204870 9D8D4881 68F0B1C7 E73161BE 7BBFF754 9430B8FA E28B57AA
    C87A7F7F 5D29E300 F5067FA5 53783658 A68BAD0A 486CFB7B 37C2BF7A A5F68CE4
    DD488D5E 06A78E80 5836B668 BC8341A0 CDDEFE9A 228FF048 18E4FD46 8C1A128F
    14761DC3 E939B4F1 2C4FDCD3 B8BEAD7B B2454E8C 39247383 A186F8A8 AA04AC81
    BB12A436 FE07C3B9 85E88677 3A44357C 3CDDD288 29648FFA F4C963D7 2F622981
    83
  0203
    010001
 public-key-code end
 peer-public-key end
  1. 在服务器端创建SSH用户

配置VTY用户界面。

SSH Server:
user-interface vty 0 4
 authentication-mode aaa
 protocol inbound ssh

创建SSH用户Client001。

新建用户名为Client001的SSH用户,且认证方式为password。

SSH Server:
ssh user client001
ssh user client001 authentication-type password

为SSH用户Client001配置密码为Hello-huawei123。

SSH Server:
aaa
 local-user client001 password irreversible-cipher $1c$TYH4FuMpqC$E_FcCVX\`<<l=l/_.X1BNE"8ESc(w5.Px2<7AC"N$
 local-user client001 service-type ssh

配置Client001的服务方式为STelnet。

SSH Server:
ssh user client001 service-type stelnet

创建SSH用户Client002。

新建用户名为Client002的SSH用户,且认证方式为RSA,并绑定SSH客户端RSA公钥。

SSH Server:
ssh user client002
ssh user client002 authentication-type rsa
ssh user client002 assign rsa-key rsakey001

配置Client002的服务方式为SFTP,并为其配置授权目录。

SSH Server:
ssh user client002 service-type sftp
ssh user client002 sftp-directory cfcard:
  1. SSH服务器端Stelent和SFTP服务使能
SSH Server:
stelnet server enable
sftp server enable
  1. 配置SSH服务端新的侦听端口号
SSH Server:
ssh ipv4 server port 1025
ssh ipv6 server port 1025

SSH客户端连接SSH服务器

第一次登录,则需要使能SSH客户端首次认证功能。

使能客户端Client001首次认证功能。

clien001:
sysname client001
ssh client first-time enable

使能客户端Client002首次认证功能

client002:
ssh client first-time enable

STelnet客户端用新端口号连接SSH服务器。

[~client001]stelnet 1.1.1.1 1025
Trying 1.1.1.1 ...
Press CTRL + K to abort
Connected to 1.1.1.1 ...
Please input the username: client001
Enter password: 
Warning: The initial password poses security risks.
The password needs to be changed. Change now? [Y/N]:n
Info: The max number of VTY users is 5, the number of current VTY users online i
s 1, and total number of terminal users online is 2.
      The current login time is 2019-10-23 15:15:23.
      First login successfully.
<SSH Server>

SFTP客户端用新端口号连接SSH服务器。

[~client002]sftp 1.1.1.1 1025
Trying 1.1.1.1 ...
Press CTRL+K to abort
Connected to 1.1.1.1 ...
Please input the username: client002
sftp-client>
  1. 检查配置结果

攻击者使用原端口号22访问SSH服务器,不能成功。

[~client002]sftp 1.1.1.1
Trying 1.1.1.1 ...
Press CTRL+K to abort
Error: Failed to connect to the remote host.
[~client002]

配置完成后,在SSH服务器端执行display ssh server status命令、display ssh server session命令,可以查看到SSH服务器端当前侦听端口号,并且STelnet客户端或SFTP客户端已经成功连接到SSH服务器。

查看SSH状态信息。

[~SSH Server]dis ssh server status
SSH Version                                : 2.0
SSH authentication timeout (Seconds)       : 60
SSH authentication retries (Times)         : 3
SSH server key generating interval (Hours) : 0
SSH version 1.x compatibility              : Disable
SSH server keepalive                       : Enable
SFTP IPv4 server                           : Enable
SFTP IPv6 server                           : Enable
STELNET IPv4 server                        : Enable
STELNET IPv6 server                        : Enable
SNETCONF IPv4 server                       : Disable
SNETCONF IPv6 server                       : Disable
SNETCONF IPv4 server port(830)             : Disable
SNETCONF IPv6 server port(830)             : Disable
SCP IPv4 server                            : Disable
SCP IPv6 server                            : Disable
SSH server DES                             : Disable
SSH IPv4 server port                       : 1025
SSH IPv6 server port                       : 1025
SSH server source address                  : 0.0.0.0
SSH ipv6 server source address             : 0::0
SSH ipv6 server source vpnName             : 
ACL name                                   : 
ACL number                                 : 
ACL6 name                                  : 
ACL6 number                                : 
SSH server ip-block                        : Enable

查看SSH服务器的连接信息。

[~SSH Server]  dis ssh server session
--------------------------------------------------------------------------------
Session                                 : 1
Conn                                    : VTY 0
Version                                 : 2.0
State                                   : Started
Username                                : client001
Retry                                   : 1
CTOS Cipher                             : aes256-ctr
STOC Cipher                             : aes256-ctr
CTOS Hmac                               : hmac-sha2-256
STOC Hmac                               : hmac-sha2-256
CTOS Compress                           : none
STOC Compress                           : none
Kex                                     : diffie-hellman-group14-sha1
Public Key                              : ECC
Service Type                            : stelnet
Authentication Type                     : password
Connection Port Number                  : 1025
Idle Time                               : 00:01:49
Total Packet Number                     : 30
Packet Number after Rekey               : 30
Total Data(MB)                          : 0
Data after Rekey(MB)                    : 0
Time after Session Established(Minute)  : 2
Time after Rekey(Minute)                : 2
Session                                 : 2
Conn                                    : SFTP 0
Version                                 : 2.0
State                                   : Started
Username                                : client002
Retry                                   : 1
CTOS Cipher                             : aes256-ctr
STOC Cipher                             : aes256-ctr
CTOS Hmac                               : hmac-sha2-256
STOC Hmac                               : hmac-sha2-256
CTOS Compress                           : none
STOC Compress                           : none
Kex                                     : diffie-hellman-group14-sha1
Public Key                              : ECC
Service Type                            : sftp
Authentication Type                     : rsa
Connection Port Number                  : 1025
Idle Time                               : 00:00:38
Total Packet Number                     : 16
Packet Number after Rekey               : 16
Total Data(MB)                          : 0
Data after Rekey(MB)                    : 0
Time after Session Established(Minute)  : 0
Time after Rekey(Minute)                : 0
--------------------------------------------------------------------------------
[~SSH Server] 

有关玩转华为ENSP模拟器系列 | 配置SSH服务器支持其他端口号访问的举例的更多相关文章

  1. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  4. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  5. ruby - Capistrano 3 在任务中更改 ssh_options - 2

    我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe

  6. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  7. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  8. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  9. ruby - 调用其他方法的 TDD 方法的正确方法 - 2

    我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent

  10. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

随机推荐