Python自動化與系統安全

? ? ? ? 信息安全是運維的根本,直接關系到企業的安危,稍有不慎會造成災難性的后果。比如經年發生的多個知名網站會員數據庫外泄事件,信息安全體系建設已經被提到了前所未有的高度。如何提升企業的安全防范水準是目前普遍面臨的問題,主要有,安全設備防護、提高人員安全意識、實施系統平臺安全加固、安全規范融合到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 Threadclass Scan(Thread):def __init__(self,IP,scan_type,file):"""構造方法,參數初始化"""Thread.__init__(self)self.IP = IPself.scan_type = scan_typeself.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"returnexcept 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 = 1threadnum = 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.pswp.cn/diannao/42952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42952.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Swagger的原理及應用詳解(四)

本系列文章簡介: 在當今快速發展的軟件開發領域,特別是隨著微服務架構和前后端分離開發模式的普及,API(Application Programming Interface,應用程序編程接口)的設計與管理變得愈發重要。一個清晰、準確且易于理解的API文檔不僅能夠提升開發效率,還能促進前后端開發者之…

Greenplum(一)【MPP 架構 數據類型】

1、Greenplum 入門 Greenplum 是基于 MPP 架構的一款分布式分析型數據庫,具備關系型數據庫的特點,因為它處理的是結構化的數據,同時具備大數據分布式的特點。 1.1、MPP 架構 MPP(Massively Parallel Processing)架構是…

從Java開發者到.NET Core初級工程師學習路線:目錄

C#語言基礎 1.1 C#語法概覽 1.2 變量和數據類型 1.3 運算符和表達式 1.4 控制流語句 1.5 方法和參數 1.6 類和對象 1.7 繼承和多態 1.8 接口和抽象類 1.9 委托和事件 1.10 泛型 1.11 LINQ (Language Integrated Query) 1.12 異步編程 (async/await) 1.13 異常處理 1.14 文件I/O…

IOC、DI<3> IServiceConllection 自定義IOC含屬性注入、多實現注入,方法注入

using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;namespace IOC.Common {public class ZenServiceCollection : IZenServiceCollection{// 記錄IOC注冊的抽象、實現private Di…

SpringSecurity初始化過程

SpringSecurity初始化過程 SpringSecurity一定是被Spring加載的&#xff1a; web.xml中通過ContextLoaderListener監聽器實現初始化 <!-- 初始化web容器--><!--設置配置文件的路徑--><context-param><param-name>contextConfigLocation</param-…

sql注入問題批量處理

問題&#xff1a;SQL注入修改&#xff0c;歷史代碼全是${};無法修改的比如表名&#xff0c;列名&#xff0c;動態排序之類的不改&#xff0c;其他的都要修改完成 背景&#xff1a;新公司第一個任務就是SQL注入的修改&#xff0c;歷史sql全部都是${},一個個調整不太合適只能批量…

機場的出租車問題折線圖

分析并可視化機場離場車輛數數據 本文將詳細介紹如何使用Python的正則表達式庫re和繪圖庫matplotlib對機場離場車輛數數據進行分析和可視化。以下是具體步驟和代碼實現。 數據資源&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1rU-PRhrVSXq-8YdR6obc6Q?pwd1234 提…

Android C++系列:Linux常用函數和工具

1. 時間函數 1.1 文件訪問時間 #include <sys/types.h> #include <utime.h> int utime (const char *name, const struct utimebuf *t); 返回:若成功則為 0,若出錯則為- 1如果times是一個空指針,則存取時間和修改時間兩者都設置為當前時間; 如果times是非空指針…

一個python文件實現openai 轉換請求轉換成 ollama

最近在微軟開源了GraphRAG,項目&#xff0c;是一個很棒的項目&#xff0c;本著研究學習的態度下載了該項目測試&#xff0c;發現目前只可以使用openai chat gpt,或azure open chat gpt,也就是說意味著資料要上傳到第三方網站處理&#xff0c;為了本地的ollama也可以使用特意開發…

輪播圖案例

丐版輪播圖 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title> 基礎輪播圖 banner 移入移出</t…

6000字以上論文參考:基于Java+SpringMvc+Vue技術的實驗室管理系統設計與實現

可參考&#xff1a;基于JavaSpringMvcVue技術的實驗室管理系統設計與實現&#xff08;6000字以上論文參考&#xff09;-CSDN博客 論文參考&#xff1a;

【python】字典、列表、集合綜合練習

1、練習1(字典) 字典dic,dic {‘k1’:‘v1’, ‘k2’: ‘v2’, ‘k3’: [11,22,33]} (1). 請循環輸出所有的key dic {"k1": "v1", "k2": "v2", "k3": [11, 22, 33]} for k in dic.keys():print(k)k1 k2 k3(2). 請循環輸…

2024 WAIC|第四范式胡時偉分享通往AGI之路:行業大模型匯聚成海

7月4日&#xff0c;2024世界人工智能大會&#xff08;WAIC&#xff09;正式開幕。此次大會圍繞核心技術、智能終端、應用賦能等板塊展開&#xff0c;展覽規模、參展企業數均達歷史最高。第四范式受邀參展&#xff0c;集中展示公司十年來在行業大模型產業應用方面的實踐。在當天…

【知網CNKI-注冊安全分析報告】

前言 由于網站注冊入口容易被黑客攻擊&#xff0c;存在如下安全問題&#xff1a; 暴力破解密碼&#xff0c;造成用戶信息泄露短信盜刷的安全問題&#xff0c;影響業務及導致用戶投訴帶來經濟損失&#xff0c;尤其是后付費客戶&#xff0c;風險巨大&#xff0c;造成虧損無底洞…

dockerfile里的copy只能使用相對路徑嗎?

在 Dockerfile 中&#xff0c;COPY 指令既可以使用相對路徑&#xff0c;也可以使用絕對路徑&#xff08;但絕對路徑的使用方式和上下文有關&#xff09;。不過&#xff0c;在實踐中&#xff0c;你通常會看到使用相對路徑&#xff0c;因為 Dockerfile 的構建上下文&#xff08;b…

NewspaceGPT帶你玩系列之【Song Maker】

目錄 注冊一個賬號&#xff0c;用qq郵箱&#xff0c;然后登錄選一個可用的Plus&#xff0c;不要選3.5探索GPT今天的主角是【Song Maker】翻譯一下用漢語吧我寫詞。你譜曲和其他伴奏&#xff0c;例子&#xff1a; 搖滾&#xff0c;憂傷&#xff0c;吉他&#xff0c;鼓&#xff0…

聊一聊Oracle的空間計算函數SDO_NN

網上對這個函數介紹的很少&#xff0c;對使用上也很模糊&#xff0c;我來補充一下&#xff0c;讓大家了解一下這個函數 from test1 y, test2 p where SDO_NN(p.geom,y.geom,sdo_num_res1, 0.5 )TRUE; 上面這個表達式的含義也就是說在test2中找到一個距離test1很近的&#x…

Android約束布局的概念與屬性(1)

目錄 1&#xff0e;相對定位約束2&#xff0e;居中和偏移約束 約束布局&#xff08;ConstraintLayout&#xff09;是當前Android Studio默認的布局方式&#xff0c;也是最靈活的一種布局方式。約束布局推薦使用所見即所得的模式進行布局&#xff0c;約束布局的大部分布局可以通…

超詳細的 Linux 環境下 Anaconda 安裝與使用教程

超詳細的 Linux 環境下 Anaconda 安裝與使用教程 前言 在數據科學和機器學習領域&#xff0c;Anaconda 是一個非常受歡迎的發行版&#xff0c;提供了許多常用的包和工具。本文將詳細介紹如何在 Linux 系統上安裝和配置 Anaconda 環境&#xff0c;并展示如何高效地使用它。 一…

CentOS7下安裝Doris

Doris簡介 Apache Doris 是一款基于 MPP 架構的高性能、實時的分析型數據庫&#xff0c;以高效、簡單、統一的特點被人們所熟知&#xff0c;僅需亞秒級響應時間即可返回海量數據下的查詢結果&#xff0c;不僅可以支持高并發的點查詢場景&#xff0c;也能支持高吞吐的復雜分析場…