在很多攻防渗透中,由于客户要求,需要使用指定的ip进行渗透测试,一般来说,客户会给一个或者多个ip
进行授权,我们的所有操作都需要通过这个ip
进行,这个时候就需要配置一个隧道,将在这里以frp
为例,将frp
的客户端和服务端都跑在这个授权的ip
(在这以公网vps
为例)上,配置frp
稍微有些繁琐,如果配置一次可能还行,多次配置的时候就感觉稍微麻烦了,所以为了满足访问需求,直接一键安装使用,可以提高效率。
请注意:这里的frp
客户端和服务端都是在一起的,也就是在一个机器上,这样管理起来比较方便,而且本地只需要配置vps
的代理端口就行了。
在这里frp
是自己使用的,所以不需要考虑frp
的流量混淆等问题。
网上已经有了一篇在docker
里面配置frpc
的
https://github.com/stilleshan/frpc
这个项目只配置了frpc
,frps
一般配置在靶机上的,但是我们这里的frp
只供自己用的,所以都部署在vps
上就行。
环境需求:
linux
公网docker
容器环境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
的两个配置文件
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
隧道。
[common]
bind_port = 3489 # 这个和frpc.ini对应的
bind_addr = 0.0.0.0 # 这个不动哦
protocol = tcp
tls_enable = true
[supervisord]
nodaemon=true
[program:frps]
command=/frp/frps -c /frp/frps.ini
[program:frpc]
command=/frp/frpc -c /frp/frpc.ini
这是启动客户端和服务端的,配置Dockerfile
使用。
在当前目录下使用命令构建容器:
docker build -t frpcs:v1.0 .
有点大,200
多M
运行起来:
docker run -dt --name frpcs -p 3489:3489 -p 8455:8455 --rm frpcs:v1.0
请注意:这里的两个映射端口一定要和你frp的两个配置文件里面的保持一致:
此时使用命令看下是不是真的运行起来了:
docker logs frpcs
貌似是起来了,此时的隧道就已经配置完成了。
通过你配置的信息本地配置,然后访问下看看:
成功:
在部署的时候,只需要配置frpc.ini
和frps.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
[common]
bind_port = 33893
bind_addr = 0.0.0.0
protocol = tcp
tls_enable = true
[supervisord]
nodaemon=true
[program:frps]
command=/frp/frps -c /frp/frps.ini
[program:frpc]
command=/frp/frpc -c /frp/frpc.ini
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"]
在这里使用的是阿里云的源进行加速,但是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"]
build:
docker build -t frpcs:v1.0 .
使用:
docker run -dt --name frpcs -p 33893:33893 -p 44555:44555 --rm frpcs:v1.0
在这里可以简单理解为只做了frp
的下载以及解压操作,没有对frp
进行混淆啥的,毕竟自己用,能简单一点就简单一点吧。