aide文件***检测

使用AIDE进行文件夹及文件的MD5值效验;判断文件是否被篡改

yum install aide -y 

根据需求修改/etc/aide.conf配置文件

初始化校验数据库

 aide -i  && mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

效验

aide

发现文件正常改动更新效验库

aide --update  &&   mv /var/lib/aide/aide.db.gz /var/lib/aide/aide.db.gz-`date +"%F"`
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

通过添加计划任务实现每日***巡检:

效果图:

aide文件***检测

所有服务器同步脚本/data/bin/files_testing.sh

#!/bin/bash
date=`date -d "1 day ago" +"%F"`
backupdir="/data/backup/aide"
AIDE="/sbin/aide"
MV="/bin/mv"
newfile="/var/lib/aide/aide.db.new.gz"
file="/var/lib/aide/aide.db.gz"
if [[ ! -d $backupdir ]]; then
    mkdir $backupdir -p
fi
$AIDE > ${backupdir}/log 2>&1
cat ${backupdir}/log |grep -E "File|added|removed|changed"   #根据情况进行条件过滤

$AIDE --update > /dev/null 2>&1
$MV ${file} ${backupdir}/${date}-aide.db.gz
$MV  ${newfile} ${file}

添加计划任务脚本files_testing.py

# -*- coding: utf-8 -*-

import time
import threading
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import urllib2, urllib, json, re

#邮件配置
email_host='xxx'
email_prot=465
email_user='xxx'
enail_passwd='xxx'
#salt-API接口配置
salt_api_host="http://127.0.0.1:58080"
salt_api_user="salt"
salt_api_pass="salt"
cmd='/data/bin/files_testing.sh '
#发送邮件列表
to_list=["xx.com","xx.com","xx.com"]
#邮件主题(正常)
title="%s  xxx文件巡检报告"%(time.strftime('%Y-%m-%d', time.localtime(time.time())))

#平台及主机定义
host_list=["xxx","xxx","xxx","xxx","xxx"]
class saltAPI():
    def __init__(self,host,user,password):
        self.sat_url = host
        self.sat_user = user
        self.sat_password =password
        self.salt_token = self.salt_login()

    def salt_login(self):
        params = {'eauth': 'pam', 'username': self.sat_user, 'password': self.sat_password}
        encode = urllib.urlencode(params)
        obj = urllib.unquote(encode)
        headers = {'X-Auth-Token': ''}
        url = self.sat_url + '/login'
        req = urllib2.Request(url, obj, headers)
        opener = urllib2.urlopen(req)
        content = json.loads(opener.read())
        token = content['return'][0]['token']
        return token

    def postRequest(self, obj, prefix='/'):
        url = self.sat_url + prefix
        headers = {'X-Auth-Token': self.salt_token}
        req = urllib2.Request(url, obj, headers)
        opener = urllib2.urlopen(req)
        content = json.loads(opener.read())
        return content['return']

    def saltCmd(self, params):
        obj = urllib.urlencode(params)
        obj, number = re.subn("arg\d", 'arg', obj)
        res = self.postRequest(obj)
        return res

def send_mail(to_list,subject,content):
    msg = MIMEText(content,'html',_charset='utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = email_user
    msg['to'] = to_list
    try:
        s = smtplib.SMTP_SSL()
        s.connect(email_host,email_prot)
        s.login(email_user,enail_passwd)
        s.sendmail(email_user,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

#初始化saltAPI接口
salt=saltAPI(host=salt_api_host,user=salt_api_user,password=salt_api_pass)
#监控接口

backup_info=[]
def salt_get(host):
    info = ""
    for i in  salt.saltCmd({'client': 'local', 'fun': 'cmd.run','tgt':host,'arg':cmd})[0][host].split('\n'):
        info += '<p>%s</p>'%(i)
    cmd_info=dict(dict({'hostname':host,'info':info}).items())
    if cmd_info['info']:
        backup_info.append(cmd_info)

for host in host_list:
    agent=threading.Thread(target=salt_get,args=(host,))
    agent.setDaemon(True)
    agent.start()
agent.join()
time.sleep(60)
```
    #定义邮件html
    html = u"""
    <style type="text/css">
    table.gridtable {
        font-family: verdana,arial,sans-serif;
        font-size:15px;
        color:#333333;
        border-width: 1px;
        border-color: #666666;
        border-collapse: collapse;
    }
    table.gridtable th {
        border-width: 1px;
        padding: 12px;
        border-style: solid;
        border-color: #666666;
        background-color: #dedede;
    }
    table.gridtable td {
        border-width: 1px;
        padding: 12px;
        border-style: solid;
        border-color: #666666;
        background-color: #ffffff;
    }
    </style>
    <div>
    <table class="gridtable">
    <tr><th>主机名</th> <th>改动的文件</th>
    <tr>
        """
    backup_info.sort()
    for i in backup_info:
            html = html + u"""
            <tr>
            <td>%s</td>  <td>%s</td>
        </tr>
            """%(i['hostname'],i['info'])
    html+=u"""
    </table>
    </div>
    """
    for i in to_list:
        if backup_info:
            send_mail(i,title,html)
        else:
            send_mail(i,title,'当天没有核心文件更改')

修改脚本发件人配置,收件人列表to_list,主机列表host_list

添加计划任务:

45 23 * * * /bin/python /data/bin/files_testing.py

转载于:https://blog.51cto.com/11889458/2107280

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
了解AIDE(3课) 本来以前做PyS60教程是没有介绍开发工具这一节的,由于AIDE专业名词很多,且无可用汉化版(其实汉化版在论坛上是有的,但汉化组们汉化的AIDE由于破坏了软件原有的签名,虽然安装之后可以打开,但写的程序无法run运行,这个大家可以去试试。。) 这里,我开始向大家介绍AIDE的使用和功能,有些截图是截的汉化版的,方便大家对照。 进入主界面如下图: 有的手机第一次打开AIDE时会提示新建一个android项目,可以点不。如上图,点击电脑图标后,会弹出出AIDE的工作区,如下图: 默认工作区弹出的内容是AIDE的项目文件管理器,值得一提是AIDE的项目文件管理器的默认文件目录是在sd卡下的AppProjects目录下的,新建安卓项目最好新建在这个目录下。 工作区里的内容或者说功能可以通过手机菜单键>More(更多)进行切换,More(更多)的内容如下图: 为了防止AIDE以后有更多功能,图片不好对照。下面我给出常用的英文翻译对照: 1、主菜单 Files-->文件夹 GoTo-->跳转 Forward-->前进 Save-->保存 Run-->运行 More-->更多 . 2、More(更多) Go Premium!-->无用的,不管 Show Errors -->显示错误 Show Search Results-->显示搜索结果 Show LogCat-->显示LogCat Show File Location-->显示文件位置 Show Open Files-->显示打开的文件夹 Search in Files-->在文件中搜索 GoTo Class-->跳转到类 GoTo Line-->跳转到行 Export APK-->导出APK Refresh Build-->刷新工程 Refresh Code Analysis-->刷新代码分析 Close Project-->关闭工程 Community-->社区(跳转网页)SDK Help-->社区(跳转到android官方开发帮助) Settings-->设置 Exit-->退出 . 我希望大家在编写第一程序之前先好好的了解一下的我们的开发工具AIDE,还好很多没翻译到的地方可以自己摸索一下,好了,这一节就到这里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值