1.操作系统安全机制 1.1标识与鉴别 Windows:SID Linux: UID、GID 1.1.1 SID 查看当前用户名及SID 查看所有用户名及SID C:\Users\TEACHER> wmic useraccount get name,sid Name SID Administrator S-1-5-21-80530027-1782036084-1563535153- 500 DefaultAccount S-1-5-21-80530027-1782036084-1563535153-503 Guest S-1-5-21-80530027-1782036084-1563535153- 501 TEACHER S-1-5-21-80530027-1782036084-1563535153- 1001 tony S-1-5-21-80530027-1782036084-1563535153- 1003 WDAGUtilityAccount S-1-5-21-80530027-1782036084-1563535153-504 SID标识解析 1.1.2 UID 查看UID UID格式解析 1.1.3 鉴别方法与信息存储 用户所知、用户所有、生物特征 windows:SAM数据库 Linux:/etc/shadow文件 shadow格式解析 1.2访问控制 1.3最小特权 windows设置 本地安全策略→本地策略→用户权限分配 1.4可信通路 在用户和程序之间建立一条可信通路,阻止任何进程的运行。例如:系统登录 1.5安全审计 计算机管理→事件查看器→windows日志、应用程序和服务日志、应用程序访问日志 1.6存储保护 Windows NTFS系统,早期的FAT32不支持 Linux ext4文件系统 1.7运行保护 环形结构,内核态和用户态。目前只有ring0和ring3。 1.8 I/O保护 进程之间相互独立 2.windows安全加固 练习1:查看管理员组用户 net localgroup administrators 注意:结果大于一个不合规 练习2:添加一个管理员组用户,再修改其类型 1.以管理员身份运行“命令提示符” 2.增加用户,并添加到管理员组【以管理员身份运行cmd】 # 1.添加用户testadmin密码test123 net user testadmin test123 /add # 2.将testadmin用户添加到管理员组administrators net localgroup administrators testadmin /add # 3.查看管理员组所有用户 net localgroup administrators # 4.把testadmin从管理员组去除 net localgroup administrators testadmin /del # 5.查看所有组 net localgroup # 6.查看users组所有用户 net localgroup users # 7.删除用户 net user testadmin /del # 8.修改用户密码 net user username newpassword 通过命令对用户的操作net user:用户的添加,删除,修改密码,查看 通过命令对组的操作 net localgroup:用户加入组,从组中删除,查看组的所有用户 3.更改用户类型,打开控制面板→用户账户→更改账户类型;选择testadmin账户,修改其类型。注意,如果当前是标准用户,重启后再修改。 4.修改后,重新查询即可 练习3:Windows账户、密码策略、账户授权的安全加固 1.修改缺省账户名称 计算机管理→本地用户和组→用户,右键单击默认管理员账户,对管理员账户进行重命名 2.禁止Guest账户 计算机管理→本地用户和组→用户,右键单击Guest账户,选择属性,在属性对话框中选择“账户已禁用”复选框。 3.设置屏幕锁定 搜索“屏幕保护程序”,打开窗口设置。 4.配置不显示上次登录 本地安全策略→本地策略→安全选项,双击“交互式登录:不显示最后的账户名”,选择已启用,并确定。 5.密码策略与账户锁定策略 本地安全策略→账户策略→密码策略(复杂度) 本地安全策略→账户策略→账户锁定策略 6.用户权限分配 本地安全策略→本地策略→用户权限分配 7.windows入侵防范 最小安装原则,卸载不需要的软件和组件,控制面板→程序和功能 关闭多余的服务,直接搜索"服务",进入服务对话框 10分钟,完成练习3,11:40回来 练习4:Windows审核策略与日志安全加固 1.审核策略检查 本地安全策略→本地策略→审核策略 2.不允许匿名枚举SAM账号与共享 本地安全策略→本地策略→安全选项 3.日志检查 搜索事件查看器,选择windows日志 练习5 查看和关闭共享 1.查看共享 计算机管理→共享文件夹→共享 通过命令查看共享 net share 2.彻底关闭WINDOWS默认共享 a.停止服务法 还是到“计算机管理”窗口中,单击展开左侧的“服务和应用程序”并选中其中的“服务”,此时右侧就列出了所有服务项目。共享服务对应的名称是 “Server”(在进程中的名称为services),找到后双击它,在弹出的“常规”标签中把“启动类型”由原来的“自动”更改为“已禁用”。然后单击下面“服务状态”的“停止”按钮,再确认一下就OK了。 b. 如果你不在局域网使用共享服务,干脆将“本地连接”属性中的“网络的文件和打印机共享”卸载掉,默认共享就可以彻底被关闭了。 【运行框输入命令:ncpa.cpl,打开“本地连接”】 c.批处理自启动法。打开记事本,输入一下内容(记得每行最后要回车), 代码如下: net share c$ /delete net share d$ /delete net share ipc$ /delete net share admin$ /delete 保存未share.bat(注意后缀),然后把这个批处理文件拖到“程序” -->“启动”项,这样每次开机就会运行它,也就是通过net命令关闭共享。 d.通过设置注册表选项,关闭共享 总结一下,windows安全加固常用的操作窗口: 1.本地安全策略 -安全策略 2.计算机管理 -用户和组 3.控制面板 - 入侵防范 4.事件查看器 -日志审计 5.服务 主机安全检查工具windows版本.rar 重点端口排查表.png 2.linux安全加固 练习1:用户操作 添加用户、删除用户、设置用户密码、锁定/解锁用户 1)执行sudo -i,切换到root用户,使用adduser命令增加user1和user2两个用户,密码设置为123456,并使用passwd -d user2为user2用户设置空密码。 tedu@ubuntu:~$ sudo -i [sudo] tedu 的密码: root@ubuntu:~# adduser user1 正在添加用户"user1"... 正在添加新组"user1" (1001)... 正在添加新用户"user1" (1001) 到组"user1"... 创建主目录"/home/user1"... 正在从"/etc/skel"复制文件... 输入新的 UNIX 密码 : 重新输入新的 UNIX 密码: passwd:已成功更新密码 正在改变 user1 的用户信息 请输入新值,或直接敲回车键以使用默认值 全名 []: 房间号码 []: 工作电话 []: 家庭电话 []: 其它 []: 这些信息是否正确? [Y/n] root@ubuntu:~# adduser user2 正在添加用户"user2"... 正在添加新组"user2" (1002)... 正在添加新用户"user2" (1002) 到组"user2"... 创建主目录"/home/user2"... 正在从"/etc/skel"复制文件... 输入新的 UNIX 密码: 重新输入新的 UNIX 密码 : passwd:已成功更新密码 正在改变 user2 的用户信息 请输入新值,或直接敲回车键以使用默认值 全名 []: 房间号码 []: 工作电话 []: 家庭电话 []: 其它 []: 这些信息是否正确? [Y/n] root@ubuntu:~# passwd -d user2 passwd:密码过期信息已更改。 2)使用cat /etc/passwd命令查看内容。可以看到刚刚创建的两个用户。浏览所有用户,删除多余的用户。 root@ubuntu:~# cat /etc/passwd|grep user hplip:x:115:7:HPLIP system user,,,:/var/run/hplip:/bin/false user1:x:1001:1001:,,,:/home/user1:/bin/bash user2:x:1002:1002:,,,:/home/user2:/bin/bash 3)使用cat /etc/shadow命令查看内容。user2的第二项为空,说明user2使用的是空密码。使用user2无需口令即可登录。 root@ubuntu:~# cat /etc/shadow|grep user user1:$6$wA3Q7Qpp$g9z3jITrSygCnGibnhzivPGB8lH9uEjv5GHyvbwz2S5eqD4/t8zAsjiqR7WEqUxcZe0.jNrKYhhjM6I8XHH59/:19614:0:99999:7::: user2::19614:0:99999:7::: root@ubuntu:~# reboot # 使用user2登录无需密码,存在未授权 4)使用userdel 命令 删除user1,使用 passwd user2为设置密码。 # 重新使用tedu登录,切换到root tedu@ubuntu:~$ sudo -i [sudo] tedu 的密码: root@ubuntu:~# userdel user1 root@ubuntu:~# passwd user2 输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd:已成功更新密码 root@ubuntu:~# 5)使用cat /etc/shadow命令查看内容。已经删除了不再使用的user1用户,user2用户的第二项不为空,表示已经设置了密码。 root@ubuntu:~# cat /etc/shadow|grep user user2:$6$N/ruyx3c$2FVJ3MPAx2WaEGQNfBPvhZ2TlbaPhzLMtugU4DOClJYEI2aTzuHioAKiF7WcVh28vU/ylZJnc5ZXLlztR.5mP0:19614:0:99999:7::: root@ubuntu:~# 6)另外可以使用passwd -l 用户名锁定账号,使用passwd -u 用户名解锁账户。锁定账号user2之后,使用user2无法登录,解锁后又可登录了。 root@ubuntu:~# passwd -l user2 passwd:密码过期信息已更改。 root@ubuntu:~# reboot # 使用user2登录时,即使使用正确的用户名和密码,仍然显示错误,使用tedu登录,解锁user2 tedu@ubuntu:~$ sudo -i [sudo] tedu 的密码: root@ubuntu:~# passwd -u user2 passwd:密码过期信息已更改。 root@ubuntu:~# reboot 练习2:密码策略 安装PAM的cracklib模块,cracklib能提供额外的密码检查能力 # apt-get install libpam-cracklib 使用以下命令查看密码策略设置文件 # vi /etc/pam.d/common-password 密码最小长度设置,找到如图位置所示,修改最小长度值 找到如下图配置,在后面添加ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1,它表示密码必须至少包含一个大写字母(ucredit),一个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit),具体按照需要修改即可。 该模块不会影响原有用户,只再添加新用户时,会进行密码复杂度检查!!! 执行以下命令打开login.defs文件,设置口令有效期如图所示 # vi /etc/login.defs 禁止root远程登录,其中的PermitRootLogin选项设置为No,或用#注释 vi /etc/ssh/sshd_config 如果没有发现文件,ssh没有安装,执行如下命令可以安装 sudo apt install openssh-server 默认情况下,kali和ubuntu都没有审计日志模块,需要安装 # apt-get install auditd 检查审计日志模块是否启动 # service auditd status