Teleport是一款Golang语言开发的用来替代sshd的ssh 服务器 ,支持通过 SSH 或者 HTTPS 远程访问,支持集群、Web登陆、SSH历史记录还重放用以操作分享和安全审计,基于Golang ssh包构建开发,实现完全兼容OpenSSH。
最近Teleport 4.2版本中新增加ssh增强的回话记录功能用来接收非结构化的ssh会话,并将其通过结构化事件流来输出。该功能使用到了Linux内核中集成的一项新技术eBPF(简称为BPF)。用来完善Teleport审计功能的不足之处。本文虫虫就给大家介绍Teleport中是如何做的。
Teleport的一个优势就是,可以对ssh会话全程记录。该功能可以捕获用户屏幕上显示的所有内容。之后,可以使用该记录回放还原所有操作,以便于审计。这些记录易于理解,并提供了有关用户在会话过程中所做操作和显示的信息
然而,和其他同类工具一样(堡垒机),Teleport也有不足之处,用户可以使用一些方法绕过会话记录。其中包括:
混淆命令:
比如通过加密或者其他方式对命令予以混淆。比如下面的语句,用base64编码对要执行的命令进行了混淆。
Y3VybCBodHRwOi8vd3d3LmV4YW1wbGUuY29tCg==|base64-d|sh
这样实际的执行命令(curl example.com)不会直接被记录。
shell脚本:
如果用户通过上传并执行脚本的方式,也不能捕获脚本中运行的命令,只能捕获脚本的输出。
终端控制:
ssh终端可以支持多种控件,比如用户可以禁用终端回显的控件,在一些应用程序通常会使用。例如sudo命令当它们提示用户输入密码时。这是也不能在ssh记录中捕获它们。
此外,由于TTY流是非结构化性质,会话记录在某种程度上可能难以捕获和监视。
为了解决安全审计的这些不足,Teleport需要一种能将非结构化ssh会话转换为结构化事件流的方法。这就是本文要说的增强回话记录功能,具体功能展示如下:
通过多种方法对比,包括了内容从正则表达式模式匹配之类的临时方法到自己解析原始SSH会话之类的方法,还探索了Linux提供的各种API和系统,例如Audit,fanotify和BPF等,在走技术对比时候,要考虑的两个标准是准确性和性能问题:
减少误报,最好减少到零。监控系统(安全审计),首先要考虑是的准确性问题,如果报警很多,则对警报的关注度就会减少。可能会导致严重问题被忽略掉。
减少由监控引起的任何性能影响,最好为零。监控系统要尽量避免影响系统的性能。
多种方法中,误报问题都很严重。无法对构成SSH会话的字节流进行准确的解析和解释,不能防止警报疲劳。
还有一些方法,会有性能问题。比如Linux Audit。
通过查看文件系统访问,有一些替代方法。最突出的两个是inotify和fanotify。inotify不错,做为了初始备选项,但是其缺少递归目录监视功。fanotify更有希望,也存在两个问题。
布伦丹.格雷格在BPF性能工具书中提到,在重负载时,opensnoop比对fanotify,fanotify 占了67%的CPU,而opensnoop只用到1%。
Linux内核最近合并到一个补丁,以提高fanotify的性能,使其更适合于对整个文件系统监视,这样可以在Teleport中的使用更加紧密地契合。然而,补丁需要在Linux 5.1中才被合并,目前还没有开箱即用的主流发行版支持。
考虑到这些考虑因素,Teleport最终选择了基于BPF程序链构建的解决方案,该解决方案减少了误报并且对性能的影响最小。
BPF,原本是Unix的一个包过滤器,伯克利包过滤器(Berkeley Packet Filter)。后来被移植到了Linux中。2013 年,Alexei Starovoitov 对 BPF 做完善和改进,新版本被命名为 eBPF (extended BPF),简写为BPF,而将老的BPF叫做cBPF(classic BPF)。eBPF在增加了映射和尾调用等新特性,并且还重写了JIT 编译器。新版语言比 cBPF 更接近原生机器语言。BPF允许用户空间程序以安全和高效的方式从内核中的某些位置挂接并发出事件。
安全意味着BPF程序不会陷入无限循环而导致系统瘫痪。BPF程序不太可能像内核模块一样可能使整个操作系统崩溃。
BPF程序也很有效,如果不能足够快地使用它们,则丢弃事件,而不是拖累整个系统的性能。
目前Linux中有大量的系统工具都是基于BPF进行了重构(比如iptables),布伦丹.格雷格的书《BPF高性能工具》中(blog中)介绍了大量的工具可以供大家学习。
Teleport中使用了三个BPF程序:execsnoop捕获程序执行,opensnoop捕获程序打开的文件,tcpconnect捕获程序建立的TCP连接。
为了更好地理解这些BPF程序的功能,可以运行时查看execsnoop的输出man ls。
看起来,简单地运行man二进制文件似乎是在幕后执行了许多其他程序。
Teleport 将这些程序嵌入其二进制文件中,并且在启用”增强的会话记录”功能后,它将生成并运行它们。
这些程序本身是调试和跟踪的出色工具,它能给出系统上正在执行什么操作,而不仅限于一个用户。
要将程序执行与特定的SSH会话相关联,还使用了cgroups(尤其是cgroupv2)。Teleport启动SSH会话时,它将首先重新启动自身并将其置于cgroup中。这不仅允许该进程,而且可以使用唯一ID跟踪Teleport启动的所有将来进程。Teleport运行的BPF程序已更新,还可以发出执行它们的程序的cgroup ID。这样就可以将事件与特定的SSH会话和身份相关联。
目前Teleport没有完成增强的会话记录。仍然存在一些差距,将以后版本解决。
值得指出的是,通过会话记录,Teleport可以捕获由于其特权位置而构成会话的字节流(字节流必须流过Teleport)。至关重要的是,会话记录的完整性不依赖于主机自己报告的任何信息。但是,增强的审核功能依赖于主机准确地向Teleport报告信息。如果主机的完整性受到损害,则增强审核的完整性也会收到影响。此外,Teleport仅监控系统中最关键的部分系统调用,而不是全部调用。
目前,增强的会话记录最适合非root用户,对有权访问root的用户可以通过多种方式禁用增强会话记录。
在没有背景的情况下,可以使用下面的脚本进行增强的会话记录。
首先启动Ubuntu 19.04或RHEL/CentOS 8 VM,然后运行上面的脚本。该脚本会安装内核头文件和bcc-tools,这是运行增强会话记录的先决条件。此外,脚本还安装jq,一个命令的json解析工具(虫虫以前文章介绍过,可以参考),这有助于可视化结构化事件流。
按照说明输入终端后,屏幕上看到以下类似的信息:
由此可见,curl程序是由用户以两种方式执行的。首先是程序本身的执行。第二个是程序的行为,curl发出了网络请求,也可以看到它。你可以尝试执行其他操作,例如混淆的命令,或者脚本方式执行等,应该在日志中查看执行结果。
Teleport增强会话记录的最低要求需要启动BPF支持的 Linux内核4.18 。目前有多个发行版本可直接使用它,包括Ubuntu 19.04,Debian 10和RHEL/CentOS 8。
还需要安装内核头文件和bcc-tools。对于上面列出的操作系统,发行版的包管理器中安装它们,比如对Centos 8只需运行
yuminstall-ykernel-headersbcc-tools
或者Ubuntu下执行
aptinstall-ylinux-headers-$(uname-r)bpfcc-tools
如果尚未打包bcc-tools,则必须从源代码构建它们。
要在Teleport中启用增强的会话记录,只需在文件配置中将其启用即可,如下所示:

