Linux安全加固
1. 修改远程登录端口
SSH攻击扫描端口的时候通常会扫描固定端口,扫描到之后才会进行暴力攻击,修改远程端口,会降低SSH服务被扫描到的可能性。配置过程如下:
(1) 编辑ssh服务配置文件/etc/ssh/sshd_config,将其端口修改为自己想要的端口,保存退出。注意修改端口后,对应的安全组、防火墙规则也需修改端口。
(2) 重启ssh服务:若为centos 7 操作系统,则使用systemctl restart sshd(若为centos 6 操作系统,则使用service sshd restart)
(3) 测试远程链接:默认22端口链接失败,修改后的1212端口链接成功。
2. 禁用root登陆
禁用root账号直接登录,使用普通账号登录,普通账号登陆之后su到root账号,降低被恶意扫描或者暴力登录的概率。配置过程如下:
(1) 创建普通用户。
(2) 编辑sudo配置文件/etc/sudoers,为用户添加sudo权限。
(3) 编辑ssh服务配置文件/etc/ssh/sshd_config,修改PermitRootLogin属性,将yes修改为no;
(4) 重启云主机,测试远程链接:test用户登陆成功,root用户登陆失败。
3. 配置指定地址登陆
建议使用安全组进行限制,安全组配置如下:
(1) 打开移动云控制台,在左侧导航栏中选择:弹性计算>安全组。
(2) 创建安全组:点击创建选项,在弹出的界面中输入安全组名称及描述,单击确定创建完成。
(3) 规则管理:点击对应安全组的“管理规则”选项,可对安全组规则进行管理,限定IP访问云主机。
(4) 测试远程链接:安全组规则允许的IP地址登陆成功,不允许IP地址登陆失败。
4. 禁用密码登陆,使用密钥登陆
防止无密钥人员恶意登陆及网络暴力攻击(建议在订购云主机时安全一项中选择密钥)。配置过程如下:
(1) 编辑ssh服务配置文件/etc/ssh/sshd_config,将PasswordAuthentication属性修改为no,保存退出。
(2) 测试远程链接:只能使用密钥登陆。
(3) 密钥配置过程如下:
a) 执行ssh-keygen命令,生成秘钥。
b) 执行完成后在用户家目录下的.ssh目录会生成公钥及私钥。
c) 将公钥内容导入authorized_keys文件中,并将私钥拷贝到用来登陆服务器的终端。
d) 测试远程链接:密钥登陆成功。
5. 设置密码复杂性要求
使用复杂密码,使暴力破解更加困难。配置过程如下:
(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
说明:
retry:尝试次数
difok:最少不同字符
minlen:最小密码长度
ucredit:最少大写字母
lcredit:最少小写字母
dcredit:最少数字
dictpath:密码字典
(2) 验证测试:root用户不受此配置限制,普通用户则会被要求修改密码。
6. 设置密码过期时间
定期对密码进行修改,避免密码泄露,增加使用的安全性。
(1) 使用chage命令。
命令说明:
-M:设置密码有效的最大天数
-m:设置可更改密码的最小天数,为0表示任何时候都可以修改
-W:密码过期前,提前收到警告信息的天数。
7. 设置禁ping
一般攻击者会批量ping地址来寻找存活的主机,禁止ping可以让别人找不到您的云主机,从而降低被攻击的风险。
(1) 编辑sysctl服务配置文件/etc/sysctl.conf,添加一条规则:net.ipv4.icmp_echo_ignore_all=1
说明:1表示禁ping,0表示允许ping,默认为0。
此方法修改为永久生效,如想临时生效可使用如下命令:echo 1/0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
(2) 执行sysctl -p命令使配置生效。
(3) ping测试:无法ping通主机。
8. 其他安全建议
-
如有购置1台以上的服务器,可以通过一个或两个(其中一个备用)入口访问,其余服务器使用内网互通登录。
-
关注操作系统补丁发布、测试、更新。
-
应用侧安全加固。
-
建议安装云主机防护类的安全软件。
9. 补充解决方案
如由于暴力攻击导致云主机被锁定的,可通过移动云门户-控制台-VNC登录云主机。参考如下命令进行操作:
-
查看某一用户登录错误次数:pam_tally2 --user username
-
清空某一用户登录错误次数:pam_tally2 --user username --reset
-
清空root用户登录错误次数,进行解锁:pam_tally2 -user root -reset
备注:如非pam_tally2模块,可尝试通过pam_tally模块或者其他适配系统模块进行操作。