系统完整性检查工具--Tripwire和AIDE

         当一个入侵者进入了你的系统而且种植了木马,一般会想办法来隐蔽这 个木马(除了木马自身的一些隐蔽特性外,他会尽可能给你检查系统的过 程设置障碍),一般入侵者会修改一些文件,好比管理员一般用ps -aux 来查看系统进程,那么入侵者极可能用本身通过修改的ps程序来替换掉 你系统上的ps程序,以使用ps命令查不到正在运行的木马程序。若是入 侵者发现管理员正在运行crontab做业,也有可能替换掉crontab程序等 等。因此由此能够看出对于系统文件或是关键文件的检查是很必要的。 接下来咱们就来认识一下系统完整性检查的两种工具之aide和tripwrie。算法

1、AIDE(Adevanced Intrusion Detection Environment) 数据库

          AIDE是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被修改过了,也能够构造一个指定文件的数据库。aide数据库可以保存文件的各类属性,包括权限、索引节点序号、所属用户、所属用户组、文件大小、以及最后修改时间、建立时间、增长的文件大小等。并且aide还能够经过使用shal、md5等算法,以密文件的形式创建每一个文件的校验码或散列号,正是因为aide的这些特性,因此aide数据库不该该保存那些常常变更的信息,如日志文件、邮件、/proc文件系统和临时目录等。vim

因为系统默认没有安装aide,因此使用时就须要安装aide包,避免依赖关系致使的包没法安装,用yum来进行包的安装。接下来一块儿来实践操做一下aide相关命令。安全

  • aide的安装
[root@localhost ~]#yum -y install aide
  • aide的配置文件

aide相关配置文件在 /etc/aide.conf,修改aide.conf文件,指定对那些文件进行检测。bash

/etc             R=p+i+n+u+g+s+m+c+md5 权限+索引节点+连接数+用户+组+大小+最后一 次修改时间+建立时间+md5校验值 服务器

!/etc/mtab        #“!”表示忽略这个文件的检查
网络

NORMAL = R+rmd60+sha256app

总的来讲,想检测的值能够本身进行编辑写入aide.conf文件便可。ssh

  • 生成数据库
[root@localhost ~]#aide -i
 AIDE, version 0.15.1

### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
  • 将生成的数据库文件名更名去掉new
[root@localhost aide]#mv aide.db.new.gz aide.db.gz
  • 修改数据查看是否会检测

 

[root@localhost app]#aide -C
 Changed files: 1


 --------------------------------------------------- Changed files: --------------------------------------------------- changed: /app/f1 --------------------------------------------------- Detailed information about changes: --------------------------------------------------- File: /app/f1 Mtime : 2018-09-07 19:41:40              , 2018-09-07 19:43:26 Ctime : 2018-09-07 19:41:40              , 2018-09-07 19:43:26 SHA512 : kdWQ1fcm+hTQd0jDrdUIRZhJv8cijY5Z , 84tl4Ep3IIBo4wOXZ+49+JXXrgeLcdej
  • 更新数据库
[root@localhost app]#aide –u 更新数据库 [root@localhost app]#mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz 将生成的新的数据库去new
 mv: overwrite ‘/var/lib/aide/aide.db.gz’? y [root@localhost app]#aide –C 查看是否有修改的
 AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

2、TCP_Wrappers
tcp

TCP_Wrappers是工做在传输层的TCP协议,对有状态链接的特定服务进行安全检测并实现访问控制。

  • 查看服务是否支持TCP_Wrappers
* strings PATH/TO/PROGRAM |grep libwrap.so * ldd /PATH/TO/PROGRAM |grep libwrap.so [root@localhost ~]# ldd /usr/sbin/vsftpd |grep libwrap.so 
 libwrap.so.0 => /lib/libwrap.so.0 (0x00236000)
  • 配置文件

配置文件有别与其余的服务,有两个配置文件分别为/etc/hosts.allow,/etc/hosts.deny

这两个文件都有效,先匹配allow文件在匹配deny文件,一旦前面规则匹配,直接生效,将再也不继续。

  • 基本语法:

