算機(jī)網(wǎng)絡(luò)安全威脅與安全防范措施:從邊界加固到入侵檢測實(shí)踐)
簡介這份PDF文檔圍繞常見計(jì)算機(jī)網(wǎng)絡(luò)安全威脅及安全防范措施展開內(nèi)容來自2017年《信息與電腦》期刊論文面向網(wǎng)絡(luò)技術(shù)初學(xué)者、計(jì)算機(jī)專業(yè)學(xué)生、網(wǎng)絡(luò)管理員及論文撰寫者幫助讀者快速梳理網(wǎng)絡(luò)安全防護(hù)的基礎(chǔ)框架提升日常辦公與學(xué)習(xí)中的安全意識(shí)。資源為1個(gè)PDF文件文件大小約699KB輕量便攜支持手機(jī)、平板、電腦等多端閱讀也可直接打印方便隨時(shí)查閱。文檔已有346人學(xué)習(xí)下載。文檔系統(tǒng)講解網(wǎng)絡(luò)安全概述與完整性、機(jī)密性、可用性等核心特征重點(diǎn)分析了計(jì)算機(jī)病毒、軟件漏洞與后門、木馬程序及黑客攻擊等常見威脅的成因、傳播途徑與危害表現(xiàn)并給出了運(yùn)用防火墻技術(shù)、部署網(wǎng)絡(luò)防病毒軟件、加強(qiáng)訪問控制等具體防范措施。通過閱讀讀者可以掌握常見網(wǎng)絡(luò)攻擊的原理與應(yīng)對思路獲得一份結(jié)構(gòu)清晰的論文參考文獻(xiàn)便于課程學(xué)習(xí)、安全培訓(xùn)或技術(shù)寫作時(shí)借鑒。1. 計(jì)算機(jī)網(wǎng)絡(luò)安全威脅的防御起點(diǎn)大多數(shù)安全事件背后并不是天才黑客的降維打擊而是未修補(bǔ)的已知漏洞、弱口令、暴露的遠(yuǎn)程服務(wù)和不嚴(yán)謹(jǐn)?shù)陌踩渲瞄L期躺在生產(chǎn)環(huán)境里。一個(gè)組織哪怕沒有高級威脅檢測平臺(tái)只要先把端口收斂、訪問控制、補(bǔ)丁周期和日志留存做完就能擋住大部分自動(dòng)化攻擊。這篇文章沿著“計(jì)算機(jī)網(wǎng)絡(luò)安全威脅”的典型形態(tài)展開再把“安全防范措施”拆解成邊界、主機(jī)、Web、檢測和驗(yàn)證五個(gè)層面給出可以直接抄到工單里的命令、參數(shù)和排錯(cuò)思路。適合負(fù)責(zé)服務(wù)器運(yùn)維、網(wǎng)絡(luò)管理、應(yīng)用上線的工程師也適合剛轉(zhuǎn)崗安全的新人內(nèi)容不會(huì)停留在名詞解釋層面。2. 常見計(jì)算機(jī)網(wǎng)絡(luò)安全威脅的分類與攻擊特征要建立防線先得知道敵人常用的路數(shù)。這里不按教科書式的“病毒、木馬、蠕蟲”分類而是從攻擊者的視角把威脅拆成四類惡意代碼、網(wǎng)絡(luò)層攻擊、身份與社會(huì)工程學(xué)、Web與內(nèi)網(wǎng)橫向移動(dòng)。每一類都有明顯的行為指紋識(shí)別這些指紋是配置防護(hù)規(guī)則的前提。2.1 惡意代碼勒索軟件、木馬與漏洞利用惡意代碼是歷史最久的威脅形態(tài)。勒索軟件通過郵件附件、滲透后的橫向復(fù)制、以及利用面向公網(wǎng)服務(wù)的漏洞進(jìn)入內(nèi)網(wǎng)。一旦加密重要數(shù)據(jù)恢復(fù)成本極高。木馬則更安靜主要目的是維持遠(yuǎn)程控制為后續(xù)竊取數(shù)據(jù)或參與挖礦等行為提供通道。這類威脅的共同特征是“需要有人先觸發(fā)”。要么是用戶點(diǎn)擊了帶宏的文檔要么是應(yīng)用存在未修補(bǔ)的CVE。因此惡意代碼的防范不能只靠殺毒軟件還要配合補(bǔ)丁管理、宏禁用和權(quán)限最小化。很多運(yùn)維認(rèn)為裝了EDR就一勞永逸實(shí)際上EDR的檢測特征只覆蓋已知樣本未知變種仍然依賴行為分析而行為分析需要日志和進(jìn)程基線支撐。2.2 網(wǎng)絡(luò)邊界攻擊DDoS、中間人與DNS劫持網(wǎng)絡(luò)層攻擊瞄準(zhǔn)的是“可達(dá)性”和“信任關(guān)系”。DDoS通過海量流量耗盡帶寬或連接表讓服務(wù)不可用。中間人攻擊則發(fā)生在數(shù)據(jù)鏈條的某個(gè)環(huán)節(jié)比如公共Wi-Fi下的HTTP明文流量被截獲后攻擊者可以直接修改響應(yīng)內(nèi)容甚至注入惡意腳本。DNS劫持更隱蔽用戶訪問的域名被解析到攻擊者控制的地址瀏覽器安全提醒往往被當(dāng)成誤報(bào)忽略。這些攻擊有一個(gè)共性它們利用的是協(xié)議自身的信任模型。HTTP不校驗(yàn)身份DNS查詢默認(rèn)信任遞歸服務(wù)器返回的結(jié)果TCP連接不驗(yàn)證業(yè)務(wù)層意圖。所以網(wǎng)絡(luò)層防范措施的核心是加密和校驗(yàn)——TLS、DNSSEC、證書校驗(yàn)不能省同時(shí)邊界設(shè)備上要有針對SYN Flood的限速和連接跟蹤規(guī)則。2.3 社會(huì)工程學(xué)與身份認(rèn)證突破社會(huì)工程學(xué)是繞過所有技術(shù)防線的捷徑。攻擊者通過釣魚郵件偽裝成系統(tǒng)通知誘導(dǎo)用戶輸入賬號密碼或者通過電話客服套取驗(yàn)證碼再配合弱口令字典完成一次撞庫登錄。很多單位內(nèi)網(wǎng)系統(tǒng)仍然依賴單因素密碼認(rèn)證一旦密碼在已泄露數(shù)據(jù)中暴露攻擊者就能光明正大地登錄。在這里安全防范措施的重點(diǎn)是身份層面的控制強(qiáng)制采用密鑰或證書認(rèn)證、敏感操作二次審批、登錄風(fēng)控檢測異地IP。密碼復(fù)雜度策略只能拖慢暴力破解真正有效的是對認(rèn)證失敗頻率做限制并在異常登錄時(shí)觸發(fā)告警。2.4 Web威脅與URL訪問阻斷的判定邏輯Web攻擊面是當(dāng)前最容易被利用的入口。SQL注入、XSS、文件上傳漏洞只要有一處先被攻下攻擊者就能把它當(dāng)成跳板向內(nèi)網(wǎng)移動(dòng)。普通用戶側(cè)的典型場景是訪問一個(gè)被掛馬的鏈接時(shí)安全網(wǎng)關(guān)直接出現(xiàn)“由于您訪問的URL有可能對網(wǎng)站造成安全威脅”的阻斷頁。這背后不是網(wǎng)關(guān)亂攔而是它通過URL信譽(yù)庫、內(nèi)容分類和動(dòng)態(tài)沙箱對目標(biāo)站點(diǎn)做了預(yù)檢。下面用一個(gè)簡單的Python腳本示意安全網(wǎng)關(guān)如何提取并判定可疑URL特征import re # 常見可疑URL特征短域名 數(shù)字IP 非常規(guī)端口 suspicious_patterns [ rhttps?://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}, rhttps?://[a-z0-9.-]\.(tk|ml|ga|cf), rhttps?://[^:]:\d{5,}, ] def check_url(url): # 逐個(gè)匹配特征命中則標(biāo)記為可疑 for pattern in suspicious_patterns: if re.search(pattern, url, re.IGNORECASE): return True return False url http://203.0.113.5:8080/login print(blocked if check_url(url) else allowed)這段腳本用三個(gè)正則意圖數(shù)字IP直接訪問、高風(fēng)險(xiǎn)的免費(fèi)頂級域名、非常規(guī)端口。實(shí)際生產(chǎn)環(huán)境中的判定要比這復(fù)雜得多但原理一致——先做特征匹配再交給情報(bào)庫確認(rèn)。安全網(wǎng)關(guān)的阻斷頁面并不是誤傷而是域名信譽(yù)評分低于閾值時(shí)才返回。威脅類型典型跡象常見突破口首選應(yīng)對手段惡意代碼文件加密進(jìn)程、高頻內(nèi)網(wǎng)掃描釣魚附件、未打補(bǔ)丁的應(yīng)用補(bǔ)丁管理、應(yīng)用白名單DDoS流量突增、連接表耗盡開放服務(wù)被反射放大流量清洗、SYN Proxy中間人頁面被注入腳本、證書告警HTTP明文、未校驗(yàn)證書TLS強(qiáng)制、證書固定社會(huì)工程學(xué)異常登錄IP、批量認(rèn)證失敗弱密碼、賬號復(fù)用多因素認(rèn)證、登錄限流Web攻擊請求參數(shù)帶特殊字符、異常上傳輸入校驗(yàn)缺失WAF、參數(shù)化查詢3. 安全防范措施落地從邊界收斂、主機(jī)加固到Web防護(hù)這一章進(jìn)入實(shí)際操作。安全防范措施不是買一臺(tái)防火墻就結(jié)束而是要在邊界設(shè)備、操作系統(tǒng)、應(yīng)用容器和業(yè)務(wù)代碼里分別設(shè)置防線。下面的步驟適用于大多數(shù)Linux服務(wù)器環(huán)境Windows Server 可以按等價(jià)的組策略和安全基線操作。3.1 用iptables為邊界機(jī)和業(yè)務(wù)主機(jī)構(gòu)建最小化訪問規(guī)則很多服務(wù)器的默認(rèn)防火墻規(guī)則是放行所有流量依賴云安全組或前端硬件防火墻這種做法在攻防演練中最先失分。建議直接在每一臺(tái)主機(jī)上寫一套iptables規(guī)則縮小暴露面。# 清除當(dāng)前規(guī)則避免舊規(guī)則疊加 iptables -F # 設(shè)置默認(rèn)策略入站丟棄出站放行 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允許本機(jī)回環(huán)和已建立連接 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 按需開放SSH、HTTPS、數(shù)據(jù)庫訪問源IP iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -s 0.0.0.0/0 -j ACCEPT # 日志記錄被丟棄的包便于排查 iptables -A INPUT -j LOG --log-prefix iptables-drop: 命令中-P INPUT DROP表示默認(rèn)拒絕所有入站連接這是“白名單”思路。-m conntrack允許回包和主動(dòng)出站連接的返回流量避免沒有規(guī)則可以轉(zhuǎn)發(fā)響應(yīng)包。開放22/443端口時(shí)如果不需要公網(wǎng)訪問應(yīng)該加-s限制源IP。注意不要把數(shù)據(jù)庫端口直接放入站放行正確做法是只允許應(yīng)用服務(wù)器網(wǎng)段訪問。需要持久化時(shí)用iptables-save /etc/iptables/rules.v4配netfilter-persistent服務(wù)。如果沒有保存規(guī)則會(huì)在重啟后失效這是一個(gè)常見的生產(chǎn)事故點(diǎn)。參數(shù)作用風(fēng)險(xiǎn)提示-A INPUT追加到入站鏈順序敏感放DROP前-s指定源IP/網(wǎng)段缺少時(shí)對所有公開--dport目標(biāo)端口配合-p tcp使用-j LOG記錄日志量大會(huì)撐滿磁盤3.2 SSH安全基線用密鑰登錄、禁用root直登并配置fail2banSSH是運(yùn)維入口也經(jīng)常是暴力破解的第一目標(biāo)。常見的加固手段有三項(xiàng)使用密鑰認(rèn)證、取消口令登錄、禁止root直接登錄。# 編輯 /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes MaxAuthTries 3 LoginGraceTime 30 # 改完必須測試再重啟sshd sshd -t systemctl reload sshdPermitRootLogin no關(guān)閉root直連強(qiáng)制通過普通用戶登錄后su切換這樣一切操作都會(huì)在審計(jì)日志里留下身份痕跡。PasswordAuthentication no關(guān)閉密碼認(rèn)證徹底斷掉弱口令暴破入口。MaxAuthTries 3限制單次連接的最大認(rèn)證嘗試次數(shù)能減緩字典攻擊。注意改admin前一定確認(rèn)自己的公鑰已寫入~/.ssh/authorized_keys并且保留一個(gè)臨時(shí)會(huì)話否則容易把自己鎖在門外。在上面基礎(chǔ)上裝一個(gè)fail2ban作為第二道防線apt install fail2ban cat /etc/fail2ban/jail.local EOF [sshd] enabled true port 22 filter sshd logpath /var/log/auth.log maxretry 5 bantime 3600 EOF systemctl enable fail2ban --nowfail2ban通過分析/var/log/auth.log里的認(rèn)證失敗記錄在maxretry次失敗后封禁源IP。bantime的單位是秒生產(chǎn)環(huán)境可以根據(jù)運(yùn)維窗口設(shè)置成600到86400之間的值。這里不需要把閾值設(shè)得太低否則誤封會(huì)干擾同事的正常使用。3.3 Nginx安全響應(yīng)頭、請求體限制與URL過濾配置Web服務(wù)是面向公網(wǎng)最直接的攻擊面。以Nginx為例在server塊中加入安全策略先攔住最基礎(chǔ)的探測。server { listen 443 ssl; # 安全響應(yīng)頭減少XSS和點(diǎn)擊劫持 add_header X-Content-Type-Options nosniff always; add_header X-Frame-Options SAMEORIGIN always; add_header Referrer-Policy strict-origin-when-cross-origin always; # 限制請求體大小防上傳漏洞 client_max_body_size 20m; # 僅允許GET/POST常用方法 if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; } # 拒絕帶SQL注入特征的參數(shù)請求 if ($args ~* (union|select|insert).*from) { return 403; } }add_header強(qiáng)制瀏覽器啟用安全行為nosniff防止MIME類型混淆SAMEORIGIN避免頁面被嵌入第三方iframe。client_max_body_size控制上傳體積能緩解上傳接口被用來存放惡意腳本的問題。if攔截不是最優(yōu)方案請求注入特征的判斷應(yīng)該交給WAF正則庫但作為第一道廉價(jià)過濾仍然有價(jià)值。對于由安全網(wǎng)關(guān)統(tǒng)一輸出的URL阻斷邏輯和Nginx的if規(guī)則思想一致先識(shí)別特征再拒絕。區(qū)別是網(wǎng)關(guān)可以維護(hù)不同信譽(yù)等級的URL分類業(yè)務(wù)系統(tǒng)內(nèi)部不適合做這種大而全的過濾成本高且容易誤傷正常鏈接。3.4 安全補(bǔ)丁與配置基線避免“帶病上線”的例行機(jī)制很多入侵是攻擊者針對已公開的CVE找未打補(bǔ)丁的服務(wù)器下手。應(yīng)對措施是把補(bǔ)丁更新寫入上線流程。# Ubuntu/Debian 檢查并更新 apt update apt list --upgradable # 生產(chǎn)環(huán)境先在測試機(jī)驗(yàn)證再批量升級安全補(bǔ)丁 apt-get install --only-upgrade libssl3 openssl不要在生產(chǎn)環(huán)境無條件執(zhí)行apt upgrade這會(huì)把內(nèi)核或依賴庫升級后導(dǎo)致業(yè)務(wù)不兼容。正確做法是用漏洞掃描器或CVE訂閱確定受影響包精準(zhǔn)升級。同時(shí)還要維護(hù)一份配置基線清單包括Sysctl網(wǎng)絡(luò)參數(shù)、文件權(quán)限、賬號權(quán)限等。用Git倉庫存基線文件每次上線后跑一遍diff漂移出報(bào)警。4. 檢測與響應(yīng)讓未知威脅在監(jiān)控中暴露防御措施做得再好也有失效的時(shí)刻。檢測的目標(biāo)是把“正在發(fā)生的攻擊”變成日志里可搜索的事件。這里推薦一套輕量可落地的組合rsyslog傳日志、ELK匯聚、Suricata做IDS、tcpdump應(yīng)急抓包。4.1 集中日志采集rsyslogELK的輕量級落地方案每臺(tái)服務(wù)器本地日志是割裂的攻擊者清理單機(jī)日志后很難還原痕跡。常見做法是讓rsyslog把認(rèn)證、sudo和應(yīng)用日志實(shí)時(shí)轉(zhuǎn)發(fā)到日志服務(wù)器。# 客戶端 /etc/rsyslog.d/security.conf *.* 10.10.1.20:514這行配置把所有日志發(fā)送到日志服務(wù)器的514端口注意表示UDP才是TCP。UDP速度快但會(huì)丟日志安全審計(jì)場景建議用TCP。在日志服務(wù)器上啟動(dòng)Elasticsearch、Logstash和KibanaLogstash配置里用grok解析sshd日志字段就能在Kibana里按來源IP、用戶名、認(rèn)證結(jié)果篩選暴破行為。ELK的搭建不算復(fù)雜但需要每臺(tái)客戶端指定不同的hostname否則索引里的事件來源會(huì)混在一起。日志源重要字段安全價(jià)值/var/log/auth.loguser, ip, result發(fā)現(xiàn)暴破和異常登錄/var/log/nginx/access.logrequest, status, ua識(shí)別掃描和注入嘗試/var/log/syslogprocess, message定位系統(tǒng)級異常4.2 入侵檢測Suricata規(guī)則與實(shí)時(shí)告警若無條件部署商業(yè)IDSSuricata是可靠的開源替代。它基于規(guī)則匹配網(wǎng)絡(luò)流量特征能識(shí)別掃描、漏洞利用和已知C2通信。# 安裝并更新檢測規(guī)則集 apt install suricata suricata-update # 在網(wǎng)卡上實(shí)時(shí)捕獲流量 suricata -i eth0 --set outputs.0.alert.console.enabledyes規(guī)則文件位于/etc/suricata/rules自定義一條規(guī)則檢測內(nèi)網(wǎng)橫向掃描alert tcp any any - 10.0.0.0/8 any (msg:GPL PORTSCAN detected; flags:S; threshold: type both, track by_src, count 20, seconds 10; sid:100001;)flags:S匹配只有SYN的TCP數(shù)據(jù)包這是端口掃描的明顯特征。threshold設(shè)定10秒內(nèi)同一源IP超過20個(gè)SYN包才告警能過濾掉正常連接。部署后要觀察告警容量太頻繁的規(guī)則會(huì)讓團(tuán)隊(duì)逐漸麻木可適當(dāng)調(diào)高threshold。4.3 流量與主機(jī)排查tcpdump、ss與進(jìn)程審計(jì)當(dāng)發(fā)現(xiàn)服務(wù)器行為異常時(shí)用tcpdump抓包保存證據(jù)避免在內(nèi)存里等。# 抓取與可疑IP的全部進(jìn)出來包保存為pcap tcpdump -i eth0 host 203.0.113.10 -w suspicious.pcap # 查看當(dāng)前所有對外連接排序后找出異常出站點(diǎn) ss -antop | awk {print $5} | sort | uniq -c | sort -nr | headss -antop可以看出端口、進(jìn)程PID和連接狀態(tài)。如果某個(gè)PID頻繁連接外網(wǎng)的動(dòng)態(tài)端口先用ss -p反查進(jìn)程路徑再做一次lsof -c process_name確認(rèn)。排查進(jìn)程中還要注意命令被替換的情況比如ps和ls是rootkit版本輸出往往不顯示惡意進(jìn)程這種情況建議先掛載只讀復(fù)制出樣本再做比較基準(zhǔn)。5. 用模擬攻擊和基線驗(yàn)證安全防范措施有效性運(yùn)維層面最大的問題不是沒有防護(hù)而是不知道防護(hù)是不是真的按照配置在工作。下面的驗(yàn)證方法適合在季度維護(hù)窗口里執(zhí)行所有測試都應(yīng)先取得授權(quán)并避開業(yè)務(wù)高峰。5.1 用Nmap驗(yàn)證服務(wù)暴露面nmap -sV -Pn -p- --open target_ip-p-掃描全部65535個(gè)端口-sV識(shí)別服務(wù)版本。把輸出結(jié)果和防火墻放行清單逐項(xiàng)比對任何額外開放端口都意味著規(guī)則漂移。如果你發(fā)現(xiàn)RDP、Redis、MySQL端口暴露給了公網(wǎng)應(yīng)立即在iptables和云安全組里刪除放行規(guī)則。5.2 用hydra驗(yàn)證弱口令風(fēng)險(xiǎn)hydra是典型的暴力破解工具只能在授權(quán)范圍內(nèi)使用。hydra -l admin -P weakpass.txt target_ip ssh-l指定用戶名-P指定密碼字典。這條命令跑完后如果某臺(tái)設(shè)備的SSH密碼出現(xiàn)在結(jié)果里說明口令策略沒有真正約束用戶。驗(yàn)證完成后要檢查目標(biāo)主機(jī)的/var/log/auth.log確認(rèn)測試賬號沒有觸發(fā)鎖定。之后把命中的弱口令反饋給負(fù)責(zé)人推動(dòng)改為密鑰認(rèn)證。5.3 用安全基線檢查腳本核查配置漂移配置漂移是指主機(jī)上線后被人為改動(dòng)了安全項(xiàng)。寫一個(gè)腳本對比基準(zhǔn)文件#!/bin/bash # 檢查SSH關(guān)鍵參數(shù)是否被修改 check_sshd() { if grep -q ^PermitRootLogin no /etc/ssh/sshd_config; then echo PASS: root login disabled else echo FAIL: root login allowed fi } check_sshd這個(gè)腳本可以直接移植到監(jiān)控平臺(tái)每臺(tái)主機(jī)每小時(shí)執(zhí)行一次。安全基線的意義不是發(fā)現(xiàn)未知威脅而是確認(rèn)為未知威脅做的準(zhǔn)備仍然有效。驗(yàn)證時(shí)還可以用auditd記錄對/etc/ssh/sshd_config的變更誰在什么時(shí)候改過一查便知。在下一輪攻防演練前先按這個(gè)順序跑一遍Nmap掃暴露面hydra試弱口令基線腳本查漂移再對應(yīng)修復(fù)。把暴露面清單和基線差異項(xiàng)交給負(fù)責(zé)人逐個(gè)打勾比臨時(shí)抱佛腳配置防火墻要可靠得多。本文還有配套的精品資源點(diǎn)擊獲取