细谈企业网络安全中堡垒机绕过问题

以下文章来源于WalkingCloud ,作者yuanfan2012

概况:

企业网络大多数堡垒机部署时,为了不改变现有的网络拓扑结构,采用旁路部署的方案,通过在防火墙或者交换机上配置ACL策略限制用户区PC直接访问服务器区主机IP或者端口(SSH,RDP等等),实现强制员工只能通过堡垒机访问服务器

谈到堡垒机就避不开堡垒机被绕过问题,我这边列举如下几种堡垒机被绕过的场景

例如:如下拓扑图,4台服务器已经托管到堡垒机,可以直接通过堡垒机调用本地工具进行运维




场景1、绕过ACL策略
服务器区防火墙或者交换机上没有做ACL,以及当ACL策略做的细粒度不够,导致用户区PC可以直接绕过堡垒机,直接远程服务器


如图如示,黑色虚线为本来的访问路径,需要通过堡垒机才能访问Server_A

红色虚线代表现在绕过堡垒机直接访问Server_A

场景2、通过堡垒机跳转绕过
另外一种场景就是,先通过堡垒机访问A服务器,然后再在A服务器上去访问B服务器,这样就绕过了堡垒机间接访问了B服务器

如下拓扑图所示


先通过堡垒机访问Server_A 192.168.31.18,由于root密码都是堡垒机进行托管,不知道Server_B 192.168.31.232的root密码,员工可以通过创建免密登录,

ssh-keygen -b 2048


再通过堡垒机访问一次Server_B 192.168.31.232 将上一步生成公钥内容导入到192.168.31.232的 /root/.ssh/authorized_keys
这样以后就访问ServerB就只用通过堡垒机访问Server_A,再在Server_A上直接SSH到Server_B








虽然Server_A的上的操作都可以被堡垒机审计(堡垒机录像回放), 但是假设刚好Server_A没有被堡垒机托管,只把Server_B用堡垒机托管了,那这种绕过堡垒机的方式就会导致Server_B上的所有运维操作没有被审计到

Server_A是开发环境,Server_B是生产环境,万一对生产环境Server_B造成了破坏时,日志也被删除,这时就很难回溯了

再往深想一下:如果Server_A------->Server_B-------->Server_E-------->Server_F-------->.......这样多跳几次呢?如何防范?

当然Windows服务器RDP也会出现这种场景 先通过堡垒机访问Server_C 192.168.31.82 再mstsc远程到Server_D 192.168.31.116


解决方案细述
针对第1种和第2种场景如何进行彻底避免呢?

我这边的一种解决办法就是在针对Linux服务器上做SSH访问控制,只允许堡垒机访问服务器的SSH,其他IP访问SSH全部阻断

cat >> /etc/hosts.deny << \EOF
sshd:   ALL     :spawn echo `date` login attempt from %c to %s ,the host is %h .PID is %p >> /var/log/tcpwrapper.log
EOF
echo "#只允许堡垒机登录主机SSH" >> /etc/hosts.allow
echo "sshd:   192.168.31.5" >> /etc/hosts.allow








针对所有堡垒机托管的Linux服务器均做主机层面SSH访问控制 通过堡垒机访问Server_A 192.168.31.18,再在Server_A 192.168.31.18上SSH到Server_B 192.168.31.232就会被阻断

可以tail -f /var/log/tcpwrapper.log 查看阻断日志

tail -f /var/log/tcpwrapper.log
Sat Nov 20 22:07:09 CST 2021 login attempt from 192.168.31.18 to sshd@192.168.31.232 ,the host is 192.168.31.18 .PID is 39888
当然如果堡垒机万一发生故障时,就会出现单点故障,如何预防:

1、如果有备用堡垒机,需要将备用堡垒机的IP加到SSH访问白名单中

2、将应急运维PC的IP加到SSH访问白名单中,可以堡垒机出现故障时,应急运维PC登录到服务器上进行SSH访问控制配置修改

那RDP如何进行控制呢?可以在Windows防火墙的作用域中指定远程IP地址及IP地址段,不过前提是开启了Windows防火墙

可以看到当设置了只能堡垒机RDP远程到Server_D 192.168.31.116 在Server_C 192.168.31.82上就无法mstsc远程到Server_D 192.168.31.116

telnet  192.168.31.116 3389端口不通

场景3、其它绕过场景
1、目标服务器远程端口受到ACL限制,但其他端口没有限制,那么最简单的解决方式就可以通过端口转发来绕过

2、甚至如果服务器可以访问外网,可以直接通过向日葵,todesk,Teamviewer进行远程,这样就完全绕开了堡垒机审计

需要对服务器网段封禁向日葵 Teamviewer等远程工具, 这种方式就不详细展开描述了
作者:yuanfan2012


欢迎关注微信公众号 :释然IT杂谈