背景:公司的審計日志經常出現不記錄指令的情況,但是又無法監控到審計功能是否正常。是以我們思路是,每天從CMDB伺服器 ssh登入到每一台主機。如果審計功能正常,則一定會在auditlog.info檔案中有登入的記錄。如果24小時内這個檔案沒有任何變化,則表明,該主機的audit功能異常,無法記錄日志了。
建立登入腳本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<code>#!/usr/bin/env python2.7</code>
<code>import</code> <code>commands,requests,json</code>
<code>#host_ip = '10.47.102.185'</code>
<code>url = </code><code>'http://10.47.102.185/api/ecs'</code>
<code>r = requests.get(url)</code>
<code>ecss = json.loads(r.text)</code>
<code>for</code> <code>I </code><code>in</code> <code>ecss:</code>
<code> </code><code>host_ip = I.get(</code><code>'ip'</code><code>)</code>
<code># if host_ip != '10.174.107.151':</code>
<code> </code><code>status,result = commands.getstatusoutput(</code><code>'ssh -o ConnectTimeout=3 -o StrictHostKeyChecking=no root@{0} "echo \"audit check\""'</code><code>.</code><code>format</code><code>(host_ip))</code>
<code> </code><code>if</code> <code>status == 0:</code>
<code> </code><code>print </code><code>'{0} check success'</code><code>.</code><code>format</code><code>(host_ip)</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print </code><code>'{0} check failed'</code><code>.</code><code>format</code><code>(host_ip)</code>
ConnectTimeout=3 表示逾時時間為3秒
<code>StrictHostKeyChecking</code>
首次 ssh 登陸時提示确認 yes/no,确認 yes 後會把遠端節點加入到本地的 ~/.ssh/known_hosts 中,下次再連接配接同一節點則不再提示。為了省事不确認,可以使用如下參數登陸
ssh -o StrictHostKeyChecking=no ...
這樣便不再确認且自動把遠端主機的資訊添加到 ~/.ssh/known_hosts 中。
建立每天定時任務:
<code>10 1 * * * root </code><code>/usr/bin/python2</code><code>.7 </code><code>/srv/script/audit_check</code><code>.py</code>
Trigger:
<code>{Template OS Linux:vfs.</code><code>file</code><code>.cksum[</code><code>/var/log/userlog</code><code>.info].</code><code>diff</code><code>(0)}=0</code>
<code></code>
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1835652,如需轉載請自行聯系原作者