《信息安全专题培训(Unix系统安全)ppt课件.ppt》由会员分享,可在线阅读,更多相关《信息安全专题培训(Unix系统安全)ppt课件.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Strictly Private & ConfidentialNSFocus Information Technology Co. Ltd.Unix系统安全系统安全徐毅徐毅 XTraining dept. , Customer Support CenterAugust 2005Strictly Private & Confidential1Strictly Private & ConfidentialStrictly Private & ConfidentialLinux/Unix构成构成2Strictly Private & ConfidentialStrictly Private & Co
2、nfidentialLinux内核组成部分内核组成部分3Strictly Private & ConfidentialStrictly Private & ConfidentialLinux进程调度进程调度Task_runningdo_fork()收到SIG_KILL或SIG_CONT后Task_uninterruptible申请资源未果Task_interruptible所申请资源有效或者收到信号时Holding CPU申请资源未果所申请资源有效时Task_stopped跟踪系统调用Task_zombiedo_exit()时间片到Schedule()4Strictly Private & C
3、onfidentialStrictly Private & ConfidentialLinux的系统调用的系统调用编程接口,与编程接口,与POSIX兼容,兼容,C语言函数集合语言函数集合实现形式与实现形式与DOS的的INT 21H相似相似 Linux使用使用int 80h函数名函数名“sys_xxx” 比如系统调用比如系统调用fork的相应函数的相应函数sys_fork()系统调用号和系统调用表系统调用号和系统调用表系统调用都转换为系统调用都转换为Int 80h软中断软中断所有的系统调用只有一个入口所有的系统调用只有一个入口system_call出口:出口: ret_from_sys_call
4、5Strictly Private & ConfidentialStrictly Private & ConfidentialLinux内存管理内存管理在在i386机器上,每个进程有独立的机器上,每个进程有独立的4G虚存空间虚存空间内核的代码段和数据段被映射到内核的代码段和数据段被映射到3G以上的空间中以上的空间中用户态下的代码实际可申请的虚存空间为用户态下的代码实际可申请的虚存空间为0-3GB每个进程用两套段描述符来访问内存,分别用来访问内核态和用户态下的内每个进程用两套段描述符来访问内存,分别用来访问内核态和用户态下的内存空间存空间在用户态下,代码不可能访问在用户态下,代码不可能访问3G以
5、上的地址空间,如果要访问内核空间,必以上的地址空间,如果要访问内核空间,必须通过系统调用或者中断须通过系统调用或者中断6Strictly Private & ConfidentialStrictly Private & ConfidentialLinux的模块机制的模块机制可动态装载的内核模块可动态装载的内核模块(lkm) 一组命令:一组命令:insmod、rmmod、lsmod、modprobe关于模块机制关于模块机制 可以让核心保持比较小的尺寸可以让核心保持比较小的尺寸 动态装载,避免重新启动动态装载,避免重新启动 模块机制常常用于设备驱动模块机制常常用于设备驱动 内核模块一旦加载之后,与
6、原有的核心代码同等内核模块一旦加载之后,与原有的核心代码同等7Strictly Private & ConfidentialStrictly Private & Confidentialinsmod装载模块装载模块Mod1-0 x1000Mod2-0 x2000 模块列表Mod1-0 x1000 模块列表找到核心输出符号虚拟内存修改其未解析的核心例程和资源的引用地址 010010001.物理内存空间申请足够的空间来容纳新的核心模块每个模块必须包括初始化例程和注销例程系统核心系统核心将模块的初始化与注销例程地址传递给核心8Strictly Private & ConfidentialStrict
7、ly Private & ConfidentialLinux内核中的内核中的Rootkit通过通过LKM,可以在系统内核中插入木马模块可以在系统内核中插入木马模块一个典型的以一个典型的以Linux 2.2.x为基础的为基础的rootkit knark 使用使用insmod knark.o就可以加载到内核中就可以加载到内核中还有其他的还有其他的ROOTKITS,比如比如adore内核内核ROOTKITS的对策的对策 根据每个根据每个rootkit的特征进行检测,然后设法删除的特征进行检测,然后设法删除 预防为主,安装内核检测系统,比如预防为主,安装内核检测系统,比如LIDS9Strictly P
8、rivate & ConfidentialStrictly Private & ConfidentialLinux安全问题安全问题缓冲区溢出缓冲区溢出-与各机构公布的风险列表密切相关与各机构公布的风险列表密切相关内核的安全性内核的安全性附加软件的安全性附加软件的安全性 Bind系统系统 Mail系统系统 FTP服务和服务和WWW服务服务 X-Window系统系统 NFS和和NIS系统系统10Strictly Private & ConfidentialStrictly Private & Confidential账号管理账号管理11Strictly Private & Confidential
9、Strictly Private & Confidential帐户管理帐户管理用户类型用户类型 Root(uid=0,仅次于,仅次于RING0) 普通用户普通用户(未设置密码和宿主目录者除外未设置密码和宿主目录者除外) 系统用户(用于标识进程身份和权限)系统用户(用于标识进程身份和权限) 攻击者的目标:夺取攻击者的目标:夺取uid 或或 euid = 0 12Strictly Private & ConfidentialStrictly Private & ConfidentialUnix口令文件存储路径口令文件存储路径Linux /etc/shadow (/etc/passwd)System
10、V Release 4.2 /etc/security SystemV Release 4.0 /etc/shadow SunOS 5.0 /etc/shadow SCOUnix /tcb/auth/files/ OSF/1 /etc/passwd HP-UX /.secure/etc/passwd BSD4.x /etc/master.passwd AIX3 /etc/security/passwd IRIX5 /etc/shadow 13Strictly Private & ConfidentialStrictly Private & Confidential为什么要用为什么要用shado
11、w文件文件UNIX最早用最早用/etc/passwd存储密码散列,普通用户可读,可以使用存储密码散列,普通用户可读,可以使用John、Crack之类的工具暴力破解,无安全性可言之类的工具暴力破解,无安全性可言Shadow单独存储密码单独存储密码hash,passwd文件只被用于进程读取当前的属主权限文件只被用于进程读取当前的属主权限14Strictly Private & ConfidentialStrictly Private & Confidential帐号密码文件帐号密码文件xylon:x:501:501:Jacky:/home/zhuxg:/bin/bash用户名用户名密码密码位置位置
12、UIDGID用户用户全名全名用户主用户主目录目录用户用户shell /etc/passwd和/etc/shadow(master.passwd)文件15Strictly Private & ConfidentialStrictly Private & Confidential解读解读/etc/shadow文件文件root:$1$fgvCnqo0$C6xldBN0rs.w1SCtD/RST0:10598:0:99999:7:-1:-1:-1073743272用户名加密口令上一次修改的时间(从1970年1月1日起的天数)口令在两次修改间的最小天数离用户必须修改口令还剩下的天数 离系统提醒用户必须修
13、改口令还剩下的天数 用户仍可修改口令还剩余的天数,否则到期之后该账号将被禁止 从1970年1月1日起账号被禁用的天数保留字段 16Strictly Private & ConfidentialStrictly Private & Confidential口令的加密算法口令的加密算法UNIX采用采用3种加密算法种加密算法头两字节为头两字节为$1表示表示MD5加密算法加密算法$2表示使用表示使用Blowfish加密算法加密算法其余为标准的其余为标准的DES加密算法加密算法17Strictly Private & ConfidentialStrictly Private & Confidential
14、添加帐户添加帐户添加用户添加用户 useradd /adduserrootwww /root# useradd -helpuseradd: invalid option - -usage: useradd -u uid -o -g group -G group,. -d home -s shell -c comment -m -k template -f inactive -e expire -p passwd -n -r name useradd -D -g group -b base -s shell -f inactive -e expire rootwww /root#useradd
15、u 1000 d /home/test s /bin/sh test18Strictly Private & ConfidentialStrictly Private & Confidential删除帐户删除帐户userdel/deluser Userdel -r namerootwww /root#userdel r testrootwww /root#ls l /home19Strictly Private & ConfidentialStrictly Private & Confidential管理帐号管理帐号查看当前用户名查看当前用户名rootwww /root# whoami更改用户
16、属性更改用户属性 usermodrootwww /root# usermod -helpusage: usermod -u uid -o -g group -G group,. -d home -m -s shell -c comment -l new_name -f inactive -e expire -p passwd -L|-U name20Strictly Private & ConfidentialStrictly Private & Confidential文件管理文件管理21Strictly Private & ConfidentialStrictly Private & Co
17、nfidentialLinux/Unix文件系统类型文件系统类型Ext2/ext3、UFS、JFSVFS抽象层文件系统,挂载具体的文件系统,抽象层文件系统,挂载具体的文件系统,lkm rootkit过滤过滤VFS相关的系统相关的系统调用调用文件类型文件类型 常规文件:常规文件:ASCII文本,二进制数据,可执行文本,二进制数据,可执行binary UNIX上的上的ABI:a.out,ELF文件格式文件格式 目录:目录:包含一组文件的二进制可执行文件包含一组文件的二进制可执行文件 特殊文件:特殊文件:/dev,/proc 链接文件链接文件 Sockets:进程间通讯使用的特殊文件进程间通讯使用的
18、特殊文件22Strictly Private & ConfidentialStrictly Private & Confidential文件类型文件类型由文件长模式显示的第一个字符决定由文件长模式显示的第一个字符决定“-”:普通文件:普通文件“d”:目录目录“l”:符号链接符号链接“s”:套接字套接字显示文件属性:显示文件属性:lsattr23Strictly Private & ConfidentialStrictly Private & ConfidentialLinux文件权限文件权限- r w - r - - r - -文件类型(文件、目录、特殊文件)拥有者访问权分组访问权其它用户访问
19、权ls l 文件名文件名24Strictly Private & ConfidentialStrictly Private & ConfidentialMask和和umask值值Mask和和umask相对应相对应对于文件对于文件 umask值值 | 文件权限文件权限 = 666对于目录对于目录 umask值值 | 目录权限目录权限 = 777Daemon守护进程通常需要对守护进程通常需要对”/”的完全访问权限的完全访问权限25Strictly Private & ConfidentialStrictly Private & Confidential文件管理文件管理添加添加/删除删除/移动文件和
20、目录移动文件和目录 touch、echo、vi、rm、mv更改文件权限更改文件权限 chmod、chattr更改文件属主更改文件属主 chown、chgrp26Strictly Private & ConfidentialStrictly Private & Confidential设置设置SUID/SGID和和Sticky-bit设置设置SUID/SGID程序程序 利用利用chmod 典型文件如典型文件如/bin/passwd SGID通常设置在某个目录上通常设置在某个目录上 Chmod 1755 和和dos的的TSR程序一样常驻内存程序一样常驻内存设置粘置位设置粘置位 典型目录如典型目录如
21、 /tmp 粘置位可防止误删、误修改或破坏用户文件粘置位可防止误删、误修改或破坏用户文件27Strictly Private & ConfidentialStrictly Private & Confidential进程的权限进程的权限如果如果mysqld文件的属主是文件的属主是root,那么,那么mysql服务被远程溢出后攻击者将得到服务被远程溢出后攻击者将得到root shell,假设,假设apache存在远程溢出,攻击者只能得到存在远程溢出,攻击者只能得到nobody shellRedhat9.0以前版本的以前版本的ping程序有程序有suid位,假设该命令的可执行文件存在缓冲位,假设该
22、命令的可执行文件存在缓冲区溢出,那么本地攻击者可以获得区溢出,那么本地攻击者可以获得root shell28Strictly Private & ConfidentialStrictly Private & Confidential进程运行时的权限变化进程运行时的权限变化Suid文件改变了文件运行时的进程属主,通常是更高的文件改变了文件运行时的进程属主,通常是更高的root权限,进程结束权限,进程结束时返回原来相对较低的权限,这样普通用户可以享受到便利又不至于权限越时返回原来相对较低的权限,这样普通用户可以享受到便利又不至于权限越界。这里引入了另一个值界。这里引入了另一个值euid,有效用户有
23、效用户ID,表征进程运行时的实际权限,如,表征进程运行时的实际权限,如果果euid=0那么你就拥有那么你就拥有root权限,实际上你使用权限,实际上你使用/bin/passwd更改自己密码的更改自己密码的瞬间拥有瞬间拥有root权限,但你却不能用它来做其它事权限,但你却不能用它来做其它事该特性被黑客利用该特性被黑客利用29Strictly Private & ConfidentialStrictly Private & ConfidentialUnix系统安全配置与优化系统安全配置与优化30Strictly Private & ConfidentialStrictly Private & Co
24、nfidential安装系统补丁安装系统补丁Solaris Showrev p 显示系统补丁显示系统补丁 Patchadd 安装系统补丁安装系统补丁Linux RHN update Rpm -Uvh Src recompile31Strictly Private & ConfidentialStrictly Private & ConfidentialSolaris基本安全配置基本安全配置设置一个尽可能复杂的设置一个尽可能复杂的root口令口令设置默认路由设置默认路由 /etc/defaultrouter设置设置dns /etc/resolv.conf设置设置 /etc/nsswitch.co
25、nf Host:files dns会话劫持的可能性(会话劫持的可能性(session hijack)32Strictly Private & ConfidentialStrictly Private & Confidential系统启动服务清理系统启动服务清理清理清理/etc/rc2.d 值得注意的值得注意的 nfs.* S71RPC清理清理/etc/rc3.d SNMP使用的选择使用的选择 SNMP配置配置清理清理/etc/init.d/inetsvc 禁止禁止in.named Inetd s t启动启动 (记录会话连接的记录会话连接的IP、端口、端口) 禁止禁止multicast33Str
26、ictly Private & ConfidentialStrictly Private & Confidential系统启动服务清理系统启动服务清理清理清理/etc/inetd.conf 服务服务 所有所有的的TCP/UDP服务服务 所有的调试服务所有的调试服务 所以的所以的R服务服务 几乎所有几乎所有的的RPC服务服务 使用必要的工具替换使用必要的工具替换telnet,ftp 必要的时候可以完全禁止必要的时候可以完全禁止inetd或用或用xinetd替换替换34Strictly Private & ConfidentialStrictly Private & Confidentialndd
27、 使用使用帮助帮助 ndd /dev/arp ? (icmp,tcp,udp,ip)查询查询 ndd /dev/arp arp_cleanup_interval 设置设置 ndd -set /dev/arp arp_cleanup_interval 6000035Strictly Private & ConfidentialStrictly Private & Confidential启动网络参数设定启动网络参数设定设置设置/etc/init.d/inetinit ndd -set /dev/tcp tcp_conn_req_max_q0 10240ndd -set /dev/ip ip_ig
28、nore_redirect 1ndd -set /dev/ip ip_send_redirects 0ndd -set /dev/ip ip_ire_flush_interval 60000ndd -set /dev/arp arp_cleanup_interval 60ndd -set /dev/ip ip_forward_directed_broadcasts 0ndd -set /dev/ip ip_forward_src_routed 0ndd -set /dev/ip ip_forwarding 0 (或或/etc/notrouter)ndd -set /dev/ip ip_stri
29、ct_dst_multihoming 136Strictly Private & ConfidentialStrictly Private & ConfidentialARP攻击防止攻击防止减少过期时间减少过期时间 #ndd set /dev/arp arp_cleanup_interval 60000 #ndd -set /dev/ip ip_ire_flush_interval 60000静态静态ARP arp f filename禁止禁止ARP ifconfig interface arp 37Strictly Private & ConfidentialStrictly Private
30、 & ConfidentialIP优化优化关闭关闭ip转发转发 ndd set /dev/ip ip_forwarding 0 转发包广播转发包广播 由于在转发状态下默认是允许的,为了防止被用来实施由于在转发状态下默认是允许的,为了防止被用来实施 smurf攻击,关闭这一特性。攻击,关闭这一特性。 (参见参见cert-98.01) #ndd set /dev/ip ip-forward_directed_broadcasts 0源路由转发,所以我们必须手动关闭它源路由转发,所以我们必须手动关闭它 ndd set /dev/ip ip_forward_src_routed 038Strictly
31、 Private & ConfidentialStrictly Private & ConfidentialICMP优化优化关闭对关闭对echo广播的响应广播的响应 ndd set /dev/ip ip_respond_to_echo_boadcast 0响应时间戳广播响应时间戳广播 #ndd set /dev/ip ip_respond_to_timestamp_broadcast 0 地址掩码广播地址掩码广播 #ndd set /dev/ip ip_respind_to_address_mask_broadcast 039Strictly Private & ConfidentialStr
32、ictly Private & ConfidentialICMP优化优化 接受重定向错误接受重定向错误 #ndd set /dev/ip ip_ignore_redirect 1 响应时间戳广播响应时间戳广播发送重定向错误报文发送重定向错误报文 ndd set /dev/ip ip_send_redirects 0 时间戳响应时间戳响应 #ndd set /dev/ip ip_respond_to_timestamp 0 注意注意:Rdata(同步时钟)可能无法正常同步时钟)可能无法正常40Strictly Private & ConfidentialStrictly Private & Co
33、nfidentialTCP优化优化Synflood ndd set /dev/tcp tcp_conn_req_max_q0 4096默认值是默认值是1024连接耗尽攻击连接耗尽攻击 ndd set /dev/tcp tcp_conn_req_max_q 1024默认值是默认值是128增加私有端口增加私有端口 ndd /dev/tcp tcp_extra_priv_ports 2049 4045要注意的是,不要随便定义私有端口,因为有些非根权限的进程会使用这些端口。特别是改要注意的是,不要随便定义私有端口,因为有些非根权限的进程会使用这些端口。特别是改变最小非私有端口这个参数,经常会引起问题变
34、最小非私有端口这个参数,经常会引起问题41Strictly Private & ConfidentialStrictly Private & Confidential文件系统配置文件系统配置删除删除NFS的相关配置的相关配置 /etc/auto_* /etc/dfs/dfstabMount文件系统的设置文件系统的设置 /etc/vfstab /usr mount ro /dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4 /usr ufs 1 no ro Other mount nosuid /dev/dsk/c0t3d0s5 /dev/rdsk/c0t3d0s5 /var
35、 ufs 1 no nosuid /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /local ufs 2 yes nosuid 可能的话可能的话 mount / nosuid42Strictly Private & ConfidentialStrictly Private & Confidential文件系统配置文件系统配置寻找系统所有的寻找系统所有的suid程序程序 Find / -type f ( -perm -4000 ) | xargs ls a调整文件系统的权限调整文件系统的权限 /usr /sbin /var/log /etc 43Strictly Pr
36、ivate & ConfidentialStrictly Private & Confidential日志系统配置日志系统配置/etc/syslog.conf 增加的日志记录增加的日志记录 auth.info /var/log/authlog 输出到输出到loghost 输出到打印机输出到打印机增加对增加对su和和crontab的日志记录的日志记录 /etc/default/cron /etc/default/su44Strictly Private & ConfidentialStrictly Private & Confidential日志系统配置日志系统配置syslog.conf的格式如
37、下的格式如下 设备设备.行为级别行为级别 ;设备;设备.行为级别行为级别 记录行为记录行为 注意各栏之间用注意各栏之间用Tab来分隔,用空格是无效的。来分隔,用空格是无效的。 如如*.err;daemon.notice;mail.crit /var/adm/messages45Strictly Private & ConfidentialStrictly Private & Confidential日志系统配置日志系统配置- -设备设备auth 认证系统认证系统,由由login、su和和getty产生产生cron 系统定时系统执行定时任务时发出的信息系统定时系统执行定时任务时发出的信息daem
38、on 守护程序的守护程序的syslog,如由如由in.ftpd产生的产生的logkern 内核的内核的syslog信息信息lpr 打印机的打印机的syslog信息信息mail 由由syslog自己产生,为日志盖上时间戳自己产生,为日志盖上时间戳mark 定时发送消息的时标程序定时发送消息的时标程序news 新闻系统的新闻系统的syslog信息信息*: 代表以上各种设备代表以上各种设备46Strictly Private & ConfidentialStrictly Private & Confidential日志系统配置日志系统配置- -行为级别行为级别行为级别描述(危险程度递增)行为级别描述
39、(危险程度递增)debug 程序的调试信息程序的调试信息info 报告性消息报告性消息notice 需要以后注意的通知需要以后注意的通知warning 警告信息警告信息err 其它系统错误其它系统错误crit 危险的系统状态,如硬件或软件无效危险的系统状态,如硬件或软件无效alert 应该立即被纠正的情况应该立即被纠正的情况emerg 最严重的消息,如立即关闭系统最严重的消息,如立即关闭系统none 指定的服务程序未给所选择的指定的服务程序未给所选择的47Strictly Private & ConfidentialStrictly Private & Confidential日志系统配置日志
40、系统配置- -特殊特殊配置配置loghost loghost日志输出到打印机日志输出到打印机 把打印机连接到终端端口把打印机连接到终端端口/dev/ttya上,在上,在/etc/syslog.conf中加入配置语句中加入配置语句 auth.notice/dev/ttya48Strictly Private & ConfidentialStrictly Private & Confidential帐户清理与设置帐户清理与设置userdel/passmgmt (uucp,listen, lp,smtp,adm)/etc/default/login的设置的设置 禁止非禁止非console root登
41、陆登陆 登陆超时登陆超时 登陆掩码设置登陆掩码设置/etc/defualt/passwd 密码长度,过期等密码长度,过期等49Strictly Private & ConfidentialStrictly Private & Confidential使用使用ASETThe Automated Security Enhancement Tool自动安全增强工具自动安全增强工具 系统文件访问权的证实系统文件访问权的证实 系统文件的检查系统文件的检查 用户用户/组的检查组的检查 系统配置文件检查系统配置文件检查 环境变量检查环境变量检查 Eeprom检查检查 防火墙的设置防火墙的设置50Strict
42、ly Private & ConfidentialStrictly Private & ConfidentialLinux高级安全技巧高级安全技巧普通的安全加固普通的安全加固 治标不治本治标不治本 被动防御被动防御 无法阻止高级入侵者无法阻止高级入侵者高级安全防御高级安全防御 攻击免疫攻击免疫 易用性降低易用性降低 对实施者要求较高对实施者要求较高51Strictly Private & ConfidentialStrictly Private & Confidential攻击免疫新概念攻击免疫新概念即使存在漏洞,缓冲区溢出无效即使存在漏洞,缓冲区溢出无效即使存在即使存在SQL注入,无法利用注
43、入,无法利用即使缓冲区溢出成功,无法得到即使缓冲区溢出成功,无法得到shell即使得到即使得到root权限,仍然无法更改系统设置权限,仍然无法更改系统设置52Strictly Private & ConfidentialStrictly Private & ConfidentialLinux极限安全架构极限安全架构Apache/ProFTP/MySQL chroot环境运行环境运行修改或隐藏所有修改或隐藏所有daemon的的banner,OS fingerprint伪装伪装动态脚本使用动态脚本使用Apache的的mod-security模块模块Iptables限制反向限制反向TCP连接,过滤连接,过滤UDP、ICMPAnti-缓冲区溢出内核补丁缓冲区溢出内核补丁内核内核MAC(Mandatory Access Control)53Strictly Private & ConfidentialStrictly Private & ConfidentialQ&A感谢聆听!感谢聆听!Thank you for attending!