一、修改远程端口
SSH(Secure Shell,远程管理协议)攻击扫描端口的时候通常会扫描固定端口,扫描到之后才会进行暴力攻击,修改远程端口,会降低SSH(Secure Shell,远程管理协议)服务被扫描到的可能性。配置过程如下:
1. 登录云主机,编辑ssh服务配置文件/etc/ssh/sshd_config,将其端口修改为自己想要的端口(1212端口为例),保存退出。
2. 执行以下命令,重启ssh服务。
systemctl restart sshd
3. 测试远程连接:默认22端口连接失败,修改后的1212端口连接成功。
二、禁用root登录
禁用root账号直接登录,使用普通账号登录,普通账号登录之后su到root账号,降低被恶意扫描或者暴力登录的概率。配置过程如下:
1. 创建普通用户。
2. 编辑sudo配置文件/etc/sudoers,为用户添加sudo权限。由于/etc/sudoers是一个只读文件,无法通过vim等命令对它直接编辑,可使用visudo命令编辑文件。
3. 编辑ssh服务配置文件/etc/ssh/sshd_config,修改PermitRootLogin属性,将yes修改为no。
4. 重启云主机,测试远程连接:test用户登录成功,root用户登录失败。
三、配置指定地址登录
建议使用安全组进行限制,安全组配置如下:
1. 创建安全组:点击【创建】选项,在弹出的界面中输入安全组名称及描述,单击【确定】创建完成。
2. 规则管理:点击对应安全组的【管理规则】选项,可对安全组规则进行管理。安全组介绍及管理操作说明见帮助中心:创建安全组规则。
3. 测试远程连接:安全组规则允许的IP地址登录成功,不允许IP地址登录失败。
四、禁用密码登录,使用密钥登录
防止无密钥人员恶意登录及网络暴力攻击(建议在订购云主机时安全一项中选择密钥)。配置过程如下:
1. 编辑ssh服务配置文件/etc/ssh/sshd_config,将PasswordAuthentication属性修改为no,保存并重启ssh服务。
2. 密钥配置过程如下:
a. 执行ssh-keygen命令,生成密钥。
b. 执行完成后在用户目录/home/用户名(root用户目录为/root)下的.ssh目录会生成公钥及私钥。
c. 将公钥内容导入authorized_keys文件中,并将私钥拷贝到用来登录服务器的终端。
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
d. 测试远程连接:密钥登录成功,使用密码登录失败。
五、设置密码复杂性要求
使用复杂密码,使暴力破解更加困难。配置过程如下:
1. 编辑配置文件/etc/pam.d/system-auth,添加一条规则。
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
difok:最少不同字符
minlen:最小密码长度
ucredit:最少大写字母
lcredit:最少小写字母
dcredit:最少数字
dictpath:密码字典
2. 验证测试:root用户不受此配置限制,普通用户则会被要求修改密码。
六、设置密码过期时间
定期对密码进行修改,避免密码泄露,增加使用的安全性。
使用chage命令。
-m:设置可更改密码的最小天数,为0表示任何时候都可以修改
-W:密码过期前,提前收到警告信息的天数。
如需了解更多参数请参考chage --help。
七、其他安全建议
- 如有购置1台以上的服务器,可以通过一个或两个(其中一个备用)入口访问,其余服务器使用内网互通登录。
- 关注操作系统补丁发布、测试、更新。
- 应用侧安全加固。
- 建议安装云主机防护类的安全软件。
- 如由于暴力攻击导致云主机被锁定的,可通过移动云门户-控制台-VNC登录云主机。参考如下命令进行操作:
- 查看某一用户登录错误次数:pam_tally2 --user username。
- 清空某一用户登录错误次数:pam_tally2 --user username --reset。
- 清空root用户登录错误次数,进行解锁:pam_tally2 --user root --reset。
- 安全加固为云安全中心插件,免费版提供系统漏洞检测、暴力破解检测、主机登录异常告警等基础安全功能。如在云安全中心进行升级或授权使用防勒索、防病毒等功能,会额外增加cpu消耗。