范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

一种跳板机的实现思路

  本文介绍了一种跳板机实现思路,阐述了基本原理,并讲解了特点和相对优势。
  一、 跳板机思路简介
  本文所描述的跳板机(下文称为"jmp")支持:  Linux服务器  Windows服务器  其他终端(MySQL终端、Redis终端、网络设备终端 等等)
  有别于市面上常见的jumpserver方案,使用本文所搭建的跳板机将不会存储任何Linux服务器的账号、密码、密钥等信息,杜绝了信息泄露的可能。本文最大的特点是 借助Linux的PAM机制,通过修改Linux服务器系统层配置,部分接管了Linux系统的身份认证能力 ,关于这一点,下文将详细描述。
  二、背景知识
  2.1 Linux 的 PAM 机制
  PAM(Pluggable Authentication Modules)机制,是一种广泛应用于当代Unix、Linux发行版的系统层身份认证框架。通过提供一系列动态链接库和两套编程接口(Service Programming Interface 和 Application Programming Interface),将系统提供的服务与该服务的认证方式分离,从而使得可以根据需要灵活地给不同的服务配置不同的认证方式而无需更改服务程序。
  2.2 PAM 的核心能力  功能应用程序API服务模块SPI
  认证管理
  pam_authenticate
  pam_sm_authenticate
  pam_setcred
  pam_sm_setcred
  账号管理
  pam_acc_mgmt
  pam_sm_acc_mgmt
  会话管理
  pam_open_session
  pam_sm_open_session
  pam_close_session
  pam_sm_close_session
  口令管理
  pam_chauthok
  pam_sm_chauthok
  2.3 PAM 模块类型  auth  用来对用户的身份进行识别,如:提示用户输入密码,或判断用户是否为root等。  account  对帐号的各项属性进行检查,如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等。  session  这个模块用来定义用户登录前的,及用户退出后所要进行的操作,如:登录连接信息、用户数据的打开与关闭、挂载文件系统等。  password  使用用户信息来更新,如:修改用户密码。
  2.4 常见 PAM 模块  pam_unix.so模块  【auth】提示用户输入密码,并与/etc/shadow文件相比对,匹配返回0(PAM_SUCCESS)。  【account】检查用户的账号信息(包括是否过期等),帐号可用时,返回0。  【password】修改用户的密码,将用户输入的密码,作为用户的新密码更新shadow文件。  pam_cracklib.so模块  这个模块可以插入到一个程序的密码栈中,用于检查密码的强度。  pam_loginuid.so模块  用来设置已通过认证的进程的uid,以使程序通过正常的审核。  pam_securetty.so模块  如果用户要以root登录时,则登录的tty必须在/etc/securetty中之前。  pam_rootok.so模块  pam_rootok模块用来认证用户id是否为0,为0返回PAM_SUCCESS。  pam_console.so模块  当用户登录到终端时,改变终端文件文件的权限.在用户登出后,再将它们修改回来。  pam_permit.so模块  该模块任何时候都返回成功。  pam_env.so模块  pam_env允许设置环境变量;默认下若没有指定文件,将依据/etc/security/pam_env.conf进行环境变量的设置  pam_xauth.so模块  pam_xauth用来在用户之间转发xauth-key。  pam_stack.so模块  pam_stack可以调用另一个服务;即多个服务可以包含到一个设置中,当需要修改时只修改一个文件就可以了。  pam_warn.so模块  pam_warn用来记录服务、终端用户、远程用户和远程主机的信息到系统日志,模块总是返回PAM_IGNORE、指不希望影响到认证处理。
  三、跳板机系统架构
  3.1 微服务和高可用设计  3.1.1 微服务设计
  整个跳板机系统可拆分为5个服务,和1个组件。  ① jmp-api 服务监听8080端口,提供http接口能力  认证某个账号是否存在且正常  认证某个账号对某台服务器是否有登录权限  认证某个账号对某台服务器是否有sudo权限  数据拉取:账号、主机、危险命令库等  是jmp访问数据库的唯一入口  ② jmp-ssh 服务监听2200端口,提供ssh代理能力  可直接访问Linux服务器、其他终端  ③ jmp-socket 服务监听8080端口,提供websocket/socket.io连接能力  通过ssh协议转发socket.io的流量到jmp-ssh  支持网页终端的连接和访问  ④ jmp-rdp 服务监听8080端口,提供socket.io连接能力  实现rdp代理,以便于操作Windows服务器  支持基于网页的远程桌面服务  ⑤ jmp-sftp 服务提供文件上传下载能力,支持在jmp中通过sftp命令,支持任意sftp客户端连接  访问S3,以便存取文件  ⑥ jmp-agent 组件部署在每台Linux服务器中  jmp-agent常驻进程
  定时从jmp-api拉取服务和权限信息,缓存到本地文件
  根据需要检测文件改动,确保配置文件不被恶意修改  jmp专用pam模块
  提供jmp.so动态库,为pam模块
  安装脚本释放配置文件,修改/etc/pam.d/xxx文件,生效jmp的pam模块
  接管身份识别和权限认证,调用jmp-api接口以完成鉴权  3.1.2 高可用设计
  jmp中任何一个服务都是无状态的,因而支持异地多机房部署
  http协议的服务(jmp-api、jmp-socket、jmp-rdp),通过Nginx配置路由,且配置自动负载均衡策略。
  非http的服务(jmp-ssh、jmp-sftp),通过4层负载均衡(lvs、vgw)实现高可用。
  自动降级策略
  危险命令识别能力存在耗时久的可能性,因此当发现识别危险命令的接口超时,则自动忽略危险命令识别。
  身份认证接口超时的情况下,则使用jmp-agent本地缓存的身份信息,如获取不到本地缓存,则使用配置项的默认策略(全部通过或者全部拒绝)。
  jmp-agent组件的高可用
  由于jmp-agent部署在业务服务器上,所处环境可能随时发生变化,因此必须具备较强的适应性(磁盘空间不足、inode满、内存不足、网络不稳定、域名解析异常等等)。
  针对磁盘空间或inode不足,jmp-agent可能无法使用本地文件缓存,因此此时选择降级,忽略缓存。
  针对网络不稳定问题,jmp-agent选择增加同jmp-api、jmp-ssh的通信超时,同时可降级鉴权,确保操作不受影响。
  针对解析异常问题,jmp-agent无法通过域名同服务交互,此时使用内置的固定ip同服务交互。
  3.2 跳板机各子服务交互图
  从图中可见,作为核心服务的jmp-ssh承载了ssh流量的代理转发,将来自用户ssh客户端、jmp-socket服务的ssh流量转发到目标服务器上,并将来自目标服务器的返回结果送达回ssh客户端、jmp-socket服务。因此,可在jmp-ssh服务上识别来自用户的危险命令,在送达目标服务器之前就给出告警或者直接拦截,避免恶意操作或者误操作给业务造成影响。
  图中的jmp-api作为同数据库和缓存直接交互的服务,在整个系统中承担数据接口和管理端的角色,接受来自全量服务器中jmp-agent组件的用户身份鉴别和权限校验请求,是整个系统中的控制中枢。
  jmp-api也同时提供的权限设置能力,通过与流程系统对接,可方便的为人员/部门申请机器/服务/项目的登录权限或root权限,此外,jmp-api也对登录权限和root权限的可申请人做出限制,针对不同项目/服务,对权限有效时间做出限制,严格控制权限粒度。
  由于同一个项目/服务往往由同一个组的人维护,因此jmp-api内置了默认的权限策略,可允许项目/服务的负责人对项目/服务直接拥有登录权限,而无需申请;仅支持对应项目/服务的运维负责人默认拥有root权限,其他所有人如果希望获取root权限,则必须经过申请,由对应服务的运维负责人审批。
  图中的jmp-agent是部署在每一台Linux服务器上的,通过在Linux上修改/etc/pam.d/sshd、/etc/
  pam.d/remote、/etc/pam.d/sudo等等文件,让   jmp.so   (属于jmp-agent.rpm或jmp-agent.deb的一部分)接管ssh服务、sudo程序等关键系统程序的身份识别、权限认证。从而使得在不增加/etc/passwd、/etc/shadow内容的前提下实现了在任意一台服务器上识别出所有人员身份的能力。
  图中的jmp-rdp仅作为Windows服务器的rdp代理服务,并提供基于web的远程桌面能力。
  图中的jmp-socket则提供基于web的Linux服务器操作终端,从而让用户不使用ssh客户端也能够方便地登录服务器。
  四、核心设计思路
  4.1 登录跳板机  用户使用ssh客户端登录到jmp-ssh服务,与jmp-ssh服务交互。  jmp-ssh服务获得ssh会话建立过程中的账号、加密后密码、二次认证信息。  jmp-ssh服务访问jmp-api服务,提交账号、加密后密码、二次认证信息,以便知晓该用户是否有登录jmp的权限。
  4.2 登录目标服务器  仅当用户已经登录到jmp-ssh或者已经通过了jmp-socket的前端身份认证时方可登录目标服务器。  用户在jmp-ssh提供的伪终端下输入ssh xxxx(xxxx为目标服务器的主机名或者IP地址)。  jmp-ssh通过ssh连接到目标服务器,自动携带用户名信息,尝试建立会话。  由于目标服务器上的jmp-agent接管了sshd的身份识别和权限认证,因此jmp.so获取ssh会话建立过程中的用户名,将用户名和本机IP地址信息加密,调用jmp-api接口进行权限认证。  jmp-api根据内置的策略,以及查询授权表,断定该用户对该机器是否有登录权限。  jmp-agent得到鉴权结果,对有权限的,则ssh会话建立成功,否则会话建立失败。  jmp-ssh获得会话建立结果和原因,返回给用户ssh终端。
  4.3 命令交互  仅当用户已经登录到某台机器时,才可命令交互。  当用户在ssh客户端上敲入字符,传递到jmp-ssh,jmp-ssh判断语句是否结束。  当语句结束,则jmp-ssh根据该机器的危险命令规则,匹配用户输入的语句,决定告警、拦截、通过。  jmp-ssh将通过的语句或需要告警的语句传递到目标服务器,目标服务器执行并返回结果。
  4.4 切换用户 / 特权账号  仅当用户已经登录到某台机器时,才可能触发切换用户的行为。  当用户在ssh客户端执行sudo xxxx、su、id等等命令时,jmp-ssh透传命令到目标服务器上。  目标服务器上的sshd进程执行sudo xxxx、su、id等等命令,由于目标服务器上已经被jmp-agent接管了身份失败和权限认证,因此由jmp.so获取登录用户名、当前用户名、本机地址信息、目标用户名信息,调jmp-api的接口进行sudo权限认证。  jmp-api判断该用户是否拥有对该机器切换到xx账号的权限(如是否有root权限)。  sudo、su、id等进程通过jmp.so获得了鉴权结果,决定是否切换用户。
  4.5 使用网页交互  仅针对用户已经通过网页完成了登录(如sso)的情况。  用户通过网页访问jmp-socket服务。  jmp-socket服务获取用户名信息、网页登录sso信息,提交给jmp-api,生成一个临时登录凭证。  jmp-socket访问jmp-ssh,提交临时登录凭证。  jmp-ssh发起登录的二次认证,等待用户完成二次认证。  jmp-socket在用户完成二次认证后,承担了ssh客户端的角色,与jmp-ssh交互。
  4.6 危险命令拦截  jmp-ssh在用户已经登录到目标服务器后,在该会话内,加载目标机器对应服务的危险命令规则,初始化正则匹配逻辑。  jmp-ssh在用户输入语句结束后,根据该机器的危险命令规则,匹配用户输入的语句。  jmp-ssh根据危险命令规则匹配后策略,决定对该输入做如下处理:告警、拦截、通过。  对于通过的,jmp-ssh传递命令到目标服务器。  对于告警的,jmp-ssh传递命令到目标服务器,但是向用户、用户的直属领导、jmp系统管理员发送危险命令告警。  对于拦截的,jmp-ssh拒绝传递命令,同时向用户、用户的直属领导、jmp系统管理员发送危险命令告警。
  4.7 非Linux服务器的跳板机  Windows服务器  对于Windows服务器,使用jmp-rdp服务,将rdp协议数据转成由socket.io承载的应用数据(依赖Apache Guacamole),并通过web页面的Canvas展示实时图像并接受键盘鼠标事件。  MySQL终端和Redis终端  仅支持部署在Linux服务器上的MySQL和Redis。  在服务器上通过mysql.sock,使jmp-agent连接到本地MySQL服务,jmp-agent转发标准输入和标准输出到jmp-ssh。  在服务器上通过redis.sock,使jmp-agent连接到本地Redis服务,jmp-agent转发标准输入和标准输出jmp-ssh。  该方法理论上支持任意可通过unixsocket连接的服务。  网络设备管理终端  对于网络终端,则jmp-ssh读取jmp-api接口,获取对应网络设备的连接信息(协议类型、账号信息等),实现连接和操作。
  五、权限规则和审批链路设计
  5.1 默认拥有的权限
  无需申请,即可拥有的权限。  授权的主体权限的目标权限的类型
  服务负责人
  服务的线上主机
  登录权限
  服务的线下主机
  登录权限+ROOT权限
  项目负责人
  项目的线上主机
  登录权限
  项目的线下主机
  登录权限+ROOT权限
  服务的运维
  服务的线上主机
  登录权限+ROOT权限
  服务的线下主机
  项目的运维
  项目的线上主机
  登录权限+ROOT权限
  项目的线下主机
  5.2 权限申请的审批链路  如果没有默认权限,但是需要登录机器,或者需要使用ROOT权限,则需要申请。  如果为组织申请权限,则该组织(部门)下所有成员均有锁申请的权限。
  这里明确了申请流程的审批链路:
  六、这种实现思路的优点
  6.1 操作方便,体验较好
  通过该思路所建设的跳板机系统,操作上比较方便,即支持了ssh、又兼容了rdp,同时提供了网页端操作入口,体验较好。同时,由于采用微服务架构,服务间耦合较小,比较容易做到高可用,从而很少出现卡顿、延时等现象,整体稳定性可靠,体验上有保证。
  6.2 安全可靠,容易审计
  本文的最大特点就是在目标服务器上使用了pam机制,通过jmp.so接管多个服务的身份识别和权限认证,从而做到了   在不修改标准命令的基础上,统一接管权限,统一管控。   并且做到了在登录到目标机器上后,可以进一步ssh到其他服务器,所有的交互过程全程记录,所有的操作命令都会被记录下来。
  由于通过该思路所实现的跳板机   直接将用户名作为目标服务器ssh会话的登录名   ,所以在系统内部所记录的日志里也是直接的用户名,而不是如jumpserver等方案的统一账号,这种方式下,更容易定位到操作轨迹的真实执行人,一目了然。
  危险命令拦截功能,更是可以很大程度上避免恶意操作或者破坏性强的误操作,为业务稳定性增加一层保障。
  6.3 服务间职责明确
  由于采用了微服务架构,可以做到每个服务的横向扩展,从而做到了通过扩容服务的方式管控更多的机器。服务间职责明确,可根据需要裁减jmp-rdp、jmp-socket、jmp-sftp,也可以根据需要增加新的服务,适配性较好。
  七、总结与展望
  随着服务器规模的扩大,如何管理这些服务器成为一个越来越重要的问题。针对服务器的登录访问,本文介绍了跳板机的一种实现思路,并描述了该思路的优点和独特之处。通过该思路可以一定程度上构建简单、易用且高可用的跳板机,从而解决服务器登录问题。如果读者对这个实现思路感兴趣,或者有任何疑问,欢迎与我们沟通。我们也非常愿意与各位一起学习,研究技术。
  作者:Yang Lei
  来源:微信公众号:vivo互联网技术
  出处:https://mp.weixin.qq.com/s?__biz=MzI4NjY4MTU5Nw==&mid=2247493879&idx=2&sn=7af0fb33d5efb3768b0ab168e19bd4df

