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

两盒软妹~` 提交于 2021-01-10 15:12:34

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

一、AIDE(Adevanced Intrusion Detection Environment)

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

由于系统默认没有安装aide,所以使用时就需要安装aide包,避免依赖关系导致的包无法安装,用yum来进行包的安装。接下来一起来实践操作一下aide相关命令。

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

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

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

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

NORMAL = R+rmd60+sha256

总的来说,想检测的值可以自己进行编辑写入aide.conf文件即可。

  • 生成数据库
[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!

二、TCP_Wrappers

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

例1、只允许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

例2、只允许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
例3、启动一个外部程序完成操作比如创建一个文件

[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

例4、使用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

三、练习

1、仅开放本机两个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

2、编写脚本/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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!