事前檢查和監(jiān)控
提前檢查
服務(wù)器和網(wǎng)站漏洞檢測,對Web漏洞、弱口令、潛在的惡意行為、違法信息等進(jìn)行定期掃描。
代碼的定期檢查,安全檢查,漏洞檢查。
服務(wù)器安全加固,安全基線設(shè)置,安全基線檢查。
數(shù)據(jù)庫執(zhí)行的命令,添加字段、加索引等,必須是經(jīng)過測試檢查的命令,才能在正式環(huán)境運(yùn)行。
建設(shè)SRE體系,比如:日常需求處理、容量規(guī)劃、資源部署、監(jiān)控告警、預(yù)案梳理、災(zāi)備演練、OnCall值班、應(yīng)急事件響應(yīng)、故障處理、運(yùn)維自動化建設(shè)等等。
檢查服務(wù),線上重要服務(wù)避免單點(diǎn)問題,服務(wù)架構(gòu)采用高可用方案。
數(shù)據(jù)備份
服務(wù)器數(shù)據(jù)備份,包括網(wǎng)站程序文件備份,數(shù)據(jù)庫文件備份、配置文件備份,如有資源最好每小時(shí)備份和異地備份。
建立五重備份機(jī)制:常規(guī)備份、自動同步、LVM快照、Azure備份、S3備份。
定期檢查備份文件是否可用,避免出故障后,備份數(shù)據(jù)不可用。
重要數(shù)據(jù)多重加密算法加密處理。
程序文件版本控制,測試,發(fā)布,故障回滾。
安全監(jiān)控
nagios監(jiān)控服務(wù)器常規(guī)狀態(tài)CPU負(fù)載、內(nèi)存、磁盤、流量,超過閾值告警。
zabbix或cacti監(jiān)控服務(wù)器常規(guī)狀態(tài)CPU負(fù)載、內(nèi)存、磁盤、流量等狀態(tài),可以顯示歷史曲線,方便排查問題。
監(jiān)控服務(wù)器SSH登錄記錄、iptables狀態(tài)、進(jìn)程狀態(tài),有異常記錄告警。
監(jiān)控網(wǎng)站W(wǎng)EB日志(包括nginx日志php日志等),可以采用EKL來收集管理,有異常日志告警。
運(yùn)維人員都要接收告警郵件和短信,至少所負(fù)責(zé)的業(yè)務(wù)告警郵件和短信必須接收,運(yùn)維經(jīng)理接收重要業(yè)務(wù)告警郵件和短信。(除非是專職運(yùn)維開發(fā))
除服務(wù)器內(nèi)部監(jiān)控外,最好使用第三方監(jiān)控,從外部監(jiān)控業(yè)務(wù)是否正常(監(jiān)控URL、端口等),比如:監(jiān)控寶。
采用k8s集群管理,容器監(jiān)控,對項(xiàng)目POD使用CPU和內(nèi)存排序,監(jiān)控超過一定閾值告警,比如單個(gè)服務(wù)超過4G內(nèi)存告警,可以發(fā)現(xiàn)服務(wù)內(nèi)存溢出等問題。
故障避免預(yù)防
網(wǎng)站W(wǎng)EB增加WAF,避免XSS跨站腳本、SQL注入、網(wǎng)頁掛馬等漏洞威脅。
程序代碼連接數(shù)據(jù)庫、memcache、redis等,可以使用域名(域名HOSTS指定IP),當(dāng)出問題,有備用的服務(wù)器,就可以通過修改DNS或者HOSTS,恢復(fù)服務(wù)。
建立應(yīng)急預(yù)案機(jī)制,定期演練事故場景,估算修復(fù)時(shí)間。
部署蜜罐系統(tǒng),防范企業(yè)和服務(wù)器內(nèi)網(wǎng)APT攻擊。
建立雙活集群,包括業(yè)務(wù)服務(wù)的高可用,避免業(yè)務(wù)服務(wù)單點(diǎn)。
服務(wù)器集群采用跳板機(jī)或堡壘機(jī)登錄,避免服務(wù)器集群每臺服務(wù)器可以遠(yuǎn)程連接管理。
操作重要業(yè)務(wù)升級、遷移、擴(kuò)容……之前,列一下操作步驟,越詳細(xì)越好,實(shí)際操作按步驟操作,操作完做好記錄。
測試環(huán)境,預(yù)發(fā)環(huán)境,線上生產(chǎn)環(huán)境,要做好環(huán)境隔離,避免測試環(huán)境使用生產(chǎn)環(huán)境數(shù)據(jù)庫緩存等資源。
測試環(huán)境,預(yù)發(fā)環(huán)境要避免外部訪問,做好IP限制和防火墻策略。
服務(wù)器集群私有DNS服務(wù),需備份DNS日志,方便審計(jì),可以避免和發(fā)現(xiàn)類似Py倉庫request惡意包投毒安全問題。
集群服務(wù)程序需考慮無狀態(tài)業(yè)務(wù),可支持?jǐn)U容縮容,熔斷,降級方案,方案的合理性需開發(fā)和運(yùn)維一起評估,方案需開發(fā)和運(yùn)維都認(rèn)可,并驗(yàn)證演練過。
事中操作
網(wǎng)站W(wǎng)EB增加WAF,發(fā)現(xiàn)XSS、SQL注入、網(wǎng)頁掛馬等攻擊,會自動攔截,并記錄日志。
檢查服務(wù)器數(shù)據(jù)備份是否可用。
在處理需求和故障時(shí),執(zhí)行風(fēng)險(xiǎn)命令(比如rm、restart、reboot等)需再三確認(rèn),執(zhí)行命令前,檢查所在服務(wù)器,所在服務(wù)器路徑,再執(zhí)行!
不要疲勞駕駛,喝酒不上機(jī),上機(jī)不喝酒,尤其別動數(shù)據(jù)庫,避免在不清醒的狀態(tài)下,在服務(wù)器上執(zhí)行了錯(cuò)誤命令,導(dǎo)致數(shù)據(jù)丟失或業(yè)務(wù)故障。
在處理事故時(shí),一定要考慮處理措施是否會引發(fā)連鎖故障,重要操作三思而行。
事后檢查分析
實(shí)現(xiàn)網(wǎng)絡(luò)安全可視化管理,可以看到每天有那些異常IP和異常URL請求,服務(wù)器集群開放端口列表等。
能對全網(wǎng)進(jìn)行安全策略集中管理。
統(tǒng)一日志收集和分析。
備份及篡改恢復(fù)功能,程序文件、圖片、數(shù)據(jù)文件、配置文件的備份,故障回滾機(jī)制。
對攻擊日志進(jìn)行深度分析,展現(xiàn)攻擊路徑、攻擊源,協(xié)助管理員溯源。
踐行DevOps的無指責(zé)文化,尤其是在做事故分析時(shí)。事故分析重在定位原因,制定改進(jìn)措施;
事后故障定級定責(zé)
故障告警是否及時(shí),告警是否周知相關(guān)人,運(yùn)維處理是否有及時(shí),運(yùn)維不能處理是否有及時(shí)通知開發(fā)人員介入;
故障點(diǎn),事前是否有應(yīng)對方案,方案是否能完全解決故障,方案是否合理,方案是否開發(fā)和運(yùn)維都認(rèn)可,并驗(yàn)證演練過;
故障應(yīng)對方案,如果合理,運(yùn)維沒按流程要求操作,運(yùn)維次要責(zé)任;
故障點(diǎn)是否運(yùn)維人員直接或間接導(dǎo)致故障,如果是運(yùn)維操作直接導(dǎo)致,運(yùn)維主要責(zé)任,間接導(dǎo)致運(yùn)維次要責(zé)任;
操作人員是否存在主觀故意,承擔(dān)主要責(zé)任;
故障定級定責(zé)可根據(jù)業(yè)務(wù)情況,設(shè)置紅線,比如:明知可能會導(dǎo)致故障,還操作,未驗(yàn)證的配置,直接操作等等;
故障報(bào)告里面需包含,告警時(shí)間,運(yùn)維上線時(shí)間,運(yùn)維開始處理和定位問題時(shí)間,服務(wù)恢復(fù)時(shí)間,服務(wù)全部恢復(fù)時(shí)間,驗(yàn)證時(shí)間,故障影響面,SLA,故障處理中遇到的問題,耗時(shí)部分,故障避免方案;