Linux端口转发的几种常用方法

0x00 背景

端口转发是一个常用的功能,不管是在服务器运维还是在渗透领域,都需要用到。在近期遇到一个问题就是一个服务的端口不能进行配置,但是由于出口硬件防火墙的原因,为了不修改硬件防火墙的策略,所以只能在本地做端口转发。因此尝试和寻找了以下的几种方法。

0x01 iptables和firewall

  • iptables

iptables是我第一个想到的方法,但却是最后一个尝试的,因为我对iptables并不熟悉。

1、打开IP转发功能。

linux的IP转发功能是默认关闭的,而且根据很多安全加固策略以及安全基线的要求,IP转发功能必须关闭,所以需要先打开IP转发。需要长期使用的话则写入到sysctl的配置文件中。

echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -w /etc/sysctl.conf

2、配置iptables,在PERROUTING链中做DNAT。需要长期使用的话需要注意保存配置。

iptables -t nat -A PEROUTING -p tcp -i eth0 --dport 22222 -j DNAT --to x.x.x.x:22
service iptables save

远程端口转发的还可以参考这里:

http://www.jb51.net/LINUXjishu/401922.html

  • firewall

firewall是CentOS 7上替代iptables的服务。使用起来比iptables要稍微简单一点,直接使用firewall的端口转发就能实现。firewall我也不熟悉,参考了http://www.centoscn.com/CentOS/Intermediate/2015/0313/4879.html

1、打开端口转发功能

firewall-cmd --zone=public --add-forward-port=port=22222:proto=tcp:toport=22

在不增加toaddr的情况下,默认就是转发到自己的IP上。

如果需要长期使用则增加--permanent加入到永久规则即可。

0x02 rinetd端口映射转发工具

1、下载并解压rinetd

wget

2、安装rinetd

make
make install

安装过程可能遇到man目录不存在的问题,手动创建即可完成安装。

3、创建/etc/rinetd.conf并写入转发规则

配置文件中的规则格式为:

[Source Address] [Source Port] [Destination Address] [Destination Port]

源地址  源端口   目的地址  目的端口

使用iptables的命令要更直接一些。但写入规则的时候需要注意源端口不能被其他服务占用,并且也需要在iptables上打开。

4、运行rinetd

运行后即可发现,rinetd已经绑定了指定的端口。

如果需要长期使用,把命令写入开机启动即可。

更多rinetd的参考:https://boutell.com/rinetd/和http://blog.csdn.net/paulluo0739/article/details/7023711

0x03 lcx端口转发

lcx是渗透中经常用的工具,使用简单。但一般用于Windows,由于没有shell版本的lcx,编译、安装等环节较为麻烦,因此比较少见。因此,lcx虽然是我第一个想到的实现方法,但却是实现的最麻烦的。

1、网上找到代码见附件

来源和参考:http://www.oldrss.com/article/hacker-00205.html

2、gcc编译

gcc lcx.c -o lcx

CentOS6.X & CentOS 7.0测试可以编译成功。

3、运行lcx

使用方式较为简单,根据提示运行即可。

lcx -m 1 -h1 0.0.0.0 -p1 22222 -h2 127.0.0.1 -p2 22 -log /tmp/lcx.log

如果服务连接较多,建议不要记录日志,因为日志中会记录传输的所有数据,这样将会占用大量的空间,并且也可能会影响传输。

如果需要长期使用,设置开机启动并置入后台即可。

0x04 总结

整体上来看,iptables和firewall是最简单的方案,不需要安装任何的程序和服务,系统自带。rinetd和lcx也都受到iptables和firewall的限制,必须要其打开端口。

时间: 2024-08-06 16:06:40

Linux端口转发的几种常用方法的相关文章

回顾linux端口转发 转发过程感慨

环境: A服务器:  网卡1:192.168.1.151   网卡2:10.10.69.10 B服务器:  网卡1:10.10.69.41 要求: 访问192.168.1.151:1521   即访问 10.10.69.41:1521 启用端口转发: echo 1 > /proc/sys/net/ipv4/ip_forward 清空nat表 iptables -t nat -F 端口转发配置详解: 1.模拟linux转发过程: 通过192.168.1.171访问192.168.1.151:152

Linux端口转发-rinted工具部署、配置、使用

编者按: 近期由于公司开启定制项目规划,对于每个项目都会开启一个测试服务器,实施方会用到测试服务器的ssh端口.mysql端口.web端口,为了节省资源(公网IP.服务器资源复用),基于rinted工具搭建一个端口转发的服务器.下面的流程图将更好的表达本文即将实现的功能! 1.源码安装rinted: 下载和解压源码包: cd /usr/local/src && wget  && tar xf rinetd.tar.gz && cd rinetd 修改编译配置

Linux SSH端口转发

SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发 假定有三台主机A.B.C.由于种种原因(无论是防火墙还是路由原因),AC两台主机之间无法连通.但是B却可以和A.C连通.这时候就可以用本地端口转发来实现A和C通过B来连通. A  192.168.7.27 B  192.168.6.19 C  192.168.30.68 6网段和7网段.30网段都相通,但是7网段和30网段不

SSH的端口转发

一.SSH端口转发的概念 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一过程也被叫做"隧道"(tunneling),这是因为 SSH 为其他TCP 链接提供了一个安全的通道来进行传输而得名.例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输.而与此同时,如果工作环境中的防火墙限制了一些网络

ssh端口转发,先转载,最后自用心得

SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发 假定有三台主机A.B.C.由于种种原因(无论是防火墙还是路由原因),AC两台主机之间无法连通.但是B却可以和A.C连通.这时候就可以用本地端口转发来实现A和C通过B来连通. A  192.168.7.27 B  192.168.6.19 C  192.168.30.68 6网段和7网段.30网段都相通,但是7网段和30网段不

ssh端口转发小结

? 关于ssh端口 ? ???? SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是, SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一过程也被叫做"隧道",这是因为SSH为其他 TCP 链接提供了一个安全的通道来进行传输而得名.例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名, 密码以及隐私信息的明文传输.而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用

TCP端口转发(centos7)

=============================================== 2019/2/14_第1次修改                       ccb_warlock =============================================== 由于业务中个别TCP的服务需要做迁移,而该服务目前又是不是集群的方式对外提供服务,为了尽可能的缩短服务的中断,在部署完新服务后,原服务器的端口需要转发TCP的流量到新的服务器,经过一段时间后用户更新了配置,流

Linux-Windows 端口转发

在实际的生产环境中,我们为了安全性,会将一些重要的服务(数据库服务)不开放外网访问,但是当我们某个时刻由于一些特殊需求,需要进行外网访问的时候,我们可以通过端口转发来实现.通过一台和与服务可以互相访问的主机,通过该主机进行端口转发. Windows 端口转发 Linux 端口转发 一.Windows 端口转发 windows 主要是通过 netsh 进行端口转发. listenaddress # 本地监听的ip listenport # 本地监听的端口 connectaddress # 转发请求

[转帖]Linux-Windows 端口转发 netsh 还有 rinetd

https://www.cnblogs.com/operationhome/p/11284559.html 之前自己学习过 netsh 也曾经用过frp 这次学习一下表 rinetd 感觉工具有很多 需要一直保持学习的心态. 在实际的生产环境中,我们为了安全性,会将一些重要的服务(数据库服务)不开放外网访问,但是当我们某个时刻由于一些特殊需求,需要进行外网访问的时候,我们可以通过端口转发来实现.通过一台和与服务可以互相访问的主机,通过该主机进行端口转发. Windows 端口转发 Linux 端