CISP-PTE - 操作系统安全

2021-05-10
2021-05-10
8 min read
Hits

  本文是 CISP-PTE 认证操作系统安全课程的学习笔记。

Linux 安全

系统安全

账户基本概念

/etc/passwd     # 用户信息文件——存放用户信息
/etc/shadow     # 用户账号影子文件——存放用户密码散列、密码管理信息
/etc/group     # 组文件
/etc/gshadow     # 组影子文件

useradd     # 用户管理
-u     # 指定新建用户的 ID
-c     # 指定新建用户的全称
-d     # 指定新建用户的主目录
-g     # 指定新建用户的主组
-G     # 指定新建用户的附加组
-s     # 指定新建用户的登录 shell
-m     # 强制建立用户的主目录

passwd     # 密码管理
-d     # 删除用户密码
-l     # 锁定指定用户账户
-u     # 解除指定用户账户锁定
-S     # 显示指定用户账户的状态

usermod     # 更改用户信息
-c     # 更改用户的全称
-d     # 更改用户的主目录
-u     # 更改用户的 ID
-g     # 更改用户的主组
-G     # 更改用户的附加组
-s     # 更改用户的登录 shell
-l     # 更改用户的用户名

userdel     # 删除用户(目录)
-r     # 删除用户及其主目录

groupadd     # 创建私人组

groupmod     # 修改组属性

groupdel     # 删除指定组
/etc/passwdnamecoded-passwdUIDGIDuserinfohomedirectoryshell
格式用户名密码散列UIDGID用户信息用户目录登陆后使用的shell
例子demox523100J.demo/home/demo/bin/sh
/etc/shadownamepasswdlastchgminmaxwarninactiveexpireflag
格式用户名密码修改时间最少用几天最多用几天过期前几天提示还有多少天被禁时间保留域
例子root$1$acQMceF9134020999997:::
文件权限类型所有者权限组员权限其它用户权限链接数UIDGID大小修改时间文件名
例子drwxr-xr-x3rootroot1204Sep 13 11:58test

账户安全

  1. 检查 passwd 和 shadow 清除多余账号

  2. 特殊保留的系统伪账号锁定登录

    passwd -i <用户名>     # 锁定
    passwd -u <用户名>     # 解锁
    
  3. 检查 passwd 中 ID=0 的账号

  4. 检查空口令账号

    awk -F: ‘( $2== "") { print $1}' /etc/shadow
    
  5. 设置账号登录失败锁定次数和时间

    vi /etc/pam.d/system-auth
    auth required pam_tally.so onerr=fail deny=6 unlock_time=300
    
    vi /etc/pam.d/sshd
    auth   required   pam_tally2.so deny=3 unlock_time=120 even_deny_root root_unlock_time=60
    
  6. 设置账号超时自动注销

    vi /etc/profile
    TMOUT=600
    
  7. 禁止 root 登录

  8. 只允许普通用户登陆,通过 su 命令切换到 root

  9. 不把 root shell 留在终端上

  10. 不把当前目录(“ . /”)和普通用户的 bin 目录放在 root 账号的环境变量 PATH 中

  11. 不以 root 运行其他用户或不熟悉的程序

  12. 口令安全策略

    vi /etc/pam.d/system-auth     # 口令复杂度策略设置
    password requisite  pam_cracklib.so     # 修改为:password requisite  pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
    
  13. 禁止 su 到 root

    vi /etc/pam.d/su     # 增加如下两行
    auth    sufficient  pam_rootok.so 
    auth    required    pam_wheel.so group=wheel
    

系统服务配置

  1. 禁止危险的网络服务:telnet、FTP、echo、chargen、shell、finger、NFS、RPC
  2. 关闭非必要的网络服务:talk、ntalk
  3. 确保最新版本

远程登录安全

  1. 禁用 telnet,使用 SSH

  2. 限制登录 IP

    vi /etc/ssh/sshd_config     # 添加或修改如下行
    AllowUsers xyz@192.168.1.23     # 允许用户 xyz 通过 192.168.1.23 登录本机
    AllowUsers *@192.168.*.*     # 允许 192.168.0.0/16 网段所有用户通过 ssh 访问
    
  3. 禁止 root 远程登录

    cat /etc/ssh/sshd_config     # PermitRootLogin no
    
  4. 限定信任主机,或直接关闭所有R系列远程服务:rlogin、rsh、rexec

    cat /etc/hosts.equiv
    cat /$HOME/.rhosts     # 删除不必要的主机
    
  5. 修改 banner

    vi /etc/ssh/sshd_config     # 将 banner 字段设置为 NONE
    vi /etc/motd     # 将文件内容更改为自己想要展示的内容
    

