
# Linux云服务器SSH登录的安全加固
Linux云服务器常用的登录方式是SSH，对于密码登录方式创建的云服务器，如何保证登录安全性呢？本文以CentOS 7.6为例，对SSH登录进行安全加固。
表1弹性云服务器详细信息 
| 参数     | 取值               |
|:---|:---|
| 名称     | ecs-f5a2         |
| 操作系统   | CentOS 7.6 64bit |
| 弹性公网IP | 119.3.*xxx* .*x* |
| 登录方式   | 密码               |
   
#### 修改默认端口
1. 通过[SSH密码方式](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0017955633.html)远程登录云服务器。
2. 执行以下命令，修改SSH登录的默认端口，比如修改为"5000"。
   ```
   vim /etc/ssh/sshd_config
   ```
   按"i"进入编辑模式，在第17行，将注释符"#"删掉，修改为"Port 5000"。
   图1修改前   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474184.png "点击放大")
   图2修改后   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474185.png "点击放大") 
3. 按**Esc** 键，输入**:wq**保存并退出。
 
#### 增加防火墙规则：开放指定端口
CentOS 7系列操作系统的默认防火墙是firewalld，而不是iptables。因此，如果系统是默认防火墙，则不需要执行本节操作；如果安装过iptables，则要参考本节指导开放SSH登录的5000端口。
1. 执行以下命令，检查是否安装了iptables。
   ```
   service iptables status
   ```
   - 如果提示如下类似信息，表示未安装iptables，跳过本节，继续[添加安全组规则]操作。
     ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474186.png "点击放大")
     
   
   - 如果提示如下类似信息，表示安装了iptables，并且为"active"状态。继续执行步骤[2]。
     ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474187.png "点击放大")
     
    
2. 执行以下命令增加iptables规则，开放5000端口。
   ```
   iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT
   ```
   
3. 执行以下命令查看iptables现有规则是否已包含5000端口。
   ```
   iptables -L -n
   ```
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474188.png "点击放大")
   
 
 #### 添加安全组规则
安全组中的入方向规则默认开启了22端口，当云服务器的SSH登录端口修改为5000时，需要为安全组新加一条规则。
1. 登录[ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)，进入弹性云服务器列表页面。
2. 单击云服务器名称"ecs-f5a2"进入详情页面。
3. 选择"安全组"页签，单击待配置安全组规则右侧的"配置规则"。
   图3配置规则   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002146587458.png "点击放大") 
4. 在"入方向规则"页签，单击"添加规则"。
5. 添加一条入方向规则，如[图4]所示。
   图4安全组规则   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002181863757.png "点击放大") 
 
#### 关闭密码登录，采用密钥登录
在管理控制台创建一个密钥对，绑定至云服务器，使云服务器登录方式切换为密钥。
1. 参考[创建密钥对](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0014250631.html)创建一个密钥对，妥善保管好私钥文件。
2. 登录[DEW控制台](https://console.huaweicloud.com/dew/?#/dew/kms/keyList/customKey)，单击左侧导航中的"密钥对管理"。
3. 选择"云服务器列表"页签，在"ecs-f5a2"所在行，单击操作列的"绑定"。按照[图6]进行配置，单击"确定"。
   关闭密码登录，请在绑定密钥对页面勾选"关闭密码登录方式。"或编辑"sshd_config"配置文件，禁止密码登录。
   图5绑定密钥对   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002181802265.png "点击放大") 
4. 登录云服务器操作系统，编辑"sshd_config"配置文件，禁止密码登录。
   ```
   vim /etc/ssh/sshd_config
   ```
   按"i"进入编辑模式，在最后几行按下图进行配置。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474192.png "点击放大")
   参数说明：
   - PermitRootLogin：是否允许root账户登录，配置为"yes"。
   
   - UseDNS：是否允许DNS解析，配置为"no"。
   
   - PasswordAuthentication：是否允许使用密码登录，配置为"no"。
   
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   在步骤[3]中为云服务器绑定密钥对时，已勾选了"关闭密码登录方式"，此处的"PasswordAuthentication"必为"no"，只需验证即可。
   按**Esc** 键，输入**:wq**保存并退出。
   
5. 完成后，重启sshd服务。
   ```
   systemctl restart sshd
   ```
   
6. 通过Xshell或其他SSH客户端连接云服务器，密码登录会被限制（如[图6]所示，密码输入项置灰），则证明配置成功。
   图6Xshell登录云服务器   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474193.png "点击放大") 
 
#### 编辑hosts.allow和hosts.deny
"/etc/hosts.allow"和"/etc/hosts.deny"是控制远程访问的文件，通过配置该文件可以允许或者拒绝某个IP或者IP段的客户访问Linux云服务器的某项服务。
比如SSH服务，通常只对管理员开放，那就可以禁用不必要的IP，而只开放管理员可能使用到的IP段。
因为云服务器需要在不同地点登录，建议编辑"/etc/hosts.allow"允许所有IP地址登录，这样不会影响正常使用。
```
vim /etc/hosts.allow
```
在最后一行增加"sshd:ALL"。
![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0221474194.png "点击放大")
可以通过一些方法识别云服务器的安全风险，比如检查SSH状态，查看疑似恶意登录的IP，然后在"/etc/hosts.deny"中将这些地址禁止。
