840 likes | 1.12k Views
安全操作系统. 中国科学技术大学计算机系 陈香兰( 0512 - 87161312 ) xlanchen@ustc.edu.cn 助教:裴建国 Autumn 2008. 主流操作系统的安全技术. Linux/Unix 安全技术 Windows 安全技术. Linux/UNIX 安全概述. UNIX 多用户、多任务 实现了有效的访问控制、身份标识与验证、审计记录等安全措施 安全性一般能达到 TCSEC 的 C2 级 Linux 一种类 UNIX 的 OS 一个开放式系统 本课程: Linux. Linux/UNIX 安全技术. Linux 身份验证
E N D
安全操作系统 中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn 助教:裴建国 Autumn 2008
主流操作系统的安全技术 • Linux/Unix安全技术 • Windows安全技术
Linux/UNIX安全概述 • UNIX • 多用户、多任务 • 实现了有效的访问控制、身份标识与验证、审计记录等安全措施 • 安全性一般能达到TCSEC的C2级 • Linux • 一种类UNIX的OS • 一个开放式系统 • 本课程:Linux
Linux/UNIX安全技术 • Linux身份验证 • Linux访问控制 • Linux网络服务安全 • Linux备份/恢复 • Linux日志系统 • Linux内核安全技术 • 安全Linux服务器配置参考
Linux/UNIX安全技术 • Linux身份验证 • Linux访问控制 • Linux网络服务安全 • Linux备份/恢复 • Linux日志系统 • Linux内核安全技术 • 安全Linux服务器配置参考
Linux身份标识和验证 • Linux系统的登录过程 • Linux的主要帐号管理文件 • PAM安全验证机制
Linux身份标识和验证 • Linux系统的登录过程 • Linux的主要帐号管理文件 • PAM安全验证机制
Linux系统的登录过程 • 基于用户名和口令 • 通过终端登录Linux的过程: • Init进程确保为每个终端连接(或虚拟终端)运行一个getty进程,getty进程监听对应的终端并等待用户登录 • Getty输出一条欢迎信息(此欢迎信息保存在/etc/issue文件中),并提示用户输入用户名,接着getty激活login • login要求用户输入口令,并根据系统中的etc/passwd文件来检查用户名和口令的一致性 • 若一致,启动一个shell;否则login进程推出,进程终止 • Init进程注意到login进程终止,则会再次为该终端启动getty进程 /etc/passwd文件用来维护系统中每个合法用户的信息,包括用户登录名、经过加密的口令、口令时限、用户号UID、用户组号GID、用户主目录以及用户使用的shell 加密后的口令也可能存放在系统的/etc/shadow文件中
Linux身份标识和验证 • Linux系统的登录过程 • Linux的主要帐号管理文件 • PAM安全验证机制
Linux的主要帐号管理文件 • 口令文件/etc/passwd • /etc/passwd文件用于存放用户的基本信息 • 每个账户在该文件中有拥有一个相应的条目 • Reading: • Hacking Linux exposed,ch1,p7;&ch9,p284 • http://www.aka.org.cn/Lectures/002/Lecture-2.2.1/320.html
老版的/etc/passwd中条目定义 • 每个条目包含7个字段,字段间用冒号分隔登录帐号:密码域:UID:GID:用户信息:主目录:用户shell • 登录帐号:即用户的登录名 • 密码域:口令被加密后的密文 • UID,用户ID,为0~MAXINT-1之间的一个整数 • GID,组ID,来自/etc/group,为0~MAXINT-1之间的一个整数 • 用户信息,用于标识诸如用户的全名、位置和电话号码等信息,可以不设置 • 主目录,为用户的起始登录目录,如/home/chenxl • 用户shell,用户登录后所用的shell路径名,如/bin/sh
用户可以修改口令条目中的部分信息: • 命令passwd:更改口令 • 命令chfn:更改第五个字段中的用户信息 • 命令chsh:更改第七个字段,shell路径名 • 其余的字段由系统管理员设置
关于UID • UID是用户标识;具有唯一性。 • 一般 • Root帐号的UID是:0 • 系统预设帐号:1~99 • 常用服务帐号:100~499 • 普通用户帐号:500以后 • UID的最大值可以在/etc/login.defs文件中查到 • 登录后,用户权限通过UID来确认,而非用户名 • 最好不要共用UID • 使用root权限,可以su或者sudo
关于GID • 一般GID为0的组对应于root用户组 • 关于GID的预留,不同Linux系统有所不同 • Fedora:预留500个,添加新用户组时,从500开始 • Slackware:100个 • 系统添加用户组默认的GID范围对应于文件/etc/login.defs中的GID_MIN和GID_MAX
Linux的shadow技术 • 用于提高用户密码存放的安全性 • 口令加密后的密文存放在/etc/shadow文件中,在/etc/passwd文件中的密码域只保存一个“x” • Shadow文件对一般用户是不可读的,只有超级用户(root)才可以读写。 • 由于普通用户无法得到加密后的口令,提高了系统的安全性 • /etc/passwd文件中每行内容9个字段,也以冒号分隔
登录帐号,与/etc/passwd中的登录帐号对应 • 密文。若值为x,表示该用户不能登录到系统 • 上次口令的修改时间。自1970.1.1日以来的天数 • 两次修改口令间隔最少的天数。(0?) • 两次修改口令间隔最多的天数 • 提前多少天警告用户口令将过期 • 在口令过期之后多少天禁用此用户 • 用户过期日期。为空则永久可用 • 保留字段
HomeWork: • 请找到自己安装的Linux系统中的/etc/passwd文件,对照上述条目说明,分析自己当前所登录账户的相关信息
Linux身份标识和验证 • Linux系统的登录过程 • Linux的主要帐号管理文件 • PAM安全验证机制
PAM安全验证机制 • Pluggable Authentication Modules,是SUN提出的一种验证机制,最初集成在Solaris系统中 • 目前已经移植到 • Linux,SunOS,HP-UX 9.0等 • 目的:提供一个框架和一套编程接口,将认证工作由程序员交给管理员 • 允许管理员在多种认证方法之间做出选择, • 能够改变本地认证方法而不需要重新编译与认证相关的应用程序 • 以共享库的形式提供
PAM的组成 • PAM API • PAM SPI • PAM 库 • PAM配置文件 服务程序 各种认证手段
功能包括: • 加密口令(包括DES和其他加密算法) • 对用户进行资源限制,防止DOS攻击 • 允许随意Shadow口令 • 限制特定用户在指定时间从指定地点登录 • 引入概念“client plug-in agents”,使PAM支持C/S应用中的机器
Linux PAM • 主页:http://www.kernel.org/pub/linux/libs/pam/ • 最新版本为1.0.1 • 下载地址:http://www.kernel.org/pub/linux/libs/pam/library/Linux-PAM-1.0.1.tar.gz
Linux/UNIX安全技术 • Linux身份验证 • Linux访问控制 • Linux网络服务安全 • Linux备份/恢复 • Linux日志系统 • Linux内核安全技术 • 安全Linux服务器配置参考
Linux的访问控制 • Linux基于权限字的文件系统访问控制 • Linux的访问控制表ACL
Linux基于权限字的文件系统访问控制 • 在Linux中,所有的活动都可以看成是主体对客体的一系列操作 • 客体:一种信息实体,或是从其他主体/客体接受信息的实体 • 如文件、内存、进程消息、网络包或者I/O设备 • 主体:一个用户或者代表用户的进程,它引起信息在客体之间的流动 • 访问控制机制:控制系统中的主体对客体的读、写和执行等各种访问 • Linux采用一种比较简单的访问控制机制传统UNIX的基于访问权限位的单一的自主访问控制
Linux中自主访问控制机制的基本思想 • 系统中每个主体都有唯一的UID,并且总是属于某一个用户组,而每个用户组有唯一的GID • 由超级用户或授权用户为系统内的用户设定,保存在/etc/passwd文件中 • 通常情况下,代表用户的进程继承用户的uid和gid • 用户登录并进入第一个shell时,该用户的uid和gid就被设置到该shell进程的task_struct中,此后的进程按照继承规则继承uid和gid(除非SETUID)
对客体的访问权限:r/w/x 三种。 • 针对某客体,用户:u/g/o 三种。 • 上述信息构成一个访问控制矩阵, • 允许客体的所有者和特权用户通过这个访问控制矩阵为客体设定访问控制信息 • 当用户访问客体时,根据进程的uid、gid和文件的访问控制信息检查访问的合法性 • 举例:
chmod/chown/chgrp命令 • chmod命令用来重新设定对客体的访问权限 • chown命令用来修改某个文件或目录的属主 • chgrp命令用来修改某个文件或目录的用户组
setuid/setgid • 为维护系统的安全性,对于某些客体,普通用户不应具有某种访问权限,但是出于某些特殊需要,用户由必须能超越对这些客体的受限访问 • 例如,对/etc/passwd文件,用户不具有写访问权限,但又必须允许用户能够修改该文件,以修改自己的密码。 • setuid/setgid使得代表普通用户的进程不继承用户的uid和gid,而是继承该进程所对应的应用程序文件的所有者的uid和gid,即普通用户暂时获得其他用户身份,并通过该身份访问客体
Linux/UNIX安全技术 • Linux身份验证 • Linux访问控制 • Linux网络服务安全 • Linux备份/恢复 • Linux日志系统 • Linux内核安全技术 • 安全Linux服务器配置参考
Linux网络服务安全 Linux的网络层次结构图
早期的网络服务管理程序inetd(守护进程) • /etc/rc.d/rc.local激活inetd • 根据/etc/inetd.conf监听 • 处理客户连接 • 例子(本地)(网络链接) • 应当禁止不需要的服务,降低风险
扩展后的xinetd • 配置文件:/etc/xinetd.conf • 与前者完全不同,而且不兼容 • 组合了下列文件 • /etc/inetd.conf • /etc/hosts.allow • /etc/hosts.deny
系统默认使用xinetd的服务 • 标准internet服务,如http,telnet,ftp等 • 信息服务,如finger,netstat,systat等 • 邮件服务,如imap,pop3,smtp等 • RPC服务,如rquotad,rstatd,rusersd,sprayd,walld等 • BSD服务,如comsat,exec,login,ntalk,shell talk等 • 内部服务,如chargen,daytime,echo等 • 安全服务,如irc等 • 其他,如name,tftp,uucp,wu-ftp等
典型例子 各种服务,可以添加到这个文件中 也可以放在指定的目录中
目录/etc/xinetd.d/ • 文件名:相关服务 • 大多默认关闭
目录/etc/xinetd.d/下的文件 • 文件格式:
以telnet为例:/etc/xinetd.d/telnet 改成“no”,打开服务 修改后,需要重启xinetd 运行如下命令: /etc/rc.d/init.d/xinetd restart
Linux/UNIX安全技术 • Linux身份验证 • Linux访问控制 • Linux网络服务安全 • Linux备份/恢复 • Linux日志系统 • Linux内核安全技术 • 安全Linux服务器配置参考
Linux备份/恢复 • 备份技术 • 脚本 • … • 一些商业化软件 • 备份的存储设备 • 远程网络设备、磁带驱动器、其他可移动媒体 • 备份单位 • 文件(目录) • 驱动器映像
制定备份策略 • What • Where • When • How • … • 备份与还原:Linux与Windows??? • Linux只需要打包和解包
一般情况下,以下目录需要备份 • /etc • /var • /home • /root • /opt • 一般不需备份的 • /proc • /dev • 等等
常用的备份命令 • tar,打包 • 含义:Tape archive,磁带归档 • 举例: • 还原 SCSI磁带设备 -c,创建 -p,保留文件访问权限 -f,归档文件名 备份整个文件系统 更深入的使用,参见tar相关 使用手册 -x,提取 -C / ,还原从“/”开始
压缩 • tar,可以压缩,使用-z选项(gzip格式) • dump/restore;cpio;dd • 一些商业化备份产品 • Tivoli Storage Manager • Amanda • Arkeia • 等等
Linux/UNIX安全技术 • Linux身份验证 • Linux访问控制 • Linux网络服务安全 • Linux备份/恢复 • Linux日志系统 • Linux内核安全技术 • 安全Linux服务器配置参考
Linux日志系统 • 记录和捕捉各种活动,包括黑客的活动 • 系统记账 • 连接记账:跟踪当前用户的会话、登录和退出的活动 • 进程记账:对进程活动的记录 • 系统日志管理
连接记账 • 由多个程序执行,把记录写入到 • /var/log/utmp • /var/log/wtmp • Login等程序使用utmp,wtmp等工具更新上述文件 • 系统管理员据此跟踪谁在何时登录到系统 • ac:对用户连接进行大概统计 • last:提供每一个用户的登录信息 • who:报告当前正在登录的用户的信息 • 等
进程记账 • 由系统内核执行 • 当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录 • /var/log/pacct • 打开进程记账