Python自动化与系统安全

news2024/11/15 9:22:44

        信息安全是运维的根本,直接关系到企业的安危,稍有不慎会造成灾难性的后果。比如经年发生的多个知名网站会员数据库外泄事件,信息安全体系建设已经被提到了前所未有的高度。如何提升企业的安全防范水准是目前普遍面临的问题,主要有,安全设备防护、提高人员安全意识、实施系统平台安全加固、安全规范融合到ITIL体系、关注安全设备防护、提高人员安全意识、实施系统平台安全加固、安全规范融合到ITIL体系、关注最新安全发展动向,通过上述几个方面可以在很大程度上避免出现安全事故。

        通过Python来实现系统级的安全防范策略,包括构建集中式的病毒扫描机制端口安全扫描安全密码生成

1.构建集中式的病毒扫描机制

        Clam AntiVirus(ClamAV)是免费而且开放源代码的防毒软件,软件与病毒码的更新皆由社群免费发布。目前ClamAV主要是使用在由Linux、FreeBSD等Unix-like系统架设的邮件服务器上,提供电子邮件的病毒扫描服务。ClamAV本身是在文字接口下运作,但也有许多图形接口的前端工具可用,另外由于其开放源代码的特性,在Windows与Mac OS X平台都有其移植版。

官网地址:http://www.clamav.net/lang/en/

        pyClamad是一个Python第三方模块,可让Python直接使用ClamAV病毒扫描守护进程clamd,来实现一个高效的病毒检测功能

pyClamad模块安装方法如下

1、客户端(病毒扫描源)安装步骤

# yum -y install clamav clamd clamav-update      #安装clamavp相关程序包

# chkconfig --levels 235 clamd on   # 添加扫描守护进程clamd系统服务

#  /usr/bin/freshclam      # 更新病毒库,建议配置到crontab中定时更新

#  setenforce 0  # 关闭SELinux,避免远程扫描时提示无权限的问替

# 更新守护进程监听IP配置文件,根据不同环境自行修改监听的IP,“0.0.0.0”为监听所有主机IP

# sed -i -e '/^TCPADDr/{ s/127.0.0.1/0.0.0.0/;}'   /etc/clamd.conf

# /etc/init.d/clamd start  # 启动扫描守护进程

# 2、主控端部署pyClamad 环境步骤

# wget http://xael.org/norman/python/pyclamd/pyClamd-0.3.4.tar.gz

# tar -xzvf pyClamd-0.3.4.tar.gz

# python setup.py install

 

2.模块常用方法说明

pyClamad提供了两个关键嘞,一个为ClamdNetworkSocket()类,实现使用网络套接字操作clamd;另一个为ClamdUnixSocket()类,实现使用Unix套接字操作clamd。两个类定义的方法完全一样。

ClamdNetworkSocket()类

  • __init__(self,host='127.0.0.1',port=3310,timeout=None)方法,是ClamdNetworkSocket类的初始方法,参数host为连接主机IP;参数port为连接的端口,默认为3310,与/etc/clamd.conf配置文件中的TCPSocket参数要保持一致;timeout为连接的超时时间。
  • contcan_file(self,file)方法,实现扫描指定的文件或目录,在扫描时发生错误或发现病毒将不终止,参数file(string类型)为指定的文件或目录的绝对路径
  • multiscan_file(self,,file)方法,实现多线程扫描指定的文件或目录,多核环境速度更快,在扫描时发生错误或发现病毒将不终止,参数file(string类型)为指定的文件或目录的绝对路径
  • scan_file(self,file)方法,实现扫描指定的文件或目录,在扫描时发生错误或发现病毒将终止,参数file(string类型)为指定的文件或目录的绝对路径
  • shutdown(self)方法,实现强制关闭clamd进程并退出
  • stats(self)方法,获取Clamscan的当前状态
  • reload(self)方法,强制重载clamd病毒特征库,扫描前建议做reload操作
  • EICAR(self)方法,返回EICAR测试字符串,即生成具有病毒特征的字符串,便于测试

 

3.实践

实现一个集中式的病毒扫描管理,针对不同环境定制扫描策略,比如扫描对象、描述模式、扫描路径、调度评率等

1.首先对apt-get进行更新,执行下面的代码:

sudo apt-get update
sudo apt-get upgrade -y


2.之后安装clamav:这一步可能会出错,ubuntu会提示你重新执行一下上面的update方法,我试了一下,重新执行update之后再重新执行下面的命令就能成功执行了。

sudo apt-get install clamav clamav-daemon -y


3.更新病毒库:这一部分可能会报错,

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

sudo freshclam

如果要停止守护程序并手动运行它:

sudo systemctl stop clamav-freshclam.service

手动运行它:

sudo freshclam

