ssh后门反向代理实现内网穿透
不同内网主机之间访问方法
OpenVPN
ssh后门反向代理实现内网穿透
N2N
ssh内网穿透
局域网主机(虚拟主机): 192.168.6.233 CentOS 6.7
云服务器:120.25.68.60 CentOS 6.7
- 云服务器120.25.68.60上需要修改sshd_config配置文件:
[root@120.25.68.60 ~]# vi /etc/ssh/sshd_config
GatewayPorts yes
[root@120.25.68.60 ~]# service sshd reload
Reloading sshd: [ OK ]
- 通过局域网虚拟机192.168.6.233 连接到120.25.68.60开启反向端口代理,输入云服务器密码.
root@192.168.6.233:~ # ssh -CqTfnN -R 0.0.0.0:7233:192.168.6.233:22 root@120.25.68.60
root@120.25.68.60's password:
- 在云服务器120.25.68.60上可以看到这个监听.
[root@120.25.68.60 ~]# netstat -anp | grep 7233
tcp 0 0 0.0.0.0:7233 0.0.0.0:* LISTEN 2392/sshd
tcp 0 0 :::7233 :::* LISTEN 2392/sshd
- 现在到其他客户机上连接阿里云服务器120.25.68.60的7233端口,输入局域网虚拟主机192.168.6.233的主机密码.
[root@192.168.4.194 ~]# ssh -p 7233 root@120.25.68.60
root@120.25.68.60's password:
Last login: Thu Mar 24 11:01:15 2016 from 192.168.6.233
[root@phpdragon_233 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:56:34:8B:4D
inet addr:192.168.6.233 Bcast:192.168.6.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe34:8b4d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1321125 errors:0 dropped:0 overruns:0 frame:0
TX packets:1232406 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:450626290 (429.7 MiB) TX bytes:273698355 (261.0 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:524375 errors:0 dropped:0 overruns:0 frame:0
TX packets:524375 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:43705227 (41.6 MiB) TX bytes:43705227 (41.6 MiB)
autossh实现内网穿透
环境说明
- 一台内网机器,后面简称N,centos系统,ssh端口为2222,用户名为userN,ip为10.10.12.1
- 一台公网服务器,后面简称W,centos系统,ssh端口为61397,用户名为userW,ip为123.56.21.222
- 测试主机
配置N到W的免密登录
#N上 :使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。
ssh-keygen -t rsa
#W上 :相应用户目录下创建~/.ssh目录
mkdir -p .ssh
#N上 :将N的公钥拷贝给W,输入密码即可
cat .ssh/id_rsa.pub | ssh userW@123.56.21.222 'cat >> .ssh/authorized_keys'
在W上准备两个空闲端口
云服务器,一般会有安全组过滤,需要开启两个空闲端口的允许规则。本文开启5678和54345端口。
iptables -I INPUT -p tcp --dport 54345 -j ACCEPT
iptables -I INPUT -p tcp --dport 5678 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
在N上配置反向隧道
安装autossh
sudo yum install wget gcc make
wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
tar -xf autossh-1.4e.tgz
cd autossh-1.4e
./configure
make
sudo make install
配置ssh反向隧道
结合命令,将发送到远程端口的请求,转发到目标端口。
ssh -R 远程地址:远程端口:目标地址:目标端口 服务器IP
autossh操作。
autossh -M 5678 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 123.56.21.222:54345:localhost:2222 userW@123.56.21.222 -p 61397
# “-M 5678” 选项指定中继服务器上的监视端口,用于交换监视 SSH 会话的测试数据。中继服务器上的其它程序不能使用这个端口。
# “-fN” 选项传递给 ssh 命令,让 SSH 隧道在后台运行。
# “-o XXXX” 选项让 ssh:
# * 使用密钥验证,而不是密码验证。
# * 自动接受(未知)SSH 主机密钥。
# * 每 60 秒交换 keep-alive 消息。
# * 没有收到任何响应时最多发送 3 条 keep-alive 消息。
# 如果你想系统启动时自动运行 SSH 隧道,你可以将上面的 autossh 命令添加到 /etc/rc.local。
测试
在测试机上
ssh userN@123.56.21.222 -p 54345 #登录内网机器N
端口映射
比如某一天你在家加班(机器A),需要连接到公司里的oracle数据库(机器B)里去,但是公司的oracle数据库没有外网地址,但公司有另外一台外网可以访问的机器(机器C);
这时就可以这样操作了:
在机器A上通过ssh -L将本地的端口映射到机器C上,将让它转发所有机器B的请求,也就是下面这样写:
ssh -L 1521:iamoracleserverB.com:1521 root@serverC
端口转发
如果机器A是一台WINDOWS机器,可以将机器B的1521端口映射到机器C上的某一个端口上来,并且指定为0.0.0.0的这个网卡地址
那么在serverC上执行如下的命令就可以了:
ssh -L 0.0.0.0:1521:iamoracleserverB.com:1521 root@serverC
资料
实战 SSH 端口转发
https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html#icomments
SSH内网穿透的N种姿势
https://blog.csdn.net/MasonQAQ/article/details/78190400
通过ssh tunnel让Kali实现内网穿透
https://blog.csdn.net/puhaiyang/article/details/50392740
使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化
https://www.cnblogs.com/phpdragon/p/5314650.html
使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化