通過在應用中整合RASP(Runtime Application Self-Protection)探針,應用防護能夠即時監測並抵禦惡意行為和安全威脅,確保應用持續穩定運行。本文介紹首次將Java應用和PHP應用接入應用防護的具體操作步驟。
RASP探針說明
防護限制
應用防護功能通過在應用中安裝RASP探針實現攻擊檢測和防護。應用防護僅支援防護滿足以下條件的Java進程或PHP進程,即只支援在同時滿足以下條件的業務進程中安裝RASP探針。
Java進程
JDK支援範圍:支援JDK 6及以上版本,不支援JDK 13和14,不支援JDK 8的1.8.0_40及以下版本。
中介軟體支援範圍:對中介軟體類型和版本無特定要求,包括Tomcat、SpringBoot、Jboss、WildFly、Jetty、Resin、Weblogic、Websphere、Liberty、Netty、GlassFish、國產中介軟體等。
作業系統支援:Linux(64位)、Windows(64位)。
PHP進程
PHP版本支援範圍: 7.0 ~ 8.3 版本,同時支援ts和非ts版本。
SAPI(Server Application Programming Interface)支援範圍:PHP-FPM(FastCGI Process Manager)和Apache PHP模組。
作業系統支援:僅支援Linux x86架構(64位)。
系統庫依賴:glibc 2.14 及以上、libstdc++ 3.4.19 及以上。
自動接入資源使用量閾值說明
在主機、容器或JVM資源使用量超過一定閾值時,為了保證應用防護功能的正常運行,自動接入方式會暫停接入RASP探針,直到降到閾值以下才會繼續安裝RASP探針;手動接入方式無此限制。停止安裝探針的具體閾值如下:
主機或容器CPU佔用超過98%,或剩餘記憶體不足200 MB。
JVM堆記憶體剩餘不足150 MB,中繼資料空間不足5 MB。
前提條件
1. 查看哪些應用可以接入
應用防護僅支援防護運行狀態的Java和PHP應用。在購買應用防護授權數前,您可以參考下述步驟查看支援接入的應用數量和詳細資料。
登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國或全球(不含中國)。
在左側導覽列,選擇 。
在防护统计地區,單擊立即掃描。
單擊立即掃描後,Security Center用戶端將會對您資產中進程資訊進行採集。
說明免費版、僅採購增值服務版、防病毒版和進階版每天僅支援執行一次立即掃描操作。
查看您資產中存在的應用進程數量,您可以單擊數字查看應用進程列表。應用進程列表提供了支援接入應用防護的應用進程所在伺服器資訊、進程名、PID(進程標識符)和啟動參數。
重要防護一個應用進程需消耗一個應用防護授權數。進程數量是動態變化的,此處採集的資料是執行掃描的時刻狀態為啟動中的進程。您可以根據這裡的數量,預估需要購買的應用防護授權數。
如果您之前執行過掃描操作,系統將自動儲存並展示7天內的掃描資料。超過7天的掃描資料將自動被清理。執行掃描後,採集到的伺服器最新資料將覆蓋之前已有的伺服器資料。
2. 購買應用防護授權數
您需要購買足夠的應用防護授權數,才能將應用接入到應用防護中。在購買Security Center時,選擇需要的版本(任一版本)和應用防護授權數即可。具體操作,請參見購買Security Center。
Security Center免費試用支援免費擷取10個應用防護授權數。如果您未購買過Security Center,可申請免費試用。具體限制條件和操作,請參見開通7天免費試用。
接入PHP進程時,一個master process(即中心進程)會消耗一個授權數。
3. 接入應用防護
應用防護按應用分組執行防護策略,對應用分組內的Web業務進程提供安全防護。因此,您需要先建立應用分組,接入應用進程後,為分組內的業務進程配置統一的防護策略。
3.1 建立應用分組
登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國或全球(不含中國)。
在左側導覽列,選擇 。
在应用配置頁簽,單擊建立應用分組。
在建立應用分組嚮導頁面,輸入要建立的應用分組名稱,選擇應用語言(Java或PHP)和備忘資訊,然後單擊下一步。
建議您根據需要防護的Web業務進程設定應用分組名稱,應用分組名稱不可重複。應用語言選擇後不支援修改。
完成該操作後,Security Center會建立一個應用分組。
3.2 自動接入或手動接入
接入方式說明
RASP支援自動接入和手動接入方式,您可以根據下表的說明選擇合適的接入方式。
接入方式 | 說明 | 應用情境 |
自動接入主機和容器(僅支援Java應用) | 以伺服器為單位進行接入,伺服器接入後,在應用程式運行時,應用防護功能會使用JVM Attach能力自動識別並接入伺服器中的存在監聽連接埠的Java進程(包括容器環境),將應用防護功能整合到應用程式中。 該方式可以在應用程式運行時動態地載入和卸載應用防護功能,無需重啟應用進程,可以保障業務的連續性。 | 未自動接入過其他應用分組的伺服器可以選擇自動接入方式。 說明 如果您伺服器中的部分應用進程已自動接入指定應用分組,現需要將該主機中的應用進程重新接入另一個應用分組,您可以先為該伺服器關閉應用防護,從當前應用分組移除該伺服器,再在新的應用分組開啟自動接入。 |
手動接入 | 以應用為單位進行接入,需手動部署並重啟應用。 |
|
自動接入(Java應用)
建議首次自動接入時避開業務高峰期,分批次灰階執行並觀察業務監控指標。自動接入過程中RASP會對應用進程進行埋點(即插入監控或防護代碼),該過程中產生的退最佳化現象可能會有半分鐘的CPU佔用升高,平均影響10-20s,大型應用的影響小機率為數分鐘,接入完成後自動回復正常。
一台主機僅支援自動接入到一個應用分組中,不支援同時自動接入多個應用分組。自動接入伺服器時,僅支援選擇未自動接入過其他應用分組且作業系統為64位的主機。
已通過手動接入方式接入的主機,可以開啟自動接入。當您卸載了手動接入的RASP探針後,應用防護會為您重新自動接入。
自動接入只會接入有監聽連接埠的Java應用。如果Java應用沒有監聽連接埠,則需要您進行手動接入。
在自動/手動接入應用防護嚮導頁面自動接入頁簽,單擊選擇資產接入應用防護。
在選擇資產面板,選擇需要接入的資產後,單擊確定。
當您選擇接入的主機後,應用防護功能會自動識別並接入防護主機上的Java服務進程(包括容器環境),無需重啟進程。最多支援同時選擇50台伺服器。
根據需要接入的伺服器數量,參考下述說明操作。
僅需接入一台伺服器時,開啟該伺服器應用防護列的開關,待RASP探針安裝完成後,單擊下一步。
需要接入多台伺服器時,選中需要接入的伺服器,單擊批量防護,然後單擊下一步。
批量防護一次最多支援選擇50台伺服器。
為單台伺服器開啟應用防護開關或者選中多台伺服器並單擊批量防護後,Security Center會自動識別並主機上的Java進程接入防護(應用防護開關顯示安裝中),根據您的網路環境不同此過程可能會持續約10分鐘。如果您的主機中有多個啟動狀態的Java進程,Security Center會同時接入這些進程。
接入成功後,應用防護列的開關為開啟狀態,您可以在應用防護接入狀態列查看應用執行個體的接入狀態。以下是應用防護接入狀態的說明:
未接入:表示該伺服器未開啟應用防護開關。
接入失敗:表示該伺服器所有支援防護的應用都接入失敗。
部分接入:表示該伺服器支援防護的應用部分接入成功,部分接入失敗。
全部接入:表示該伺服器支援防護的Java應用均已接入應用防護,或者該伺服器上無可接入的進程。
說明應用防護接入狀態顯示為全部接入時,如果伺服器上不存在可接入的進程,或者所屬業務進程不在支援範圍內,此時接入詳情列表為空白。如果後續該伺服器上出現可接入的進程可自動接入應用防護。
在操作列單擊詳情,可以查看已接入的Java進程狀態。
說明如果您已為應用分組配置接入白名單,未命中接入白名單規則的進程會被跳過接入。
手動接入(Java應用)
您可以參考下述步驟手動將主機或容器中的Java應用接入應用防護。關於如何選擇手動接入容器方式的說明如下:
手動接入容器(一鍵推送):您已明確需要接入的伺服器和應用範圍時,可以直接使用該方式,完成安裝包的推送。
手動接入容器(自訂下載安裝):如果需要其他人員協助安裝RASP探針時,您可以使用該方式下載安裝包,並將安裝包分發給其他人員進行安裝部署。
手動接入主機
在手動接入的主機接入指南子頁簽,單擊一键推送。
在推送agent對話方塊,選擇需推送探針的伺服器,並單擊確定。
根據應用運行環境類型參考控制台或下表中的說明在應用伺服器中添加JVM參數。
參考下表進行操作時,您需要使用控制台接入指南頁簽展示的應用ID替換下表中的
{appId}
。應用ID的位置如下圖所示。運行環境
參數配置說明
Tomcat(Linux)
在<Tomcat安裝目錄>/bin/setenv.sh檔案中添加以下內容。
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"
如果您的<Tomcat安裝目錄>/bin/目錄下沒有setenv.sh設定檔,請在<Tomcat安裝目錄>/bin/目錄下建立該檔案。
Tomcat(Windows)
在<Tomcat安裝目錄>\bin\setenv.bat檔案中添加以下內容。
set CATALINA_OPTS=%CATALINA_OPTS% "-javaagent:C:\Program Files (x86)\Alibaba\Aegis\rasp\apps\{appId}\rasp.jar"
如果您的<Tomcat安裝目錄>\bin\目錄下沒有setenv.bat設定檔,請在<Tomcat安裝目錄>\bin\下建立該檔案。
Jetty
在{JETTY_HOME}/start.ini設定檔中添加以下配置。
--exec -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar
Spring Boot
啟動Spring Boot進程時,在啟動命令後加上-javaagent參數。
java -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar
例如,您在啟動Spring Boot進程時修改前的命令為:
java -jar app.jar
需要安裝RASP探針時啟動Spring Boot進程執行的命令為:
java -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar -jar app.jar
重要-javaagent參數應始終放在-jar參數之前。
JBoss或WildFly
Standalone模式
開啟<Jboss安裝目錄>/bin/standalone.sh,在# Display our environment下面添加以下內容:
JAVA_OPTS="${JAVA_OPTS} -javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"
Domain模式
開啟<Jboss安裝目錄>/domain/configuration/domain.xml檔案,找到<server-groups>標籤,在需要安裝RASP探針的<server-group>標籤中找到<jvm>標籤並添加以下內容:
<jvm-options> <option value="-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar"/> </jvm-options>
Liberty
在<Liberty安裝目錄>/${server.config.dir}路徑下(預設路徑為:/opt/ibm/wlp/usr/servers/defaultServer/jvm.options),建立或修改jvm.options檔案 ,在檔案中添加以下內容:
-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar
Resin
Resin3
在<Resin安裝目錄>/conf/resin.conf路徑下,找到 <server-default> 標籤下的 <jvm-arg>標籤,在下面添加以下內容:
<jvm-arg>-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar</jvm-arg>
Resin4
在<Resin安裝目錄>/conf/cluster-default.xml路徑下,找到<server-default>標籤下的<jvm-arg-line>標籤,在下面添加以下內容:
<jvm-arg>-javaagent:/usr/local/aegis/rasp/apps/{appId}/rasp.jar</jvm-arg>
在本地重啟需接入的應用。
應用重啟後RASP防護可立即生效。您可以在應用配置頁面,查看該應用分組下接入執行個體列表。
手動接入容器(一鍵推送安裝)
在手動接入頁簽的容器接入指南子頁簽,單擊一键推送。
您也可以在推送記錄頁簽,單擊推送agent,為應用所在的主機或容器推送並安裝RASP探針。
在推送agent對話方塊,選擇需推送探針的伺服器,並單擊確定。
啟動RASP探針。
方法一:寫入Dockerfile方式
執行下述命令進入Dockerfile所在目錄,並建立rasp目錄。
cd <Dockerfile所在目錄> mkdir rasp
執行下述命令將推送到伺服器上的RASP檔案拷貝到新建立的rasp目錄下。
您可以在Security Center控制台容器接入指南頁簽下,擷取應用分組ID的值。
cp -r /usr/local/aegis/rasp/apps/<應用分組ID>/* ./rasp
修改Dockerfile檔案,將下載好的 rasp 安裝包打包到容器鏡像中。Dockerfile檔案需要添加的內容如下。
COPY rasp /rasp/
重要您需要賦予指定使用者讀取和執行/rasp/目錄以及目錄下檔案的許可權。
通過Dockerfile 修改JVM啟動參數,添加-javaagent:/rasp/rasp.jar。
您需要使用容器接入指南頁簽展示的
Dmanager.key
值替換下表中的{manager.key}
。運行環境
參數配置說明
SpringBoot
在鏡像打包時安裝RASP探針,您需要在Dockerfile上修改啟動參數。啟動應用的命令修改如下:
修改前:
CMD ["java","-jar","/app.jar"]
修改後:
CMD ["java","-javaagent:/rasp/rasp.jar","-Dmanager.key={manager.key}","-jar","/app.jar"]
Tomcat
在鏡像打包時安裝RASP探針,您需要在Dockerfile中添加以下內容。
ENV JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
在容器啟動時安裝RASP探針,您需要在啟動時添加以下參數。
docker --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
例如,您的容器啟動命令為
docker -itd --name=test -P 鏡像名
,您需要在啟動容器時安裝RASP探針,則執行的命令需要修改為docker -itd --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}" --name=test -P 鏡像名
。Weblogic
重建鏡像,並啟動容器。
方法二:資料卷掛載方式
執行下述命令在建立容器時將伺服器上的rasp目錄掛載到容器指定目錄。
docker run -itd --privileged=true -v /usr/local/aegis/rasp/apps/<應用分組ID>:/rasp/ 鏡像ID
執行下述命令進入容器。
docker exec -it <容器ID> /bin/bash
在應用伺服器的啟動指令碼中添加以下JVM參數以啟動RASP探針。
您需要參考下述參數結合自己的業務環境進行配置。您需要使用容器接入指南頁簽展示的
Dmanager.key
值替換下述{manager.key}
。-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}
手動接入容器(自訂下載安裝)
在手動接入頁簽的容器接入指南子頁簽,在下載安裝RASP探針下方的下拉式清單中選擇自訂下載安裝。
您也可以在推送記錄頁簽,單擊推送agent,為應用所在的主機或容器推送並安裝RASP探針。
在下拉式清單中,根據您需要安裝RASP探針的伺服器是否通過代理接入Security Center,選擇不接入代理或自建代理叢集。
選擇自建代理叢集後,您需要選擇伺服器接入的代理叢集。關於代理接入的更多資訊,請參見代理接入。
單擊RASP安裝包右側的下載,下載RASP安裝包。
啟動RASP探針。
方法一:寫入Dockerfile方式
執行下述命令進入Dockerfile所在目錄。
cd <Dockerfile所在目錄>
將下載的RASP安裝包上傳到Dockerfile所在目錄下,並解壓RASP安裝包到該目錄。
unzip <安裝包名稱> -d .
說明安裝包解壓完成後會直接產生一個名稱為rasp的目錄。
修改Dockerfile檔案,將下載好的 rasp 安裝包打包到容器鏡像中。Dockerfile檔案需要添加的內容如下。
COPY rasp /rasp/
重要您需要賦予指定使用者讀取和執行/rasp/目錄以及目錄下檔案的許可權。
通過Dockerfile 修改JVM啟動參數,添加-javaagent:/rasp/rasp.jar。
您需要使用容器接入指南頁簽展示的
Dmanager.key
值替換下表中的{manager.key}
。運行環境
參數配置說明
SpringBoot
在鏡像打包時安裝RASP探針,您需要在Dockerfile上修改啟動參數。啟動應用的命令修改如下:
修改前:
CMD ["java","-jar","/app.jar"]
修改後:
CMD ["java","-javaagent:/rasp/rasp.jar","-Dmanager.key={manager.key}","-jar","/app.jar"]
Tomcat
在鏡像打包時安裝RASP探針,您需要在Dockerfile中添加以下內容。
ENV JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
在容器啟動時安裝RASP探針,您需要在啟動時添加以下參數。
docker --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}"
例如,您的容器啟動命令為
docker -itd --name=test -P 鏡像名
,您需要在啟動容器時安裝RASP探針,則執行的命令需要修改為docker -itd --env JAVA_OPTS="-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}" --name=test -P 鏡像名
。Weblogic
重建鏡像,並啟動容器。
方法二:資料卷掛載方式
將下載的RASP安裝包上傳到伺服器指定的目錄下,並執行解壓操作。
您需要根據具體環境替換user.path為正確的路徑。
unzip zhh-php1-China.zip -d /<user.path>/
執行下述命令在建立容器時將伺服器上的rasp目錄掛載到容器指定目錄。
docker run -itd -v /<user.path>/rasp:/rasp/ 鏡像id
執行下述命令進入容器。
docker exec -it <容器ID> /bin/bash
在應用伺服器的啟動指令碼中添加以下JVM參數以啟動RASP探針。
您需要參考下述參數結合自己的業務環境進行配置。您需要使用容器接入指南頁簽展示的
Dmanager.key
值替換下述{manager.key}
。-javaagent:/rasp/rasp.jar -Dmanager.key={manager.key}
手動接入(PHP應用)
您可以參考下述步驟手動將主機或容器中的PHP應用接入應用防護。關於如何選擇一鍵下推送安裝或自訂下載安裝的說明如下:
一鍵推送安裝:您已明確需要接入的伺服器和應用範圍時,可以直接使用該方式,完成安裝包的推送。
自訂下載安裝:如果需要其他人員協助安裝RASP探針,您可以使用該方式下載安裝包,並將安裝包分發給其他人員進行安裝部署。
接入主機(一鍵推送安裝)
在手動接入的主機接入指南子頁簽,選擇應用的PHP版本和一键推送安装,單擊一键推送。
說明PHP版本選擇要和業務中的實際PHP版本相符,否則會導致RASP探針載入失敗。
在推送agent對話方塊,選擇需推送探針的伺服器,並單擊確定。
在推送記錄子頁簽,等待對應伺服器狀態變更為已推送。
在主機接入指南子頁簽,根據應用運行環境類型參考控制台或下述步驟在應用伺服器中修改
php.ini
設定檔。執行下述命令開啟php.ini 檔案。
說明當前步驟使用的編輯器為nano。
php.ini
檔案通常位於/etc/php/7.0/fpm/php.ini
或/etc/php/7.0/apache2/php.ini
。請根據您的具體環境調整下述命令中的路徑。
sudo nano /etc/php/7.0/fpm/php.ini
或
sudo nano /etc/php/7.0/apache2/php.ini
在
php.ini
檔案末尾或適當的[Extensions]
段落下,添加以下內容。您需要使用控制台接入指南頁簽展示的應用ID替換下表中的
{appId}
。應用ID的位置如下圖所示。[alirasp] extension=/usr/local/aegis/rasp/apps/{appId}/php-7.0/alirasp.so alirasp.root_dir=/usr/local/aegis/rasp/apps/{appId}/php-7.0
儲存並關閉
php.ini
檔案。如果您使用的是nano編輯器,可以通過按
Ctrl + X
,然後按Y
確認儲存,最後按Enter
退出。
重啟您的應用,重啟後RASP可立即生效。
說明以下命令僅供參考。具體需要重啟的服務取決於實際環境中安裝的服務。
Nginx服務重啟命令
sudo systemctl restart nginx
Apache服務重啟命令
sudo systemctl restart apache2
或
systemctl restart httpd
接入主機(自訂下載安裝)
在手動接入的主機接入指南子頁簽,選擇應用的PHP版本和自定义下载安装,單擊RASP安裝包右側的下載。
說明PHP版本選擇要和業務中的實際PHP版本相符,否則會導致RASP探針載入失敗。
將下載的RASP安裝包上傳到伺服器上,並執行下述命令解壓該安裝包。
user.path為RASP安裝包在伺服器上的儲存路徑。
unzip <安裝包名稱> -d <user.path>
根據應用運行環境類型參考控制台或下述步驟在應用伺服器中修改
php.ini
設定檔。執行下述命令開啟php.ini 檔案。
說明當前步驟使用的編輯器為nano。
php.ini
檔案通常位於/etc/php/7.0/fpm/php.ini
或/etc/php/7.0/apache2/php.ini
。請根據您的具體環境調整下述命令中的路徑。
sudo nano /etc/php/7.0/fpm/php.ini
或
sudo nano /etc/php/7.0/apache2/php.ini
在
php.ini
檔案末尾或適當的[Extensions]
段落下,添加以下內容。將下述代碼塊中的<user.path>替換為安裝包解壓後的目錄。
[alirasp] extension=<user.path>/alirasp.so alirasp.root_dir=<user.path>
說明請檢查並確保解壓的目錄及其父目錄,以及目錄中的檔案對 PHP 的 worker 啟動使用者有可讀取和可進入的許可權。
儲存並關閉
php.ini
檔案。如果您使用的是nano編輯器,可以通過按
Ctrl + X
,然後按Y
確認儲存,最後按Enter
退出。
重啟您的應用,重啟後RASP可立即生效。
說明以下命令僅供參考。具體需要重啟的服務取決於實際環境中安裝的服務。
Nginx服務重啟命令
sudo systemctl restart nginx
Apache服務重啟命令
sudo systemctl restart apache2
或
systemctl restart httpd
接入容器(一鍵推送安裝)
在手動接入的容器接入指南子頁簽,選擇應用的PHP版本和一键推送安装,單擊一键推送。
說明PHP版本選擇要和業務中的實際PHP版本相符,否則會導致RASP探針載入失敗。
在推送agent對話方塊,選擇需推送探針的伺服器,並單擊確定。
在推送記錄子頁簽,等待對應伺服器狀態變更為已推送。
在容器接入指南子頁簽,參考控制台說明或下述步驟部署探針。
方法一:寫入Dockerfile方式
執行下述命令進入Dockerfile所在目錄,並建立rasp目錄。
cd <Dockerfile所在目錄> mkdir rasp
執行下述命令將推送到伺服器上的RASP檔案拷貝到新建立的rasp目錄下。
您可以在Security Center控制台容器接入指南頁簽下,擷取應用分組ID的值。
cp -r /usr/local/aegis/rasp/apps/<應用分組ID>/php-7.0/* ./rasp
修改Dockerfile檔案,將下載好的 rasp 安裝包打包到容器鏡像中。Dockerfile檔案需要添加的內容如下。
COPY rasp /rasp/
說明您需要賦予指定使用者讀取和執行/rasp/目錄以及目錄下檔案的許可權。
在Dockerfile中修改PHP的
php.ini
配置並添加 RASP擴充,內容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重建鏡像,並啟動容器。
方法二:資料卷掛載方式
執行下述命令在建立容器時將伺服器上的rasp目錄掛載到容器指定目錄。
docker run -itd --privileged=true -v /usr/local/aegis/rasp/apps/<應用分組ID>/php-7.0:/rasp/ 鏡像ID
在Dockerfile中修改PHP的
php.ini
配置並添加 RASP擴充,內容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重建鏡像,並啟動容器。
接入容器(自訂下載安裝)
在手動接入的容器接入指南子頁簽,選擇應用的PHP版本和自定义下载安装,單擊RASP安裝包右側的下載。
說明PHP版本選擇要和業務中的實際PHP版本相符,否則會導致RASP探針載入失敗。
在容器接入指南子頁簽,根據應用運行環境類型參考控制台或下述步驟部署探針。
方法一:寫入Dockerfile方式
執行下述命令進入Dockerfile所在目錄。
cd <Dockerfile所在目錄>
將下載的RASP安裝包上傳到Dockerfile所在目錄下,並執行下述命令解壓RASP安裝包到該目錄。
unzip <安裝包名稱> -d.
說明安裝包解壓完成後會直接產生一個名稱為rasp的目錄。
修改Dockerfile檔案,將下載好的 rasp 安裝包打包到容器鏡像中。Dockerfile檔案需要添加的內容如下。
COPY rasp /rasp/
說明您需要賦予指定使用者讀取和執行/rasp/目錄以及目錄下檔案的許可權。
在Dockerfile中修改PHP的
php.ini
配置並添加 RASP擴充,內容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重建鏡像,並啟動容器。
方法二:資料卷掛載方式
將下載的RASP安裝包上傳到伺服器上,並執行下述命令解壓該安裝包。
user.path為RASP安裝包在伺服器上的儲存路徑。
unzip <安裝包名稱> -d <user.path>
執行下述命令在建立容器時將伺服器上的rasp目錄掛載到容器指定目錄。
docker run -itd -v /{user.path}/rasp:/rasp/ 鏡像ID
在Dockerfile中修改PHP的
php.ini
配置並添加 RASP擴充,內容如下:[alirasp] extension=/rasp/alirasp.so alirasp.root_dir=/rasp
重建鏡像,並啟動容器。
3.3 設定防護策略
在觀察警示無誤設定“防護”模式嚮導頁面,設定防護策略,單擊確定。
預設防護模式為監控模式,建議您先使用監控模式2~5天,如果在此期間未出現誤警示您可以將防護模式修改為防護。如果出現誤警示,您可以通過配置白名單規則,屏蔽產生誤攔截的檢測類型。具體操作,請參見將警示加入白名單。
分類 | 配置項 | 說明 |
防護策略 | 應用分組名稱 | 展示應用分組的名稱,在此處不支援修改。 |
防護狀態 | 選擇是否為當前應用分組開啟或關閉防護,預設開啟。 | |
防護模式 | 選擇應用分組的防護模式,可選項:
| |
防护策略组 | 預設的防護策略組是日常運行組。您可以在下拉式清單中選擇其他防護策略組。防護策略組的更多資訊,請參見5. 管理防護策略組。 | |
檢測類型 | 展示已選擇的防護策略組支援的檢測類型。 | |
檢測策略 | 弱點檢測 | 選擇是否為當前應用分組開啟弱點檢測。更多資訊,請參見發現應用弱點。 說明 PHP應用不支援該功能。 |
記憶體馬檢測 | 選擇是否為當前應用分組開啟記憶體馬檢測。更多資訊,請參見記憶體馬防禦。 說明 PHP應用不支援該功能。 | |
常用配置 | 檢測超時時間 | 攻擊檢測的最大時間,輸入範圍為1~60,000毫秒,預設設定為300毫秒。若攻擊檢測超過設定的時間,即使未完成檢測邏輯也會繼續執行原始商務邏輯。如無特殊原因,建議使用預設值。 |
源IP判斷方式 |
| |
運行時熔斷配置 | 開啟該功能後,當伺服器或進程的資源佔用率超過CPU或記憶體任一熔斷值時,RASP的即時防護、記憶體馬檢測(僅Java應用支援)和弱點檢測(僅Java應用支援)能力將自動停止。當伺服器或進程資源佔用率低於設定的所有熔斷值時,RASP的防護能力會自動回復。 該功能可以保障業務在高峰情況下穩定運行,預設為關閉狀態。如果您的應用為對效能敏感的計算型業務,可以開啟該功能。配置說明如下:
|
3.4 配置自動接入白名單(Java應用)
如果您的業務較為敏感不想接入應用防護,或者想對特定業務進程做灰階接入,您可以通過配置接入白名單,設定白名單規則定義需要接入應用防護的進程列表。僅命中白名單規則的進程會接入應用防護。未配置白名單規則時,資產中的所有進程會全部自動接入。
接入白名單的生效說明如下:
僅對0.9.4及以上的RASP探針版本生效。
如果在主機資產接入前配置了接入白名單,則自動接入時該白名單會生效;如果在主機資產接入後配置了接入白名單,已成功接入的進程需等待下次應用進程重啟後生效;對於接入失敗或者接入跳過的進程,接入白名單會在下次自動接入時生效。
以下步驟介紹如何配置接入白名單,如果無需配置可跳過該步驟。
在建立應用分組面板的自動接入頁簽,單擊接入白名单。
在白名單列表頁面接入白名单頁簽,單擊配置接入白名单。
在配置接入白名单面板,配置下述參數,並單擊確定。
配置項
說明
规则名称
輸入接入白名單規則的名稱。
加白模式
選擇白名單規則使用的加白模式。可選項:
cmdline:通過命令列參數匹配需接入的進程。該模式支援的匹配方式包括:
包含
包含多值之一
不包含
不包含任一值
环境变量:通過進程訪問的環境變數匹配需接入的進程。該模式支援的匹配方式為等於。
-D参数:通過Java程式啟動時設定的系統屬性匹配需接入的進程。該模式支援的匹配方式為等於。
配置樣本如下:
僅接入tomcat相關進程
加白模式選擇為cmdline。
匹配方式選擇為包含。
匹配內容選輸入tomcat。
接入非apache和test的進程
加白模式選擇為cmdline。
匹配方式選擇為不包含任一值。
匹配內容選輸入apache,test。
匹配方式
選擇規則的匹配方式。
匹配欄位
輸入規則的匹配欄位。
說明僅加白模式選擇环境变量或-D参数時,需要配置該參數。
匹配內容
輸入規則的匹配內容。
生效應用分組
選擇接入白名單規則生效的應用分組。
4. 驗證應用接入情況
Java應用
如果應用進程的PID展示在應用分組的已授權執行個體列表中,則說明該應用已正常接入應用防護。參考以下步驟可查看已接入的應用列表。
在應用防護頁面的应用配置頁簽,單擊目標應用分組已授權執行個體列下的數字。
在執行個體詳情面板,查看已接入的應用列表。
如果目標伺服器的應用進程PID在應用列表中,則表示該應用已成功接入應用防護。
PHP應用
方法一:在控制台查看。
請在Security Center控制台應用防護頁面應用配置頁簽下,單擊接入執行個體。在執行個體詳情面板中查看,是否存在相應PHP執行個體的資訊。
方法二:通過命令列檢查。
開啟伺服器終端,執行下述命令。如果輸出資訊中包含
alirasp
,則表示RASP已成功載入。php -m|grep alirasp
方法三:通過
phpinfo()
頁面檢查。在伺服器中建立一個 PHP 檔案(如
info.php
),內容如下:<?php phpinfo(); ?>
將該檔案放置在 Web 服務器的根目錄下(如
/var/www/html/
)。訪問該頁面(例如
http://your-server-ip/info.php
),並在輸出中尋找alirasp
相關資訊。如果存在alirasp
擴充資訊,則表示 RASP 已成功載入。
5. 管理防護策略組
為滿足不同業務情況下的安全需求,應用防護功能對攻擊檢測規則的能力進行分級,提供了防護策略組:業務優先組(預設寬鬆規則群組)、正常營運組(預設標準規則群組)和防護優先組(預設嚴格規則群組)。
預設防護策略組中的規則的檢測模式均相同,例如預設業務優先組(預設寬鬆規則群組)內所有攻擊規則的檢測模式均為寬鬆;您可以根據實際需要使用對應規則群組,或自訂規則組。
檢測模式說明
為了平衡不同業務情境下誤判率和攻擊防護強度,應用防護功能定義了多種檢測模式:寬鬆、標準和嚴格。這三種模式的防護能力從低到高逐級遞增,誤判率也是從低到高。
寬鬆:只覆蓋已知攻擊特徵,極少誤判。
標準(預設):覆蓋常見攻擊特徵,並具有部分泛化推理能力,適用於日常營運情境。
嚴格:支援識別更多隱形攻擊行為,適用於重保情境,但存在一定的誤判風險。
建立防護策略組
在應用防護頁面的应用配置頁簽,單擊防護策略組管理。
單擊建立防護策略組。
在建立防護策略組面板,輸入防護策略組名稱,選擇應用語言,並單擊檢測類型右側的選擇配置檢測類型。
在選擇檢測類型面板,選中需要的檢測類型,並設定檢測模式,選擇完成後,單擊確定。
例如,在已有的警示中,您發現SQL注入誤判較多,您可以將SQL注入檢測項的檢測模式修改為寬鬆。
單擊確定。
相關操作
授權數管理
查看應用防護剩餘授權數
防護一個應用進程執行個體會消耗一個授權數。在使用應用防護功能時,請確保您擁有充足的剩餘授權數。購買應用防護授權數後,您可以在應用防護頁面应用配置頁簽查看剩餘授權數。
如果剩餘授權數不足,即剩餘授權數為0時:
進行自動接入時,無法選擇主機資產進行接入。
說明如果在自動接入的過程中授權數消耗完,應用進程可正常接入,但是超出授權數部分的進程執行個體狀態為未授權。
使用手動接入方式可正常接入應用進程,但執行個體狀態為未授權。未授權狀態的執行個體沒有受到防護。
授權數不足時,建議您參考下文,擴充應用授權數。
擴充應用防護授權數
如果需要防護的應用執行個體數量大於剩餘授權數,您需要在應用防護頁面应用配置頁簽,單擊剩餘授權數右側的升級,前往相應頁面購買應用防護授權數。
修改應用分組的防護策略
您可以參考下述步驟修改應用分組的防護策略。
在應用防護頁面的应用配置頁簽,單擊目標應用分組操作列的防護策略。
在防護策略面板,在防护策略组下拉式清單中選擇需生效的防護策略組。
單擊確定。
關閉應用防護
關閉單個應用的防護(Java應用)
在應用防護頁面应用配置頁簽,單擊目標應用分組操作列的接入管理,在接入管理面板,根據您的應用接入方式參考以下說明卸載RASP探針:
自動接入(Security Center用戶端線上):在自動接入頁簽,選中需要卸載執行個體的伺服器,單擊批量關閉防護。或關閉應用防護列的開關,卸載該伺服器中的RASP探針。
重要如果不再需要防護指定伺服器,您可以在確保該伺服器的應用防護開關為關閉狀態時,刪除該伺服器。
在自動接入頁簽,單擊目標伺服器操作列的刪除,或選中多個伺服器後單擊大量刪除,在該應用分組下刪除伺服器。
自動接入(Security Center用戶端離線):Security Center用戶端離線時,無法通過控制台自動卸載RASP探針,您需要參考以下步驟手動卸載RASP探針。
在伺服器的終端或命令列介面中執行
crontab -e
。在定時工作清單中刪除應用防護相關任務。應用防護相關任務如下所示。
* * * * * bash -c /usr/local/aegis/rasp/apps/664dd403cd24364f9e******/attach/runJavaFinder.sh http://update-vpc.aegis.aliyuncs.com/rasp/plugin/v1/error/report aa97bdc587ac7ab37028506359****** 6901ad53-a454-4681-afdb-c894d2******
儲存cron定時任務檔案並退出。
使用編輯器
vi
或vim
,先按Esc
鍵確保你處於正常模式,然後輸入:wq
並斷行符號來儲存並退出。使用編輯器nano,按
Ctrl+O
來儲存更改,然後按Ctrl+X
退出。
在業務低峰時期重啟進程。
手動接入:如果需要為目標應用卸載RASP探針,您需要手動刪除在接入指南中添加的JVM參數,然後重啟相關應用,即可取消接入應用防護功能。
關閉單個應用的防護(PHP應用)
如果需要為目標應用卸載RASP探針,您需要刪除之前在接入指南中配置應用時添加的ini配置,刪除的內容範例如下所示:
[alirasp] extension=/alirasp.so alirasp.root_dir=
重啟您的應用,重啟後RASP防護即可關閉。
說明以下命令僅供參考。具體需要重啟的服務取決於實際環境中安裝的服務。
Nginx服務重啟命令
sudo systemctl restart nginx
Apache服務重啟命令
sudo systemctl restart apache2
或
systemctl restart httpd
關閉應用分組的防護
需要關閉某個應用分組下的所有應用防護時,您可以在應用防護頁面应用配置頁簽,單擊目標應用分組防護狀態列的表徵圖,將防護狀態調整為關閉狀態。
刪除應用分組
刪除應用分組後,對該分組下所有執行個體的防護都會失效。請您在確認無需使用該應用分組下的所有RASP探針時,再執行刪除操作。
在刪除應用分組前,您需要確認當前應用分組下不存在已授權執行個體,或自動接入中所有伺服器的應用防護開關均為關閉狀態。
在應用防護頁面的应用配置頁簽,單擊目標應用分組操作列的刪除。
查看探針版本
在應用防護頁面应用配置頁簽,單擊目標應用分組接入实例列的數字,查看已接入的執行個體列表。如果應用執行個體RASP版本列右側顯示表徵圖,代表該應用執行個體安裝的探針存在新版本,建議您通過重啟應用來自動更新探針版本。
查看執行個體狀態
在應用防護頁面应用配置頁簽,單擊目標應用分組接入实例列的數字,查看已接入的執行個體列表。
不同狀態執行個體的具體含義如下:
已授权:該執行個體已被正常防護。
未授權:由於應用防護授權數不足,該執行個體雖已成功接入但未受到防護。您可以單擊剩餘授權數右側的升級購買充足的應用防護授權數。
已授權(防護熔斷):該執行個體所在應用分組開啟了運行時熔斷配置,該執行個體的資源佔用率已滿足熔斷條件,應用防護已停止對該執行個體的防護,處於該狀態的執行個體會佔用授權數。當該執行個體的資源佔用率降低到所有熔斷條件下時,應用防護會重新開啟對該執行個體的防護,該執行個體狀態將變更為已授權。