4.clamav安装成功之后,可以对它进行测试,执行下面的代码对home文件夹下的文件进行病毒查杀,不出错表示正常执行啦:

sudo clamscan -r /home


5.如果需要自动执行病毒查杀功能,需要执行下面的命令。第一行是启动clamav服务,这一个命令是你如果按章pyclamd调用clamav时必须要提前执行的方法。第二行命令是自动更新病毒库的。到这里,clamav的安装就结束了,撒花撒花~

sudo /etc/init.d/clamav-daemon start

sudo /etc/init.d/clamav-freshclam start


6.安装pyclamd,直接用pip install pyclamd就行,如果是用python3的话就换成pip3执行。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import pyclamd
from 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.connstr=""
        self.scanresult=""

    def run(self):
        """多进程run方法"""
        try:
            cd = pyclamd.ClamdNetworkSocket(self.IP,22)
            if cd.ping():
                self.connstr = self.IP+" connection [ok]"
                cd.reload()  # 重载clamd病毒特征库,建议更新病毒库后做reload()操作
                if self.scan_type == "contscan_file":   #选择不同的扫描模式
                    self.scanresult = "{0}\n".format(cd.comtscan_file(self.file))
                elif self.scan_type == "multiscan_file":
                    self.scanresult = "{0}\n".format(cd.contscan_file(self.file))
                elif self.scan_type=="scan_file":
                    self.scanresult="{0}\n".format(cd.scan_file(self.file))
                time.sleep(1)   #线程挂起1秒
            else:
                self.connstr=self.IP+"ping error,exit"
                return
        except Exception as e:
            self.connstr=self.IP+""+str(e)
IPs = ['192.168.88.223']    #扫描主机列表
scantype = "multiscan_file"   # 指定扫描模式,支持multiscan_file、contscan_file\scan_file
scanfile = "/tmp"    # 指定扫描路径
i = 1

threadnum = 4 # 指定启动的线程数
scanlist = [] # 存储扫描Scan类线程对象列表

for ip in IPs:
    currp = Scan(ip,scantype,scanfile)  # 创建扫描Scan类对象,参数(IP,扫描模式,扫描路径)
    scanlist.append(currp)  # 追加对象到列表

    if  i%threadnum == 0 or i == len(IPs):      # 当达到指定的线程数或IP列表数后启动、退出线程
        for task in scanlist:
            task.join()    # 等待所有子线程退出,并输出扫描结果
            print(task.connstr)  # 打印服务器连接信息
            print(task.scanresult)  # 打印扫描结果
        scanlist = []
    i+=1   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter-实现悬浮分组列表

在本篇博客中,我们将介绍如何使用 Flutter 实现一个带有分组列表的应用程序。我们将通过 CustomScrollView 和 Sliver 组件来实现该功能。 需求 我们需要实现一个分组列表,分组包含固定的标题和若干个列表项。具体分组如下: 水果动物职业菜…

Java面试八股之MySQL主从复制机制简述

MySQL主从复制机制简述 MySQL的主从复制机制是一种数据复制方案,用于在多个服务器之间同步数据。此机制允许从一个服务器(主服务器)到一个或多个其他服务器(从服务器)进行数据的复制,从而增强数据冗余、提…

Spring cloud 中使用 OpenFeign:让 http 调用更优雅

注意:本文演示所使用的 Spring Cloud、Spring Cloud Alibaba 的版本分为为 2023.0.0 和 2023.0.1.0。不兼容的版本可能会导致配置不生效等问题。 1、什么是 OpenFeign Feign 是一个声明式的 Web service 客户端。 它使编写 Web service 客户端更加容易。只需使用 F…

maven-surefire-report-plugin插件生成测试报告

目录 官网 pom.xml配置 测试类 执行测试结果 修改测试类 pom文件更改配置maven-jxr-plugin xref xref-test ​Source Xref​ ​Test Source Xref​ 再此验证 有凭(有理)有据 官网 Maven Surefire Report Plugin – Showing Only Fail…

分享四种CAD图纸加密方法,防止盗图!

保护CAD图纸不受盗用和非法传播是设计行业中的一个重要课题,以下四种CAD图纸加密方法可以帮助防止图纸被未授权使用。 1.使用专业的加密软件(最安全的方法) 专门的加密软件,如安企神软件,可以提供更高级别的保护。它使…

EPICS数据库示例

本文目标是使用EPICS数据库示例帮助新手理解如何使用不同的示例。 1、使用seq和mbbo的简单选择器 这个简单示例展示了如何使用一个mbbo和一个seq来旋转哪个值将被设置到一个PV。 # 这个mbbo记录将选择将运行seq的哪段 record(mbbo, "CHOOSE") {field(VAL, "…

使用树莓派进行python开发,控制电机的参考资料

网站连接:https://www.cnblogs.com/kevenduan?page1 1、简洁的过程步骤, 2、有代码示例, 3、有注意事项,

