您的位置:首页 > 大数据 > 人工智能

Solaris服务器配置高级入侵检测工具AIDE

2009-03-18 02:08 423 查看
AIDE即Advanced Intrusion Detection Environment,直译为高级入侵检测环境,AIDE,是一个文件完整性检测工具,AIDE 能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。AIDE生成的数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以及连接数。AIDE 还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校验码或散列。
  一旦一台计算机系统被攻击, 所有的信息都将暴露在攻击者的视野中.如果攻击者能很好的隐藏痕迹, 那么入侵的事实是一下很难被发现的, 随着时间的推移攻击者将会发现越来越多的有用信息。管理员在系统安装完毕,连接到网络上之前,可以通过该程序建立新系统的AIDE 数据库。这个AIDE 数据库是系统的一个快照和以后系统升级的准绳。数据库应该至少包含这些信息:关键的系统二进制可执行程序、动态连接库、头文件以及其它总是保持不变的文件。(当然也可以用一些变通的策略,例如/dev 下很多终端设备只是permisson 变动,所以只要检查时去掉权限检查,就不会被报警淹没。)一旦发现系统被侵入,系统管理员会使用ls、lsof、ps、netstat、last 以及who等系统工具对系统进行检查,但是所有这些系统工具都可能被rootkit 程序代替了。可以想象被修改的ls 程序、ps 也不会显示任何入侵进程的信息,甚至本身就是一个肩负backdoor 任务的程序。即使系统管理员恐怕永远也无法通过简单的文件属性来获知它们是否被修改过了,因为文件日期、大小等信息是非常容易改变的,如利用touch。系统管理员需要安装入侵检测工具才能更好的提高信息的安全性.AIDE, 高级入侵检测环境, 是一个文件完整性检测工具, 一种类型的入侵检测程序. 使用AIDE, 系统中的重要文件和文件相关的属性如权限, inode号, 用户, 用户组和链接数, 也包括创建每一个文件的加密校验都会被创建到一个数据库中。
  二、AIDE的工作流
  



[align=center]  图1 AIDE的工作流程[/align]
  AIDE的工作流程包括如下步骤:
  (1)设定aide.conf
  (2)依据aide.conf建立数据库文件
  (3)执行文件审核确认完整性,文件系统是否有发生异常
  (4)回报异常
  (5)检查异常是否属于正常
  (6) 重设aide.conf,更新数据库文件或者采取安全的补救措施。
三、下载安装AIDE
  1.下载安装mhash,扩展库
  Mhash扩展库支持12种混编算法,可以知道,它支持下面的混编算法:

CRC32 HAVAL160 MD5
  CRC32B HAVAL192 RIPEMD160
  GOST HAVAL224 SHA1
  HAVAL128 HAVAL256 TIGER
  #wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/mhash-0.9.9-sol10-x86-local.gz
  #gunzip mhash-0.9.9-sol10-x86-local
  #pkgadd –d mhash-0.9.9-sol10-x86-local
  2 下载安装libiconv库
  libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。由于历史原因,国际化的文字常常由于语言或者国家的原因使用不同的编码。随着互联网时代的到来,通过互联网进行文字交流也逐渐增多:浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码方式中没有。为了解决这种混乱,Unicode的编码方式被建立。Unicode是一种超级编码包含了所有这些编码的字符集,因此一些新的文本格式像XML的默认编码方式就是Unicode.
  但是很多老式的计算机还在使用当地的传统的字符编码方式。而一些程序,例如邮件程序和浏览器必须能在这些不同的用户编码之间作转换。其他的一些程序则内置支持Unicode,以顺利支持国际化的处理,但是仍然有在Unicode和其他的传统编码之间转换的需求。GNU的libiconv就是为这两种应用设计的编码转换库。

#wget http://mirrors.easynews.com/sunfreeware/i386/10/libiconv-1.8-sol10-intel-local.gz
  #gunzip libiconv-1.8-sol10-intel-local.gz
  #pkgadd –d libiconv-1.8-sol10-intel-local
  3下载安装libgcc
  Libgcc是编译器内部的函数库,是用来实现目标平台没有直接实现的语言元素。举个例子,C 语言的模运算符 ("%") 在某个平台上可能无法映射到一条汇编指令。可能用一个函数调用实现比让编译器为其生成内嵌代码更受欢迎(特别是对一些内存受限的计算机来说,比如微控制器)。很多其它的基本运算,包括除法、乘法、字符串处理(比如 memory copy)一般都会在这类函数库中实现。

