1.38k likes | 1.75k Views
NISE 安全技术工程师培训 — UNIX 系统安全. 课程目的. 了解 UNIX 系统的发展 了解 UNIX 的启动原理和脆弱性 掌握 UNIX 的基础使用 掌握 UNIX 系统的安全配置 掌握 UNIX 系统的异常分析及审计 授课方式:讲解、演示、学员上机操作. UNIX 系统安全. UNIX 系统发展历史 为什么介绍 UNIX 系统安全 UNIX 系统的启动过程 UNIX 系统基础 UNIX 系统安全配置 UNIX 系统审计分析. Unix的起源与发展. 起源 1969年Ken Thompson,Dennis Ritchie 发展
E N D
课程目的 • 了解UNIX系统的发展 • 了解UNIX的启动原理和脆弱性 • 掌握UNIX的基础使用 • 掌握UNIX系统的安全配置 • 掌握UNIX系统的异常分析及审计 授课方式:讲解、演示、学员上机操作
UNIX系统安全 • UNIX系统发展历史 • 为什么介绍UNIX系统安全 • UNIX系统的启动过程 • UNIX系统基础 • UNIX系统安全配置 • UNIX系统审计分析
Unix的起源与发展 • 起源 • 1969年Ken Thompson,Dennis Ritchie • 发展 • V1(汇编)、V4(C)、V6(大学)、V7 • 分支 • System V(AT&T) • BSD • SVR4 • OSF/1(Open Software Foundation)
Unix的版本 • SVRx • AIX(SVR2及部分BSD) • HP-UX • SCO(SVR3.2) • Xenix • BSD • *BSD • Sun Solaris(基于BSD,包含SystemV) • DEC(Ultrix)
UNIX产品标准 UNIX产品 计算机 生产厂家 SCO UNIX PC兼容机SCO公司 XENIX PC兼容机微软, SCO Digital Unix Dec Alpha机Digital公司 Solaris Sun工作站Sun公司 AIX IBM机IBM公司
UNIX系统安全 • UNIX系统发展历史 • 为什么介绍UNIX系统安全 • UNIX系统的启动过程 • UNIX系统基础 • UNIX系统安全配置 • UNIX系统审计分析
为什么介绍UNIX安全 • DOS/Windows 3.x D1 • Windows NT/Windows 2000 C1/C2 • 多数商用Unix系统 C1 • Novell C2 • 部份强Unix系统,如Trust solaris C2-B1 • Linux/*BSD没有测评,通常认为在C1-C2 • 新的测试标准是CC
为什么介绍UNIX安全 • TCP/IP网的主要安全缺陷 • 脆弱的认证机制 • 容易被窃听和监视 • 易受欺骗 • 有缺陷的LAN服务和相互信任的主机 • 复杂的设置和控制 • 基于主机的安全不易扩展
为什么介绍UNIX安全 • 黑客攻击的日益增长 • 新技术应用中不断发现了新的安全漏洞 • 新的服务未经过严格的安全测试就开始使用 • 早期业务系统均采用UNIX系统 • 大型重要业务大多数采用UNIX系统 • 黑客攻击最早对象是UNIX系统 • 各种UNIX系统的漏洞层出不穷
为什么介绍UNIX安全 按照可信计算机评价标准达到C2级 • 访问控制 • 对象的可用性 • 个人身份标识与认证 • 审计记录 • 操作的可靠性
UNIX系统安全 • UNIX系统发展历史 • 为什么介绍UNIX系统安全 • UNIX系统的启动过程 • UNIX系统基础 • UNIX系统安全配置 • UNIX系统审计分析
UNIX系统启动过程简介 • 系统运行模式简介 • 0 进入EPROM状态(OK状态) • 1 管理状态(所有文件系统都挂上的单用户模式,禁止其他用户登录) • 2 多用户模式(没有网络文件共享服务) • 3 多用户模式(有网络文件共享服务) • 4 未使用 • 5 退出操作系统并关机 • 6 重新启动机器 • S,单用户模式
Linux启动过程简介 • 在Linux中,系统运行级别是并行式的,也就是系统加载完内核和mount /文件系统之后,就会直接跳转到相应的默认运行级别。 • 在Solaris中,采取了一种串行化的引导方式。
UNIX系统启动过程简介 • Solaris的启动分为若干个运行级别(S,1-6),当系统内核运行完毕,加载好所有的驱动之后,就会把控制权移交给/sbin/init进程,也就是所有进程的父进程,然后由init读取/etc/inittab,依次执行/etc/rc1(2,3)启动脚本,最终到达inittab中指定的默认运行级别。
UNIX系统启动过程简介 • solaris系统启动过程 Init 0 →Init 1 → Init 2 → Init 3 init 0/openboot模式:引导内核,加载硬件驱动,此时可以选择从cdrom引导进入维护模式。 init 1/单用户模式:(加载/分区) 登陆进入维护模式,或按Ctrl+D进入多用户模式 init 2/网络工作站模式:(连接网络,运行网络工作站服务) 运行/etc/rc2脚本连接网络,启动S69inet服务,运行部分inetd网络服务 init 3/网络服务器模式:(运行各种网络服务) 运行/etc/rc3脚本启动网络服务器
Solaris的启动过程 • 引导(EEPROM OpenBoot) • sparc(/platform/`arch`/kernel/unix) • 启动过程 • init的概念 init 0 openboot模式 -> (引导内核,加载硬件驱动) 可以选择从cdrom引导进入维护模式 | init 1 单用户模式 -> (加载/分区) 登陆进入维护模式,或按Ctrl+D进入多用户模式 | init 2 网络工作站模式 -> (连接网络,运行网络工作站服务) 运行/etc/rc2脚本连接网络 | | | ---->启动S69inet服务,运行部分inetd网络服务 | init 3 网络服务器模式 -> (运行各种网络服务) 运行/etc/rc3脚本启动网络服务器
rc0.d和rc1.d • 说明 • +代表必须服务,系统正常运行必须 • =代表可选服务,由用户环境决定 • -代表无效,不必要,或不安全的服务 • init inittab rc0 rc1 rc2 rc3 rc5 rc6 rcS init.d • init 系统启动超级进程 • inittab 进程启动配置文件 • rc0 - rc6 各启动级别的启动脚本 • rcS 单用户模式启动脚本 • init.d 启动脚本存放目录 • rc0.d: eeprom OpenBoot状态,可以进入硬件维护模式,或关闭机器。 • rc1.d: 单用户模式,可以对系统进行软件维护。 • S01MOUNTFSYS +加载文件系统 • S10lu =当运行live update后清理系统
rc3.d • rc3.d: 多用户模式,启动网络服务器模式 • S15nfs.server - 启动nfs服务器,NFS网络文件服务器 • S13kdc.master - 启动Kerberos服务器 • S14kdc - 启动Kerberos服务器,Kerberos认证服务器 • S16boot.server - 启动bootp服务器,boot网络启动服务 • S34dhcp = 启动dhcp,DHCP服务器 • S50apache - 启动apache服务器 • S76snmpdx - 启动snmp服务器,启动SNMP服务,允许远程网络管理 • S77dmi - 启动snmp - dmi服务,SNMP子服务 • S89sshd + 启动sshd服务器,SSH服务器 • S80mipagent - 启动Mobile IP 代理 • S90samba - 启动samba服务器,Samba CIFS网络文件服务器
启动过程看安全 • OpenBoot安全级别 • none :不需要任何口令 • command:除了boot和go之外所有命令都需要口令 • full:除了go命令之外所有命令都需要口令。 • 改变OpenBoot安全级别 • 设置口令命令 #eeprom security-password • 改变安全级别为command #eeprom security-mode=command
UNIX用户登录过程 • 用户打开终端电源(或运行telnet)。 • getty进程将登录提示信息送到用户终端显示,并等待用户输入用户名。 • 用户输入用户名。 • getty进程接收到用户名后,启动login进程。 • login进程要求用户输入口令。 • 用户输入口令。 • login进程对username和password进行检查。 • login启动shell进程。 • shell进程根据/etc/password中的shell类型,启动相应的shell。并启动/etc/profile文件和$HOME/.profile文件(或$HOME/.login文件)。最后出现UNIX提示符,等待用户输入命令。
UNIX用户登录过程 打开终端 -> getty -> login -> sh -> /etc/profile -> $HOME/.profile -> 出现提示符$
UNIX系统安全 • UNIX系统发展历史 • 为什么介绍UNIX系统安全 • UNIX系统的启动过程 • UNIX系统基础 • UNIX系统安全配置 • UNIX系统审计分析
UNIX系统基础 • UNIX系统组成 • UNIX文件系统基础 • UNIX帐户管理基础 • UNIX口令基础
UNIX系统组成 UNIX Kernel(UNIX内核) 是UNIX操作系统的核心,指挥调度UNIX机器的运行,直接控制计算机的资源,保护用户程序不受错综复杂的硬件事件细节的影响。 UNIX Shell(UNIX外壳) 是一个UNIX的特殊程序,是UNIX内核和用户的接口,是UNIX的命令解释器、也是一种解释性高级语言。
UNIX帐户管理基础 • useradd 增加用户 • userdel 删除用户 • usermod 修改用户 • userls 显示用户和系统登录信息 • passwd 修改用户口令 • groupadd 增加用户组 • groupdel 删除用户组 • groupmod 修改用户组 • groupls 显示用户组的属性 只有root用户和授权用户才能对用户和用户组进行增加、修改、删除操作。
帐号口令基础 • Passwd文件剖析 name:coded-passwd:UID:GID:user-info:home-directory:shell 7个域中的每一个由冒号隔开。空格是不允许的,除非在user-info域中使用。 .name—给用户分配的用户名,这不是私有信息。 .Coded-passwd—经过加密的用户口令。如果一个系统管理员需要阻止一个用户登录,则经常用一个星号( : * :)代替。该域通常不手工编辑。用户应该使用passwd命令修改他们的口令。 .UID—用户的唯一标识号。习惯上,小于100的UID是为系统帐号保留的。
帐号口令基础 • Passwd文件剖析(续) .GID—用户所属的基本分组。通常它将决定用户创建文件的分组拥有权。 .User_info—习惯上它包括用户的全名。邮件系统和finger这样的工具习惯使用该域中的信息。 .home-directory—该域指明用户的起始目录,它是用户登录进入后的初始工作目录。 .shell—该域指明用户登录进入后执行的命令解释器所在的路径。注意可以为用户在该域中赋一个/bin/false值,这将阻止用户登录。
UNIX帐号口令基础 • /etc/shadow文件 • 记录了系统用户的加密后口令 loginID:passwd:lastchg:min:max:warn:inactive:expire: #more /etc/shadow root:LXeokt/C/oXtw:6445:::::: daemon:NP:6445:::::: bin:NP:6445:::::: sys:NP:6445:::::: adm:NP:6445:::::: lp:NP:6445:::::: ……
UNIX帐号口令基础 • loginID 对应用户名 • password 加密后的口令。LK表示锁定帐号,NP表示无口令 • lastchg 最后更改口令的日期与1970年1月1日之间相隔的天数 • min 改变口令需要最少的天数 • max 同一口令允许的最大天数 • warn 口令到期时,提前通知用户的天数 • inactive 用户不使用帐号多少天禁用帐号 • expire 用户帐号过期的天数 • 最后一个字段未用
UNIX系统安全 • UNIX系统发展历史 • 为什么介绍UNIX系统安全 • UNIX系统的启动过程 • UNIX系统基础 • UNIX系统安全配置 • UNIX系统审计分析
UNIX系统安全配置 • UNIX系统基本安装配置 • 帐号和口令安全 • 文件系统安全 • 其它安全配置 • 网络服务安全 • 异常检测和维护
UNIX系统 • 不安装多余组件 • 停止不必要的服务 • 打最新的补丁
UNIX系统安全配置 • UNIX系统基本安装配置 • 帐号和口令安全 • 文件系统安全 • 其它安全配置 • 网络服务安全
UNIX系统帐号安全 • 禁用和删除不必要的帐号 • 简单的办法是在/etc/shadow的password域前加*。 • 删除账号 • # userdel user1
UNIX系统帐号安全 • Root帐号安全性 • 确保root只允许从控制台登陆 • 限制知道root口令的人数 • 使用强壮的密码 • 三个月或者当有人离开公司是就更改一次密码 • 使用普通用户登陆,用su取得root权限, 而不是以root身份登录
UNIX系统帐号安全 • Root帐号安全性 • 设置 umask 为077 ,在需要时再改回022 • 请使用全路径执行命令 • 不要允许有非root用户可写的目录存在root的路径里 • 修改/etc/securetty,去除终端ttyp0-ttyp9,使root只能从console或者使用ssh登陆。
UNIX系统帐号安全 禁止root用户远程登录 • 多数UNIX系统: • 编辑/etc/default/login文件,添加 #CONSOLE=/dev/console • 禁止root远程FTP登录 在/etc/ftpusers里加上root。 • linux下: 编辑文件/etc/pam.d/login,添加 /etc/pam.d/login auth required pam_securetty.so
UNIX帐号口令安全 • 设置密码策略 编辑“/etc/login.defs” chage -l username chage [-m 最短周期] [-M 最长周期] [-I 口令到期到被锁定的天数] [-E到期日期] [-W 口令到期之前开始警告的天数] username
UNIX系统安全配置 • UNIX系统基本安装配置 • 帐号和口令安全 • 文件系统安全 • 其它安全配置 • 网络服务安全
Unix文件系统的安全 #ls –al test • drwxr-xr-x 3 root root 1024 Sep 13 11:58 test • 模式位通常由一列10个字符来表示,每个字符表示一个模式设置 • 1:表示文件类型。 • d表示目录,-表示普通文件,l表示链接文件等等 • 每个文件和目录有三组权限,一组是文件的拥有者、一组是文件所属组的成员、一组是其他所有用户。 • "r"表示可读,"w"表示可写,"x"表示可执行。一共9位(每组3位),合起来称为模式位(mode bits)
Unix文件系统的安全 • Chmod • 改变文档或目录之属性。如 #chmod 755 test • Chown • 改变文档或目录之拥有权 #chown user1 file1; chown -R user1 dir1 • Chgrp • 改变文档或目录之群组拥有权 #chgrpgroup1file1
Unix文件系统的安全 • SUID/SGID • SUID表示"设置用户ID“;SGID表示"设置组ID"。 • 当用户执行一个SUID文件时,用户ID在程序运行过程中被置为文件拥有者的用户ID。如果文件属于root,那用户就成为超级用户。 • SUID程序代表了重要的安全漏洞,特别是SUID设为root的程序。
Unix文件系统的安全 • SUID/SGID #find / -perm -04000 -o -perm -02000 -print find列出所有设置了SUID(“4000”)或SGID(“2000”)位的普通文件(“f”)。 chmod a-s <文件名>”移去相应文件的“s”位。