背景:公司的審計日志經常出現不記錄命令的情況,但是又無法監控到審計功能是否正常。所以我們思路是,每天從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 | #!/usr/bin/env?python2.7 import ?commands,requests,json #host_ip?=?'10.47.102.185' url?=? 'http://10.47.102.185/api/ecs' r?=?requests.get(url) ecss?=?json.loads(r.text) for ?I? in ?ecss: ???? host_ip?=?I.get( 'ip' ) #????if?host_ip?!=?'10.174.107.151': ???? status,result?=?commands.getstatusoutput( 'ssh?-o?ConnectTimeout=3?-o?StrictHostKeyChecking=no?root@{0}?"echo?\"audit?check\""' . format (host_ip)) ???? if ?status?==?0: ???????? print? '{0}?check?success' . format (host_ip) ???? else : ???????? print? '{0}?check?failed' . format (host_ip) |
ConnectTimeout=3 ? 表示超時時間為3秒
1 | StrictHostKeyChecking |
首次 ssh 登陸時提示確認 yes/no,確認 yes 后會把遠程節點加入到本地的 ~/.ssh/known_hosts 中,下次再連接同一節點則不再提示。為了省事不確認,可以使用如下參數登陸
? ??ssh -o StrictHostKeyChecking=no ?...
這樣便不再確認且自動把遠程主機的信息添加到 ~/.ssh/known_hosts 中。
創建每天定時任務:
1 | 10?1?*?*?*?root? /usr/bin/python2 .7? /srv/script/audit_check .py |
Trigger:
1 | {Template?OS?Linux:vfs. file .cksum[ /var/log/userlog .info]. diff (0)}=0
|
本文轉自 曾哥最愛 51CTO博客,原文鏈接:http://blog.51cto.com/zengestudy/1835652,如需轉載請自行聯系原作者