#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libgcc-3.4.6-sol10-x86-local.gz
  #gunzip libgcc-3.4.6-sol10-x86-local.gz
  #pkgadd –d libgcc-3.4.6-sol10-x86-local
  4 下载安装AIDE

#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/aide-0.13.1-sol10-x86-local.gz
  #gunzip aide-0.13.1-sol10-x86-local.gz
  #pkgadd –d aide-0.13.1-sol10-x86-local


[align=center]  图2 AIDE在Soilaris 10下安装完成界面[/align]
[align=center] [/align]
[align=left]四、配置AIDE[/align]
  接下来的步骤是配置aide.conf。 aide.conf 配置文件的格式是非常简单的。 在设
  置该文件之前, 建议阅读该配置。 或者阅读帮助文件。进入/usr/local/etc/目录:,编辑aide.conf文件包含如下内容:

Rule = p+i+u+g+n+s+md5
  /etc Rule
  /sbin Rule
  /var Rule
  /usr/bin Rule
  /usr/local/bin Rule
  !/var/spool/.*
  !/var/log/.*
  !/var/tmp/.*
  !/opt/apachelogs/.*
  在这个配置中, 我们可以看到一个规则Rule设置了检查的权限(p), inode号(i), 用户(u),用户组(g), 链接数(n), md5校验(md5). 然后这些规则被应用到/bin, /sbin, /var, 和
  /usr/local/apache/conf目录下的所有文件, 因为通常这些目录下的文件很少被修改.
  /etc/中的文件仅使用了权限(p), inode号(i), 用户(u)和用户组(g), 因为文件的大小
  可能改变, 而其它的很少改变. /var/spool和/var/log目录中的所有子目录和文件被设置
  为不做检查, 因为这里面的文件经常性的改变.
  在aide.conf里有三类命令行:
  配置命令行 - 用来设置配置参数和定义变量
  选项命令行 - 指明哪个文件将被添加到数据库中
  宏命令行 - 在配置文件内部定义或取消定义变量
  在配置文件中所有指定的系统的部分都会被监控以及被默认的规则设置。这里列出一些AIDE的功能:
  p: permissions 代表存取权限
  i: inode 代表文件索引节点
  n: number of links 代表文件链接數
  u: user 代表拥有文件的使用者
  g: group 代表拥有文件的使用者群组
  s: size 代表文件大小
  b: block count 代表文件区段计算
  m: mtime 代表文件最后修改时间
  a: atime 代表文件最后存取时间
  c: ctime 代表文件建立时间
  S: check for growing size 代表检查文件大小的变动程度
  md5: md5 checksum 代表md5杂凑函數算法
  sha1: sha1 checksum 代表sha1杂凑函數算法
  rmd160: rmd160 checksum 代表md160杂凑函數算法
  tiger: tiger checksum 代表tiger杂凑函數算法
  R: p+i+n+u+g+s+m+c+md5 R参数代表同时设定这9个参数
  L: p+i+n+u+g L参数代表同时设定这5个参数
  E: Empty group 代表空数组
  >: Growing logfilep+u+g+i+n+S代表变动的log档检查参数
  haval: havalchecksum代表hava1杂凑函數算法
  gost: gostchecksum代表gost杂凑函數算法
  crc32: crc32 checksum代表crc23杂凑函數算法
  说明:AIDE主要支持两种加密算法:md5和Sha1 。
  MD5:Message-Digest Algorithm,由麻省理工学院为开发的用于数字签名的信息摘要算法,做Message的Hash变换,将任意长度的Message变换成一个128位的大整数,并且它是一个不可逆的字符串变换算法。MD5的典型应用是对一段Message产生数字指纹,以防止被篡改,即数字签名应用。
  SHA-1:安全散列算法(SHA)是由美国国家标准和技术协会(National Institute of Standards and Technology)开发的,1994年发布了原始算法的修订版,称为SHA-1。与MD5相比,SHA-1生成160位的消息摘要,虽然执行更慢,却被认为更安全。明文消息的最大长度可达到264位。
五、初始化AIDE
  下面初始化AIDE使用命令:
  /usr/local/bin/aide -c /usr/local/etc/aide.conf –i
  提示下面成功信息如图3 。
  


  图3 初始化AIDE
  #cd /usr/local/etc/
  # cp aide.db.new aide.db
  其他命令:
  需要检查数据库, 运行命令:
  # aide –C
  或者使用下面的命令仔细的比较最初的的数据库和后生成的库之间的区别。现在的数据库:
  #aide --compare
  升级数据库,如果你已经完成了检查和修复任务, 你需要重新更新一下数据库:
  #aide –update
