
# 制作Linux空壳镜像
#### 镜像准备
Linux镜像可在现网公共镜像基础上进行修改。
选择Linux公共镜像，将镜像直接下发为虚拟机即可，注意密码设置符合要求的密码。（由于软件python脚本使用python3版本编写，镜像需包含python3版本，若不包含，需手动安装）。
#### 脚本准备
请参考[制作代理镜像脚本](https://support.huaweicloud.com/bestpractice-sms/sms3_35_0003.html)获取代理镜像脚本。
#### 修改镜像
1. 安装必要的组件。 
   安装python依赖包 （如下只是示例，请安装最新推荐的python版本）。
   ```
   yum install python36
   ln -s /usr/bin/python36 /usr/bin/python3
   yum install python36-setuptools
   wget https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz
   tar xvf pip-10.0.1.tar.gz
   cd pip-10.0.1
   python3 setup.py install
   pip3 install requests
   ```
   
   
2. 修改/etc/rc.local文件。 
   ```
   ln -s /etc/rc.d/rc.local /etc/rc.local     #公共镜像里面，这两个文件可能并不是链接关系，导致启动的时候没有执行
   chmod 766 /etc/rc.d/rc.local
   ```
   
   
3. 安装系统基本组件。 
   ```
   yum install expect
   yum install lvm2
   yum install dosfstools      #支持mkfs.vfat
   rpm -ivh grub-0.97-99.el6.x86_64.rpm     #下载地址: 需要去下载（注意：只有grub1迁移才需要该版本）
   ```
   
   
4. 修改/etc/mke2fs.conf。 
   删除ext4配置项中的"64bit"，否则安装grub1到ext4文件系统时会失败。
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670627125.png "点击放大")
   
   
5. 修改分区的UUID。 
   1. 将虚拟机磁盘卸载，并挂载到另一个虚拟机上。
   
   2. 利用tune2fs --U 修改分区的UUID #uuidgen可以随机生成UUID。
      1. 在虚拟机内部执行blkid查询各个分区的uuid。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670507137.png "点击放大")
         
      
      2. 执行命令uuidgen重新生成一个uuid。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001622347242.png "点击放大")
         
      
      3. 输入命令 tune2fs -U \<new_UUID\> \<device\>或 xfs_admin -U \<new_UUID\> \<device\> 。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001670387257.png "点击放大")
         
      
      4. 修改数据盘（代理镜像的磁盘）中/etc/fstab 和 /boot/grub2/grub.cfg中的UUID 由于磁盘uuid发生改变，/etc/fstab和/boot/grub2/grub.cfg中相对应的uuid也要进行修改。否则代理镜像磁盘无法启动。
         
      
      5. 将代理镜像的磁盘，挂回到原虚拟机，测试系统是否正常。
       
   
   
   
   
6. 拷贝smsMetadataAgent至镜像虚拟机，参考[制作代理镜像脚本](https://support.huaweicloud.com/bestpractice-sms/sms3_35_0003.html)，设置开机自启动脚本。
7. 修改sshd配置文件，将密码登录禁用。
8. 残留清理。确认 /data目录不存在， 确认/root下没有sms日志文件， 确认/etc/ssh下没有证书残余。
 
#### 安全加固（可选）
1. 修改sshd_config文件。 
   ```
   MaxAuthTries 6
   LoginGraceTime 60
   PasswordAuthentication no
   ```
   
   
2. 禁用history。 
   1. 打开终端，输入以下命令
      ```
      sudo nano ~/.bashrc
      ```
      
   
   2. 在文件末尾添加以下内容
      ```
      unset HISTFILE
      ```
      
   
   3. 保存并退出后输入以下命令生效
      ```
      source ~/.bashrc
      ```
      
   
   
   
   
3. 防止暴力破解。 
   可以在/etc/pam.d/password-auth中设置，HCE系统中默认设置为
   ```
   auth sufficient pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=60
   ```
   表示使用pam_faillocl模块，如果登录失败3次，即使是root用户，锁定30s。
   
   
4. 设置密码复杂度。 
   在/etc/pam.d/system-auth中找到password requisite pam_pwquality.so try_first_pass\~\~\~\~，在后面添加enforce_for_root minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1，如下：
   ```
   password requisite pam_pwquality.so try_first_pass local_users_only enforce_for_root minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
   ```
   
   
5. 修改umask。umask是一个用于设置文件和目录默认权限的命令，umask中的值需要修改成027。 
   1. 打开终端并输入以下命令打开.bashrc文件
      ```
      nano ~/.bashrc
      ```
      
   
   2. 在文件的末尾添加
      ```
      umask 027
      ```
      
   
   3. 保存并关闭文件，然后输入以下命令使更改生效。
      ```
      source ~/.bashrc
      ```
      
   
   
   
   
6. 删除系统残留工具，系统残留工具会增加系统的攻击面，并误导安全软件。 
   在操作系统中查看是否存在如下应用（包括但不限于）：
   - tcpdump，sniffer，wireshark，Netcat，基于winPcap开发的其他嗅探工具等。
   
   - gdb，strace，readelf，cpp，gcc，dexdump，mirror，JDK等开发和调试工具及其他仅在调试阶段使用的自研工具或脚本。
   
   
   
   
 
#### 生成镜像ID
1. 在登录华为云控制台，查找IMS服务，进入IMS服务。
2. 选择创建镜像。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001751386261.png "点击放大")
   
   
3. 选择需要代理镜像的ECS，创建系统盘镜像。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001703387022.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001703546494.png "点击放大")
   
   
4. 获取镜像id。 
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000001751266429.png "点击放大")
   
   
 