– daemon_list@host: client_list [ :options :option… ]

 Daemon_list@host格式

– 单个应用程序的二进制文件名,而非服务名,例如vsftpd

[root@localhost ~]# rpm -ql vsftpd|grep bin 查看二进制服务的文件名
/usr/sbin/vsftpd [root@localhost ~]# rpm -ql telnet-server|grep bin
 /usr/sbin/in.telnetd

– 以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd

– ALL表示全部接受tcp_wrapper控制的服务程序

– 主机有多个IP,可用@hostIP来实现控制 

  • 客户端Client_list格式

– 以逗号或空格分隔的客户端列表

– 基于IP地址:192.168.10.1   192.168.1.

– 基于主机名:www.magedu.com  .magedu.com 较少用

– 基于网络/掩码:192.168.0.0/255.255.255.0

– 基于net/prefixlen: 192.168.1.0/24(CentOS7)

– 基于网络组(NIS 域):@mynetwork

– 内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID

例一、只容许172.18.250.243/24的主机访问sshd

[root@localhost ~]# vim /etc/hosts.allow
sshd:172.18.250.243 [root@localhost ~]# vim /etc/hosts.deny
sshd:ALL

例二、只容许172.18.250.243/24的主机访问telnet和vsftpd服务

[root@localhost ~]# vim /etc/hosts.allow
vsftpd,in.telnetd:172.18.250.243 [root@localhost ~]# vim /etc/hosts.deny
vsftpd,in.telnetd:ALL

[:options]选项:

deny 主要用在/etc/hosts.allow定义“拒绝”规则 如:vsftpd: 172.16. :deny

allow 主要用在/etc/hosts.deny定义“容许”规则 如:vsftpd:172.16. :allow

spawn 启动一个外部程序完成执行的操做

twist  实际动做是拒绝访问,使用指定的操做替换当前服务,标准I/O和 ERROR发送到客户端,默认至/dev/null
例三、启动一个外部程序完成操做好比建立一个文件

[root@localhost app]#vim /etc/hosts.allow
vsftpd:172.18.251.25:spawn echo "$(date +%%F) login from client\:%c to %s %p" >> /app/ftp.log
[root
@localhost app]#cat ftp.log 2018-09-08 login from client:172.18.251.25 to vsftpd@172.18.250.243 25044

例四、使用twist拒绝一个服务

[root@localhost app]#vim /etc/hosts.allow
vsftpd:ALL:twist echo "connection prohibited" [root@localhost ~]# ftp 172.18.250.243
 Connected to 172.18.250.243 (172.18.250.243). connection prohibited

说明:

– 在/etc/hosts.allow中添加,容许登陆,并记录日志

– 在/etc/hosts.deny中添加,拒绝登陆,并记录日志

– %c 客户端信息

– %s 服务器端信息

– %d 服务名 – %p 守护进程的PID

3、练习

一、仅开放本机两个IP地址中的一个地址172.16.0.X上绑定的sshd和vsftpd服务给172.16.0.0/16网络 中除了172.16.0.0/24网络中的主机以外的全部主机,但容许172.16.0.200访问,每次的用户访问都 要记录于日志文件中注:其中X为学号

[root@localhost app]#vim /etc/hosts.allow
sshd@172.18.0.23,vsftpd@172.18.0.23:172.18. EXPECT 172.18.0. EXPECT 172.18.0.200:spawn echo "$(date +%%F) login attempt from %c to %s,%d" >> /var/log/sshd.log sshd,vsftpd:ALL

二、编写脚本/root/bin/checkip.sh,每5分钟检查一次,若是发现经过ssh登陆失败次数超过10次,自 动将此远程IP放入Tcp Wrapper的黑名单中予以禁止防问

#!/bin/bash
 while :;do iplist=`cat /var/log/secure |awk '/Failed/{print}'|awk '{line[$(NF-3)]++}END{for(i in line){print i,line[i]}}'|awk '{if($2 >=10){print ""$1}}'` for i in iplist do echo "sshd:$i" >> /etc/hosts.deny done sleep 300 done
相关文章
相关标签/搜索