文档首页/ 弹性云服务器 ECS/ 最佳实践/ 云服务器安全/ Linux云服务器SSH登录的安全加固
更新时间:2024-10-29 GMT+08:00
分享

Linux云服务器SSH登录的安全加固

Linux云服务器常用的登录方式是SSH,对于密码登录方式创建的云服务器,如何保证登录安全性呢?本文以CentOS 7.6为例,对SSH登录进行安全加固。

表1 弹性云服务器详细信息

参数

取值

名称

ecs-f5a2

操作系统

CentOS 7.6 64bit

弹性公网IP

119.3.xxx.x

登录方式

密码

修改默认端口

  1. 通过SSH密码方式远程登录云服务器。
  2. 执行以下命令,修改SSH登录的默认端口,比如修改为“5000”。

    vim /etc/ssh/sshd_config

    按“i”进入编辑模式,在第17行,将注释符“#”删掉,修改为“Port 5000”。

    图1 修改前
    图2 修改后
  3. 按“Esc”,输入:wq保存并退出。

增加防火墙规则:开放指定端口

CentOS 7系列操作系统的默认防火墙是fireware,而不是iptables。因此,如果系统是默认防火墙,则不需要执行本节操作;如果安装过iptables,则要参考本节指导开放SSH登录的5000端口。

  1. 执行以下命令,检查是否安装了iptables。

    service iptables status

    • 如果提示如下类似信息,表示未安装iptables,跳过本节,继续添加安全组规则操作。

    • 如果提示如下类似信息,表示安装了iptables,并且为“active”状态。继续执行步骤2

  2. 执行以下命令增加iptables规则,开放5000端口。

    iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT

  3. 执行以下命令查看iptables现有规则是否已包含5000端口。

    iptables -L -n

添加安全组规则

安全组中的入方向规则默认开启了22端口,当云服务器的SSH登录端口修改为5000时,需要为安全组新加一条规则。

  1. 登录管理控制台。
  2. 选择“计算 > 弹性云服务器”,进入云服务器控制台。
  3. 单击云服务器名称“ecs-f5a2”进入详情页面。
  4. 选择“安全组”页签,单击展开安全组规则详情,单击列表右上角的“更改安全组规则”。
  5. 添加一条入方向规则,如图3所示。
    图3 安全组规则

关闭密码登录,采用密钥登录

在管理控制台创建一个密钥对,绑定至云服务器,使云服务器登录方式切换为密钥。

  1. 登录管理控制台。
  2. 选择“计算 > 弹性云服务器”,进入云服务器控制台。
  3. 参考创建密钥对创建一个密钥对,妥善保管好私钥文件。
  4. 选择“服务列表 > 安全 > 数据加密服务”,单击左侧导航中的“密钥对管理”。
  5. 选择“云服务器列表”页签,在“ecs-f5a2”所在行,单击操作列的“绑定”。按照图5进行配置,单击“确定”。

    关闭密码登录,请在绑定密钥对页面勾选“关闭密码登录方式。”或编辑“sshd_config”配置文件,禁止密码登录。

    图4 绑定密钥对
  6. 登录云服务器操作系统,编辑“sshd_config”配置文件,禁止密码登录。

    vim /etc/ssh/sshd_config

    按“i”进入编辑模式,在最后几行按下图进行配置。

    参数说明:

    • PermitRootLogin:是否允许root账户登录,配置为“yes”。
    • UseDNS:是否允许DNS解析,配置为“no”。
    • PasswordAuthentication:是否允许使用密码登录,配置为“no”。

    在步骤5中为云服务器绑定密钥对时,已勾选了“关闭密码登录方式”,此处的“PasswordAuthentication”必为“no”,只需验证即可。

    按“Esc”,输入:wq保存并退出。

  7. 完成后,重启sshd服务。

    systemctl restart sshd

  8. 通过Xshell或其他SSH客户端连接云服务器,密码登录会被限制(如图5所示,密码输入项置灰),则证明配置成功。
    图5 Xshell登录云服务器

编辑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”。

可以通过一些方法识别云服务器的安全风险,比如检查SSH状态,查看疑似恶意登录的IP,然后在“/etc/hosts.deny”中将这些地址禁止。

相关文档