系統完整性檢查工具--Tripwire和AIDE


         當一個入侵者進入了你的系統並且種植了木馬,通常會想辦法來隱蔽這 個木馬(除了木馬自身的一些隱蔽特性外,他會盡量給你檢查系統的過 程設置障礙),通常入侵者會修改一些文件,比如管理員通常用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM