开发者

Linux基线检查与安全加固方式

目录
  • 安全加固
    • linux安全加固
      • 账户管理
      • 服务管理
      • 权限管理
      • 日志管理
  • 总结

    安全加固

    Linux安全加固

    账户管理

    一、口令锁定策略

    检查操作步骤

    查看配置文件:

    more /etc/pam.d/password-auth

    查看是否存在如下内容:

    auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600

    (连续认证5次会HLZNIAf锁定账户,锁定300秒,root的话,5次失败,锁定600秒)

    基线符合性判定依据

    用户连续认证失败次数设置为5次即合规,否则不合规。

    安全加固方案

    参考配置操作

    1.执行备份

    cp -p /etc/pam.d/password-auth /etc/pam.d/password-auth_bak

    2.修改策略设置,编辑文件

    vim /etc/pam.d/password-auth

    增加以下内容

    auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600

    注意:unlowww.devze.comck_time和rowww.devze.comot_unlock_time单位为秒。

    Linux基线检查与安全加固方式

    验证成功:

    Linux基线检查与安全加固方式

    备注

    PAM通过提供一些动态链接库和一套统一的AP1,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向js系统中添加新的认证手段。

    root下可查看因为验证登录失败的账户

    pam_tally2 -u

    Linux基线检查与安全加固方式

    如果需要解锁的话,需要以root输入

    pam_tally2 -u baiyun -r
    二、口令生存期

    检查操作步骤

    查看文件:

    more /etc/login.defs

    检查如下参数值是否满足要求

    • PASS_MAX_DAYS用户的密码最长使用天数不大于90
    • PASS_WARN_AGE #用户的密码到期提前提醒天数为7

    基线符合性判定依据

    • PASS_MAX_DAYS不大于90
    • PASS_WARN_AGE等于7即合规,否则不合规

    安全加固方案

    参考配置操作

    1.执行备份:

    cp -p /etc/login.defs /etc/login.desfs_bak

    2.修改策略设置,编辑/etc/login.defs在文件中加入如下内容(存在的话修改,不存在则添加):

    PASS_MAX_DAYS 90
    PASS_WARN_AGE 7
    chage -M 90 -W 7 baiyun

    //修改已有用户的口令生存期和过期告警天数

    未加固前

    Linux基线检查与安全加固方式

    加固后

    Linux基线检查与安全加固方式

    三、口令复杂度

    检查操作步骤

    执行命令:

    grep -E '^minlen|^minclass' /etc/security/pwquality.conf

    查看是否有返回结果。

    基线符合性判定依据

    有返回结果且返回结果等于或者大于minlen = 8,minclass =3 即合规,

    否则不合规。

    安全加固方案

    1.执行备份:

    cp -p /etc/security/pwquality.conf /etc/security/pwquality.conf_bak

    2.执行命令:

    authconfig --passminlen=8 --passminclass=3 --update

    #至少包含数字、小写字母、大写字母、特殊字符中的三项,且密码长度>=8

    3、执行命令

    chage -d 0 username

    #强制指定的用户下次登录修改密码

    Linux基线检查与安全加固方式

    四、检查密码重用是否受限制

    检查操作步骤

    查看文件:

    cat /etc/pam.d/system-auth

    找到

    password sufficient pam_Unix.so 这行,检查未尾是否有 remember参数

    基线符合性判定依据

    有remember参数且参数的值大于等于5即合规,否则不合规。

    安全加固方案

    参考配置操作

    1.执行备份:

    cp -p /etc/pam.d/system-auth

    2.执行命令:

    vi /etc/pam.d/system-auth

    编辑该文件,找到password sufficient pam_unix.so这行在末尾添加remember参数他的值为5,原来的内容不用更改,只在末尾加remember=5即可,他表示禁止使用最近用过的5个密码(已使用过的密码会被保存在 /etc/security/opasswd下面)

    未加固前

    Linux基线检查与安全加固方式

    加固后

    Linux基线检查与安全加固方式

    五、检查是否存在除root之外UID为0的用户

    检查操作步骤

    执行命令:

    awk -F: '($3 == 0){ print $1}' /etc/passwd

    查看返回值。

    基线符合性性判定依据

    返回值包括“root”以外的条目,则低于安全要求

    安全加固方案

    参考配置操作

    1、执行备份:

    cp -p /etc/passwd cp -p /etc/shadow

    2、执行命令:

    userdel -r username

    删除返回值中root除外的其他用户。

    或者使用命令:

    usermod -u uid username 

    为他们分配新的UID

    六、禁止存在空密码的帐户

    检查操作步骤

    执行以下命令查看系统中是否存在空口令账号#

    awk -F: '( $2 ==""){ print $1} /etc/shadow

    基线符合性性判定依据

    执行命令后没有返回值即合规,否则不合规

    安全加固方案

    参考配置操作

    1、为帐户设置满足密码复杂度的密码

    #passwd username

    服务管理

    一、禁止SSH空密码用户登录

    检查操作步骤

    执行命令:

    more /etc/ssh/sshd_config 

    查看 PermitEmptyPasswords 配置情况

    基线符合性性判定依据

    PermitEmptyPasswords 的值设置为no即合规,否则不合规

    安全加固方案

    参考配置操作

    1、执行备份:

    cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

    2、执行命令:

    vi /etc/ssh/sshd_config

    找到 PermitEmptyPasswords 将其设置为no后保存并退出

    3、执行命令:

    systemctl restrat sshd

    重启服务使配置生效

    未配置前

    这个虽然是no,但是被注释掉了,不生效

    Linux基线检查与安全加固方式

    加固后

    Linux基线检查与安全加固方式

    二、SSH多次登录失败后锁定用户

    检查操作步骤

    执行命令:

    more /etc/pam.d/sshd

    查看是否存在

     auth required pam_tally2.sodeny=5 unlock_time=300 

    内容基线符合性性判定依据

    存在该行且 deny小于等于5,unlock_time大于等于300,否则不合规

    安全加固方案

    参考配置操作

    1、执行备份:

    cp -p /etc/pam.d/sshd /etc/pam.d/sshd bak

    2、执行命令:

    vi /etc/pam.d/sshd 

    在文件开头添加一行,内容为

     auth requiredpam_tally2.so deny=5 unlock time=300

    如要对root用户也进行限制,在刚添加的内容后继续添加:

    even deny_root=5 root_unlock time=1200

    重启生效

    systemctl restart sshd

    未加固

    Linux基线检查与安全加固方式

    加固后

    Linux基线检查与安全加固方式

    三、限制root用户远程登录

    检查操作步骤

    执行命令:

    more /etc/ssh/sshd_config 

    查看PermitRootLogin 参数的值

    基线符合性性判定依据

    PermitRootLogin参数值为no且该行没有被注释即合规,否则不合规

    安全加固方案

    参考配置操作

    1、执行备份:

    cp -p /etc/ssh/sshd_config /etc/ssh

    2、执行命令:

    vi /etc/ssh/sshd_config 

    找到 PermitRootLogin 将其后方的 yes改为 no 并删除前方的 # 取消该行的注释

    3、释执行命令:

    systemctl restart sshd

    重启服务使其生效

    未加固前

    Linux基线检查与安全加固方式

    加固后

    Linux基线检查与安全加固方式

    四、检查ssh使用的端口

    检查操作步骤

    执行命令:

    more /etc/ssn/sshd_config

    查看Port 参数的值

    基线符合性性判定依据

    Port参数值不是默认值 (22) 且该行没有被注即合规,否则不合规

    安全加固方案

    参考配置操作

    1、执行命令:

    vi /etc/ssh/sshd_config 

    找到 Port 将其后方的 22 改为其他端口号,然后删除前方的 # 取消该行的注释 (端口号最好挑10000-65535之间的端口号,10000以下容易被系统或一些特殊软件占用)

    2、执行命令:

    semanage port -a -t ssh_port_t -p tcp 22233

    修改后的端口号,将修改后的端口添加到SELinux开放给ssh使用的端口

    3、执行命令:

    firewall-cmd --zone=public --add-port=22233/tcp --permanent

    防火墙放行刚修改的 ssh 端口号

    4、执行命令:

    systemctl restart sshd;systemctl restart firewalld

    重启ssh和防火墙,使配置生效

    未加固

    Linux基线检查与安全加固方式

    加固后

    Linux基线检查与安全加固方式

    五、设置登录超时自动注销

    检查操作步骤

    执行命令:

    more /etc/profile 

    查看是否有export TMOUT=180

    基线符合性性判定依据

    存在export TMOUT且他的值小于等于180即合规,否则不合规

    安全加固方案

    参考配置操作

    1、执行备份 :

    cp - p /etc/profile /etc/profile_bak

    2、执行命令:

    vi /etc/profile

    在该文件末尾添加

    export TMOUT=180

    或者将原来的值修改为180

    注意=号前后不要有空格。

    权限管理

    一、检查默认umask值

    补充:

    umask 027是一种文件权限掩码,它用于控制新创建的文件和目录的默认权限。

    umask 027指定了在创建文件和目录时,文件权限将减去2个位的可写权限和一个位的可执行权限。

    也就是说,如果创建一个新文件,权限将是所有者权限为rw-r-----(所有者可读可写,组可读,其他用户没有任何权限),如果创建一个新目录,权限将是所有者权限为rwxr-x---(所有者可读可写可执行,组可读可执行,其他用户没有任何权限)。

    检查操作步骤

    执行命令:

    more /etc/profile 

    查看该文件末尾是否设置umask值

    基线符合性性判定依据

    /etc/profile文件末尾存在umask 027,则合规,否则为不合规。

    安全加固方案

    参考配置操作

    1、执行备份:

    cp -p /etc/profile /etc/profile_bak

    2、执行命令:

    vi /etc/profile

    编辑文件,在该文件末尾添加

    umask 027

    3、执行以下命令让配置生效:

    source /etc/profile
    二、检查重要目录和文件的权限

    检查操作步骤

    执行命令:

    ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/hosts.allow
    /etc/services /etc/ssh/sshd_config 

    查看文件权限

    基线符合性性判定依据

    • /etc/passwd文件的权限<=644
    • /etc/shadow文件的权限<=600
    • /etc/group文件的权限<=644
    • /etc/gshadow文件的权限<=600
    • /etc/hosts.deny文件的权限<=644
    • /etc/hosts.allow文件的权限<=644
    • /etc/services文件的权限<=644python
    • /etc/ssh/sshd_config文件的权限<=600

    以上条件同时满足则合规,否则不合规

    安全加固方案

    参考配置提作

    1、执行命令:

    ls -l /etc/passwd /etc/shadow /etc/group /etc/ashadow/etc/hosts.allow /etc/hostsallow /etc/services /etc/ssh/sshd_config

    查看文件权限

    2、对不符合要求的文件使用chmod命令修改权限,如

    chmod 644 /etc/passwd
    三、设置限制可以su为root的用户

    检查操作步骤

    执行命令:

    more /etc/pam.d/su

    找到

     auth required pam_wheel.souse_uid 

    查看该行是否存在且是否被注释

    基线符合性性判定依据

    auth required pam_wheel.so use_uid 

    存在且未被注释即合规,否则不合规

    安全加固方案

    参考配置操作

    执行备份:

    1、

    cp - p /etc/pam.d/su /etc/pam.d/su_bak

    2、执行命令:

    vi /etc/pam.d/su

    找到 auth required pam_wheel.souse_uid 删除该行前面的 # 使其生效,如果该行不存在则在文件末尾添加该行。

    3、将需要su为root的用户使用命令:

    usermod -G wheel username

    加入 wheel 组,该用户即可su为root用户。如果需要将某个用户移出wheel组,可使用命令:

    gpasswd -d username wheel

    日志管理

    一、检查rsyslog服务启用状况以及对登录事件的记录

    补充:

    • rsyslog是一个开源的系统日志服务,可用于Linux和Unix系统中收集、存储和处理系统日志。
    • rsyslog可以通过网络协议和文件系统接收来自各种设备和应用程序的日志信息,并将其输出到文件、数据库、远程日志服务器等不同的目标。

    检查操作步骤

    执行命令:

    more /etc/rsyslog.conf

    查看authpriv的值

    基线符合性性判定依据

    authpriv值为authpriv.* /var/log/secure即合规注:/var/log/secure为可变项,否则不合规

    安全加固方案

    参考配置操作

    1、执行备份:

    cp - p /etc/rsyslog.conf /etc/rsyslog.conf_bak

    2、执行命令:

    systemctl enable rsyslog

    添加开机自启动

    3、执行命令:

    systemctl start rsyslog

    启动服务

    4、执行命令:

    vi/etc/rsyslog.conf

    查看authpriv值 将其设置为 authpriv.*/var/log/secure#将authpirv 的任何级别的信息记录到/var/log/secure 文件中

    5、执行命令:

    systemctl restart rsyslog
    二、检查是否启用记录定时任务行为日志功能

    检查操作步骤

    执行命令:

    more /etc/rsyslog.conf 

    查看 cron 的值

    基线符合性判定依据

    corn值为cron.* 即合规,否则不合规注: var/log/cron为可变项

    安全加固方案

    参考配置操作

    1、执行备份:

    cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak

    2、执行命令 :

    vi /etc/rsyslog.conf

    查看 cron 的值,将其设置为cron.* /var/log/cron# 即将 cron 的任何级别的信息记录到 /ar/log/cron 文件中

    3、执行命令:

    systemctl restart rsyslog 

    重启 rsyslog 使配置生效

    合规

    Linux基线检查与安全加固方式

    三、查看SSH LogLevel设置是否为INFO

    补充:

    SSH LogLevel设置为INFO是用来指定在SSH连接建立并进行时记录的信息级别的。

    INFO级别记录大量有关连接的详细信息,包括身份验证,所使用的密钥,认证的结果等。

    这些信息对诊断问题和了解连接的详细情况非常有用,但可能会产生大量的日志。

    因此,在平时使用SSH时,通常将LogLevel设置为更低的级别(如ERROR或WARNING),以避免生成过多的日志,并且只在需要排除连接问题时将其调整为更高的级别。

    检查操作步骤

    执行命令:more vi /etc/ssh/sshd_config 找到 LogLevel 查看设置的级别是否为INFO

    基线符合性性判定依据

    LogLevel 的级别是INFO 且该行未被注释即合规,否则不合规

    安全加固方案

    参考配置操作

    1、进行备份

    cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak(log)

    2、执行命令:

    vi /etc/ssh/sshd_config 

    找到 LogLevel 将其设置为 INFO,如果该行被注释,i还应删掉该行前方的 #

    3、执行命令:

    systemctl restart sshd

    重启ssh服务使其生效

    四、是否将 /var/log/messages 文件设置为只可追加

    补充:

    `isattr`是一个Linux系统中的命令,用于检查指定文件或目录中是否包含扩展属性(extended attributes)。

    扩展属性是在Linux文件系统上添加的一种元数据形式,可以包含文件或目录的其他信息,例如访问控制列表和文件所有者。

    检查操作步骤

    执行命令:Isattr /var/log/messages 查看该文件属性第六位是否为a

    基线符合性性判定依据

    为a即合规,否则不合规

    安全加固方案

    参考配置操作

    执行命令:

    lsattr var/log/messages

    查看该文件属性第六位是否为a不为a则执行命令:

    chattr +a /var/log/messages

    将该文件的属性修改为只可追加

    未添加只可追加前

    Linux基线检查与安全加固方式

    设置只可追加后

    Linux基线检查与安全加固方式

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新运维

    运维排行榜