Linux云服务器常用的登录方式是SSH,对于密码登录方式创建的云服务器,如何保证登录安全性呢?本文以CentOS 7.6为例,对SSH登录进行安全加固。
修改默认端口
1、通过SSH密码方式远程登录云服务器。
2、执行以下命令,修改SSH登录的默认端口,比如修改为“5000”。
vim /etc/ssh/sshd_config
按“i”进入编辑模式,在第17行,将注释符“#”删掉,修改为“Port 5000”。
图1 修改前
图2 修改后
3. 按“Esc”,输入:wq保存并退出。
下面是我被攻击时候,对方向我22端口,发起攻击的记录:
增加防火墙规则:开放指定端口
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”中将这些地址禁止。