【重复造轮子】Frp一键容器化部署

更新时间:2023年05月11日20:31:22
image.png

1. 需求

在很多攻防渗透中,由于客户要求,需要使用指定的ip进行渗透测试,一般来说,客户会给一个或者多个ip进行授权,我们的所有操作都需要通过这个ip进行,这个时候就需要配置一个隧道,将在这里以frp为例,将frp的客户端和服务端都跑在这个授权的ip(在这以公网vps为例)上,配置frp稍微有些繁琐,如果配置一次可能还行,多次配置的时候就感觉稍微麻烦了,所以为了满足访问需求,直接一键安装使用,可以提高效率。
请注意:这里的frp客户端和服务端都是在一起的,也就是在一个机器上,这样管理起来比较方便,而且本地只需要配置vps的代理端口就行了。
在这里frp是自己使用的,所以不需要考虑frp的流量混淆等问题。

网上已经有了一篇在docker里面配置frpc

https://github.com/stilleshan/frpc 

这个项目只配置了frpcfrps一般配置在靶机上的,但是我们这里的frp只供自己用的,所以都部署在vps上就行。

2. 配置

image.png

环境需求:

  • linux公网
  • 存在docker容器环境

2.1 Dockerfile文件

FROM ubuntu:14.04

LABEL maintainer="crowsec"

ENV VERSION 0.48.0
ENV TZ=Asia/Shanghai

# 安装依赖软件包
RUN apt-get update && apt-get install -y wget tar supervisor

# 设置时区
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone

# 判断系统并下载 frp
RUN if [ "$(uname -m)" = "x86_64" ]; then export PLATFORM=amd64 ; \
    elif [ "$(uname -m)" = "aarch64" ]; then export PLATFORM=arm64 ; \
    elif [ "$(uname -m)" = "armv7" ]; then export PLATFORM=arm ; \
    elif [ "$(uname -m)" = "armv7l" ]; then export PLATFORM=arm ; \
    elif [ "$(uname -m)" = "armhf" ]; then export PLATFORM=arm ; fi \
    && wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v${VERSION}/frp_${VERSION}_linux_${PLATFORM}.tar.gz \
    && tar xzf frp_${VERSION}_linux_${PLATFORM}.tar.gz \
    && cd frp_${VERSION}_linux_${PLATFORM} \
    && mkdir /frp\
    && mv frpc /frp \
    && mv frps /frp \
    && cd .. \
    && rm -rf *.tar.gz frp_${VERSION}_linux_${PLATFORM}

# 拷贝配置文件和监控进程工具
COPY ./frpc.ini /frp/
COPY ./frps.ini /frp/
COPY frpcs.conf /etc/supervisor/conf.d/

# 启动 supervisord
CMD ["/usr/bin/supervisord"]

然后配置frp的两个配置文件

2.2 frpc.ini-客户端

frpc.ini 这个是客户端的,也就是我们常用的vps端的,但是在这里其实是不区分的,毕竟是在一个vps上启代理:

[common]
server_addr = 142.545.719.181 # 这个ip是到时候远程要连接的,就是你目前vps的ip地址
server_port = 3489  # 这个是和服务端对接的端口,可以修改


[plugin_socks5]
type = tcp
remote_port = 8455 # 这个是到时候你连接的代理端口
plugin = socks5
plugin_user = hhhh   # socks5用到的用户  
plugin_passwd = jjjj # socks5用到的密码

建议配置账号密码信息,如果你不配置的话,理论上可以白嫖你的vps隧道。

2.3 frps.ini-服务端

[common]
bind_port = 3489 # 这个和frpc.ini对应的
bind_addr = 0.0.0.0 # 这个不动哦
protocol = tcp
tls_enable = true

2.4 frpcs.conf

[supervisord]
nodaemon=true

[program:frps]
command=/frp/frps -c /frp/frps.ini

[program:frpc]
command=/frp/frpc -c /frp/frpc.ini

这是启动客户端和服务端的,配置Dockerfile使用。

2.5 使用

首先目录结果如下:
image.png

在当前目录下使用命令构建容器:

docker build -t frpcs:v1.0 .

image.png

构建完成之后,可以看下:
image.png

有点大,200多M
运行起来:

