Python與系統安全
阿新 • • 發佈:2018-12-30
一、概要
資訊保安是運維的根本,直接關係到企業的安危,稍有不慎會造成災難性的後果。本文主要講述如何通過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 installfor 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