跳过正文
  1. Posts/

Linux安全基线配置规范

·395 字·2 分钟·
Kubehan
作者
Kubehan
云原生知识栈:深度解析容器技术、Kubernetes、Istio、DevOps 实践、Prometheus 监控、Envoy 代理、Golang 开发及云原生架构与微服务趋势的专业博客

Linux安全基线配置规范

Linux安全基线配置规范
一、	设置密码修改最小间隔时间,限制密码更改过于频繁
加固建议
在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:
PASS_MIN_DAYS 7
需同时执行命令为root用户设置:
chage --mindays 7 root
二、	设置SSH空闲超时退出时间
设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险
编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3之间。
ClientAliveInterval 600
ClientAliveCountMax 2
三、	密码复杂度检查 
检查密码长度和密码是否使用多种字符类型
编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为9-32位,
把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。如:
minlen=10
minclass=3
四、	检查密码重用是否受限制 | 身份鉴别
强制用户不重用最近使用的密码,降低密码猜测攻击风险
在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 
这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。
五、	检查系统空密码账户 | 身份鉴别
检查系统空密码账户
为用户设置一个非空密码,或者执行`passwd -l <username>`锁定用户
六、	禁止SSH空密码用户登录 | SSH服务配置
禁止SSH空密码用户登录
编辑文件`/etc/ssh/sshd_config`,将PermitEmptyPasswords配置为no:
PermitEmptyPasswords no
七、	设置密码失效时间 | 身份鉴别
设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登陆方式(如密钥对)请忽略此项。
`使用非密码登陆方式如密钥对,请忽略此项。`在 `/etc/login.defs `中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:
PASS_MAX_DAYS 90
需同时执行命令设置root密码失效时间:
chage --maxdays 90 root
八、	确保密码到期警告天数为7或更多 | 身份鉴别
确保密码到期警告天数为7或更多
在 /etc/login.defs 中将 PASS_WARN_AGE 参数设置为7-14之间,建议为7:
PASS_WARN_AGE 7
同时执行命令使root用户设置生效:  
chage --warndays 7 root
九、	确保SSH MaxAuthTries设置为3到6之间 | SSH服务配置
设置较低的Max AuthTrimes参数将降低SSH服务器被暴力攻击成功的风险。
在/etc/ssh/sshd_config中取消MaxAuthTries注释符号#,设置最大密码尝试失败次数3-6,建议为4:
MaxAuthTries 4
十、	确保rsyslog服务已启用 | 安全审计
确保rsyslog服务已启用,记录日志用于审计
运行以下命令启用rsyslog服务:
systemctl enable rsyslog
systemctl start rsyslog


十一、	安全日志完备性要求
配置名称:安全日志完备性要求
配置要求:系统应配置完备日志记录,记录对与系统相关的安全事件。
操作指南:1、# cat /etc/syslog.conf查看是否有对应配置
          2、# cat /var/log/secure查看是否有对应配置
检查方法:1、cat /etc/syslog.conf确认有对应配置;
          2、查看/var/log/secure,应记录有需要的设备相关的安全事件。
配置方法:修改配置文件vi /etc/syslog.conf。
          配置如下类似语句:
          authpriv.*			/var/log/secure
          定义为需要保存的设备相关安全事件

