最新消息:

<转>我的SSH我做主——秘密握手

SSH 大步 1828浏览 0评论

原文:http://igfw.net/archives/9830

恰好今天看到所用的ssh代理服务供应商开始在server上部署和测试Obfuscation功能,以增强抵御某怪物干扰用户正常使用ssh代理的能力。

1. 原理

以下是ISP提供的说明:

转我的SSH我做主——秘密握手 - ksharp_dabu - ksharp_dabu的博客

那何为Obfuscation?
查了下Wikipedia:

概念蛮绕口的,然后我那烂翻译也……不过意思还是很清楚的,实际上就是将handshake易容,这样怪物就看不出来数据传输用的ssh协议了,然后ssh代理满血归来。

2. 解决方案
牛人Bruce Leidl为openssh写了个很给力的补丁。它可以在创建加密SSH连接时将握手信号(handshake)进行混淆处理。这样一个加密的握手信号就可以骗过怪物所用的深度包检测设备,顺利完成使命,进而保证了网络的安全性与稳定性。
(1)准备
你需要有一台位于怪物控制范围的Linux服务器,然后在服务器上配置好Obfuscated-openssh补丁。
Obfuscated-openssh点此下载,然后执行下述命令编译安装:

建议将其与常规的SSH守护进程分开安装。
(2)配置
作为SSH代理的话,没有必要让用户通过ssh登陆服务器,因此需要将此部分权限给限制掉,让用户只能使用SOCKS代理。要做到这点,需要创建专用的用户账号。

以下即为添加一个名为“golengssh”而密码为“goleng.com”用户的命令,该用户无法远程登入服务器。

小贴士:useradd命令用法参见此文

####################以下为useradd命令用法

Linux下的useradd命令用法详解

以下内容转载自http://www.cppblog.com/prayer/archive/2009/08/13/93234.html

1.作用
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户。
2.格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
3.主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。 
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
4.说明
useradd可用来建立用户账号,他和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
5.应用实例
建立一个新用户账户,并设置ID:
#useradd caojh -u 544
需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特别用户,一般0到499之间的值留给bin、mail这样的系统账号。
               
   今天遇见这样一条命令:
    useradd oracle -g oinstall -G dba
    感觉非常诧异,为什么 g 和 G 这两个参数会同时存在呢?
    在网上查了一下资料了解到,useradd命令用到的主要参数如下:
    -c comment 指定一段注释性描述。
  -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,能创建主目录。
  -g 用户组 指定用户所属的用户组。
  -G 用户组,用户组 指定用户所属的附加组。
  -s Shell文件 指定用户的登录Shell。
  -u 用户号 指定用户的用户号,如果同时有-o选项,则能重复使用其他用户的标识号。
    通过上面的解释我们目前能清晰的知道,上面那个命令的具体意思是,
    新创建一个oracle用户,这初始属于oinstall组,且同时让他也属于dba组。
#######################################################

下面为大家提供一个samplesshd_config文件共参考使用,使用此文件只允许用户“golengssh”连接服务器。

Linux下安装ssh客户端需要激活sshd,参考此文

##############################以下关于Linux下安装ssh客户端需要激活sshd

Linux系统下激活SSH
2008-07-13 20:59

ssh (putty,secure crt)linux远程管理

远程控制

开通ssh端口跟IP地址

安装linux的时候,ssh自带的也给安装上了,但并不能直接使用,还需要激活:

激活ssh:
/etc/rc.d/init.d/sshd start
service sshd start
netstat -tl

激活以后,每次开机还都得重新激活。

可以在启动linux时自动启动ssh:
在文件/etc/rc2.d/S99local里面加入 /usr/sbin/sshd &
(/usr/sbin/sshd 是ssh启动的)

这样每次开机以后就不用再次激活,直接就可以远程控制。

################################

Linux下连接服务器的命令是:

这里的“yuanjin”就是在配置文件中的ObfuscateKeyword,ssh的服务器端口为443,最后设置浏览器的SOCKS代理至本地的7070端口,可参考此文
关于SSH命令转发更多的内容可以参考此文,上述命令的例子感谢ISP客服提供的参考。

###############################以下为关于SSH命令转发更多的内容

通过SSH实现 端口映射

可以将远端服务器一个端口remote_port绑定到本地端口port,其中-C是进行数据压缩,-f是后台操作,只有当提示用 户名密码的时候才转向前台。-N是不执行远端命令,在只是端口转发时这条命令很有用处。-g 是允许远端主机连接本地转发端口。-R表明是将远端主机端口映射到本地端口。如果是-L,则是将本地端口映射到远端主机端口。

ssh的三个强大的端口转发命令:

转发到远端:ssh -C -f -N -g -L 本地端口:目标IP:目标端口 用户名@目标IP

转发到本地:ssh -C -f -N -g –R 本地端口:目标IP:目标端口 用户名@目标IP

ssh -C -f -N -g -D listen_port user@Tunnel_Host

-C:压缩数据传输。

-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-N :不执行脚本或命令,通常与-f连用。

-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

-L 本地端口:目标IP:目标端口

将 本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-R本地端口:目标IP:目标端口

将 远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-p :被登录的ssd服务器的sshd服务端口。

-D port

指 定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

应用举例

1.将发往本机的80端口访问转发到174.139.9.66的8080端口

ssh -C -f -N -g -L 80:174.139.9.66:8080 master@174.139.9.66

2.讲发往174.139.9.66的8080访问转发到本机的80端口

ssh -C -f -N -g -R 80:174.139.9.66:8080 master@174.139.9.66

####################################

参考文章:
[1]Secret Handshake for Iran http://nihilex.com/obfuscated-openssh
[2]Obfuscation http://en.wikipedia.org/wiki/Obfuscation

来源http://www.goleng.com/?p=665

此类技术用于“break gfw”,据我知道最早是赛风3在用,我在 http://igfw.net/archives/7152 一文中有过详述,有兴趣的看看。

转载请注明:大步's Blog » <转>我的SSH我做主——秘密握手

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap