在Ubuntu上搭建FTE服务器

来源:互联网 发布:软件接口设计工具 编辑:程序博客网 时间:2024/05/16 08:55

目录

  • 目录
  • 关于FTE
  • 下载FTE
    • OSX系统
    • Ubuntu
    • 测试
  • FTE命令详解
    • 1命令格式
    • 2命令参数
  • 开始搭建
    • 客户端设置
    • 服务器端设置
  • 测试
    • 客户端

关于FTE

FTE的全称是Format-Transforming Encryption,由Kevin P. Dyer于2003年在文章《Protocol misidentification made easy with format-transforming encryption》中提出。使用FTE可以将普通字符串转换成符合指定格式(如正则表达式)的字符串,这可以用于协议伪装,例如,通过将被审查的字符串(或协议如Tor、TLS)转换成HTTP协议,可以穿过防火墙。更多关于FTE的资料可以阅读英文文献《Protocol misidentification made easy with format-transforming encryption》或FTE的主页。同时在GitHub上也可以查看相关资料(https://github.com/kpdyer/fteproxy)。

下载FTE

FTE当前的最新版本是0.2.19,这里只列出OSX和Ubuntu下FTE的安装,FTE的源代码和其他版本的下载请参考FTE的下载主页

OSX系统

需要先安装homebrew,然后运行如下三个命令

brew update
brew install python gmp libyaml gcc
pip install fteproxy

Ubuntu

同样的,仅仅三个命令即可安装

sudo apt-get update
sudo apt-get install python-dev python-pip libgmp-dev build-essential
sudo pip install fteprox

测试

为了测试是否安装成功,需要运行如下命令

fteproxy –mode test

若显示如下,则说明安装成功

OK

如:

安装成功示例

FTE命令详解

1、命令格式

fteproxy [选项]

2、命令参数

-h, –help 显示帮助文档

–version 显示版本号

–mode (client|server|test) 模式,默认是client

–stop 关闭fteproxy,默认不关闭

–upstream-format UPSTREAM_FORMA 指定上传流的格式,默认是manual-http-request

–downstream-format DOWNSTREAM_FORMAT 指定下传流的格式,默认是manual-http-response

–client_ip CLIENT_IP 客户端监听IP,默认是127.0.0.1

–client_port CLIENT_PORT 客户端监听端口,默认是8079

–server_ip SERVER_IP 服务器端监听IP,默认是127.0.0.1

–server_port SERVER_PORT 服务器端监听端口,默认是8080

–proxy_ip PROXY_IP 转发代理(socks)监听IP,默认是 127.0.0.1

–proxy_port PROXY_PORT 转发代理(socks)监听端口,默认是8081

–quiet 完全静默模式,不打印任何字符串,默认打印

–release RELEASE 使用的定义格式的文件名称,文件名格式为 YYYYMMDD,默认是20131224

–managed 针对Tor,使用插件模式,默认关闭

–key KEY 加密key,必须是64位16进制串,默认是FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000

开始搭建

我们在两台Ubuntu上分别搭建服务器和客户端,两者ip分别为192.168.197.143(客户端)、192.168.197.144(服务器)。

客户端设置

在客户端安装好fteproxy后,运行如下命令

fteproxy --client_ip $CLIENT_IP --client_port $CLIENT_PORT --server_ip $SERVER_IP --server_port $SERVER_PORT --mode client

在该命令中,需要将如下几个值进行替换:

  1. $CLIENT_IP:指定本机客户端监听绑定的IP地址,需要替换为本机IP地址;
  2. $CLIENT_PORT:指定本机客户端监听绑定的端口,一般设置为8079即可;
  3. $SERVER_IP:指定fte服务器的IP地址;
  4. $SERVER_PORT:指定fte服务器监听的端口,一般为8080;

在我的搭建过程中,客户端命令如下:

fteproxy --client_ip 192.168.197.143 --client_port 8079 --server_ip 192.168.197.144 --server_port 8080 --mode client

结果如下:
客户端设置

运行如下命令可以查看本机端口开放情况,如下图中8079端口处于监听状态。

netstat -antp

这里写图片描述

服务器端设置

在服务器端安装好fteproxy后,运行如下命令:

fteproxy --server_ip $SERVER_IP --server_port $SERVER_PORT --proxy_ip $PROXY_IP --proxy_port $PROXY_PORT --mode server

在该命令中,需要将如下几个值进行替换:
1. $SERVER_IP:指定fte服务器的IP地址,为本机IP地址;
2. $SERVER_PORT:指定fte服务器监听的端口,一般为8080;
3. $PROXY_IP:指定转发代理监听绑定的IP地址,设置为127.0.0.1即可;
4. $PROXY_PORT:指定转发代理监听绑定的端口,一般设置为8081即可;

在我的搭建过程中,客户端命令如下:

fteproxy --server_ip 192.168.197.144 --server_port 8080 --proxy_ip 127.0.0.1 --proxy_port 8081 --mode server

结果如下:
服务器端设置

运行如下命令可以查看本机端口开放情况,如下图中8080端口处于监听状态。

netstat -antp

本机端口查看

此外,还需要开启端口转发:

ssh -D $PROXY_PORT [$username]@$PROXY_IP

同样的需要对 $PROXY_PORT $PROXY_PORT $usename进行替换。在我的搭建过程中,PROXY_PORT为8081,username为root,PROXY_IP为192.168.197.144,如下:

ssh -D 8081 root@192.168.197.144

这里写图片描述

同样运行如下命令查看本机端口开放情况,如下图中8081端口处于监听状态。

netstat -antp

这里写图片描述

测试

下面开始通过使用FTE来访问网页来测试FTE的使用

客户端

首先测试目标网页是否能够访问,首先确保安装curl(若已经安装的忽略此步骤。)

sudo apt-get install curl

随后使用curl访问目标网页

curl www.baidu.com

若访问成功,则会显示如下:
这里写图片描述

最后使用curl,测试FTE的使用

curl –socks $CLIENT_IP:$CLIENT_PORT www.baidu.com

我的测试过程中使用如下命令:

curl --socks 192.168.197.143:8079 www.baidu.com

若成功,会显示网页情况。使用wireshark抓到的数据包如下图所示:
这里写图片描述
这里写图片描述

由于使用的是未设置–upstream-format和–downstream-format参数,默认的manual-http-request,因此抓出来的包很像HTTP协议。

[1] FTE 主页https://fteproxy.org/
[2] FTE 下载页https://fteproxy.org/download
[3] KP Dyer, SE Coull, T Ristenpart 《Protocol misidentification made easy with format-transforming encryption》 http://dl.acm.org/citation.cfm?id=2516657

0 0
原创粉丝点击