ssh turnel

匿名 (未验证) 提交于 2019-12-03 00:27:02

英语好的请移步:https://www.ssh.com/ssh/tunneling/example

相信很多大公司为了安全和权限管理都在使用堡垒机,这里介绍一个方便快速开发,安全直连服务器的方法。

什么是SSH端口转发,SSH tunnel?

SSH端口转发是SSH的一种机制,用于从客户端到服务器的隧穿应用端口,反之亦然。它可以用于向应用程序加密通过防火墙,一些系统管理员和It专业人员使用它来从家里的机器中打开后门进入内部网络。它还可以被黑客和恶意软件滥用,以开放从内部网络的访问。

本地转发

SSH clientSSH server. The server connects to a configurated destination port, possibly on a different machine than the SSH server.本地转发用于将一个端口从客户端转发到服务器。通常的做法是:SSH客户机配置链接用的监听端口,当它接收到连接时,它将转发连接到SSH服务器。服务器连接到一个配置好的目标端口,可能在不同的机器上而不是SSH服务器。

本地端口转发的典型用途包括:

  • 通过跳转服务器进行隧道会话和文件传输。
  • 从外部网络连接到内部网络上的服务器。
  • 连接到Internet上的远程文件共享。

相当多的组织通过某个跳转服务器来访问内部SSH。服务器可能是一个标准的Linux/Unix box,通常带有一些额外的硬化、入侵检测和/或日志记录,或者它可能是一个商业跳转服务器解决方案。例如,CryptoAuditor可以充当跳转服务器,记录所有会话,并将会话内容传递给分析,以获得可疑活动的早期预警。

许多跳转服务器允许传入端口转发只要连接验证通过,这样的端口转发是很方便的,因为它允许精通技术的用户非常透明地使用内部资源。例如,他们会他们的本地机器上一个端口转发到公司内部网web服务器,内部邮件服务器的IMAP端口,一个本地文件服务器的445和139端口,一台打印机,版本控制存储库,或任何其他系统内部网络。通常,端口被隧道到内部机器上的SSH端口上。

在OpenSSh中,本地端口转发需要使用-L参数进行配置:

ssh -L 80:intra.example.com:80 gw.example.com

这里的例子是打开一个链接到跳转服务器gw.example.comintra.example.com80端口。

默认情况下,任何人(即使在不同的机器上)都可以连接到SSH客户机机器上指定的端口。然而,这可以通过提供一个bind地址来限制在同一主机上的程序:

ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

OpenSSH 客户端配置文件中参数LocalForward

远程转发

在OpenSSH中使用参数-R实现远程SSH端口转发。例如:

ssh -R 8080:localhost:80 public.example.com

这允许远程服务器上的任何人连接到远程服务器上的TCP端口8080。然后,连接将被隧道重新连接到客户端主机,然后客户端在本地主机上与端口80进行TCP连接。任何其他主机名或IP地址都可以用来代替localhost来指定要连接的主机。

这个特殊的例子对于允许外部访问内部web服务器是很有用的。或者将一个内部的web应用程序公开到公共互联网上。这有利于在家工作的员工或攻击者。

默认情况下,OpenSSH只允许从服务器主机连接到远程转发端口。然而,服务器配置文件sshdconfig中的gatewayport选项可以用来控制它。以下是可选的配置:

GatewayPorts no

这可以防止连接到服务器计算机外部的转发端口。

GatewayPorts yes

这允许任何人连接到转发的端口。如果服务器在公共互联网上,互联网上的任何人都可以连接到端口。

GatewayPorts clientspecified

这意味着客户端可以指定一个IP地址,该IP地址允许连接到端口的连接。其语法是:

ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com

在这个例子中,只有来自IP地址为52.194.1.73且目标端口是8080的被允许

-O forwardoption, the client will print the allocated port number to standard output.

OPENING BACKDOORS INTO THE ENTERPRISE

free-tier server from Amazon AWS, and log in from the office to that server, specifying remote forwarding from a port on the server to some server or application on the internal enterprise network. Multiple remote forwards may be specified to open access to more than one application.

GatewayPorts yes

For example, the following command opens access to an internal Postgres database at port 5432 and an internal SSH port at port 2222.

ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net

SERVER-SIDE CONFIGURATION

AllowTcpForwardingOpenSSH server configuration fileyesallnolocalremote

AllowStreamLocalForwardingAllowTcpForwardingyes.

For example:

AllowTcpForwarding remote AllowStreamLocalForwarding no

GatewayPortsnoyesclientspecified

HOW TO PREVENT SSH PORT FORWARDING FROM CIRCUMVENTING FIREWALLS

SFTP

The problem is that port forwarding can in practice only be prevented by a server or firewall. An enterprise cannot control all servers on the Internet. Firewall-based control can also be tricky, as most organizations have servers in Amazon AWS and other cloud services, and those servers are usually accessed using SSH.

CryptoAuditorSFTP

CryptoAuditor is one of the very few known solutions for controlling remote forwarding for outbound connections. Such connections are the highest risk connections for back-tunneling from the Internet into the internal network. Blocking outbound SSH connections entirely at a firewall is not feasible when developers and administrators need access to external cloud servers.

FURTHER INFORMATION


文章来源: ssh turnel
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!