docker run -dt --name frpcs -p 3489:3489 -p 8455:8455 --rm frpcs:v1.0

请注意:这里的两个映射端口一定要和你frp的两个配置文件里面的保持一致:

image.png

此时使用命令看下是不是真的运行起来了:

docker logs frpcs

image.png

貌似是起来了,此时的隧道就已经配置完成了。

2.6 连接测试

通过你配置的信息本地配置,然后访问下看看:
image.png

成功:

image.png

3. 命令总结

在部署的时候,只需要配置frpc.inifrps.ini就行了。

3.1 frpc.ini

[common]
server_addr = 1260.5125.72338.181220
server_port = 33893


[plugin_socks5]
type = tcp
remote_port = 44555
plugin = socks5
plugin_user = aDmin
plugin_passwd = Us@Afdsa

3.2 fprs.ini

[common]
bind_port = 33893
bind_addr = 0.0.0.0
protocol = tcp
tls_enable = true

3.3 frpcs.ini

[supervisord]
nodaemon=true

[program:frps]
command=/frp/frps -c /frp/frps.ini 

[program:frpc]
command=/frp/frpc -c /frp/frpc.ini

3.4 Dockerfile 国际版

FROM ubuntu:14.04

LABEL maintainer="crowsec"

ENV VERSION 0.48.0
ENV TZ=Asia/Shanghai

# 安装依赖软件包
RUN apt-get update && apt-get install -y wget tar supervisor

# 设置时区
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone

# 判断系统并下载 frp
RUN if [ "$(uname -m)" = "x86_64" ]; then export PLATFORM=amd64 ; \
    elif [ "$(uname -m)" = "aarch64" ]; then export PLATFORM=arm64 ; \
    elif [ "$(uname -m)" = "armv7" ]; then export PLATFORM=arm ; \
    elif [ "$(uname -m)" = "armv7l" ]; then export PLATFORM=arm ; \
    elif [ "$(uname -m)" = "armhf" ]; then export PLATFORM=arm ; fi \
    && wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v${VERSION}/frp_${VERSION}_linux_${PLATFORM}.tar.gz \
	&& sleep 5 \
    && tar xzf frp_${VERSION}_linux_${PLATFORM}.tar.gz \
    && cd frp_${VERSION}_linux_${PLATFORM} \
    && mkdir /frp\
    && mv frpc /frp \
    && mv frps /frp \
    && cd .. \
    && rm -rf *.tar.gz frp_${VERSION}_linux_${PLATFORM}

# 拷贝配置文件和监控进程工具
COPY ./frpc.ini /frp/
COPY ./frps.ini /frp/
COPY frpcs.conf /etc/supervisor/conf.d/

# 启动 supervisord
CMD ["/usr/bin/supervisord"]

3.5 Dockerfile 国内版

在这里使用的是阿里云的源进行加速,但是github并没有加速,其实build起来还是很慢很慢。。。
所以如果下载github下载不下来,需要多试几次:

FROM ubuntu:14.04

LABEL maintainer="crowsec"

ENV VERSION 0.48.0
ENV TZ=Asia/Shanghai

# 切换软件源为阿里云
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 安装依赖软件包
RUN apt-get update && apt-get install -y wget tar supervisor

# 设置时区
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone

# 判断系统并下载 frp
RUN if [ "$(uname -m)" = "x86_64" ]; then export PLATFORM=amd64 ; \
    elif [ "$(uname -m)" = "aarch64" ]; then export PLATFORM=arm64 ; \
    elif [ "$(uname -m)" = "armv7" ]; then export PLATFORM=arm ; \
    elif [ "$(uname -m)" = "armv7l" ]; then export PLATFORM=arm ; \
    elif [ "$(uname -m)" = "armhf" ]; then export PLATFORM=arm ; fi \
    && wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v${VERSION}/frp_${VERSION}_linux_${PLATFORM}.tar.gz \
	&& sleep 6 \
    && tar xzf frp_${VERSION}_linux_${PLATFORM}.tar.gz \
    && cd frp_${VERSION}_linux_${PLATFORM} \
    && mkdir /frp \
    && mv frpc /frp \
    && mv frps /frp \
    && cd .. \
    && rm -rf *.tar.gz frp_${VERSION}_linux_${PLATFORM}