健康生活所需要注意的1,人体的很多部位都是拥有病菌的,其中有很多是具有致病性的,它们会通过各种途径传播,比如说各种生活用品,由于每个人的免疫系统都是不一样的,所以说对你来说可以抵抗的病菌,另一个人可能真实故事男子连杀六人自诩比警察聪明,却因一个细节阴沟里翻船1993年6月,由谢晋执导,谢添和斯琴高娃主演的电影老人与狗剧组来到了宁夏镇北堡取景,令人没想到的是剧组的两个主演竟是握有六条人命的凶犯。这部电影是根据著名作家张贤亮的小说改编,讲谢兰12年聚少离多,喜欢老公剃光头,幸福藏在一个个小细节里2002年,一部雪白血红,谢兰凭借丁小丽一角,拿下了21届优秀女演员奖。2001年,谢兰将大宅门中的香秀饰演的生动形象,自此,谢兰开始在中国荧幕上崭露头角。出生于江苏小镇的普通女孩勇士胜绿军X因素,5慢镜3细节对比,裁判扰乱斯玛特心态文水清清10494,勇士击败凯尔特人拿下天王山之战,三节战罢,球队仅以7574领先1分,随后3分钟时间里一波100将比分定格在8574拉开11分差距,裁判吹罚扰乱斯玛特心态是转折点TCLX11画质登顶知电排行榜!为你呈现战至巅峰丰富画面细节近年来,电子竞技被纳入为奥运会的第99项运动,激发了中国电竞爱好者与职业选手自豪感的同时,也衍生出了许多电竞综艺。6月11日,由腾讯视频VSPN王者荣耀联合出品的电竞实训节目战至巅重生之门双强设定,双主角和正反派都智商在线,细节满满五一假期宅家没剧追?不可能的。还有人没有看王俊凯和张译主演的国内首部盗窃题材悬疑剧重生之门吗?精明能干的刑侦队长VS盗窃世家天才少年,因一场名画失窃案相识,而后高手过招彼此试探又彼iPhone14系列机模上手镜头更突出,边框细节更多手机已经成为人们生活中必不可少的一样通讯工具,拥有手机已经不再是一件什么了不起的事情,但是当大家都拿着手机出门的时候,辨识度又成为了一个新的问题。虽然现在大多数新机在参数上的堆料都购买电动观光车怎么避坑对各大景区来讲,随着春天的到来,游客数量将会暴涨,因此景区电动观光车的采购工作也被排上了日程,那么在采购时,有那些留意事项呢?购买景区电动观光车怎么避坑?景区电动观光车市场需求量的世界内河河轮旅游发展纵览(四)多瑙河河轮考察实录前言游轮一般泛指在内河上行驶,以旅游度假观光为目的的客船而邮轮是指在海洋上行驶,以旅游度假观光为目的的大型船舶。游轮旅行,起源于西方。19世纪工业革命后,坐船游河成了欧洲王宫贵族间美国制裁下的古巴(10)出海抓龙虾到巴拉德罗酒店的第二天早上,我们在酒店报名参加了一个坐游艇出海的自费项目。每个人114个红比索,相当于780元人民币。内容包括浮潜海岛游乐和与海豚亲密接触等项目。游艇码头我们租车来美国移民律师爆料很多持旅游签商务签赴美的都是出来就不想回日前有网友分享出境被劝返经历,持有旅游商务签证被认为不宜出境或出境理由不充分。有移民律师表示持有旅游商务签证出境的,都是不想再回国的。持B1B2签的很多人不想回来了美国一名不愿具名
为啥互联网企业搞年底大裁员?互联网的红利还在吗?时间到了年底,各大互联网企业纷纷传出裁员的新闻。网上还有一张裁员统计图在各大网络平台疯狂传播,图片里共罗列了19家互联网知名企业的裁员情况,名单里包括百度腾讯爱奇艺字节快手滴滴苏宁当前,一名普通人创业,选择哪些领域更容易成功呢?这是一个粉丝的问题。在当前经济形势下,确实有很多普通人存在这种困惑,看到社会上创业失败率居高不下,创业失败者如过街老鼠一般。那么,一名普通人,现在选择哪些领域更容易成功呢?我个人认我在直播间卖羊绒衫开菠萝财经(kaiboluocaijing)原创作者吴娇颖编辑金玙璠在入驻快手做直播带货前,胡哥已经与羊绒打了十几年交道。18年前,胡哥来到浙江桐乡的濮院,进入一家羊绒衫加工厂打工LPL首位退役S赛冠军GimGoon,上路真男人1V1大战,落幕2021年,12月27日FPX队爸上路大爹金贡宣布退役上路真男人,除了shy哥我就服贡子哥,shy哥凭借的是实力,是操作,而贡子哥赢的是人品,是心性,是队爸自己的人格魅力贡子哥,永世界冠军郝帅在日本2天4连胜,队友合影站中间,尊重是打出来的日本联赛,郝帅五胜一负成冈山队关键先生,mvp不是梦日本T联赛,前国乒世界冠军郝帅,两天四连胜,队友合影时当仁不让站C位!是金子就会发光!郝帅这名38岁老将,在东瀛再次熠熠生辉连胜爆冷!日本19岁小将上轮击败前国乒世界冠军,本场31胜日本冠军日本乒乓球T联赛又战一轮,彩玉俱乐部经过5盘大战,以32险胜卫冕冠军东京俱乐部,其中19岁的小将曾根翔独揽2分功不可没,特别是31爆冷战胜了2021年的全日本锦标赛男单冠军及川瑞基气短懒言浑身乏力,脾虚了?一个方子6味药,补脾益气生津润燥谈到中医上的虚症,可能首先想到的就是肾虚,很多人就忽略了脾虚。大家有所不知,所谓脾虚生百病,现在很多人因工作压力,生活节奏加快,经常吃饭不规律,而且因工作原因也经常熬夜。长期以来,麦冬与经方麦门冬汤介绍麦冬与麦冬汤介绍吴文博河北省石家庄市中医院麦冬麦冬为百合科植物麦冬的块根。是我国传统的药食两用中药,其首载于神农本草经。麦冬味甘微苦,性微寒。归胃肺心经。具有润肺生津,清热养阴之功剑网三各门派绰号的来历东都哈士奇,西湖小黄鸡,华山喜羊羊,青岩妙蛙花,少室山电灯泡,请问你知道这些门派绰号的出处么?本期为大家详细解释一下。东都哈士奇东都,指洛阳。在剑网三的大唐江湖中,长安是都城,洛阳包租婆误闯OW世界,守望先锋新英雄妈妈哄真能推出吗自从暴雪公布了守望先锋的初设定集,大家对各种英雄的废案和变动产生了巨大的兴趣,其中就不乏一个特别吸引人的设定MamaHong妈妈哄,这位颇像包租婆的中国风大妈角色一时间成为了话题的沙雕网友真给力最终幻想7重制版间奏MOD大赏最终幻想7重制版间奏已经在2021年12月登陆Epic游戏商城。除了PlayStation玩家,PC平台的用户终于也能享受本作的乐趣了。谈起PC用户,除了普通玩家,还有一些以创造M