SSH是远程登录Linux服务器的主要方式,但它也是黑客进行暴力破解和恶意攻击的主要入口之一。为了加强Linux云主机的SSH登录安全,您可以采用以下方式进行安全加固:
- 修改默认端口;
- 禁止root用户直接登录;
- 添加安全组规则;
- 采用密钥登录;
- 配置SSH登录限制。
我们以centos为例为大家介绍如何进行安全加固。
修改默认端口
- 远程登录弹性云主机。
- 打开 sshd 配置文件 /etc/ssh/sshd_config,可以使用编辑器打开该文件,例如使用 vi 命令:
vi /etc/ssh/sshd_config
- 找到以下代码行:
#Port 22
将该行代码的注释符号 # 去掉,并将 22 修改为想要设置的端口号,例如 2222:
Port 2222
- 按ESC键,输入:wq保存修改并退出编辑器。
- 重启 sshd 服务,使配置生效。可以使用以下命令重启 sshd 服务:
systemctl restart sshd
- 确认修改是否生效。可以使用以下命令检查 sshd 服务是否在新端口上监听:
netstat -tnl | grep 2222
如果输出类似于以下内容,则表示 sshd 服务已经在新端口 2222 上监听:
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN
- 完成以上步骤后,就成功将 CentOS 系统的 SSH 默认端口号修改为了 2222。注意,在修改 SSH 默认端口号之后,需要使用新的端口号来进行 SSH 连接,例如:
ssh username@hostname -p 2222
其中,username 和 hostname 分别是 SSH 登录的用户名和远程主机名或 IP 地址。
禁用root用户直接登录
Linux的默认管理员名即是root,只需要知道root密码即可直接登录SSH。禁止root从SSH直接登录可以提高服务器安全性。经过以下操作后即可实现。
- 新建用户
useradd test
- 配置密码
#使用passwd命令即可给相应帐户设置或修改密码。
passwd test
#根据图示,设置或修改密码需要填写两次,第二次为效验密码,输入完毕后请回车确认。
Changing password for user test.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
- 配置不允许root用户直接登录,修改相关文件
vi /etc/ssh/sshd_config
查找 #PermitRootLogin yes” 默认为132行
将“#”去掉,末尾“Yes”改为“No”
并:wq保存
- 重启SSHD服务
systemctl restart sshd
- 测试连接,可以看到,直接使用root 连接服务器 ssh会直接拒绝
添加安全组规则
安全组中的入方向规则默认开启了22端口,当云服务器的SSH登录端口修改为2222时,需要为安全组新加一条规则。
登录管理控制台。
- 选择“计算 > 弹性云主机”,进入云主机控制台。
- 单击云服务器名称进入详情页面。
- 选择“安全组”页签,单击展开安全组规则详情,单击列表右上角的“更改安全组规则”。
- 添加一条入方向规则。
采用密钥登录
密钥对登录比起密码登录更加安全,因此在创建弹性云主机时您可以选择密钥对登录的方式。
- 新建密钥对,或者选择已有的密钥对,并下载至本地。
- 创建云主机时,登录方式选择密钥对。
- 使用xshell登录弹性云主机
通过弹性公网IP,执行以下命令,SSH远程连接弹性云主机。
ssh 用户名@弹性公网IP
选择“Public Key”,并单击“用户密钥(K)”栏的“浏览”。
在“用户密钥”窗口中,单击“导入”。
选择本地保存的密钥文件,并单击“打开”。
单击“确定”,登录弹性云主机。
配置SSH登录限制
“/etc/hosts.allow”和“/etc/hosts.deny”是控制远程访问的文件,通过配置该文件可以允许或者拒绝某个IP或者IP段的客户访问Linux云服务器的某项服务。
比如SSH服务,通常只对管理员开放,那我们就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。
因为云主机需要在不同地点登录,建议编辑“/etc/hosts.allow”允许所有IP地址登录,这样不会影响正常使用。
vim /etc/hosts.allow
在最后一行增加“sshd:ALL”。
也可以通过一些方法识别云主机的安全风险,使用tail -f /var/log/secure打开SSH日志,查看疑似恶意登录的IP。
然后在“/etc/hosts.deny”中将这些地址禁止。