在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态
、安全事件
、网络活动
,以便集中报警
、及时处理及审计定责。
堡垒机又叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
比较优秀的开源软件jumpserver,认证、授权、审计、自动化、资产管理。
商业堡垒机
:齐治, Citrix XenApp。
为了保证服务器安全,加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有身份认证,授权,访问控制,审计等功能。jumpserver是使用python的django开发的开源跳板机系统,为互联网企业提供了认证、授权、审计和自动化运维等功能。基于ssh协议来管理,客户端无需安装agent。在公司中,分配人员服务器权限也是相当方便,如:来一个新人,在Jumpserver分配Jumpserver账号即可,人员离职,在Jumpserver删掉人员账号即可。无需担心人员离职留下后门,当然前提是检查防火墙
,只允许Jumpserver服务器有其他服务器的ssh的权限。目前市面上已经有很多jumpserver
产品提供使用,这里就介绍最广泛的一款。链接
:JumpServer官方文档
所谓跳板机,就是一台服务器,开发或者运维人员在维护时要先登录这台服务器,然后通过该服务器登录到目标主机上然后进行维护和操作。
但是,普通的跳板机不能对运维人员的操作进行控制和审计,如果运维人员误操作导致系统问题,很难进行事故定责和快速定位原因。
堡垒机是在跳板机的基础上,弥补了跳板机的一系列缺点,比跳板机多了实时收集、监控网络环境、集中报警等功能。堡垒机是指在一个网络环境中,为了保护数据和网络不受外来人员和内部用户的入侵和破坏,而运用各种技术手段实现收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便于实现集中报警、及时处理和审计定责。
由于来源身份不明、越权操作、密码泄露、数据被窃、违规操作等因素都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果不能快速定位事故原因,运维人员往往就会背黑锅。
(1)由于不明身份利用远程运维通道攻击服务器造成业务系统出现异常,但是运维人员无法明确攻击来源,那么领导很生气、后果很严重;
(2)只有张三能管理的服务器,被李四登录过并且做了违规操作,但是没有证据是李四登录的,那么张三只能背黑锅了;
(3)运维人员不小心泄露了服务器的密码。一旦发生安全事故,那么后果不堪设想;
(4)某服务器的重要数据被窃。但是数据文件无法挽回,那么面临的是无法估量的经济损失。
运维人员背黑锅的原因:
其实运维工作,出现各种问题是在所难免的,不仅要有很好的分析能力,而且还要避免问题再次发生。
(1)没有规范管理,人与服务器之间的界限不清晰;
(2)没有实名机制,登录服务器前没有实名验证;
(3)没有密码托管,服务器的密码太多,很难做到定期修改,自己保管怕丢失;
(4)没有操作预警,对高危、敏感的操作无法做到事前防御;
(5)没有传输控制,对重要服务器无法控制文件传输;
(6)没有回溯过程,不能完整还原运维过程。
用户:用户是授权和登陆的主体,将来为每个员工建立一个账户,用来登录跳板机,将资产授权给该用户,查看用户登陆记录命令历史等。
用户组:多个用户可以组合成用户组,为了方便进行授权,可以将一个部门或几个用户组建成用户组,在授权中使用组授权,该组中的用户拥有所有授权的主机权 限。
资产:资产通常是我们的服务器、网络设备等,将资产授权给用户,用户则会有权限登录资产,执行命令等。
管理账户:添加资产时需要添加一个管理账户,该账户是该资产上已有的有管理权 限的用户,如 root,或者有NO: ALL sudo权限的用户,该管理账户用来向资产推送系统用户,为系统用户添加sudo,获取资产的一些硬件信息。
资产组:同用户组,是资产组成的集合,为了方便授权。
机房:又称 IDC,这个不用解释了吧。
Sudo:这里的 sudo 其实是 Linux 中的 sudo 命令别名,一个 sudo 别名包含多个命 令, 系统用户关联 sudo就代表该系统用户有权限sudo执行这些命令。
系统用户:系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户, 如 dev, sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利 用自己公司的工具进行推送,授权时将用户、资产、系统用户关联起来则表明用户有权限登陆该资产的这个系统用户,比如用户小明以dev 系统用户登录172.16.1.1 资产, 简单理解就是将某个资产上的某个系统用户映射给这个用户登录。
推送系统用户:添加完系统用户,需要推送,推送操是使用ansible,把添加的系统用户和系统用户管理的 sudo,推送到资产上,具体体现是在资产上 useradd 该系统用户,设置它的 key,然后设置它的 sudo,为了让用户可以登录它。
授权规则:授权规则是将资产系统用户和用户关联起来,用来完成授权。
日志审计:分为以下 5 个方式:
(1)在线:查看当前在线的用户(非web在线),可以监控用户的命令执行,强制结束用户登录;
(2)实时监控:实时监控用户的操作;
(3)登录历史:查看以往用户的登录历史,可以查看用户登陆操作的命令,可以回放用户执行命令的录像;
(4)命令记录:查看用户批量执行命令的历史,包 含执行命令的主机,执行的命令,执行的结果;
(5)上传下载:查看用户上传下载文件的记录。
默认设置:默认设置里可以设置默认管理账号信息,包括账号密码密钥,默认信息为了方便添加资产而设计,添加资产时如果选择使用默认管理账号,则会使用这里设置的信息,端口是资产的ssh 端口,添加资产时,默认会使用该端口。
[root@localhost opt]#tar -zxf jumpserver-offline-installer-v3.6.2-amd64.tar.gz
[root@localhost opt]#ll -h
[root@localhost opt]#cd jumpserver-offline-installer-v3.6.2-amd64/
[root@localhost jumpserver-offline-installer-v3.6.2-amd64]#./jmsctl.sh install #安装JumpServer
安装的时候所有的都默认:n
[root@localhost jumpserver-offline-installer-v3.6.2-amd64]#./jmsctl.sh start
[+] Running 10/10
✔ Container jms_redis Healthy 0.6s
✔ Container jms_mysql Healthy 0.6s
✔ Container jms_core Healthy 14.9s
✔ Container jms_chen Started 16.2s
✔ Container jms_kael Started 15.9s
✔ Container jms_koko Started 16.1s
✔ Container jms_lion Started 15.9s
✔ Container jms_magnus Started 17.1s
✔ Container jms_web Started 16.4s
✔ Container jms_celery Started 16.1s
[root@localhost jumpserver-offline-installer-v3.6.2-amd64]#
用户管理,用户和用户组直接进行手动添加,或者跟ldap集成就可以自动同步了。
部署至此,后续想要深入了解可以百度。
通过JumpServer堡垒机管理了公司目前所有的虚拟机、网络设备和云上资产,使用堡垒机之后,再也不需要使用ssh工具去一个一个的连接了,直接通过堡垒机点进去,很方便。对于运维人员来说,运维的效率大大提升了,直接通过堡垒机就能看见用户在资产上进行的操作,还可以提前设置一些高危命令的禁止复核操作等等。对于普通员工来说,想要使用某台资产的时候,不需要一层一层的审批了,可以直接根据管理员给的权限进行操作,流程更加方便。