Linux云服务器SSH登录的安全加固
Linux云服务器常用的登录方式是SSH,对于密码登录方式创建的云服务器,如何保证登录安全性呢?本文以CentOS 7.6为例,对SSH登录进行安全加固。
参数 |
取值 |
---|---|
名称 |
ecs-f5a2 |
操作系统 |
CentOS 7.6 64bit |
弹性公网IP |
119.3.xxx.x |
登录方式 |
密码 |
修改默认端口
- 通过SSH密码方式远程登录云服务器。
- 执行以下命令,修改SSH登录的默认端口,比如修改为“5000”。
按“i”进入编辑模式,在第17行,将注释符“#”删掉,修改为“Port 5000”。
图1 修改前
图2 修改后
- 按“Esc”,输入:wq保存并退出。
增加防火墙规则:开放指定端口
CentOS 7系列操作系统的默认防火墙是fireware,而不是iptables。因此,如果系统是默认防火墙,则不需要执行本节操作;如果安装过iptables,则要参考本节指导开放SSH登录的5000端口。
添加安全组规则
安全组中的入方向规则默认开启了22端口,当云服务器的SSH登录端口修改为5000时,需要为安全组新加一条规则。
- 登录管理控制台。
- 选择“计算 > 弹性云服务器”,进入云服务器控制台。
- 单击云服务器名称“ecs-f5a2”进入详情页面。
- 选择“安全组”页签,单击展开安全组规则详情,单击列表右上角的“更改安全组规则”。
- 添加一条入方向规则,如图3所示。
关闭密码登录,采用密钥登录
在管理控制台创建一个密钥对,绑定至云服务器,使云服务器登录方式切换为密钥。
- 登录管理控制台。
- 选择“计算 > 弹性云服务器”,进入云服务器控制台。
- 参考创建密钥对创建一个密钥对,妥善保管好私钥文件。
- 选择“服务列表 > 安全 > 数据加密服务”,单击左侧导航中的“密钥对管理”。
- 选择“云服务器列表”页签,在“ecs-f5a2”所在行,单击操作列的“绑定”。按照图5进行配置,单击“确定”。
关闭密码登录,请在绑定密钥对页面勾选“关闭密码登录方式。”或编辑“sshd_config”配置文件,禁止密码登录。
图4 绑定密钥对
- 登录云服务器操作系统,编辑“sshd_config”配置文件,禁止密码登录。
按“i”进入编辑模式,在最后几行按下图进行配置。
参数说明:
- PermitRootLogin:是否允许root账户登录,配置为“yes”。
- UseDNS:是否允许DNS解析,配置为“no”。
- PasswordAuthentication:是否允许使用密码登录,配置为“no”。
在步骤5中为云服务器绑定密钥对时,已勾选了“关闭密码登录方式”,此处的“PasswordAuthentication”必为“no”,只需验证即可。
按“Esc”,输入:wq保存并退出。
- 完成后,重启sshd服务。
- 通过Xshell或其他SSH客户端连接云服务器,密码登录会被限制(如图5所示,密码输入项置灰),则证明配置成功。
编辑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”中将这些地址禁止。