文件和目录安全

  1. 设置文件的属主和属性以进行保护

    chattr +i /etc/passwd     # 极其重要的文件或目录设置为不可改变属性
    
  2. 临时文件不应该有执行权限

  3. 设置新创建文件的默认权限掩码:使用 umask 命令

  4. SUID/SGID 的程序在运行时,将 UID 改变为该程序的 GID,因而可能存在一定的安全隐患

    find / -perm -4000 -user 0 –ls     # 查找 SUID 可执行程序
    find / -perm -2000 -user 0 –ls     # 查找 SGID 程序
    

/root:root 文件系统是文件系统的顶级目录。它必须包含在挂载其它文件系统前需要用来启动 Linux 系统的全部文件。它必须包含需要用来启动剩余文件系统的全部可执行文件和库。文件系统启动以后,所有其他文件系统作为 root 文件系统的子目录挂载到标准的、预定义好的挂载点上 /bin:目录包含用户的可执行文件 /boot:包含启动 Linux 系统所需要的静态引导程序和内核可执行文件以及配置文件 /dev:包含每一个链接到系统的硬件设备的设备文件,不是驱动,而是计算机上能够访问的设备 /etc:包含主机计算机的本地系统配置文件 /home:主目录存储用户文件,每一个用户都有一个位于 /home 目录中的子目录 /lib:包含启动系统所需要的共享库文件 /opt:可选文件 /sbin:系统二进制文件,用于系统管理的可执行文件 /tmp:临时目录 /var:可变数据文件存储,包括日志文件、mysql 和其他的数据库文件 /usr:包含可共享、只读的文件,包括可执行的二进制文件和库等

Ext:第一个专门针对 Liunx 的文件系统 Ext2:为解决 Ext 文件系统缺陷设计的高性能、可扩展的文件系统 Ext3:日志文件系统,Ext2 的升级版 Ext4:Ext4 提供了更为可靠性的功能 swap:Linux 的交换分区 NFS:Linux 的网络文件系统 smb:支持 smb 协议的网络文件系统 vfat:与 Windows 系统兼容的 Linux 文件系统 ntfs:Windows NT 所采用的独特的文件系统结构 proc:Linux 操作系统中的一种基于内存的伪文件系统 xfs:由 SGI 开发的一个全 64 位、快速、安全的日志文件系统

ls     # 查看文件属性
-a     # 列出指定目录下所有的文件和子目录(包括以“.”开头的隐含文件)
-b     # 如果文件或目录名中有不可显示的字符时,显示该字符的八进制值
-c     # 以文件状态信息最后一次更新的时间进行排序
-d     # 如果是目录,则显示目录的属性而不是目录下的内容
-g     # 与 -l 类似,但不显示文件或目录所有者的信息
-G     # 与 -l 类似,但不显示文件或目录所有者的用户组信息
-l     # 使用长格式显示文件或目录的详细属性信息
-n     # 与 -l 类似,但以 UID 和 GID 代替文件或目录所有者和用户组信息
-R     # 以递归方式显示目录下的各级子目录和文件

Linux 四种基本文件属性:普通文件、目录文件、链接文件和特殊文件。

  对于每个新创建的文件和目录,系统会为它们设置默认的访问权限。通过使用 umask 命令可以更改文件或目录的默认权限。

  在创建文件或目录时,系统会先检查当前设置的 umask 值,然后把默认权限的值与权限掩码值相减,就得到新创建的文件或目录的访问权限。

  在 Linux 中,每个用户都有自己的 umask 值,所以可以通过为不同安全级别的用户设置不同的 umask 值,来灵活控制用户的默认访问权限。

  一般常见的做法就是在 .bash_profile 配置文件中设置 umask 值。

  用户每次登录系统,都必须先读取 .bash_profile 配置文件的内容并执行,所以每次用户登录完成后,新的 umask 值都会立即生效。

系统日志配置

cat /etc/logrotate.d/syslog     # 检查日志存储空间大小和时间的设置

使用安全软件

日志分析

系统日志分类

  1. 连接时间日志

    /var/log/wtmp
    /var/run/utmp
    /var/log/lastlog     # 由多个程序执行,记录用户登录时间
    
  2. 进程统计日志——由系统内核执行,为系统基本服务提供命令使用统计

  3. 错误日志

    /var/log/messages     # 服务器系统日志,由 syslogd 守护记录,制定注意的事项
    /var/log/secure     # 记录系统登录行为
    

Access-log:记录 web 服务的访问日志,error-log 是其错误日志 Acct/pacct:记录用户命令 btmp:记录失败记录 lastlog:记录最近几次成功登录的事件和最后一次不成功的登录 messages:服务器的系统日志 Sudolog:记录使用 sudo 发出的命令 Utmp:记录当前登录的每个用户 Wtmp:一个用户每次登录进入和退出时间的永久记录 Secure:记录系统登录行为,比如 ssh 的登录记录

系统日志审计方法

  日志文件应记录尽可能多的信息。

  日志文件应设置只允许 root 可读的权限。

  制定日志文件的覆写计划。

  通过日志文件排除不必要信息,定位重要信息。先实验出错情况,并记录尽可能多的错误信息,再修改脚本文件,使之不再产生不必要信息。

Windows 安全

远程登录鉴别协议

SMB(Server Message Block):口令明文传输 LM(LAN Manager):口令哈希传输,强度低 NTLM(NT LAN Manager):提高口令散列加密强度、挑战/响应机制 Kerberos:为分布网络提供单一身份验证

关闭管理共享

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters     # 修改注册表
AutoShareServer
AutoShareWks

本地用户组

Administrators:该组用户具有对服务器的完全控制权限,并且可以根据需要向用户指派用户权限。 Backup Operators:可以备份和还原服务器上的文件,无需考虑文件的权限,并且不能更改安全设置。 Guests:该组成员拥有一个在登录时创建的临时配置文件,在注销时,该配置文件也被删除。 Envent Log Readers:可以从本地计算机中读取事件日志。 Power Users:该组成员可以创建、修改和删除账户。可以创建本地组,然后在他们已创建的本地用户组中添加或删除用户,也可以在 Power Users、Users 和 Guests 组中添加删除用户。可以创建共享资源并管理所创建的共享资源,不能取得文件的所有权、备份和还原目录、加载或卸载设备驱动程序、或者管理安全性以及日志。 users:该组的成员可以执行一些常见任务,如运行应用程序、使用本地和网络打印机及锁定服务器,用户不能共享目录或创建本地打印机。默认情况下,Domain Users、Authenticated Users、Interactive是该组的成员,所以在域中创建的任何用户账户都成为该组的成员。 Remote Desktop Users:可远程登录服务器。

复制和移动对文件夹权限的影响

  在 NTFS 分区内和 NTFS 分区之间复制或者移动文件、文件夹时,Windows 系统会将其作为新文件或文件夹,因此,会对源文件或文件夹的 NTFS 权限产生影响。

  在复制或移动文件或文件夹时,必须对目标文件夹有写入权限。

  在复制文件或文件夹时,必须对源文件夹有读取权限。

  在移动文件或文件夹时,必须对源文件夹有修改权限。

  在单个 NTFS 分区内移动文件或文件夹时,该文件或者文件夹保留其原来的权限

  在 NTFS 分区之间移动文件或文件夹时,该文件或文件夹将继承目的文件夹权限(当在 NTFS 分区之间移动文件或文件夹时,实际是将文件或文件夹复制到新位置,然后将其从原位置删除)。

  当将文件或文件夹移动到非 NTFS 分区时,因为非 NTFS 分区不支持 NTFS 权限,所以这些文件或文件夹将丢失其 NTFS 权限

安全日志审核

通过日志审核功能,可以快速检测黑客的渗透和攻击,防止非法用户的再次入侵,主要是通过以下事件策略审核

  1. 对策略的审核
  2. 对登录成功或失败的审核
  3. 对访问对象的审核
  4. 对进程跟踪的审核
  5. 对账户管理的审核
  6. 对特权使用的审核
  7. 对目录服务访问的审核