摘要: 石油石化行業地區公司普遍存在物理位置分散的特點,傳統人工運維方式面臨效率低下、重復勞動等問題。現有運維方案主要針對Linux服務器設計,在適配信創服務器時存在兼容性不足的缺陷。為此,該文提出基于Python的信創服務器自動化運維方案,通過paramiko實現遠程連接,對賬戶口令、遠程管理、日志審計及時間同步策略進行自動化巡檢與安全加固。實驗表明,該方案針對性顯著,在提升信創服務器運維效率的同時有效增強了系統安全性。
關鍵詞:信創服務器;麒麟操作系統;python;網絡安全;基線檢查
中圖分類號:TP311.56" " " " 文獻標識碼:A
文章編號:1009-3044(2025)21-0070-04
開放科學(資源服務) 標識碼(OSID)
0 引言
當今數字化時代,網絡攻擊事件層出不窮。為實現信息技術領域的自主可控,保障國家信息安全,國資委 79 號文件明確要求,到 2027 年央企國企須100%完成信創替代[1]。這意味著信創產業將從“關鍵環節、部分市場”走向“全產業鏈、全行業”,全面構建國產自主的 IT 標準與服務生態。
當前,企業 Linux 集群規模日益擴大,部署方式涵蓋本地部署、云部署或混合部署等。然而,傳統的人工運維模式存在顯著弊端。當出現問題時,工程師需要親赴各個數據機房進行處理,這種被動應對問題的方式,無法實現主動維護的目標,而且工作效率低下,難以滿足日益增長的業務需求。此外,為切實保障網絡安全,防護作為網絡安全的首道防線,其重要性不言而喻[2]。防護工作涉及對計算機系統和網絡進行配置以防止攻擊,它要求正確配置計算機系統和網絡,以抵御攻擊。僅通過邊界防火墻是不夠的,這就要求我們必須加強主機安全加固措施,主要包括設置密碼復雜度策略、限制密碼嘗試次數、限制 root 用戶直接登錄、限制 IP 訪問、最小化端口開放等[3]。
目前,國外知名合規檢查軟件主要有 Tenable 和 OpenSCAP。其中,Tenable 遵循 PCI 11.2.2 要求,定期運行掃描、進行問題整改并輸出合規掃描報告。開源軟件 OpenSCAP 通過讀取 SCAP(Security Content Automation Protocol,SCAP) 安全策略來檢查操作系統是否合規,主要為 Linux 提供安全合規檢查和漏洞評估。
在國內研究中,周利榮[4]提出采用 Python 語言解決服務器常見問題,但未說明具體服務器安全項目。李沁蔓[5]提出將 Ansible 框架與數組抽取方法相結合,自動生成并修改密碼,但該方法僅單一提高了服務器的賬戶口令策略。姚娜[6]提出基于 Django 的 Web 界面自動化運維,進行服務器資產信息收集和批量文件分發,但未提出針對服務器的安全檢查方法。此外,國內廠商阿里云安全中心的基線檢查功能可以對服務器的操作系統、數據庫、軟件和容器的配置進行安全檢測,并提供檢測結果說明和加固建議。基線檢查功能可以幫助用戶進行系統安全加固,降低入侵風險并滿足安全合規要求。針對第三方資產接入,需要手動安裝 agent,且檢測標準為阿里云標準,與石化標準有一定差異。青藤萬相通過 agent 白盒發現機制,一鍵自動化進行檢測,支持等保,檢查結果以可視化形式顯示,用戶可根據類別提供的修復建議進行修復,以滿足企業監管要求。對于信創服務器,目前只有等保三級合規檢查,具有一定的局限性。
考慮到目前企業需要大規模更換信創服務器,結合石油石化行業特點,提出相應的檢查與加固方法。
1 自動化運維
1.1 Python
本文以麒麟 V10SP3 服務器為例進行研究[7]。信創服務器默認自帶 Python 2.7.5 與 Python 3.8.5,如圖 1 所示。因此,利用該特性結合 Anaconda Python 3.7 運維組件庫,對信創服務器進行自動化運維檢查。為方便函數庫使用,通過 Anaconda 安裝 Python 3.7,并下載 paramiko 2.7.1 與 fabric3 函數庫。
1.2 賬戶與口令安全
為了方便記憶,企業中很多用戶會將口令設置為極為簡單的純數字或純字母組合。這種弱口令是典型的網絡與信息安全問題,會引起信息泄露、非法訪問、權限盜取等嚴重后果[8]。為杜絕此類問題,需要強制設置復雜密碼。
(1) 是否存在無用賬號
通過命令:
stdin, stdout, stderr = ssh.exec_command('cat /etc/passwd | grep -v /sbin/nologin | cut -d: -f 1')
print(stdout.read().decode())
可以查找當前服務器有登錄權限的賬號,如圖2所示。
該服務器可以登錄5個賬號,針對這5個可以登錄的賬號,需要核實使用人員和使用目的,做好權限最小化。
(2) 口令定期變更
通過命令
stdin, stdout, stderr = ssh.exec_command('cat /etc/login.defs | grep PASS_MAX_DAYS')
print(stdout.read().decode())
查看口令定期更新時間。根據等保二級要求,口令有效期為 180 天,如圖 3 所示。
(3) 密碼復雜度
麒麟服務器與CentOS服務器在密碼復雜度檢查方面的主要區別在于:麒麟服務器已默認配置高優先級的password-auth文件,管理員只需檢查pwquality.conf文件中的密碼最小長度和復雜度設置即可。對于等保二級服務器,密碼策略要求:1) 最小長度8個字符;2) 必須包含數字、大小寫字母和特殊符號(dcredit、ucredit、lcredit、ocredit四個參數中至少有三個需設置為-1) 。使用以下命令:
stdin, stdout, stderr = ssh.exec_command('cat /etc/security/pwquality.conf')
print(stdout.read().decode())
(4) 登錄失敗鎖定
檢查賬戶登錄失敗鎖定策略,根據等保二級要求,需要賬戶符合,連續登錄失敗次數小于等于5次,鎖定時間大于等于10分鐘。
檢查命令如下:
stdin, stdout, stderr = ssh.exec_command('cat /etc/pam.d/system-auth')
print(stdout.read().decode())
stdin, stdout, stderr = ssh.exec_command('cat /etc/pam.d/password-auth')
print(stdout.read().decode())
1.3 遠程管理安全
通過相關設定,控制外網對內網的訪問。比如發生重大網絡安全事件時,可以對外部網絡進行有效的屏蔽,防止其進行訪問,起到良好的保護作用[9]。
(1) 是否開啟非加密遠程管理
由于 telnet 與 http 為明文傳輸且該協議古老,安全漏洞多,因此該項服務應禁用。使用以下命令檢查 telnet 禁用情況:
stdin, stdout, stderr = ssh.exec_command('systemctl status telnet.socket')
print(stdout.read().decode())
檢查 httpd 禁用情況:
stdin, stdout, stderr = ssh.exec_command('systemctl status httpd')
print(stdout.read().decode())
如圖6所示,telnet與http服務均已關停。
(2) 系統遠程管理的地址范圍進行限制
麒麟與 CentOS 對于 IP 地址限制有很大不同。CentOS 服務器只需在 hosts.allow 文件中填寫允許訪問該服務器的 IP 地址即可。麒麟服務器如允許 10.55.1.8 訪問本服務器,則需在 sshd_config 文件下增加
AllowUsers root@10.55.24.183(表示允許 10.55.24.183 這個IP通過 root 賬號登錄這臺服務器) ,如圖 7 所示。
stdin, stdout, stderr = ssh.exec_command('cat /etc/ssh/sshd_config')
print(stdout.read().decode())
(3) 檢查登錄超時時間設置情況,確認登錄超時時間設置是否大于 0,小于等于 30 分鐘。
通過以下命令:
stdin, stdout, stderr = ssh.exec_command('cat /etc/bashrc | grep \"export TMOUT\"')
print(stdout.read().decode())
stdin, stdout, stderr = ssh.exec_command('cat /etc/profile | grep \"export TMOUT\"')
print(stdout.read().decode())
如圖 8 所示,檢查 TMOUT 是否根據等保二級要求設置為 600。
1.4 系統日志審計
服務器運行時會產生大量日志,這些日志客觀地記錄網絡和系統中的各類事件。因此,日志數據對于網絡安全事件起著重要作用[10]。審計日志配置策略如圖9所示。
(1) 審計日志策略配置
通過以下命令:
stdin, stdout, stderr = ssh.exec_command('cat /etc/audit/auditd.conf')
print(stdout.read().decode())
檢查審計策略是否配置,其中 conf 文件需要包含以下內容:
max_log_file = 8:審計日志文件的最大大小為 8MB
num_logs = 5:當進行日志文件輪換操作時,最多保留 5 個舊的審計日志文件
priority_boost = 4:優先級
disp_qos = lossy:允許在某些情況下丟失審計事件,這樣做是為了保持系統的響應性能
dispatcher = /sbin/audispd:程序將負責將審計事件進行分發處理
(2) 服務器日志轉發
通常日志轉發使用對應日志廠商的日志轉發 agent 或者服務器自帶 rsyslog 模塊。信創服務器通過 rsyslog 配置日志轉發是在 rsyslog.conf 文件的最下面寫入 *.* @ x.x.x.x:514,并啟用 rsyslog 服務。
通過以下命令:
stdin, stdout, stderr = ssh.exec_command('systemctl status rsyslog')
print(stdout.read().decode())
stdin, stdout, stderr = ssh.exec_command('cat /etc/rsyslog.conf')
print(stdout.read().decode())
如圖10所示,該服務器配置了日志主機10.55.*.*(日志主機IP地址) ,系統采用SYSLOG的方式,通過UDP514端口,實時向日志備份主機發送全部類型的日志。
1.5 時間同步
為避免因日志時間混亂造成事件分析困難,且防止攻擊者通過修改時間來欺騙系統,需要對服務器進行時間同步檢查,檢查服務器是否與北斗時間進行同步。檢查命令如下:
stdin, stdout, stderr = ssh.exec_command('cat /etc/chrony.conf')
print(stdout.read().decode())
2 結束語
本文梳理總結了信創服務器的基線標準,并深入剖析當前石油石化行業所面臨的運維挑戰。該行業地區分公司眾多,且物理位置分散,導致響應時間較長,同時運維人員專業水平參差不齊。針對這些問題,本文提出了基于 Python 的信創服務器自動化運維方案。通過賬戶口令、遠程管理、系統日志審計、時間同步、系統防病毒5個方面的探討分析,總結了安全加固的方法,減少系統存在的安全漏洞和安全風險,提高網絡安全運維人員處置網絡漏洞的能力,增強石油石化行業網絡的安全防護能力。
參考文獻:
[1] 國務院國有資產監督管理委員會.關于開展對標世界一流企業價值創造行動的通知 [EB/OL].( 2023-04-27)[ 2025-01-10].http://www.sasac.gov.cn/n2588020/n2588072/n2591064/ n2591066/c27783654/content.html?eqid=90ac9ba4000105dd00000006648a734a.
[2] VARUN C P, AGARWAL R. Automation of server security assessment[C]//2022 4th International Conference on Circuits, Control, Communication and Computing (I4C). Piscataway: IEEE, 2022: 515-518.
[3] AROGUNDADE O R.Network security concepts, dangers, and defense best practical[J].Computer Engineering and Intelligent Systems,2023,14(2):25-38.
[4] 周利榮.基于Python的服務器自動化運維系統設計[J].電腦編程技巧與維護,2022(5):65-68.
[5] 李沁蔓.基于Ansible的服務器自動化運維技術研究與實現[J].電子設計工程,2020,28(13): 56-60.
[6] 姚娜.基于Django的自動化運維管理系統的設計與實現[D].西安:西安電子科技大學,2015.
[7] 陽歲紅,于英濤,方鐳.基于信創環境的運維管理系統設計與實踐[J].電子技術與軟件工程,2022(8):248-252.
[8] 李昕炘.關于電力信息系統中弱口令整治的研究[J].信息記錄材料,2019,20(11):72-73.
[9] 李大勇.操作系統防火墻白名單技術的應用[J].信息系統工程,2019(1):108-110.
[10] 李勛章.網絡日志監控及安全審計系統的設計與實現[D].成都:電子科技大學,2012.
【通聯編輯:代影】