链接:
漫图来源于:捷哥
文案格式排版:释然
笔者在工作中遇到此场景,如下两条网络限制下,总部如何访问分公司内部web服务器?
dmz服务器可以访问总部外网服务器22端口,不可以访问web服务器;
web服务器不可访问公网,但是到dmz网络无限制。
第二种级别(基于密匙的安全验证),需要依靠密匙,也就是必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。如果要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用密匙进行安全验证。服务器收到。
初看需求,ssh用法及命令,我们第一个想到的肯定是内网端口映射到公网,或者vpn,但是不修改网络策略情况下很难实现。有没有别的方法呢,我们继续从纯网络角度分析现有条件。
网络通信是双向的,有请求,有回应,就是我们俗称的“通”。dmz可以访问外部22端口,代表请求,回包两个通信通道都是通畅的,我们是否可以借助回包通道,从外部发起到内部的反向访问呢?答案当然是有的,我们来试一试,需要ssh工具。
我们在dmz执行如下命令。
-f:代表后台运行程序
-N:表示使用远程端口转发创建ssh隧道
企业回深圳市红典咨询有限公司主营业务包括国际设计奖项申报、工业设计及申报,为企业提供专业的奖项咨询服务,通过专业的设计指导和制作专业的参赛资料,帮助企业轻松赢取国际大奖。我们具备从产品选型、产品CMF优化指导、产品研究、竞品分析、产品创。
-g:监听本机所有IP地址
-R,表示使用远程端口转发创建ssh隧道
命令结合起来什么意思呢,我们使用root用户远程连接到115.100.100.100,并且远程主机监听6606端口,当访问此端口时,会跳转到dmz的80端口。此过程会使用到ssh隧道。dmz运行之后,总部服务器的已经有了端口监听。
[root@center] telnet 127.0.0.1 6606 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused
如法炮制,再把web服务器到dmz的网络反向打通,dmz服务器访问本地80端口时将跳转到web服务器的80端口。
再次到总部服务器测试访问就能通信了。
[root@center]39;^]'.
我们最后从网络角度来回顾数据包的的转发过程。
从总部服务器看到如下信息。
当总部服务器访问127.0.0.1:6606时,网络连接信息如下。
双向通道已经建立[root@center]# ss | grep 6606 tcp ESTAB 0 0 127.0.0.1:6606 127.0.0.1:51158 tcp ESTAB 0 0 127.0.0.1:51158 127.0.0.1:6606
我们最后用图片来展示最终网络转发过程。
dmz发起ssh连接到总部服务器,并且远程端口转发。远程服务器访问转发端口时,数据将封装到回包通道,由于ssh本身加密,外部网络无法知晓网络交互逻辑,从而实现反向访问。
方法一、使用命令行的 -J 参数 方法二、配置文件: ~/.ssh/config 然后就可以直接:sshd 的配置文件: /etc/ssh/sshd_config 。我们可以修改 sshd 的默认配置来增强系统的安全性,以下是一些需要注意的配置项: