1. 程式人生 > >Python與系統安全

Python與系統安全

一、概要

   資訊保安是運維的根本,直接關係到企業的安危,稍有不慎會造成災難性的後果。本文主要講述如何通過Python來實現系統級的安全防範策略,包括構建集中式的病毒掃描機制、埠安全掃描、安全密碼生成等。

二、構建集中式病毒掃描機制

  Clam AntiVirus(ClamAV)是一款免費而且開放原始碼的防毒軟體,軟體與病毒庫的更新皆由社群免費釋出,官網地址 https://www.clamav.net/。目前ClamAV主要為Linux、Unix系統提供病毒掃描、查殺等服務。pyClamad(https://xael.org/pages/pyclamd-en.html)是一個Python第三方模組,可讓Python直接使用ClamAV病毒掃描守護程序clamd,來實現一個高效的病毒檢測功能,另外,PyClamad模組也非常容易整合到我們已有的平臺當中。

PyClamad模組安裝方法

mac os 與CentOS 6.8 安裝pyClamd模組

[[email protected] ~]# pip3 install pyclamd
Collecting pyclamd
  Downloading https://files.pythonhosted.org/packages/13/73/97a0518b59f1b6aefa2ac851566038d2c9128f8a5503bcf4cd0adf8b0072/pyClamd-0.4.0.tar.gz
Installing collected packages: pyclamd
  Running setup.py install 
for pyclamd ... done Successfully installed pyclamd-0.4.0

客戶端(病毒掃描源)安裝步驟

Centos 6.9安裝clamd

[[email protected] tmp]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[[email protected] tmp]# yum -y install clamav clamd clamav-update     #安裝clamavp相關程式包
[[email protected]
tmp]# chkconfig
--levels 235 clamd on #新增掃描守護程序clamd系統服務 [[email protected] tmp]# /usr/bin/freshclam #更新病毒庫,建議配置到crontab中定期更新 [[email protected] tmp]# setenforce 0 #臨時關閉SELinux,避免遠端掃描時提示無許可權的問題,永久關閉selinux修改/etc/selinux/config配置SELINUX=enforcing修改為SELINUX=disabled [[email protected] tmp]# getenforce #檢視selinux狀態 Disabled #更新守護程序監聽IP配置檔案,根據不同環境自行修改監聽的IP,'0.0.0.0'為監聽所有主機IP [[email protected] tmp]# grep "TCPAddr 127.0.0.1" /etc/clamd.conf TCPAddr 127.0.0.1 [[email protected] tmp]# sed -i -e '/^TCPAddr/{ s/127.0.0.1/0.0.0.0/; }' /etc/clamd.conf [[email protected] tmp]# grep "TCPAddr 127.0.0.1" /etc/clamd.conf [[email protected] tmp]# grep "TCPAddr" /etc/clamd.conf TCPAddr 0.0.0.0 [[email protected] tmp]# /etc/init.d/clamd start #啟動掃描守護程序;停止服務/etc/init.d/clamd stop Starting Clam AntiVirus Daemon: [ OK ]

主控端部署PyClamd環境步驟

模組常用方法說明

    PyClamd提供了兩個關鍵類,一個為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為連線超時時間。
contscan_file(self,file)方法,實現掃描指定的檔案或目錄,在掃描時發生錯誤或發現病毒經不終止,引數file(string型別)為指定的檔案或目錄的絕對路徑。
multiscan_file(self,file)方法,實現多執行緒掃描指定的檔案或目錄,多核環境速度更快,在掃描時發生錯誤或發現病毒將不終止,引數file(string型別)為指定的檔案或目錄的絕對路徑。
scan_file(self,file)方法,實現掃描指定的檔案或目錄,在掃描時發生錯誤或發生病毒將終止,引數file(string型別)為指定的檔案或目錄的絕對路徑。
shutdown(slef)方法,實現強制關閉clamd程序並退出。
stats(self)方法,獲取Clamscan的當前狀態。
reload(self)方法,強制過載clamd病毒特徵庫,掃描當前建議做reload操作。
EIRAR(self)方法,返回EICAR測試字串,即生成具有病毒特徵的字串,便於測試。

實現集中時的病毒掃描 

三、實現高效的埠掃描器

   python-nmap模組作為nmap命令的Python封裝,可以上Python很方便地操作nmap掃描器,它可以幫助管理員完成自動掃描任務和生成報告。

mac os 與CentOS 6.9 安裝python-nmap模組

pip3 install python-nmap

模組常用方法說明

實現高效的埠掃描