六、AIDE进阶应用
  1定期运行AIDE
  典型的系统管理员会花很多时间进行重复的任务。至少在没有可在合适的时间点运行各种任务的任务计划系统的情况下,他们会这样做。不过,计划可以节约大量的时间,因此这些选项值得考虑。cron 系统可处理所有基于时间的命令执行计划,并提供了可用于在特定时间运行命令的两个不同解决方案。at 命令可计划在特定的时间执行某项任务,且仅执行一次。crontab 系统允许指定命令的执行计划,可以在指定的时间运行,可以在特定某天运行,还可以将二者结合使用。
  为了定期执行,要设置一个 cron 表(称为 crontab),以定义每个命令执行的间隔和顺序。该文件的格式是这样的,每个命令占单独的一行,每行包括六个字段,如下所示:
  minute hour day month dayofweek command
  应根据以下规则使用数字进行时间指定:
  Minute:0-59 ,Hour:0-23 ,Day:1-31 ,Month:1-12 ,Day:0-6
  (其中 0 是星期日) 对于任何字段,都可以指定单个数字、用逗号分隔的数字列表或星号(指示应匹配任何值)。 通过指定时间,只要匹配当前时间,就会执行命令。例如,通过指定以下时间:0 * * * * do-something,命令将在当前时间的分钟值为 0 时(例如整点时)执行。而指定以下时间:0 23 05 * * do-something,命令将在每晚 11 点05分时运行。

crontab -e
  0 23 05 * * /usr/local/bin/aide -c /usr/local/etc/aide.conf
  缺省情况下,crontab 运行的生成输出(到标准输出和标准错误的输出)的命令都会将输出以电子邮件的形式发送给该作业的用户。不过,这并非总是方便的解决方案,对于某些结果,您可能只需要部分输出,或者可能希望忽略标准输出,而仅报告错误。甚至可能希望将输出发送到不同的用户或电子邮件别名。 所以要忽略输出,请重定向到特殊的 /dev/null 设备。对于标准输出,请使用以下语句:

0 23 05 * * /usr/local/bin/aide -c /usr/local/etc/aide.conf |
  mailx -s server_aide_report goodcjh@2911.net >/dev/null 2
  2 在USB存储设备中保存AIDE数据库
  使用AIDE, 系统中的重要文件和文件相关的属性如权限, inode号, 用户, 用户组和链接数, 也包括创建每一个文件的加密校验都会被创建到一个数据库中. 然后把这些信息放到一个可读类型的媒体介质上, 如一个CD-R, U盘, zip磁盘等, 那么攻击者想要覆盖入侵痕迹将会变的极为困难。
  从Solaris 9开始,下面这些大容量的USB存储设备就被支持:
   CD-RW; 移动硬盘; DVD; 数码照相机; ZIP。
  所有USB大容量存储设备都是可以移动的设备,Solaris平台的USB设备具有下列特性:
   Solaris平台的USB设备支持DOS或者Windows文件系统
   可以友好地使用rmformat命令来代替format命令对大容量的USB存储设备进行分区或者格式化。如果还需要用以前的format命令,请用format-e命令。
   还可以用fdisk命令进行fdisk分区的划分。
   当使用卷管理器(volume management)管理这些设备时,大容量的USB存储设备就会被自动mount到/rmdisk目录,但是需要卷管理器重新启动。
   如果不使用卷管理器,这些大容量的USB存储设备就需要手动mount到系统。比如,一个FAT文件系统的设备就用下面的命令:

mount -F pcfs /dev/rdsk/c3t0d0p0 /mnt
  对于支持热插拔的USB存储设备,只要插上设备,我们就能用prtconf在系统设备层看到它,拔下就不会再出现。一旦数据被初始化, 然后你可以把数据库和aide的binary文件拷贝到一个u盘媒体上:

#mv aide.db /dev/rdsk/c3t0d0p0/aide.db
  #umount /mnt/u
  然后确定修改aide.conf配置文件:

#vi aide.conf
  修改成下面的配置:

database=file: //dev/rdsk/c3t0d0p0/aide.db
  database_out=file:/ /dev/rdsk/c3t0d0p0/aide.db.new
  database_new=file:/ /dev/rdsk/c3t0d0p0/aide.db.new
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: