自学内容网 自学内容网

安全基线加固

  • 安全基线加固


  1. 定义:为了实现基本防护需求而制定的一系列基准;

  2. Windows && Linux 安全基线加固

    操作系统具体操作

    Windows

    账户认证

    基本要求对应操作
    对登录操作系统的用户进行身份标识和鉴别
    • 操作内容:检测开机登录时是否需要密码
    • 操作结果:杜绝空密码登录的情况
    管理缺省用户
    • 操作内容:重命名administrator,禁用guest账户
    • 操作步骤:net localgroup administrators 确认除 administrator 之外还存在哪些管理员账户
    口令要求具有复杂度并且会定期更换
    • 操作内容:提升口令复杂度,定期更换口令
    • 操作步骤:
      1. Win+R 中执行 gpedit.msc
      2. 计算机配置 - Windows设置 - 安全设置 - 账户策略 - 密码策略 - 密码必须符合复杂性要求 - 启用
      3. 同一页面下:密码最长使用期限,设置 < 90 天
    启用登录失败处理功能,限制非法登录次数
    • 操作内容:检测用户连续认证失败后是否有限制
    • 操作步骤:
      1. Win+R 中执行 gpedit.msc
      2. 计算机配置 - Windows设置 - 安全设置 - 账户策略 - 账户锁定策略
      3. 账户锁定阈值 ≤ 5,锁定时间 ≥ 5 分钟
    限制非管理员账户关闭计算机
    • 操作内容:检测用户连续认证失败后是否有限制
    • 操作步骤:
      1. Win+R 中执行 gpedit.msc
      2. 计算机配置 - Windows设置 - 安全设置 - 本地策略 - 用户权限分配 - 从远程系统强制关机    中只保留 administrator 组
    • 操作结果:除 administrator 组外用户均为关机权限

    日志

    基本要求对应操作

    配置日志功能对用户的登录情况进行记录

    (账户,登录状态,时间以及IP 地址)

    • 操作内容:审核登录
    • 操作步骤:
      1. Win+R 中执行 gpedit.msc
      2. 计算机配置 - Windows设置 - 安全设置 - 本地策略 - 审核策略 - 审核登录事件 - 勾选成功和失败
    • 操作结果:审核策略 登录和失败都勾选
    • 其他审核项
      基本要求测试内容预期要求
      审核对象访问启用Windows系统的审核对象访问"审核对象访问"设置为"成功" 和"失败"都要审核
      审核进程追踪启用Windows系统的审核进程追踪"审核进程追踪"设置为"失败"要审核
      审核目录服务器访问启用组Windows系统的审核目录服务访问"审核目录服务器访问"设置为"成功" 和"失败"都要审核
      审核特权使用启用Windows系统的审核特权使用"审核系统事件"设置为"成功" 和"失败"都要审核
      审核系统事件启用Windows系统的审核系统事件"审核特权使用"设置为"成功" 和"失败"都要审核
    • 特殊事件ID:
      事件ID
      登录
      事件ID
      登陆成功4624
      登录失败4625
      账户操作
      事件ID命令
      创建账户4720net user 新用户名 密码 /add
      启用账户4722net user 用户名 /active:yes
      重置账号密码4724net user 用户名 新密码
      删除账户4726net user 用户名 /delete
      成员到用户组操作
      全局
      事件ID命令
      添加用户成员到全局用户组4728net group "全局组名" 用户名 /add
      删除用户成员从全局用户组4729net group "全局组名" 用户名 /delete
      本地
      事件ID命令
      添加用户成员到本地用户组4732net localgroup "本地组名" 用户名 /add
      删除用户成员从本地用户组4733net localgroup "本地组名" 用户名 /delete
    配置日志文件大小
    • 目录:C:\Windows\System32\winevt\Logs
    • 操作内容:设置日志文件 ≥ 8192 KB
    •  操作步骤:
      1. Win+R 中 执行 control  或 eventvwr (直接打开)
      2. 控制面板 - 查看方式:小图标 - 管理工具 - 事件查看器 - Windows 日志 - 选择相应的日志 -属性 - 日志最大大小 ≥ 8192 KB
    • 操作结果:应用日志,系统日志,安全日志 (日志大小 ≥ 8192 KB)

    入侵防范与访问控制

    基本要求对应操作
    对共享文件进行权限限制
    • 操作内容:对共享文件夹的权限进行限制
    • 操作步骤:
      1. Win+R 中 执行 compmgmt.msc
      2. 计算机管理 -系统工具 - 共享文件夹 - 共享 - 选中查看 - 右击属性 - 共享权限 - 若包含Everyone 则将其删除
    • 操作结果:共享权限中不包含 Everyone
    修改远程桌面服务的默认端口
    • 操作内容:对远程桌面服务端口进行更改
    • 操作步骤:
      1. Win+R 中 执行 regedit
      2. 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp   中修改 PortNumber 为3389以外的 16 进制;
      3. 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp 中修改 PortNumber 为3389以外的 16 进制;
      4. 保存新值后,重启系统生效
    • 操作结果:RDP服务不再是3389端口
    禁止远程访问操作系统注册表路径和子路径
    • 操作内容:将 远程访问操作系统注册表路径和子路径 配置为空
    • 操作步骤:Win+R 中 执行 gpedit.msc
      1. 本地计算机策略 - 计算 机配置 - Windows 设置 - 安全设置 - 本地策略 - 安全选项 -  可 远程访 问的注册表路径和子路径 - 双击配置为空
    • 操作结果:禁止远程连接注册表
    安装终端防护软件
    • 操作内容:防范恶意代码
    • 操作步骤:使用正版授权的计算机病毒防护软件,及时更新病毒库;

    系统服务

    基本要求对应操作
    关闭非必要的系统服务
    • 操作内容:管理系统服务
    • 操作步骤:
      1. Win+R 中 执行 control
      2. 控制面板 - 查看方式:小图标 - 管理工具 - 计算机管理 - 服务和应用程序 - 查看并关闭服务
      3. 建议关闭的服务
        Error Reporting Service错误报告服务
        Computer browser浏览局域网计算机列表
        Print Spooler打印队列服务
        Remote Registry远程注册表操作
        Routing and Remote Access路由与远程访问
        shell hardware Detection为自动播放硬件事件提供通知
        telnet远程管理
        TCP/IP NetBIOS Helper允许客户端共享文件,打印机和登录到网络
    • 操作结果:关闭非必要的系统服务

    系统更新

    基本要求对应操作
    系统自动更新安全补丁
    • 操作内容:系统自动更新安全补丁
    • 操作步骤:开启系统自动更新功能,检查Windows 更新
    • 操作结果:安装关键和重要的系统补丁

    基线排查脚本

    以管理员权限运行 bulid_security_Strategy.bat   脚本

    Linux

    用户账号口令设置

    基本要求对应操作
    检查是否存在空密码账户
    • 操作步骤:awk -F: '($2==""){print$1}' /etc/shadow
    • 操作结果:不存在空口令账户(有输出则存在,无输出则不存在)
    检查密码策略
    • 操作步骤:vim /etc/login.defs
    • 检查参数
      参数说明参考值
      PASS_MAX_DAYS密码最长过期天数90
      PASS_MIN_DAYS密码最小过期天数80
      PASS_MIN_LEN密码最小长度8
      PASS_WARN_AGE密码过期警告天数7
    • 操作结果:密码设置符合策略安全
    限制 root 用户远程登录
    • 操作内容:关闭 root 用户远程登录
    • 操作步骤:
      1. 新建远程登录 ssh 用户 ,例:useradd user1 
      2. 设置密码: passwd user1 
      3. 密码:userpasswd
      4. 设置 sudo 权限: chmod u+w /etc/sudoers && vim /etc/sudoers
      5. 添加:user1 ALL=(ALL:ALL) ALL
      6. 恢复权限:chmod u-w /etc/sudoers
      7. 测试:su user1  执行:id
      8. 执行sudo vim /etc/ssh/sshd_config
      9. 找到 PermitRootLogin 删除前面的 #号,并改为 no
      10. 重启sshd 服务,执行 system restart sshdsystemctl restart ssh
    • 操作结果:root 用户 无法直接登录ssh,但可以以新用户身份登录ssh
    检查是否存在除root以外 UID 为0的用户
    • 操作步骤:awk -F: '($3==0){print$1}' /etc/passwd
    • 操作结果:保证 UID为0的只有 root 用户
    启用密钥登录,关闭密码登录
    • 操作内容:
    • 操作步骤:
      1. 生成密钥:sudo ssh-keygen 会提示文件路径,需更改下面的文件路径
      2. 配置 id_rsa.pub : cat /home/kali/.ssh/id_rsa.pub >> /home/kali/.ssh/authorized_keys
      3. 赋予生成文件读写权限:chmod 600 id_rsa
      4. 使用生成的文件登录:ssh 用户名@IP -i 生成文件 ,例:ssh user1@192.168.16.1 -i id_rsa
      5. 关闭密码登录: vim /etc/ssh/sshd_config    添加: PasswordAuthentication no
      6. 重启 SSH 服务:systemctl restart sshd , systemctl restart ssh
    • 操作结果:无法使用密码登录,必须使用 生成的文件进行登录(id_rsa)

    系统文件与访问控制

    基本要求对应操作
    用户连接安全性配置
    • 操作步骤:
      1. 检查.netrc文件 find / -name .netrc 2>/dev/null
      2. 检查.rhosts文件 find / -name .rhosts 2>/dev/null
    • 操作结果:系统中 无 .netrc.rhosts 文件
    用户 umask 安全配置
    • 操作步骤:检查是否包含umask值 cat /etc/profile /etc/csh.login /etc/csh.cshrc /etc/bashrc 2>/dev/null |grep umask
    • 操作结果:无 umask 值
    重要目录和文件的权限设置
    • 操作步骤:
      查找未授权的 SUID/SGID 文件
      • find / -perm -04000 2>/dev/null
      • find / -perm -02000 2>/dev/null
      查找任何人都有写权限的目录
      • find / -type d -perm -o+w 2>/dev/null
      检查隐藏的文件或目录
      • find / -xdev -name ". *" -print
      • find / -xdev -name ".. *" -print
    • 操作结果:
      1. 无未授权的suid /sgid 权限
      2. 无未授权的可写目录
      3. 无未授权的隐藏文件或目录
    系统 core dump 状态
    • 操作步骤:
      1. vim /etc/security/limits.conf
      2. 添加 * soft core 0 ,* hard core 0
    • 操作结果:关闭core dump

    linux日志审计

    基本要求对应操作
    查看 syslog 登录事件记录
    • 操作步骤:查看authpriv的值:more /etc/rsyslog.conf
    • 操作结果:对所有登录事件都有记录

    重要日志

    说明日志文件命令
    登录成功日志/var/log/wtmplast
    登录失败日志/varlog/btmplastb
    最后一次登录/var/log/lastloglastlog
    登录日志

    Centos/var/log/secure

    Debian/var/log/auth.log

    当前登录用户(时间,IP)/var/log/utmpw,who,users
    历史命令记录用户家目录下的 .bash_history 文件history

    中间件

    Apache 日志

    # 查看日志中最近访问主机的IP
    cat access.log | awk '{print $1}'
     
    # 显示访问次数前10的IP
    cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10
    
    # 显示指定时间后的日志(修改时间)
    cat access.log |awk '$4>="[1/Jan/2020:00:00:00"'
    
    # 查看某一时间内的 IP 连接情况(修改时间)
    grep "2016:09" access.log |awk '{print $4}'|sort|uniq -c |sort -nr
    
    # 查看指定的 IP 做了什么
    cat access.log.1 |grep 127.0.0.1| awk '{print $1"\t"$8}'| sort|uniq -c |sort -nr|less
    
    # 查看最近访问量次数最多的文件
    cat access.log |tail -10000| awk '{print $7}'| sort|uniq -c |sort -nr|less

    IIS  日志

    IIS7.5:%SystemDrive%\inetpub\logs\LogFiles
    
    IIS6.0:%systemroot%\system32\logfiles\w3svc1\

  • 结语


亲爱的网络安全同行和爱好者们,

在我分享的网络安全自学笔记中,我深感自己的知识和经验有限。为了更好地服务于这个领域,我真诚地希望各位能够指出我的错误和不足,以便我们共同进步,提升网络安全防护能力。

我深知,网络安全是一个不断发展的领域,需要我们持续学习和实践。我的笔记可能存在理解偏差、技术更新不及时或实践应用上的疏漏。因此,我非常欢迎各位专家和同好们提出宝贵意见,帮助我完善内容,确保信息的准确性和实用性。

请您在阅读过程中,如果发现任何问题,无论是小的笔误还是大的概念性错误,都能及时反馈给我。您的每一次指正都是我进步的阶梯,也是我们共同守护网络安全的责任所在。

感谢您的理解和支持,让我们一起努力,为网络安全领域的发展贡献力量!


原文地址:https://blog.csdn.net/m0_73983897/article/details/142910304

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!