# 拷贝配置文件和监控进程工具
COPY ./frpc.ini /frp/
COPY ./frps.ini /frp/
COPY frpcs.conf /etc/supervisor/conf.d/

# 启动 supervisord
CMD ["/usr/bin/supervisord"]

image.png

3.6 命令

build:

docker build -t frpcs:v1.0 .

image.png

使用:

docker run -dt --name frpcs -p 33893:33893 -p 44555:44555 --rm frpcs:v1.0

image.png

4. 总结

在这里可以简单理解为只做了frp的下载以及解压操作,没有对frp进行混淆啥的,毕竟自己用,能简单一点就简单一点吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本处高能:因Frp作者更换新的模块,导致Frp v0.18.0与之前的版本不兼容,如果升级请服务器端同步升级。升级命令: wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh bash install-frps.sh update 首先感谢@sadoneli S大的帮助完成了frp插件web页面的制作。 WARNING:请仔细阅读完本教程1楼和2楼后再动手安装! frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。 *因为frp是go语言写的,所以在路由器上使用的时候,请使用虚拟内存,请使用虚拟内存,请使用虚拟内存。 脚本是业余爱好,英文属于文盲,写的不好,欢迎您批评指正。 安装平台:CentOS、Debian、Ubuntu。 已测试过的平台: CentOS 6 32/64bit CentOS 7 32/64bit Debian 6 32/64bit Debian 7 32/64bit Debian 8 32/64bit Ubuntu 14 32/64bit 一、安装命令这个命令是在你自己的服务器上运行的!是在你自己的服务器上运行的!是在你自己的服务器上运行的!不是在路由器里运行的!不是在路由器里运行的!不是在路由器里运行的! wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh chmod 700 ./install-frps.sh ./install-frps.sh install 二、安装步骤 Loading network version for frps, please wait... frps Latest release file frp_0.8.1_linux_amd64.tar.gz #此步骤会自动获取frp最新版本,自动操作,无需理会 Loading You Server IP, please wait... You Server IP:12.12.12.12 #自动获取你服务器的IP地址 Please input your server setting: Please input frps bind_port [1-65535](Default Server Port: 5443): #输入frp提供服务的端口,用于服务器端和客户端通信 Please input frps dashboard_port [1-65535](Default dashboard_port: 6443): #输入frp的控制台服务端口,用于查看frp工作状态 Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #输入frp进行http穿透的http服务端口 Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #输入frp进行https穿透的https服务端口 Please input privilege_token (Default: WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq): #输入frp服务器和客户端通信的密码,默认是随机生成的 Please input frps max_pool_count [1-200](Default max_pool_count: 50): #设置每个代理可以创建的连接池上限,默认50 ##### Please select log_level ##### 1: info 2: warn 3: error 4: debug ##################################################### Enter your choice (1, 2, 3, 4 or exit. default [1]): #设置日志等级,4个选项,默认是info Please input frps log_max_days [1-30] (Default log_max_days: 3 day): #设置日志保留天数,范围是1到30天,默认保留3天。 ##### Please select log_file ##### 1: enable 2: disable ##################################################### Enter your choice (1, 2 or exit. default [1]): #设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效 设置完成后检查你的输入,如果没有问题按任意继续安装 ============== Check your input ============== You Server IP : 12.12.12.12 Bind port : 5443 Dashboard port : 6443 vhost http port : 80 vhost https port: 443 Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== 安装结束后显示: Congratulations, frps install completed! ============================================== You Server IP : 12.12.12.12 Bind port : 5443 Dashboard port : 6443 vhost http port : 80 vhost https port: 443 Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq Max Pool count : 50 Log level : info Log max days : 3 Log file : enable # 将上面信息添加到你的路由器frp穿透插件中吧 ============================================== frps Dashboard: http://12.12.12.12:6443/ # 这个是frp控制台访问地址 ============================================== 三、更新命令 ./install-frps.sh update 四、卸载命令 ./install-frps.sh uninstall 五、服务器端管理命令 /etc/init.d/frps start /etc/init.d/frps stop /etc/init.d/frps restart /etc/init.d/frps status /etc/init.d/frps config /etc/init.d/frps version 七、更多帮助请移步官方帮助文件 https://github.com/fatedier/frp/blob/master/README_zh.md

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值