AI实践与学习7_AI解场景Agent应用预研demo

前言 学习大模型Agent相关知识,使用llama_index实现python版的Agent demo,根据AI解题场景知识密集型任务特点,需要实现一个偏RAG的Agent WorkFlow,辅助AI解题。 使用Java结合Langchain4j支持的RAG流程一些优化点以及自定义图结构…

星网安全产品线成立 引领卫星互联网解决方案创新

2024年6月12日,盛邦安全(688651)成立星网安全产品线,这是公司宣布全面进入以场景化安全、网络空间地图和卫星互联网安全三大核心能力驱动的战略2.0时代业务落地的重要举措。 卫星互联网技术的快速发展,正将其塑造为全球…

MySQL 存储引擎事务

MySQL存储引擎&事务 一、MySQL 存储引擎1、怎么查看/添加“存储引擎”?2、常用存储引擎简介 二、MySQL 事务1、什么是事务?2、事务是怎么做到多条DML语句同时成功和同时失败的呢?3、事务四大特性 ACID4、四个隔离级别 一、MySQL 存储引擎…

如何下载jmeter旧版本

如何下载jmeter旧版本 推荐先用旧版本做好测试基本操作,因为高版本不适合做压力测试,需要证书,有点麻烦。 1.百度或直接打开jmeter官网:https://jmeter.apache.org/ 2.向下拖到Archives一栏,点击Apache Jmeter archi…

项目:简易Mybatis

目录 一、新建项目 二、新建模块 三、回顾JDBC 四、准备环境 五、使用dom4j解析xml文件 六、开始,编写Mapper解析API 1、自定义Resources类 2、定义Configuration类 3、定义MappedStatement类 4、定义XmlMapperBuilder类 5、更新一下UserMapper.xml和UserMapper接口 …

一文彻底带你搞懂什么是适配器模式!!

一文彻底带你搞懂什么是适配器模式!! 什么是适配器模式?适配器的两种实现方式适用情况代码示例背景类适配器对象适配器 IO流中的实际应用应用扩展 总结 什么是适配器模式? 适配器模式(Adapter Pattern)是作…

web自动化(六)unittest 四大组件实战(京东登录搜索加入购物车)

Unittest框架 Unittest框架:框架测试模块测试管理模块测试统计模块,python的内置模块 import unittest Unittest框架四大组件: 1、TestCase 测试用例 2.TestFixture 测试用例夹具 测试用例需要执行的前置和后置 3.TestSuite 测试套件 把需要执行的测试用例汇总在一…

什么是企业服务总线?它包含哪些技术组件?

我们每个人都会去医院,您描述下我们去医院的场景,然后引出这个挂号流程,通过挂号流程中的一个问题或者什么东西来吸引他的好奇心,这样呢?会比现在的预设场景好一些。我举个例子,人工智能怎么帮人看病。如果…

前端面试题23(css3)

关于CSS3的面试题,我们可以从多个维度来探讨,包括但不限于选择器、盒模型、布局技术、动画与过渡、响应式设计等。下面我会列举一些典型的CSS3面试问题,并尽可能提供详细的解答或示例代码。 1. CSS3中新增了哪些选择器? 答案: C…

【Java安装】windows10+JDK21+IDEA

文章目录 一、JDK安装1. 下载完成后按照自己需要的位置安装2. 配置环境变量2.1 JAVA_HOME变量2.2 PATH配置 3. 验证4. helloworld 二、IDEA安装三、IDEA-HelloWorld 一、JDK安装 JDK安装链接 1. 下载完成后按照自己需要的位置安装 2. 配置环境变量 2.1 JAVA_HOME变量 安装…

手机飞行模式是什么意思?3个方法教你如何开启

在现代生活中,手机已经成为我们日常生活中不可或缺的一部分。然而,有时我们需要暂时切断手机的通信功能,比如在飞机上、开会时或需要安静休息的时候。这时候,苹果手机上的“飞行模式”功能就派上了用场。 那么,手机飞…

【从零到一,如何搭建本地AI大模型】

摘要: 本文主要记录这一段时间对本地大模型搭建的心得。 作为一个资深程序员,在AI席卷全球的时候,深深感觉到了一丝危机感,不禁有一个想法不断在脑海闪现:我会不会真的哪一天被AI给取代了? 从哪入手 程序员出生的我,掌握了很多语言,从前端到数据库,再到运维,基本都…

uniapp-小程序获取用户位置

1. 需要在微信公众平台进行接口的申请。选择自己需要用的接口。 2. 在app.json文件中配置permission和requiredPrivateInfos。requiredPrivateInfos里面是你需要使用的接口。 3. 配置完成后,就可以使用了。 相关获取位置API的链接 4. 如果要获取当前位置到某一个指…