ssh_service:enhanced_recording:enabled:yes
尽管没有任何监控系统是绝对可靠的,但采用具有多种防护措施的纵深防御策略可以帮助发现问题并采取适当的措施。Teleport的增强型会话记录功能可以为系统上运行的命令的安全审计,提供更强大的记录和操作可见性。
怎样检查节温器是否合格
在汽车的长期使用中,节温器有时会失效,造成发动机过热或过冷,功率下降,油耗增加。 因此,要加强节温器的随车检查。 (1)发动机刚起动时的检查。 打开水箱加水盖,若水箱内冷却水平静,则表明节温器工作正常。 这是因为,在水温低于70℃时,节温器膨胀筒处于收缩状态,主阀门关闭;当水温高于80℃时,膨胀筒膨胀,主阀门渐渐打开,水箱内循环开始工作。 若水温表指示在70℃以下,水箱进水管处有水流动且水温微热,则表明节温器主阀门关闭不严,使冷却水过早大循环。 (2)水温升高后的检查。 发动机工作初期,水温上升很快,当水温上升到80℃后,升温速度减慢,则表明节温器工作正常。 反之,水温一直升高很快,且内压达到一定程度时,沸水突然溢出,则表明是主阀门有长滞而突然打开的原因。 水温表指示在70~80℃时,打开水箱盖及放水开关,用手感其水温,若都汤水,说明节温器正常;若加水口处水温低,且水箱上水室进水管处无水流出或流水甚微,说明节温器主阀门无法打开。
会计与出纳职责有何不同?
一、 会计岗位责任制1.根据会计法和公司的实际情况负责公司的全面会计核算工作,并直接对董事会负责。 2.参与制定公司的会计核算制度和财务管理制度,制定公司的收支计划,并认真执行和实施。 3.负责审核票据的合法性、合理性、正确性,并以此填制凭证,登记账簿。 4.负责填制科目汇总表,据以登记总账,并与各明细账核对相符。 5.负责编制科目汇总表,做到账表相符,并检查预算和财务收支计划的执行情况。 6.负责并参与财产清查工作,定期限或不定期限对仓库进行盘点,检查账实是否相符,财务部门的财产与仓库账是否一致,做到账实相符、账账相符。 7.对出纳工作及其他会计工作进行督促和监督,并协调会计内部工作。 8. 严格、自觉遵守各项财经纪律。 二、 出纳人员岗位责任制:1.认真做好货币资金的收、付和结算工作。 2.负责保管库存现金和有价证券,严格按《现金管理条例》的具体规定使用现金。 3.负责管理银行存款和洽谈货币资金,严格遵守结算纪律,按公司规定办理转帐结算业务。 4.认真审核收付款原始凭证,据实办理收付款业务,负责到银行办理电费、税款等结算业务。 对代扣户存款,应按月核对,发现长短款,应及时正确处理。 5.妥善保管和按规定使用有关印章,保证货币资金的安全。 6.加强对空白支票的管理,凡领取空白支票,必须经领导批准,并做好领用和注销登记手续。 如发生支票遗失,应立即向领导汇报,并负责按银行规定办理挂失。 如果未及时汇报办理,产生的后果应由本人负责。 7.所有收支凭证都必须经总经理审查签字后,方能付款并交会计做账。 8.积极做好领导交办的其他出纳工作。 9. 出纳人员要认真、逐笔、顺序登记现金日记账和银行存款日记账,做到日清月结,每天业务终了,应核对账、款是否相符,月终核对账账、账实是否相符,如有问题应及时查明原因,分别进行处理,并编制余额调节表。
造价员实习报告怎么写?
工程造价实习报告(参考)钢筋笼的制作为现场制作,连接为焊接,分段下孔,钢筋笼的加强箍必须与主筋焊接,焊条我们采用5字头型号,以保证钢筋笼焊接质量。 钢筋笼在安装过程中不能变形。 钢筋笼一次性使用一台吊机。 钢筋笼顶端要焊吊挂筋,高出钢护筒。 钢筋笼就位后,吊挂筋支承在护筒顶的枕木上,不能直接放在护筒上。 为了让我们在以后检测桩位正常钢筋与护筒距离正常,所以我们箍筋要求多焊出一圈。 混凝土灌注时必须保持连续灌注,中断时间不超过30分钟。 因为我们的孔深都在20米以上所以混凝土一定要准备充分,混凝土的初凝时间为2---3小时。 在施工新河中桥z6z5桩时我们搅拌站还没有建设完成,所以均为商品混凝土,但其造价之高令人望而却步。 浇灌的桩顶标高应高出设计标高0.5m以上。 水中墩概况,桂子湖中4个,水深4--5米,湖面宽120米,河床地质为:淤泥亚粘土,深度5米左右,再下层为粘土;系梁位于水下面20--30cm,河床以下。 蚂蚁河水中墩4个,水深3米,河面宽125米,河床地质为:4米深的淤泥层,淤泥质亚粘土1--5米,再下层为粘土;系梁位于水面下20--30cm,河床以下。 根据设计图纸要求和水中墩的构造特点,钻孔桩采用固定平台,上钻机成孔方法施工,系梁采用钢板围堰,下设模板支撑架方法施工。 施工所需设备,机具,材料主要通过水上运输船运送,小型机具及混凝土利用混凝土输送管泵通过临时践桥输送。 采用钢板桩围堰的水中墩及系梁:搭设固定平台,打设钢护筒,钻机就位成孔,灌注混凝土,插打定位管桩,布设围堰导向框,插打钢围堰,内外支撑安装,安装底模支撑框架,立模,灌注系梁混凝土,拆模,拆除钢板桩围堰等工序。 我们采用震动打桩机,震动打桩机是目前插打钢板桩较好的施工机具,具有液压夹桩位置,能与钢板桩自行作钢性连接,既可打桩,又能拔桩,操作简便,能克服桩的摩阻力,使桩下沉较快,可提高沉桩速度。 水上钻孔平台钢管桩作基础,钢管桩上布设工字钢梁,主要为钻机钻孔提供作业平台。 经测量定位后,钢管桩由浮吊吊震动锤打入河床,入土深度不小于8米;钢管桩采用∮529mm,壁厚为8mm,每根长为15米。 每个墩位处设一座整体钻孔作业平台,采用钢管桩作基础,顺桥轴线方向的两根钢管桩上布置一片Ⅰ400工字钢,以作横垫梁,工字钢与钢管桩焊接在一起,以提高整体性;在横梁上垂直桥轴线方向布设Ⅰ400工字钢,以作纵梁。 每根钢管桩上做钢板桩帽一个,分布梁支立在桩帽上并焊接好,以提高作业平台的整体稳定性。 搭设固定平台后,安装下沉钢护筒的导向架,用浮吊,震动锤把护筒下沉到设计位置,每个墩的几个钢护筒用泥浆槽连成一体,钻孔时其他几个护筒作为循环泥浆池。 辛苦的工作就是这样进行的,每天我们都在荒芜的稻田与水塘之间忙碌着,哪里开工我们就在哪里放线,经常要同一个桩位放好几次,在主干道施工之前要修便道,我们道路的便道修在内侧,大军山特大桥的便道修在桥下中间位置,汉南互通匝道便道修在路的里测。 总结:在**小区二期三组团,D17栋楼实习的一段日子里我学会了许多土建工程的施工程序和质量的检验工作,并且了解了报表的填写与记录,能根据图纸算出工程量,在技术指挥的指导下弄懂了实物与图纸之间的区别。 在施工过程中能进行测量放线的现场操作,并配合技术指导完成繁重的现场看管,我很珍惜在这方面所学到的实践知识与一些施工中所谓“游丁走缝”的处理。 并且知道了施工中安全的重要性,在安全的前提下才能进行工期与质量的话题。 也明白了甲方与乙方之间的工作关系,监理的重要性等。 我觉得是收益匪浅。 在**高速的施工期间所学的东西更是一言难尽。 测量中控制点的重要,加密点的必须,方位角的准确,定向的步骤,全站仪的使用,坐标的计算等等都是施工前的必要“隐蔽工程”它在工程竣工后是看不见的,但在施工中又是不可缺少的。 粉喷桩的施工过程,要素,重点,粉喷量的纪录,桩位的计量机械的养护,都是十分重要的。 搅拌站地点的选择,三通一平的准备工作,设备进厂的位置安排都要认真考虑。 钻孔桩的施工更是要细心,桩位的确定,护桩的打设,护筒的安装,钢筋笼的焊接,下笼的进行,混凝土的灌注,正循环钻机的施工原理,冲心转的施工原理,都是我在汉洪高速上学到的,这也让我记忆犹新。 我很珍惜学校为我们安排实习这理论与现实连接的重要环节,这为我们以后再施工企业单位奠定了坚实的基础,更深刻的体会了实物与图纸之间那密切的关系,明白了图纸它要显示什么样的物件,有的在图纸上看不懂的地方在实物的面前就显的那么简单明了。 总之要谢谢学校在为迎合市场需求,促进学生实践能力所安排的这段实习,我将永远珍惜这段经历。
发表评论