使用流量鏡像對VPC流量進(jìn)行安全審查
云上網(wǎng)絡(luò)安全,往往是用戶將核心業(yè)務(wù)部署上云時優(yōu)先考慮的因素。您可使用VPC的流量鏡像功能對云上網(wǎng)絡(luò)流量的安全性進(jìn)行實(shí)時檢測與分析。
場景示例
某公司將核心業(yè)務(wù)部署上云,需要保證云上業(yè)務(wù)的正常運(yùn)行的同時,高效且無侵入地監(jiān)控阿里云ECS實(shí)例的網(wǎng)絡(luò)流量,以識別并記錄潛在的安全威脅,進(jìn)行安全審查。
在本場景下,使用流量鏡像,將ECS的網(wǎng)絡(luò)流量復(fù)制到另一臺部署著網(wǎng)絡(luò)威脅檢測系統(tǒng)的ECS上,通過配置安全規(guī)則,實(shí)時檢測鏡像網(wǎng)絡(luò)流量。
流量鏡像:從目標(biāo)ECS實(shí)例的彈性網(wǎng)卡ENI復(fù)制網(wǎng)絡(luò)流量,并將流量轉(zhuǎn)發(fā)給指定的ENI,適用于內(nèi)容檢查、威脅監(jiān)控和問題排查等場景。
流量審查:使用Suricata作為報文接收和異常檢測的核心組件,因其支持VXLAN解封裝、提供入侵檢測(IDS)、入侵防御(IPS)和網(wǎng)絡(luò)安全監(jiān)控功能,能有效識別惡意流量模式,易與現(xiàn)有的Elasticsearch等可視化分析系統(tǒng)集成。用戶也可以自行選擇云市場中其他安全廠商的分析工具。
日志處理與存儲:通過Filebeat采集Suricata日志,通過Elasticsearch進(jìn)行索引存儲,在Kibana進(jìn)行可視化查詢、分析和展示。
索引文件存儲:配置Elasticsearch將經(jīng)過索引標(biāo)記的流量記錄備份至阿里云OSS,確保數(shù)據(jù)的安全存儲與長期可訪問性。
前提條件
已創(chuàng)建兩個VPC,每個VPC內(nèi)創(chuàng)建1臺ECS實(shí)例。
您可以結(jié)合業(yè)務(wù)需求,為ECS1綁定EIP,通過EIP提供公網(wǎng)服務(wù)。
ECS2作為鏡像目的,綁定EIP訪問公網(wǎng),以部署Suricata。
本文示例中服務(wù)器操作系統(tǒng)統(tǒng)一為Alibaba Cloud Linux 3.2104 LTS 64位。
確保ECS2的安全組入方向放開4789端口,允許ECS1封裝的UDP協(xié)議報文訪問ECS2的4789端口,以接收鏡像流量。
初次使用流量鏡像功能時,根據(jù)提示開通流量鏡像功能。
鏡像源和鏡像目的不屬于同一個VPC時,需要確保VPC間互通。本文示例通過VPC對等連接連通兩個VPC。
已創(chuàng)建阿里云Elasticsearch實(shí)例并開啟Kibana公網(wǎng)訪問,將本機(jī)公網(wǎng)IP地址添加到白名單。
操作步驟
步驟一:配置Suricata
您需要在ECS2服務(wù)器中部署Suricata,接收網(wǎng)絡(luò)流量并進(jìn)行安全審查。
登錄ECS2服務(wù)器,執(zhí)行如下命令,安裝Suricata。
#安裝依賴 sudo dnf install -y gcc libpcap-devel pcre-devel libyaml-devel file-devel \ zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel #安裝suricata sudo dnf install suricata -y #確保suricata自動啟動 sudo systemctl enable suricata sudo systemctl start suricata
配置Suricata。
Suricata的配置存放在
/etc/suricata/suricata.yaml
,使用默認(rèn)配置即可。更新安全規(guī)則。
執(zhí)行
suricata-update
更新規(guī)則文件,默認(rèn)保存在/var/lib/suricata/rules/suricata.rules
。執(zhí)行
sudo service suricata restart
重啟Suricata。
步驟二:配置流量鏡像
創(chuàng)建篩選條件。
登錄專有網(wǎng)絡(luò)管理控制臺。在左側(cè)導(dǎo)航欄,選擇 。
在篩選條件頁面,單擊創(chuàng)建篩選條件。在規(guī)則配置區(qū)域的出方向規(guī)則頁簽下,單擊添加規(guī)則,按照默認(rèn)配置添加規(guī)則,采集全部流量。
創(chuàng)建并啟動鏡像會話。
在左側(cè)導(dǎo)航欄,選擇 。
在鏡像會話頁面,單擊創(chuàng)建鏡像會話。基礎(chǔ)配置保持默認(rèn),關(guān)聯(lián)篩選條件選擇上一步創(chuàng)建的規(guī)則,鏡像源選擇ECS1的彈性網(wǎng)卡,鏡像目的選擇ECS2的彈性網(wǎng)卡。
在鏡像會話頁面,找到目標(biāo)鏡像會話,在操作列單擊啟動。
流量鏡像配置完成且Suricata正常運(yùn)行時,會在/var/log/suricata/目錄下產(chǎn)生一系列日志文件。
/var/log/suricata/ ├── certs ├── core ├── eve.json ##以JSON格式產(chǎn)生的所有捕獲的flow,alert,stats等日志,以及例如HTTP等協(xié)議的應(yīng)用日志 ├── fast.log ##檢測分析產(chǎn)生的alert日志 ├── files ├── stats.log ##捕獲,處理數(shù)據(jù)包數(shù)量的詳細(xì)統(tǒng)計 ├── suricata.log ##服務(wù)運(yùn)行時的詳細(xì)日志 └── suricata-start.log ##服務(wù)啟動時的詳細(xì)日志
步驟三:采集并存儲Suricata日志
您可以使用Filebeat將Suricata日志數(shù)據(jù)傳輸至阿里云Elasticsearch進(jìn)行索引存儲,并通過Kibana進(jìn)行可視化展示與分析。
登錄ECS2服務(wù)器,執(zhí)行如下命令,安裝Filebeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-x86_64.rpm sudo rpm -vi filebeat-7.10.0-x86_64.rpm
修改Suricata模塊配置,指定待采集的Suricata流量日志文件。
執(zhí)行
sudo filebeat modules enable mysql
命令,啟用Suricata模塊。執(zhí)行
sudo vim /etc/filebeat/modules.d/suricata.yml
命令,按照以下內(nèi)容修改Suricata模塊配置。- module: suricata # 配置采集的流量日志文件 eve: enabled: true var.paths: ["/var/log/suricata/eve.json"]
按下
Esc
鍵,輸入:wq
并回車,以保存并關(guān)閉文件。
執(zhí)行
sudo vim /etc/filebeat/filebeat.yml
配置filebeat.yml文件,設(shè)置連接信息。修改Filebeat modules配置。
filebeat.config.modules: # 全局加載 path: /etc/filebeat/modules.d/suricata.yml # 允許動態(tài)地重新加載和應(yīng)用新的配置文件或設(shè)置 reload.enabled: true # 在設(shè)定的時間周期內(nèi)系統(tǒng)自動檢查指定路徑下的文件是否有任何更改 reload.period: 1s
修改Kibana配置。
setup.kibana: host: "https://es-cn-8l**********2r7ln-kibana.cn-hangzhou.elasticsearch.aliyuncs.com:5601"
host
:Kibana的訪問地址,可在Kibana配置頁面獲取,格式為<Kibana公網(wǎng)地址>:5601
。修改Elasticsearch output配置。
output.elasticsearch: # 配置存儲日志的Elasticsearch實(shí)例 hosts: ["http://es-cn-8ly**********r7ln.elasticsearch.aliyuncs.com:9200"] username: "elastic" password: "<your_password>"
host
:Elasticsearch的訪問地址,可在實(shí)例的基本信息頁面獲取,格式為<實(shí)例的私網(wǎng)或公網(wǎng)地址>:9200
。username
:Elasticsearch實(shí)例的訪問用戶名,默認(rèn)為elastic。password
:創(chuàng)建實(shí)例時設(shè)定的密碼,若遺忘,可選擇重置實(shí)例訪問密碼。按下
Esc
鍵,輸入:wq
并回車,以保存并關(guān)閉文件。執(zhí)行以下命令,將Dashboard等信息上傳到Elasticsearch和Kibana中,并啟用Filebeat服務(wù)。
sudo filebeat setup sudo service filebeat start
步驟四:可視化分析VPC流量
登錄目標(biāo)Elasticsearch實(shí)例的Kibana控制臺。在左側(cè)導(dǎo)航欄,單擊 ,更改索引模式為filebeat。
您可以添加
alert
篩選條件,在頁面右上角選擇查詢時間,查看對應(yīng)時間段內(nèi)的有潛在威脅的VPC流量。
步驟五:告警驗(yàn)證
登錄ECS1,執(zhí)行
curl http://testmynids.org/uid/index.html
命令,模仿id命令的輸出,以觸發(fā)警報。說明Suricata規(guī)則集中包含如下規(guī)則,當(dāng)數(shù)據(jù)包的內(nèi)容具有字符串值
uid=0|28|root|29|
并且流量被分類為未知流量時,將丟棄數(shù)據(jù)包并生成警報。alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, updated_at 2010_09_23;)
在Kibana頁面,添加
GPL
篩選條件,即可查看匹配到Suricata IDS特征規(guī)則“GPL ATTACK_RESPONSE id check returned root”的告警事件。
后續(xù)步驟:數(shù)據(jù)備份
您可以將阿里云Elasticsearch索引存儲的數(shù)據(jù)備份,確保數(shù)據(jù)安全存儲與長期可訪問性。Elasticsearch默認(rèn)開啟數(shù)據(jù)自動備份,您可以將自動備份快照保存至阿里云OSS倉庫。
常見問題
修改Filebeat配置后如何生效?
修改配置文件后,需要重啟服務(wù)以應(yīng)用新的設(shè)置。您需要執(zhí)行以下命令重啟Filebeat。
sudo systemctl restart filebeat
配置流量鏡像后,如何驗(yàn)證流量已被正確轉(zhuǎn)發(fā)至鏡像目的?
登錄鏡像目的ECS2,執(zhí)行如下命令,查看是否可以獲取到報文的數(shù)據(jù)包。
tcpdump -i eth0 udp port 4789 -nne
vni 1為鏡像會話的標(biāo)識,表示鏡像目的通過鏡像會話,成功獲取到數(shù)據(jù)包。