UNIX操作系统安全v1.0.0.0版本控制版本日期参与人员更新说明1.0.0.02009-4-20郭强拟制和创建版本控制目录第一章UNIX安全基础知识第二章Linux主机安全运行第三章Solaris主机安全运行第四章AIX主机安全运行第五章HP-UX主机安全运行第六章UNIX常见应用服务安全第七章UNIX异常检查第一章UNIX安全基础知识目录1.1文件完整性审计1.3安全补丁审计1.4端口审计1.5进程审计1.2帐户、口令审计1.6系统日志审计文件完整性审计-原理通过Hash函数计算得到每个文件的数字文摘MD5SHA每次检查时,它重新计算文件的数字文摘并将它与数据库中的值相比较不同,则文件已被修改,若相同,文件则未发生变化。文件完整性审计-意义检测系统关键文件变化情况检测各种误操作导致的系统变化在事件发生后,快速恢复系统的依据发现系统隐藏的后门BACKDOORROOTKITLKM文件完整性审计-安全周期文件完整性审计-手段Tripwire最成熟的商业文件完整性审计工具支持各种操作系统甚至网络设备CS结构方便集中管理和配置结果存放于数据库MD5SUM最通用的免费的完整性审计工具简单易用只能对单一文件进行审计AIDEfree,GPL支持各种操作系统文件完整性审计-部署逻辑图文件完整性审计-其他工具MD5SUM$md5sum*98343c7ee558fc6cc19cd5319c44f3d5*README-WIN322bf260615d34d7d46392e21b82b195b4*nmap-os-fingerprints8975f7180e8f8735867e49cf3ebed5c3*nmap-protocolsa365edeebbafaeca057397c19cf94c2d*nmap-rpc717a6cdbf5feb73617471cd041c45580*nmap-service-probes43dca708961769cb09780c9eba8b8712*nmap-servicesb00bd7728c6e7d3e9a37ad84147dd983*nmap.exe5d6ecce781323aec8c58b0de1a3e6888*nmap_performance.reg文件完整性审计-其他工具SUN网站提供md5提交、验证页面文件完整性审计-其他工具AIDEaide–iaide.conf文件完整性审计-注意事项完整性检查的工具本身完整性检查的数据库只读介质异地存储用户、弱口令审计-原理UNIX系统用户数据库/etc/passwd–USER:x:UID:GID::HOME:SHELL/etc/shadow加密后的用户密码–MD5-based–StandardDES-based–Double-lengthDES-based–BSDI'sextendedDES-based–FreeBSD'sMD5-based–OpenBSD'sBlowfish-based–AFS用户、弱口令审计-意义发现系统中无用、默认的用户发现使用弱密码的用户检查密码策略实施情况发现系统中的后门帐户用户、弱口令审计-手段手工直接查看系统用户数据库,人工简单判断JOHN最通用的UNIX密码破解软件有各种常见操作系统下的版本可以破解各种常见操作系统的用户数据库外加软件也可以实现分布式用户、弱口令审计-手段手工检查Solaris–cat/etc/passwd–cat/etc/shadow(AIX/etc/security/passwd)passwd–USER:x:UID:GID::HOME:SHELL»x为用户未锁定,::为空密码,*/*LK*为锁定»UID/GID0为root»常见可登陆shell/bin/sh/bin/bash/bin/kshShadow–USER:加密过的密码:::::UNIX系统帐号安全Passwd文件剖析name:coded-passwd:UID:GID:user-info:home-directory:shell7个域中的每一个由冒号隔开。name—给用户分配的用户名。Coded-passwd—经过加密的用户口令。如果一个系统管理员需要阻止一个用户登录,则经常用一个星号(:*:)代替。该域通常不手工编辑。UID—用户的唯一标识号。习惯上,小于100的UID是为系统帐号保留的。UNIX系统帐号安全GID—用户所属的基本分组。通常它将决定用户创建文件的分组拥有权。User_info—习惯上它包括用户的全名。邮件系统和finger这样的工具习惯使用该域中的信息。home-directory—该域指明用户的起始目录,它是用户登录进入后的初始工作目录。shell—该域指明用户登录进入后执行的命令解释器所在的路径。注意可以为用户在该域中赋一个/bin/false值,这将阻止用户登录。UNIX帐号安全(shadow文件)UNIX系统帐号安全上一次修改口令的日期,以从1970年1月1日开始的天数表示。口令在两次修改间的最小天数。口令在建立后必须更改的天数。口令更改之前向用户发出警告的天数。口令终止后帐号被禁用的天数。自从1970年1月1日起帐号被禁用的天数。保留域。UNIX系统帐号安全缺省帐号UNIX系统帐号安全禁用和删除帐号:禁用帐号最快的方式是在/etc/passwd或影子口令文件中用户加密口令的开始加一个星号(*)。该用户将不能再次登录。#userdeltest用户、弱口令审计-手段JOHNjohnpasswd一般运行john-wordfile:/usr/dict/words-rulespasswd加字典、自定义策略john-showpasswd查看已破解密码john–restore恢复上次运行用户、弱口令审计-注意事项密码文件要注意保存有的系统用户数据库文件不是标准模式,需要手工或脚本进行转换不要轻易删除帐户、建议先锁定帐户可能跟应用系统有关安全补丁审计-原理当前系统/应用的补丁升级,绝大部分是安全方面的升级系统/应用补丁后,即可修补当前已知的安全问题SUN定期(基本每周)会发布补丁集和包,包含所有补丁AIX以RecommendedMaintenancePackage+Hotfix方式提供最新为14?安全补丁审计-意义得到系统/应用准确版本信息判断系统是否存在安全漏洞为下一步安全补丁的实施提供准确的依据安全补丁审计-手段系统版本uname-an系统本身支持补丁查看命令Solaris–showdev–pAIX–oslevel–rHP-UX–swlist-lproduct‘PH??_*’应用补丁/版本telnetipportNmap安全补丁审计-手段最新补丁列表取得方式Solaris––安全补丁审计-手段安全补丁审计-手段安全补丁审计-注意事项补丁可能引起系统/应用的问题补丁时要注意文件的备份除系统补丁外,应用的补丁也很重要端口审计-原理系统开启的网络服务,均会导致开放特定的端口开放端口后,网络即可对此端口进行访问,如果此端口的应用存在安全漏洞,则可能导致系统的安全问题大部分的黑客留下的后门,均开放端口实现BindshellSshdbackdoor端口审计-意义发现系统开放的不必要的服务发现系统可能存在的后门为下一步加固关闭服务提供依据端口审计-手段系统本身命令netstat系统外部工具nmap端口扫描工具–可以扫描开放的TCP、UDP端口–可以进行端口-服务识别Lsof–i:3306查看系统打开的文件端口审计-手段netstata显示所有TCPUDP端口n数字显示地址和端口(不进行IP反向解析)举例»netstat–na|grepLISTEN端口审计-手段nmap-sTTCPconnect()端口扫描-sUUDP端口扫描-sV服务版本识别-OTCP/IP指纹判断系统类型-P0不预先ping主机-p端口扫描范围示例–nmap-sT-sU127.0.0.1端口审计-手段lsoflsoffile_system_name列举打开此文件的程序lsof-i列举所有打开Internetsocket的程序lsof-pPID列举此PID程序打开的文件lsof-cfirst_characters_of_command_name_that_interest_you列举此进程打开的文件端口审计-注意事项启动时打开端口的服务可能的位置/etc/rc.local/etc/rc.sysinit/etc/system/etc/rc*.d/etc/inetd.conf部分端口为系统默认必须开放111RPC端口关闭,CDE将不能运行Rootkit、lkm等后门程序会隐藏开放的特定端口进程审计-原理服务器启动后运行的程序,均可以以查看进程的方式看到黑客留下的后门程序,除了对系统本身文件进行修改的,大部分均会增添运行进程进程审计-意义发现系统运行的不必要服务发现黑客留下来的后门程序为下一步加固提供依据进程审计-手段Ps-a/-e列出所有用户进程-f列出进程的uid,ppids-l列出进程的uids,ppids,pgids,winpids-u列出某用户进程举例:–ps-ef进程审计-手段lsoflsoffile_system_name列举打开此文件的程序lsof-i列举所有打开Internetsocket的程序lsof-pPID列举此PID程序打开的文件lsof-cfirst_characters_of_command_name_that_interest_you列举此进程打开的文件进程审计-手段其他相关系统命令pcred{pid|core}查看进程的身份(有效的和真实的用户ID和组ID)pfiles[-F]pid查看进程打开的文件pflags[-r]{pid|core}查看进程的跟踪标志和信号状态pldd[-F]{pid|core}查看链接到进程上的动态链接pmap[-rxlF]{pid|core}查看进程的地址空间映射表(详细检查进程占用了多少虚拟内存)psigpid查看进程的信号pstack[-F]{pid|core}查看进程的十六进制/符号形式的堆栈记录ptimecommand[args...]高精度地统计进程占用CPU的时间/usr/proc/bin/ptree分层查看进程的所有子进程pwait[-v]pid等待指定的进程终止pwdxpid查看进程的当前工作目录系统日志审计-原理系统日志记帐的两个最主要守护进程klogdsyslogd会监视基本上所有的系统动作。其中klogd主要记录一些系统内核动作。syslogd,它可以接收访问系统的日志信息并且根据/etc/syslog.conf配置文件中的指令处理这些信息。任何希望生成日志信息的程序都可向syslog接口呼叫来生成改信息。其他的一些日志utmpd,wtmpd这两个进程来进行记帐的,然后通过utmppipe这个管道文件向/var/adm/utmpx这个文件写数据系统日志审计-意义观察系统的运行状态发现系统运行中出现的错误报警观察程序的运行情况和用户的登陆情况,甚至运行的命令。发现系统被黑客攻击后残留的痕迹。系统日志审计-手段/var/adm/*messages系统核心的各种运行日志(认证、inetd)sulog普通用户尝试su成为其它用户的纪录utmp/utmpx不具可读性的,记录着当前登录在主机上的用户,用w,who等命令来看wtmp,wtmps记录着所有登录过主机的用户,时间,来源等内容,也是不具可读性的用last命令来看syslog一般记录mail事件系统日志审计-手段如果使用bash,则可查看用户运行过的命令.bash_history额外的记帐功能需要执行/usr/lib/acct目录下的