堡垒机的进一步改进
发布时间:2020-12-14 00:21:01 所属栏目:Linux 来源:网络整理
导读:上节回顾 ? ? ok 我们接着上一步继续改进 上面我们已经能够通过堡垒机成功连接主机了, ? ? ? ? ?现在我们就要去监控运维人员对主机的操作了?? ? 我们应该知道我们是通过堡垒机上的ssh 去连接主机的 那在我们的堡垒机上就应该有具体用户的账号,密码以及他管
上节回顾? ? ok 我们接着上一步继续改进 上面我们已经能够通过堡垒机成功连接主机了, ? ? ? ? ?现在我们就要去监控运维人员对主机的操作了??? 我们应该知道我们是通过堡垒机上的ssh 去连接主机的 那在我们的堡垒机上就应该有具体用户的账号,密码以及他管理的主机的信息, 我们在知道Linux中有一个strace命令,用来抓取一个进程的所有操作?? 那么首先我们要知道我们的程序是运行在那个进程下 我们通过 ps -ef 一下然后找到我们的程序 ? ? ? 父进程为2504的真是我们 通过ssh远程连接的命令?? 我们现在? ?strace -f -p 2504 -o ssh.log ?监控一下这个进程? 我们在通过堡垒机连接上的主机去输入一些命令?? 然后我们打开ssh.log 这个文件? ?就会发下我们输入的命令? ?? ? ?现在我们写一个.py 文件 然后去获取运维人员在这里输入的命令? 我们将这个文件写入到backend中 #_*_coding:utf-8_*_ import re class AuditLogHandler(object): ‘‘‘分析audit log日志‘‘‘ def __init__(self,log_file): self.log_file_obj = self._get_file(log_file) def _get_file(self,log_file): return open(log_file) def parse(self): cmd_list = [] cmd_str = ‘‘ catch_write5_flag = False #for tab complication for line in self.log_file_obj: #print(line.split()) line = line.split() try: pid,time_clock,io_call,char = line[0:4] if io_call.startswith(‘read(4‘): if char == ‘"177",‘:#回退 char = ‘[1<-del]‘ if char == ‘"33OB",‘: #vim中下箭头 char = ‘[down 1]‘ if char == ‘"33OA",‘: #vim中下箭头 char = ‘[up 1]‘ if char == ‘"33OC",‘: #vim中右移 char = ‘[->1]‘ if char == ‘"33OD",‘: #vim中左移 char = ‘[1<-]‘ if char == ‘"33[2;2R",‘: #进入vim模式 continue if char == ‘"33[>1;95;0c",‘: # 进入vim模式 char = ‘[----enter vim mode-----]‘ if char == ‘"33[A",‘: #命令行向上箭头 char = ‘[up 1]‘ catch_write5_flag = True #取到向上按键拿到的历史命令 if char == ‘"33[B",‘: # 命令行向上箭头 char = ‘[down 1]‘ catch_write5_flag = True # 取到向下按键拿到的历史命令 if char == ‘"33[C",‘: # 命令行向右移动1位 char = ‘[->1]‘ if char == ‘"33[D",‘: # 命令行向左移动1位 char = ‘[1<-]‘ cmd_str += char.strip(‘"",‘) if char == ‘"t",‘: catch_write5_flag = True continue if char == ‘"r",‘: cmd_list.append([time_clock,cmd_str]) cmd_str = ‘‘ # 重置 if char == ‘"‘:#space cmd_str += ‘ ‘ if catch_write5_flag: #to catch tab completion if io_call.startswith(‘write(5‘): if io_call == ‘"7",‘: #空键,不是空格,是回退不了就是这个键 pass else: cmd_str += char.strip(‘"",‘) catch_write5_flag = False except ValueError as e: print(" |