十二、	确保SSH LogLevel设置为INFO | 服务配置
确保SSH LogLevel设置为INFO,记录登录和注销活动
编辑 /etc/ssh/sshd_config 文件以按如下方式设置参数(取消注释):
LogLevel INFO
十三、	访问控制配置文件的权限设置 | 文件权限
访问控制配置文件的权限设置
运行以下4条命令:
chown root:root /etc/hosts.allow 
chown root:root /etc/hosts.deny 
chmod 644 /etc/hosts.deny
chmod 644 /etc/hosts.allow
十四、	开启地址空间布局随机化 | 入侵防范
它将进程的内存空间地址随机化来增大入侵者预测目的地址难度,从而降低进程被成功入侵的风险
在/etc/sysctl.conf或/etc/sysctl.d/*文件中设置以下参数:
`kernel.randomize_va_space = 2`
执行命令:
`sysctl -w kernel.randomize_va_space=2`
十五、	确保root是唯一的UID为0的帐户 | 身份鉴别
除root以外其他UID为0的用户都应该删除,或者为其分配新的UID
除root以外其他UID为0的用户(查看命令`cat /etc/passwd | awk -F: '($3 == 0) { print $1 }'|grep -v '^root$' `)都应该删除,或者为其分配新的UID
十六、	SSHD强制使用V2安全协议
描述:SSHD强制使用V2安全协议。
加固建议
vim /etc/ssh/sshd_config
Protocol 2



十七、	共享账号检查
配置名称:用户账号分配检查,避免共享账号存在
配置要求:
1、系统需按照实际用户分配账号;          
2、避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享。
参考配置操作:cat /etc/passwd查看当前所有用户的情况;
检查方法:命令cat /etc/passwd查看当前所有用户的信息,与管理员确认是否有共享账号情况存在。
配置方法:如需建立用户,参考如下:          #useradd username  #创建账号          #passwd username   #设置密码
          使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。
适用版本:Linux Redhat AS 3、Linux Redhat AS 4
十八、	多余账户锁定策略
配置名称:多余账户锁定策略
配置要求:应锁定与设备运行、维护等工作无关的账号。
操作指南:参考配置操作:
          查看锁定用户:
          # cat /etc/password,查看哪些账户的shell域中为nologin;
检查方法:人工检查:
          	# cat /etc/password后查看多余账户的shell域为nologin为符合;
          BVS基线检查:
          	多余账户处于锁定状态为符合。
配置方法:锁定用户:
        修改/etc/password文件,将需要锁定的用户的shell域设为nologin;
        或通过#passwd –l username锁定账户;
        只有具备超级用户权限的使用者方可使用#passwd –l username锁定用户,用#passwd –d username解锁后原有密码失效,登录需输入新密码。
        补充操作说明:
        一般情况下,需要锁定的用户:lp,nuucp,hpdb,www,demon
适用版本:Linux Redhat AS 3、Linux Redhat AS 4
十九、	用户缺省权限控制
配置名称:用户缺省权限控制
配置要求:控制用户缺省访问权限,当在创建新文件或目录时应屏蔽掉新文件或目录不应有的访问允许权限,防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制。
操作指南:
1、# cat /etc/bashrc  查看全局默认设置umask值          
2、查看具体用户home目录下bash_profile,具体用户的umask
检查方法:查看全局默认设置umask值为027或更小权限为符合(如有特许权限需求,可根据实际情况判断);
          查看具体用户的umask,本着最小权限的原则。
配置方法:参考配置操作:
          单独针对用户设置
          可修改用户home目录下的.bash_profile脚本文件,例如,可增加一条语句:umask 027;对于权限要求较严格的场合,建议设置为077。
          全局默认设置:
          默认通过全局脚本/etc/bashrc设置所有用户的默认umask值,修改脚本即可实现对用户默认umask值的全局性修改,
          通常建议将umask设置为027以上,对于权限要求较严格的场合,建议设置为077
二十、	SSH登录配置
配置名称:SSH登录配置
配置要求:系统应配置使用SSH等加密协议进行远程登录维护,并安全配置SSHD的设置。不使用TELENT进行远程登录维护。
操作指南:
1、查看SSH服务状态:# ps –elf|grep ssh;          
2、查看telnet服务状态:# ps –elf|grep telnet。
检查方法:
1、不能使用telnet进行远程维护;          
2、应使用SSH进行远程维护; 
3、SH配置要符合如下要求;
              Protocol  2 #使用ssh2版本
              X11Forwarding yes #允许窗口图形传输使用ssh加密
              IgnoreRhosts  yes#完全禁止SSHD使用.rhosts文件
              RhostsAuthentication no #不设置使用基于rhosts的安全验证
              RhostsRSAAuthentication no #不设置使用RSA算法的基于rhosts的安全验证
              HostbasedAuthentication no #不允许基于主机白名单方式认证
              PermitRootLogin no #不允许root登录
              PermitEmptyPasswords no #不允许空密码
              Banner /etc/motd  #设置ssh登录时显示的banner          
4、以上条件都满足为符合。
配置方法:1、参考配置操作
            编辑 sshd_config,添加相关设置,SSHD相关安全设置选项参考检查方法中的描述。  2、补充操作说明
查看SSH服务状态:# ps –elf|grep ssh
二十一、	关闭不必要的系统服务
配置名称:关闭不必要的系统服务
配置要求:根据每台机器的不同角色,关闭不需要的系统服务。操作指南中的服务项提供参考,根据服务器的角色和应用情况对启动项进行修改。
如无特殊需要,应关闭Sendmail、Telnet、Bind等服务。
操作指南:执行命令 #chkconfig --list,查看哪些服务开放。
检查方法:与管理员确认无用服务已关闭
配置方法:
1、参考配置操作
使用如下方式禁用不必要的服务#service <服务名> stop #chkconfig –level 35 off        
2、参考说明
        Linux/Unix系统服务中,部分服务存在较高安全风险,应当禁用,包括:
        “lpd”,此服务为行式打印机后台程序,用于假脱机打印工作的UNIX后台程序,此服务通常情况下不用,建议禁用;
        “telnet”,此服务采用明文传输数据,登陆信息容易被窃取,建议用ssh代替;
        “routed”,此服务为路由守候进程,使用动态RIP路由选择协议,建议禁用;
        “sendmail”,此服务为邮件服务守护进程,非邮件服务器应将其关闭;
        “Bluetooth”,此服务为蓝牙服务,如果不需要蓝牙服务时应关闭;
        “identd”,此服务为AUTH服务,在提供用户信息方面与finger类似,一般情况下该服务不是必须的,建议关闭;
        “xfs”,此服务为Linux中X Window的字体服务,关于该服务历史上出现过信息泄露和拒绝服务等漏洞,应以减少系统风险;
        R服务(“rlogin”、“rwho”、“rsh”、“rexec”),R服务设计上存在严重的安全缺陷,仅适用于封闭环境中信任主机之间便捷访问,
        其他场合下均必须禁用;
        基于inetd/xinetd的服务(daytime、chargen、echo等),此类服务建议禁用。
二十二、	禁止Control-Alt-Delete键盘关闭命令
配置名称:禁止Control-Alt-Delete键盘关闭命令
配置要求:应禁止使用Control-Alt-Delete组合键重启服务器,防止误操作
操作指南:命令cat /etc/inittab,查看配置
检查方法:/etc/inittab 中应有:“#ca::ctrlaltdel:/sbin/shutdown -t3 -r now”配置为符合。
配置方法:1、参考配置操作
            在“/etc/inittab” 文件中注释掉下面这行(使用#): ca::ctrlaltdel:/sbin/shutdown -t3 -r now  
            改为: #ca::ctrlaltdel:/sbin/shutdown -t3 -r now  
            为了使此改动生效,输入下面这个命令: # /sbin/init q        2、补充说明
            禁止ctl-alt-del使得在控制台直接按ctl-alt-del不能重新启动计算机。