系統完整性檢查工具--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
相關文章
相關標籤/搜索