利用端口映射对多台内网服务器配置远程连接

本地多台服务器部署远程连接及配置防火墙

本文讨论如何利用端口映射和防火墙来保证多台内网服务器的公网远程连接,以及连接的安全性。

背景

在高校项目实施过程中,一些大型项目需要部署多台服务器节点,有些公司不能派大量人员驻场实施,只能通过远程桌面或SSH远程连接进行部署。而高校出于网络安全、IPv4地址有限等原因,对于只对校内提供服务的项目只提供校内私网接入及内网IP地址,不提供公网。

以往公司要远程部署,学校往往会给每台服务器都接入公网,开放远程,等项目部署完成再关闭公网。这样既不安全,也占用公网IP地址资源,如果对每台机器的防火墙做安全设置,操作上极为繁琐。

而通过一台统一的跳转服务器去远程,也不是最佳方法。Windows Server 2016最大连接用户数为2人,如果需要多人协同工作就只能等其他人工作完成。这时候端口映射就成了最为便捷的选择。另外,通过跳转机防火墙进行IP访问限制,可以最大程度保证跳转机安全。

示例

1. 搭建服务器并接入网络

假设某项目需要在四台服务器上部署,创建5台虚拟服务器,安装Windows Server 2016或CentOS 7.6,均配置校内局域网10.10.10.0段IP地址。额外配置一台接入教育网公网的跳转服务器,配公网IP地址222.22.222.222,假定222.22.222.0与10.10.10.0两个网段互通(若不通可在跳转服务器上另外接入10.10.10.0段网络)。在这里插入图片描述

2.开启节点服务器远程桌面或SSH连接

Windows操作系统下新建txt文本文档,将如下命令粘贴到txt文本文档中,保存后修改文件后缀为.bat,即可修改远程桌面端口、开启远程桌面并在防火墙中添加入站规则。

cmd命令如下:

@echo off
set /p port=请输入远程端口:
:: 开启远程桌面
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f 
:: 关闭“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
:: 修改端口号
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v restrictanonymous /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d %port% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %port% /f
echo "--------------远程桌面已开启,远程端口号已修改为%port%--------------"
:: 开启防火墙
netsh advfirewall set currentprofile state on
:: 将远程端口号加入防火墙入站规则(允许接入)
netsh advfirewall firewall add rule name="rdp %port%" dir=in action=allow protocol=tcp localport=%port%
echo "--------------防火墙已允许端口号%port%入站连接--------------"
echo "--------------按任意键退出--------------"
pause

CentOS操作系统需要修改如下两个路径文件:
1.假设我们使用2345作为SSH远程端口,编辑/etc/ssh/ssh_config和/etc/ssh/sshd_config,在ssh_config中将PasswordAuthentication yesPort 22前边的#号去掉,22修改为2345。在sshd_config中将Port 22PermitRootLogin no前边的#号去掉,22修改为2345,no改为yes,保存。
2.将端口号加入防火墙规则,命令如下:

firewall-cmd --zone=public --add-port=2345/tcp --permanent
firewall-cmd --reload

3. 在跳转服务器添加端口映射

端口映射,即通过访问跳转机的不同端口来到达不同的节点服务器的特定端口。由于跳转机一般都是Windows,这里直接用Windows操作系统做示例。
假设我们分别用54321、54322、54323、54324来连接节点1~节点4,那么cmd命令如下:

netsh interface portproxy add v4tov4 listenaddress=222.22.222.222 listenport=54321 connectaddress=10.10.10.11 connectport=2345
netsh interface portproxy add v4tov4 listenaddress=222.22.222.222 listenport=54322 connectaddress=10.10.10.12 connectport=2345
netsh interface portproxy add v4tov4 listenaddress=222.22.222.222 listenport=54323 connectaddress=10.10.10.13 connectport=2345
netsh interface portproxy add v4tov4 listenaddress=222.22.222.222 listenport=54324 connectaddress=10.10.10.14 connectport=2345

使用如下命令查看端口映射表:

netsh interface portproxy show v4tov4

在这里插入图片描述

4.在跳转服务器添加防火墙规则

先将54321~54324添加到入站规则,cmd命令如下:

netsh advfirewall firewall add rule name="rdp 54321" dir=in action=allow protocol=tcp localport=54321
netsh advfirewall firewall add rule name="rdp 54322" dir=in action=allow protocol=tcp localport=54322
netsh advfirewall firewall add rule name="rdp 54323" dir=in action=allow protocol=tcp localport=54323
netsh advfirewall firewall add rule name="rdp 54324" dir=in action=allow protocol=tcp localport=54324

重要!接下来添加一条规则,仅允许公司特定IP访问跳转机或通过跳转机访问节点服务器。假设公司IP地址为123.123.123.123:

netsh advfirewall firewall add rule name="测试阻止所有IP" dir=in action=block protocol=any localip="0.0.0.0-123.123.123.122,123.123.123.124-255.255.255.25" remoteip="0.0.0.0-123.123.123.122,123.123.
123.124-255.255.255.255"

这样除了123.123.123.123,任何地址都无法连入跳转服务器,或通过跳转服务器连接节点服务器。
在跳转服务器统一对远程和安全进行管理,一方面便于运维,另一方面也削弱了多个节点服务器对外开放的不安全因素。

结语

网络安全应当在保证为用户提供高质量服务的基础上通过一定技术手段来防患于未然,如果单纯为了网络安全就要牺牲掉信息化成果,给用户和管理者都增添了麻烦,这是得不偿失的。

参考及引用

cmd添加防火墙规则:
https://blog.csdn.net/tangshangkui/article/details/74586705
在线绘图:
https://www.processon.com/
博客图片去水印:
https://blog.csdn.net/qq_38128179/article/details/80741954

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值