所有【Academic】标记的文章都是工作学习过程中随手敲敲的技术相关的笔记/记录,欢迎有兴趣的大佬交流指正。
之前分享过了简单的通过ssh进行端口转发的方法【Academic】ssh端口转发实战复习 之 -R
这里再简单整理一下Linux中常用的几种端口转发方法;以列举工具和一般命令为主,不介绍一般使用场景;欢迎交流指正以及补充。
1. 本地端口转发
ssh -fgN -L 2222:localhost:22 localhost
2. 远程端口转发
ssh -fgN -R 2222:rhost:22 localhost
3. 动态端口转发
ssh -fgN -D 9060 user@rhost
02 iptables
CentOS 7.0 以下使用
1. 开启数据转发功能
vim /etc/sysctl.conf #增加一行 net.ipv4.ip_forward=1 //使数据转发功能生效sysctl -p
2. 将本地的端口转发到本机端口(TCP)
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22
3. 将本机的端口转发到其他机器
iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130#清空nat表的所有链iptables -t nat -F PREROUTING
03 firewall
CentOS 7.0以上使用
1. 开启伪装IP
firewall-cmd --permanent --add-masquerade
2. 配置端口转发,将到达本机的12345端口的访问转发到另一台服务器Rhost的22端口。
firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=Rhost:toport=22firewall-cmd --reload
04 rinetd
rinetd是一个轻量级TCP转发工具,简单配置就可以实现端口映射/转发/重定向。
源码下载
wget https://li.nux.ro/download/nux/misc/el7/x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm
安装
rpm -ivh rinetd-0.62-9.el7.nux.x86_64.rpm
编辑配置文件
vi rinetd.conf
0.0.0.0 1234 127.0.0.1 22
启动转发
rinetd -c /etc/rinetd.conf
05 netcat
netcat : nc/ncat
监听本机 8888 端口,将数据转发到Rhost的 80 端口
ncat --sh-exec "ncat Rhost 80" -l 8888 --keep-open
06 socat
在本地监听12345端口,并将请求转发至Rhost的22端口
socat TCP4-LISTEN:12345,reuseaddr,fork TCP4:Rhost:22
07 portfwd
portfwd是meterpreter中内置的功能,也提供单机版,下载编译:
git clone https://github.com/rssnsj/portfwd.gitcd portfwd/srcmake
将本地的12345端口转发到Rhost:22(TCP)
./tcpfwd 0.0.0.0:12345 Rhost:22
08 NATBypass
项目地址:https://github.com/cw1997/NATBypass
内网主机主动连接公网机器Rhost
目标机器执行:nb -slave 127.0.0.1:3389 Rhost:8888公网机器执行:nb -listen 8888 3340公网主机上连接 127.0.0.1:3340,即可连接上内网机器的3389端口。