應用場景
隨著混合云的發展,用戶對于云上云下資源實現統一安全管理的需求也越發強烈。企業主機安全支持線下IDC接入納管,用戶可以通過一個控制臺實現一致的主機安全防護策略,避免因為不同平臺安全水位不一致導致的攻擊風險。
方案架構
線下IDC通過云專線服務與云上VPC實現網絡互通,再通過云上彈性云服務器代理接入HSS,如下圖所示。
云專線(Direct Connect),用于搭建用戶本地數據中心與云VPC之間高速、低時延、穩定安全的專屬連接通道,充分利用云服務優勢的同時,繼續使用現有的IT設施,實現靈活一體,可伸縮的混合云計算環境。
彈性云服務器(Elastic Cloud Server),是一種可隨時自助獲取、可彈性伸縮的云服務器,可幫助您打造可靠、安全、靈活、高效的應用環境,確保服務持久穩定運行,提升運維效率。
資源規劃
本方案示例中涉及的資源如下:
| 資源 | 資源說明 | 數量 |
|---|---|---|
| 云專線(CT-CDA,Cloud Dedicated Access) | DC,作為連接第三方主機和云上資源的專屬通道。 | 1 |
| 彈性云主機(Elastic Cloud Server) | ECS,作為代理服務器,將線下IDC的請求轉發至HSS后臺。 | 1 |
操作流程
線下IDC通過專線和代理服務器接入HSS的流程如下:
創建專線連接,線下IDC如果不能訪問公網,需要創建專線連接云上VPC,實現網絡互通。
創建代理服務器,需要創建一臺云上服務器,作為代理服務器,連接線下IDC。
為代理服務器安裝Agent,為代理服務器安裝Agent,確保網絡的暢通,輔助配置nginx的參數。
為代理服務器安裝配置nginx,nginx負責將線下IDC的請求轉發至HSS后臺管理后臺。
通過代理服務器制作Agent安裝包或安裝命令,根據線下IDC操作系統類型制作對應的安裝命令(Linux)或安裝包(Windows)。
為線下IDC安裝Agent,為線下IDC安裝Agent,將線下IDC接入HSS實現統一管理。
實施步驟
創建專線連接
在不使用公網的情況下,線下IDC可以借助云專線服務,實現訪問云上VPC內的服務器。
使用云專線將線下IDC接入云上VPC的詳細操作請參見:添加VPC。
創建代理服務器
登錄云控制臺,申請彈性云服務器作為代理服務器,操作詳情請參見《彈性云主機用戶指南》。
代理服務器規格要求如下:
代理服務器的CPU架構需要選擇x86計算。
代理服務器的vCPUs需選擇4vCPUs或以上規格,內存需選擇8GiB或以上規格。
代理服務器的鏡像需選擇:可使用yum命令的Linux鏡像。
為代理服務器安裝Agent
登錄管理控制臺。
單擊管理控制臺左上角的
,選擇區域和項目。單擊頁面左上方的
,選擇“安全 > 企業主機安全 HSS”,進入企業主機安全頁面。
在左側導航欄選擇“安裝與配置 > 主機安裝與配置”,進入“主機安裝與配置”頁面。
選擇“Agent管理 > 未安裝主機”,進入“未安裝主機”頁面。
在目標服務器的“操作”列,單擊“安裝Agent”,彈出“安裝Agent”對話框。
選擇并填寫服務器驗證信息。
選擇服務器驗證模式:根據服務器驗證方式進行選擇,此處示例選擇“賬號密碼方式”。
允許以root權限直連:根據服務器是否允許以root直連決定是否勾選。此處示例“勾選”。
服務器root密碼:根據服務器實際信息進行填寫。
服務器登錄端口:根據服務器實際登錄端口進行填寫。此處示例“22”端口。
單擊“確定”,Agent開始安裝。
選擇“已安裝主機”頁面,篩選查看目標服務器Agent狀態。
Agent狀態顯示在線,表示Agent安裝成功。
為代理服務器安裝Nginx
登錄代理服務器
檢查yum源
檢查yum源是否有nginx軟件包,如果沒有nginx軟件包需完成yum源配置,并臨時綁定公網IP,待安裝結束之后再解綁公網IP。
遠程登錄代理服務器,執行以下命令檢查yum源中是否存在nginx包。
EulerOS、CentOS、Red Hat等支持rpm安裝軟件的OS:yum list nginx
Ubuntu、Debian等支持deb安裝軟件的OS:apt list nginx
安裝nginx
執行以下命令使用yum安裝nginx。
EulerOS、CentOS、Red Hat等支持rpm安裝軟件的OS:yum install -y nginx
Ubuntu、Debian等支持deb安裝軟件的OS:apt install –y nginx
b.查看nginx是否安裝成功。
EulerOS、CentOS、Red Hat等支持rpm安裝軟件的OS:自動執行安裝,出現下圖所示“Complete!”表示安裝成功。
Ubuntu、Debian等支持deb安裝軟件的OS:執行命令pkg –l nginx,查看回顯結果如下圖所示,表示安裝成功。
配置Nginx
執行以下命令進入nginx目錄:
cd /etc/nginx/執行以下命令完成證書自簽:
openssl req -new -x509 -nodes -out server.pem -keyout server.key-days 36500,命令執行后需填寫證書相關信息,自定義填寫即可。
執行以下操作修改nginx.conf。
依次執行以下命令修改nginx.conf:
rm -f nginx.conf;vi nginx.conf按“i”鍵進入編輯模式,并將以下內容復制粘貼到nginx.conf中。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # for more information. include /etc/nginx/conf.d/*.conf; upstream backend_hss { server ADDR:10180; } server { listen 10180; server_name ADDR; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; ssl on; ssl_protocols TLSv1.2; ssl_certificate "server.pem"; ssl_certificate_key "server.key"; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_prefer_server_ciphers on; location / { limit_except GET POST PUT { deny all; } proxy_set_header Host ADDR; proxy_pass //backend_hss; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }可選: 粘貼完成后,按Esc鍵,輸入以下命令,按回車鍵退出,完成配置。:wq!
執行以下命令自動替換nginx.conf中的地址。
sed -i "s#ADDR#`cat /usr/local/hostguard/conf/connect.conf | grep master_address | cut -d '=' -f 2 | cut -d ':' -f 1`#g" nginx.conf
執行以下操作,創建nginx的監控腳本。創建完成后,每分鐘定時檢測nginx運行狀態
依次執行以下命令,創建nginx的監控腳本。
echo '*/1 * * * * root sh /etc/nginx/nginx_monitor.sh' >> /etc/crontabvi /etc/nginx/nginx_monitor.sh將以下內容復制粘貼到nginx_monitor.sh中。
#!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl start nginx.service fi粘貼完成后,按Esc鍵,輸入以下命令,按回車鍵退出,完成配置。:wq!
等待1分鐘后,執行以下命令查看nginx進程是否已經啟動。
ps -ef | grep nginx
界面回顯如下圖所示,表示nginx進程已啟動,繼續執行通過代理服務器制作Agent安裝包或安裝命令。
通過代理服務器制作Agent安裝命令(Linux)
登錄代理服務器
執行以下命令進入tmp目錄:
cd /tmp依次執行以下命令查看private_ip.conf中的IP是否為實際可用IP。
echo `hostname -I` > private_ip.conf cat private_ip.conf確認IP可用后,依次執行以下操作制作安裝命令。
x86 rpm軟件包鏡像的命令:
echo -e "# for Liunx x86 CentOS EulerOS OpenSUSE Fedora\n\ncurl -k -O '//private_ip:10180/package/agent/linux/x86/hostguard.x86_64.rpm' && echo 'MASTER_IP=private_ip:10180' > hostguard_setup_config.conf && echo 'SLAVE_IP=private_ip:10180' >> hostguard_setup_config.conf && echo 'ORG_ID=project_id' >> hostguard_setup_config.conf && rpm -ivh hostguard.x86_64.rpm && rm -fhostguard_setup_config.conf && rm -f hostguard*.rpm" > x86_rpm_install.shx86 deb軟件包鏡像的命令:
echo -e "# for Liunx x86 Ubuntu Debian\n\ncurl -k -O '//private_ip:10180/package/agent/linux/x86/hostguard.x86_64.deb' && echo 'MASTER_IP=private_ip:10180' > hostguard_setup_config.conf && echo 'SLAVE_IP=private_ip:10180' >> hostguard_setup_config.conf && echo 'ORG_ID=project_id' >> hostguard_setup_config.conf && dpkg -i hostguard.x86_64.deb && rm -fhostguard_setup_config.conf && rm -f hostguard*.deb" > x86_deb_install.shArm rpm軟件包鏡像的命令:
echo -e "# for Liunx ARM CentOS EulerOS OpenSUSE Fedora UOS Kylin\n\ncurl -k -O '//private_ip:10180/package/agent/linux/arm/hostguard.aarch64.rpm' && echo 'MASTER_IP=private_ip:10180' > hostguard_setup_config.conf && echo 'SLAVE_IP=private_ip:10180' >> hostguard_setup_config.conf && echo 'ORG_ID=project_id' >> hostguard_setup_config.conf && rpm -ivh hostguard.aarch64.rpm && rm -fhostguard_setup_config.conf && rm -f hostguard*.rpm" > arm_rpm_install.shArm deb軟件包鏡像的命令:
echo -e "# for Liunx ARM Ubuntu Debian\n\ncurl -k -O '//private_ip:10180/package/agent/linux/arm/hostguard.aarch64.deb' && echo 'MASTER_IP=private_ip:10180' > hostguard_setup_config.conf && echo 'SLAVE_IP=private_ip:10180' >> hostguard_setup_config.conf && echo 'ORG_ID=project_id' >> hostguard_setup_config.conf && dpkg -i hostguard.aarch64.deb && rm -fhostguard_setup_config.conf && rm -f hostguard*.deb" > arm_deb_install.sh替換可用IP
sed -i "s#private_ip#`cat private_ip.conf`#g" *install.sh && sed -i "s#project_id#`cat /usr/local/hostguard/run/metadata.conf | grep -v enterprise_project_id | grep project_id | cut -d ":" -f 2 | cut -d " " -f 2`#g" *install.sh說明
上述5條命令需全部執行完成,最后一條“替換為可用IP”的命令必須執行且必須最后執行。
x86_rpm_install.sh中的安裝命令適用于x86架構,rpm軟件包管理的鏡像,如CentOS、EulerOS、OpenSUSE、Fedora。
x86_deb_install.sh中的安裝命令適用于x86架構,deb軟件包管理的鏡像,如Ubuntu、Debian。
arm_rpm_install.sh中的安裝命令適用于arm架構,rpm軟件包管理的鏡像,如CentOS、EulerOS、OpenSUSE、Fedora、UOS、Kylin。
arm_deb_install.sh中的安裝命令適用于arm架構,deb軟件包管理的鏡像,如Ubuntu、Debian。
查看生成的命令,生成的目標命令將用于Linux服務器Agent的安裝使用。
通過代理服務器制作Agent安裝包(Windows)
執行如下命令進入tmp目錄:
cd /tmp依次執行以下命令,制作Windows的Agent安裝壓縮包。
curl -k -O //`cat
private_ip.conf`:10180/package/agent/windows/hostguard_setup.exe && echo '[system]' >
hostguard_setup_config.ini && echo 'master='`cat private_ip.conf`':10180' >>
hostguard_setup_config.ini && echo 'slave='`cat private_ip.conf`':10180' >>
hostguard_setup_config.ini && echo 'orgid='`cat
/usr/local/hostguard/run/metadata.conf | grep -v enterprise_project_id | grep project_id | cut -d ":" -f 2 | cut -d " " -f 2` >> hostguard_setup_config.ini
zip hostguard_setup.zip hostguard_setup.exe hostguard_setup_config.ini說明
如果代理服務器沒有zip命令,需先執行以下命令安裝zip插件。
yum install -y zip
查看生成的安裝包,將用于Windows服務器Agent的安裝使用。
為Linux服務器安裝Agent
復制通過代理服務器制作Agent安裝命令(Linux)制作的Linux安裝命令。
使用Root賬號登錄目標Linux服務器,粘貼并執行Linux安裝命令,界面回顯如下圖所示,表示Agent安裝完成。
等待約10分鐘后,在HSS控制臺左側導航欄,選擇“資產管理 > 主機管理”,進入云服務器頁面。
查看目標服務器已顯示在服務器列表中,表示接入成功。
為Windows服務器安裝Agent
將通過代理服務器制作Agent安裝包(Windows)制作的Windows安裝包,拷貝到本地PC機。
將安裝包上傳到需要安裝Agent的目標Windows服務器。
使用Administrator賬號登錄服務器。
解壓安裝包,雙擊“hostguard_setup.exe”,根據安裝向導安裝Agent。
說明
生成的zip安裝包拷貝到本地后一定要進行解壓后再執行安裝,否則將無法安裝。
安裝完成后,在“Windows任務管理器”中查看到進程“HostGuard.exe”和“HostWatch.exe”,表示Agent安裝完成。
等待約10分鐘后,在HSS控制臺左側導航欄,選擇“資產管理 > 主機管理”,進入云服務器頁面。
查看目標服務器已顯示在服務器列表中,表示接入成功。