python笔记系列:Python与系统安全-pyClamad
2018-03-26 13:53
190 查看
Python与系统安全Clam AntiVirus(ClamAV)免费而开源的防毒软件,主要针对Linux、UnixpyClamad Python第三方模块,可让python直接使用ClamAV病毒扫描守护进程,实现病毒检测
客户端安装:yum install -y clamav clamd clamav-update centos6.5上直接安装会报错,先执行下述语句:yum install epel-release -ychkconfig --levels 235 clamd on #添加扫描守护进程clamd系统服务/usr/bin/freshclam #更新病毒库,建议配置到crontab中定期更新setenforce 0 #关闭SELinux,避免远程扫描时提示无权限问题#更新守护进程监听IP配置文件,0.0.0.0为监听所有主机IPsed -i -e '/^TCPAddr/{ s/127.0.0.1/0.0.0.0/; }' /etc/clamd.conf/etc/init.d/clamd start #默认监听端口:3310
主控端部署pyClamadwget http://xael.org/norman/python/pyclamd/pyClamd-0.3.4.tar.gztar -zxvf pyClamd-0.3.4.tar.gzcd pyClamd-0.3.4python setup.py install
pyClamd提供了两个关键类ClamdNetworkSocket() 使用网络套接字操作clamdClamUnixSocket() 使用Unix套接字操作clamd__init__(self,host='127.0.0.1',port=3310,timeout=None) #port与/etc/clamd.conf中TCPSocket参数一致contscan_file(self.file) 扫描指定文件或目录,发生错误或发现病毒不终止,file为绝对路径multiscan_file(self,file) 多线程扫描,发生错误或发现病毒不终止scan_file(self,file) 扫描指定文件或目录,发生错误或发现病毒不终止shutdown(self) 强制关闭clamd并退出stats(self) 获取Clamscan当前状态reload(self) 强制重载clamd病毒库,扫描前建议执行EICAR(self) 返回EICAR测试字符串,即生成具有病毒库的字符串,便于测试
实践:实现集中式病毒扫描#!/usr/bin/env python# -*- coding: utf-8 -*-import timeimport pyclamdfrom threading import Thread
class Scan(Thread): def __init__ (self,IP,scan_type,file): """构造方法""" Thread.__init__(self) self.IP = IP self.scan_type=scan_type self.file = file self.connstr="" self.scanresult="" def run(self): """多进程run方法""" try: cd = pyclamd.ClamdNetworkSocket(self.IP,3310) #创建网络套接字连接对象 if cd.ping(): #测试连通性 self.connstr=self.IP+" connection [OK]" cd.reload() if self.scan_type=="contscan_file": #选择不同的扫描模式 self.scanresult="{0}\n".format(cd.contscan_file(self.file)) elif self.scan_type=="multiscan_file": self.scanresult="{0}\n".format(cd.multiscan_file(self.file)) elif self.scan_type=="scan_file": self.scanresult="{0}\n".format(cd.scan_file(self.file)) time.sleep(1) else: self.connstr=self.IP+" ping error,exit" return except Exception,e: self.connstr=self.IP+" "+str(e)IPs=['192.168.1.21','192.168.1.22'] #扫描主机列表scantype="multiscan_file" #指定扫描模式,可选:multiscan_file contscan_file scan_filescanfile="/data/www" #指定扫描路径i=1threadnum=2 #启动线程数scanlist = [] #存储扫描Scan类线程对象列表for ip in IPs: currp = Scan(ip,scantype,scanfile) #创建扫描Scan类对象 scanlist.append(currp) #追加对象到列表 if i%threadnum==0 or i==len(IPs): #达到指定线程数或IP列表数后启动、退出线程 for task in scanlist: task.start() #启动线程 for task in scanlist: task.join() #等待所有子线程退出,并输出扫描结果 print task.connstr #打印服务器连接信息 print task.scanresult #打印扫描结果 scanlist = [] i+=1
在已安装clamav的被控端安装pyclamd模块后,通过EICAR()方法生成一个带有病毒特征的文件/tmp/EICAR,代码如下: >>> import pyclamd >>> cd = pyclamd.ClamdNetworkSocket() >>> void = open('/tmp/EICAR','w').write(cd.EICAR())
客户端安装:yum install -y clamav clamd clamav-update centos6.5上直接安装会报错,先执行下述语句:yum install epel-release -ychkconfig --levels 235 clamd on #添加扫描守护进程clamd系统服务/usr/bin/freshclam #更新病毒库,建议配置到crontab中定期更新setenforce 0 #关闭SELinux,避免远程扫描时提示无权限问题#更新守护进程监听IP配置文件,0.0.0.0为监听所有主机IPsed -i -e '/^TCPAddr/{ s/127.0.0.1/0.0.0.0/; }' /etc/clamd.conf/etc/init.d/clamd start #默认监听端口:3310
主控端部署pyClamadwget http://xael.org/norman/python/pyclamd/pyClamd-0.3.4.tar.gztar -zxvf pyClamd-0.3.4.tar.gzcd pyClamd-0.3.4python setup.py install
pyClamd提供了两个关键类ClamdNetworkSocket() 使用网络套接字操作clamdClamUnixSocket() 使用Unix套接字操作clamd__init__(self,host='127.0.0.1',port=3310,timeout=None) #port与/etc/clamd.conf中TCPSocket参数一致contscan_file(self.file) 扫描指定文件或目录,发生错误或发现病毒不终止,file为绝对路径multiscan_file(self,file) 多线程扫描,发生错误或发现病毒不终止scan_file(self,file) 扫描指定文件或目录,发生错误或发现病毒不终止shutdown(self) 强制关闭clamd并退出stats(self) 获取Clamscan当前状态reload(self) 强制重载clamd病毒库,扫描前建议执行EICAR(self) 返回EICAR测试字符串,即生成具有病毒库的字符串,便于测试
实践:实现集中式病毒扫描#!/usr/bin/env python# -*- coding: utf-8 -*-import timeimport pyclamdfrom threading import Thread
class Scan(Thread): def __init__ (self,IP,scan_type,file): """构造方法""" Thread.__init__(self) self.IP = IP self.scan_type=scan_type self.file = file self.connstr="" self.scanresult="" def run(self): """多进程run方法""" try: cd = pyclamd.ClamdNetworkSocket(self.IP,3310) #创建网络套接字连接对象 if cd.ping(): #测试连通性 self.connstr=self.IP+" connection [OK]" cd.reload() if self.scan_type=="contscan_file": #选择不同的扫描模式 self.scanresult="{0}\n".format(cd.contscan_file(self.file)) elif self.scan_type=="multiscan_file": self.scanresult="{0}\n".format(cd.multiscan_file(self.file)) elif self.scan_type=="scan_file": self.scanresult="{0}\n".format(cd.scan_file(self.file)) time.sleep(1) else: self.connstr=self.IP+" ping error,exit" return except Exception,e: self.connstr=self.IP+" "+str(e)IPs=['192.168.1.21','192.168.1.22'] #扫描主机列表scantype="multiscan_file" #指定扫描模式,可选:multiscan_file contscan_file scan_filescanfile="/data/www" #指定扫描路径i=1threadnum=2 #启动线程数scanlist = [] #存储扫描Scan类线程对象列表for ip in IPs: currp = Scan(ip,scantype,scanfile) #创建扫描Scan类对象 scanlist.append(currp) #追加对象到列表 if i%threadnum==0 or i==len(IPs): #达到指定线程数或IP列表数后启动、退出线程 for task in scanlist: task.start() #启动线程 for task in scanlist: task.join() #等待所有子线程退出,并输出扫描结果 print task.connstr #打印服务器连接信息 print task.scanresult #打印扫描结果 scanlist = [] i+=1
在已安装clamav的被控端安装pyclamd模块后,通过EICAR()方法生成一个带有病毒特征的文件/tmp/EICAR,代码如下: >>> import pyclamd >>> cd = pyclamd.ClamdNetworkSocket() >>> void = open('/tmp/EICAR','w').write(cd.EICAR())
相关文章推荐
- 用python做量化投资系列之比特币---布林带突破系统
- python 制作图表 matplotlib - 千月的python linux 系统管理指南学习笔记(18)
- Sharepoin学习笔记—架构系列--Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)
- 一些关于Python的基础知识 - 千月的python linux 系统管理指南学习笔记(3)
- 解密系列(系统篇_PE结构详解笔记1)
- python笔记系列:IP地址处理模块IPy
- python 系统学习笔记(十二)---os os.path os.walk
- spark机器学习笔记:(三)用Spark Python构建推荐系统
- (原创)Python文件与文件系统系列(4)——文件描述字操作
- python 系统学习笔记(十)---类
- Python使用完美验证码识别系统笔记
- [原创]商城系统下单库存管控系列杂记(一)(并发安全和性能基础认识)
- python学习笔记系列----(四)模块
- python学习笔记9.1-系统交互接口
- 20125337——信息安全系统设计基础第五周学习笔记
- Java Security安全系列文档翻译笔记————PolicyFile
- 解密系列(系统篇_PE结构详解笔记2)
- python笔记系列:DNS处理模块dnspython
- 复习笔记--计算机系统安全
- 20155205 《信息安全系统设计基础》课程笔记