应用场景
随着混合云的发展,用户对于云上云下资源实现统一安全管理的需求也越发强烈。企业主机安全支持线下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 https://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/crontab
vi /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 'https://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.sh
x86 deb软件包镜像的命令:
echo -e "# for Liunx x86 Ubuntu Debian\n\ncurl -k -O 'https://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.sh
Arm rpm软件包镜像的命令:
echo -e "# for Liunx ARM CentOS EulerOS OpenSUSE Fedora UOS Kylin\n\ncurl -k -O 'https://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
.sh
Arm deb软件包镜像的命令:
echo -e "# for Liunx ARM Ubuntu Debian\n\ncurl -k -O 'https://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 https://`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控制台左侧导航栏,选择“资产管理 > 主机管理”,进入云服务器页面。
查看目标服务器已显示在服务器列表中,表示接入成功。