找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 安全攻防 查看内容

通用UNIX系统安全检查列表(UNIXSecurityChecklist)

2009-12-14 02:46| 发布者: admin| 查看: 14| 评论: 0|原作者: 柳梦璃

通用UNIX系统安全检查列表(UNIX Security Checklist) --------------------------------------------------------------------------------发布者:lion 来源: 类别:原创天地 日期:02-24 今日/总浏览: 12/361 UNIX Security Checklist 作者: lion (lion@cnhonker.net) 主页:http://www.cnhonker.net 中国红客网络技术联盟 1. 物理安全 1.1 控制台安全 1.1.1 用有效的钥匙锁住房间 1.1.2 不要有其他的途径进入房间 1.2 数据安全 1.2.1 数据备份在安全的,专用的恢复数据的地方 1.2.2 计算机在UPS 保护下保证稳定的电源 1.2.3 保护网络电缆不要暴露 1.2.4 把敏感的信息锁在抽屉里 1.2.5 毁坏敏感的打印输出和磁带 1.3 用户习惯安全措施 1.3.1 当离开时请锁住屏幕或注销登陆机器 1.3.2 不要把密码或者密码提示书写在桌子上 1.3.3 细心使用xauth / xhost命令,防止别人读取自己的屏幕 1.3.4 不要放置欢迎的横幅,只有授权的才允许进入 2. 网络安全 2.1 过滤 2.1.1 在inetd.conf中禁止使用你不需要的服务 2.1.2 是否已经禁止了”r”系列服务 2.1.3 是否能用更安全的版本替代(比如ssh2) 2.1.4 路由器要在(TCP)512,513,514等端口进行过滤 2.1.5 只为允许访问的机器创建访问控制列表 /var/adm/inetd.sec 2.1.6 从路由中过滤不必要的服务仅有必要的服务能通路由器上的过滤规则 2.1.7 采用TCP wrappers 提供更强的访问控制和日志记录功能 2.1.8 如果你的机器需要连接Internet,请架设防火墙 2.2 防止欺骗 2.2.1 路由器 1. 关闭来源发送 2. 应用过滤器保证从外部网络进来的信息包的源地址没有与内部网络里的IP 地址相匹配 3. 确保只有有资格的主机名存在于NFS, hosts.equiv等系统文件里 4. 尽量不要使用hosts.equiv和.rhosts 5. 如果要使用.rhost和 .netrc 文件,必须把权限设置为600 2.3 网络服务安全 2.3.1 /etc/inetd.conf 文件 1. 确保该文件的许可权限设置为600 2. 确保该文件的属主是root 3. 禁止任何不需要的服务 2.3.2 /etc/services 文件 1. 确保该文件的许可权限设置为644 2. 确保该文件的属主是root 2.3.3 tcp_wrapper 1. 保护所有/etc/inetd.conf里允许的服务 2. 考虑保护任何允许的udp服务,如果保护的话必须在/etc/inetd.conf里使用nowait选项 2.3.4 /etc/aliases 文件 1. 在该行的开头用一个“#”号以禁止“decode”别名。为了使改动生效,必须运行/usr/bin/newaliases 2.3.5 /etc/hosts.lpd 文件 1. 确保该文件的第一个字符不是“-” 2. 确保该文件的许可权限设置为600 3. 确保该文件的属主是root 4. 确保在该文件中不出现“!”或“#”字符,该文件没有注释字符 5. 确保已经打上了最新的补丁 2.3.6 sendmail 1. 使用最新版本的sendmail 2. 如果使用操作系统提供的sendmail,确保安装了最新的安全补丁 3. 确保使用的sendmail 版本没有允许wizard 口令 4. 确保如果在/etc/sendmail.cf里有“OW”开头的行,则后面仅跟有一个“*” 5. 把sendmail(8)的最小日志记录级别增加到级别9,这有助于探测对sendmail漏洞的利用 2.3.7 fingerd 1. 如无特殊需要,尽量不要使用该服务 2. 使用最新版本的fingerd 软件 2.3.8 tftp 1. 如无特殊需要,尽量不要使用该服务 2. 一定在inetd.conf文件里设置目录访问限制 2.3.9 httpd(WWW服务) 1. 确保使用最行版本的httpd 服务器软件 2. 以一个专门创建的非特权用户(比如 nobody)的身份来运行httpd服务程序 3. 不要以root身份来运行httpd服务程序 4. 可能的话,在一个chroot(1)环境里运行httpd来限制http客户访问文件系统的其他部分 5. 仔细配置服务器程序的选项 6. 用配置选项来给敏感目录以附加的保护 7. 严格限制CGI程序的运行 8. 确保cgi-bin目录里的内容,权限和属主是所期望的 9. 避免把用户输入的内容之间传递给命令解释器,如perl,awk或shells 10. 在传递给任何命令解释器之前过滤调用户输入内容中的潜在危险字符 11. 有潜在危险的字符包括:\n \r (.,/;~!)>|^&$`< 2.3.10 Telnet 1. 确保已经打上了最新的补丁 2. 是否可以把telnetd服务替换成更安全的版本,因为telnet协议在网络上以明文传输数据,包括用户名和口令 2.3.11 FTP 1. 确保使用你所选择的ftpd服务程序的最新版本 2. 确认所有的系统用户(如uucp, bin, root…)都存在于 /etc/ftpusers 文件中 3. 确保最少的用户和最小的权限 4. 使用FTP 日志记录并经常查看日志 5. 尽量使目录不可写 6. 检查ftp服务程序的所有缺省配置选项 7. 确保你的ftp服务程序没有SITE EXEC命令 3. 帐号安全 3.1 密码安全 3.1.1 确保所有帐号都有有效密码 3.1.2 只有 root 才可以有 UID 0 的权限 3.1.3 密码不要是可猜测出来或者常用的单词等(可以使用crack工具破解) 3.1.4 不要把密码记录下来 3.1.5 不要把密码写在桌子上 3.1.6 密码强度要大 3.1.7 最好使用一次性密码 3.1.8 不要使用.netrc 文件 3.1.9 当有不正常登陆时需禁止帐号 3.2 Root 帐号 3.2.1 确保root只允许从控制台登陆 3.2.2 检查 root 的文件;不要有 "." 在路径变量里 3.2.3 限制知道root口令的人数 3.2.4 使用强壮的密码 3.2.5 三个月或者当有人离开公司是就更改一次密码 3.2.6 使用普通用户登陆,用su取得root权限, 而不是以root身份登录 3.2.7 确保root的登录执行文件里没有执行属于其它用户或人人可写的文件 3.2.8 使用root专用的shell 3.2.9 设置 umask 为077 ,在需要时再改回022 3.2.10 请使用全路径执行命令 3.2.11 不要允许有非root用户可写的目录存在root的路径里 3.2.12 确保root没有~/.rhosts文件 3.2.13 不要把临时文件保存在公用目录里 3.2.14 确保root的cron job文件里没有执行属于其它用户或人人可写的文件 3.3 匿名帐号 3.3.1 只有需要时才允许使用 3.3.2 把名字从guest改成其他的名字 3.3.3 使用强壮的密码 3.3.4 使用受限制的shell 3.3.5 设置 umask 为077 3.4 普通用户帐号 3.4.1 当帐号停止使用时应移除帐号 3.4.2 不要共享帐号 3.4.3 使常见的系统用户不可登陆 (如bin,sys,uucp) 3.4.4 设置 umask 为077 3.4.5 尽量使用受限制的shell 4. 文件系统安全 4.1 NFS 安全 4.1.1 不需要的话禁止NFS,只有真正需要时才使用NFS,并打上最新的补丁 4.1.2 在路由器上过滤NFS流量,过滤 TCP/UDP 端口 111 TCP/UDP 端口 2049,这能阻止 非子网内的机器访问你机器上export出的文件系统。 4.1.3 小心使用 /etc/exports 文件 1. 不允许exports 文件保护一个‘localhost’条目 2. 确保 /etc/exports 的许可权限设置为 644 3. 确保 /etc/exports 的属主为root 4.1.4 使用showmount -e 来查看当前输出的东西。 4.1.5 尽量只允许只读 4.1.6 尽量不要有suid位 4.1.7 使用完整的有资格的主机名 4.2 设备文件安全 4.2.1 设备文件/dev/null, /dev/tty 和/dev/console 确保全局可写,但不允许执行 4.2.2 大多数设备文件确保普通用户不可读写 4.2.3 以非setuid和只读来mount外部文件系统/设备 4.3 脚本安全 4.3.1 不要写带有 setuid / setgid位的shell 脚本; 用c代替它 4.3.2 在脚本中要使用全路径 4.4 系统配置文件 4.4.1 如果不使用任何“r”系列服务的话,/etc/hosts.equiv文件必须被删除或改名, 这样即使任何“r”系列命令被偶然打开也不会导致任何问题 4.4.2 如果必须使用 /etc/hosts.equiv文件 1. 确保只列出最小数量的信任主机,仅信任域内或在管理之下的主机 2. 确保使用完全格式主机名,比如 hostname.domainname.cn 3. 确保在文件中的任何地方都不能有一个 “+”条目 4. 确保在该文件中不出现“!”或“#”字符,该文件没有注释字符 5. 确保该文件的第一个字符不是“-” 6. 确保该文件的属主是root 7. 确保该文件的许可权限设置为600 4.4.3 如果不使用 $HOME/.rhosts 文件的话,确保每个用户的home目录里都没有.rhosts文件, 该文件的安全风险更大于/etc/hosts.equiv 文件,因为每个用户都能创建.rhosts文件。 使用cron 来周期性的检查和报告.rhosts的内容,并删除它,并且应该让用户知道在周 期性的执行这种审计。 4.4.4 如果必须使用 $HOME/.rhosts文件的话 1. 确保该文件的第一个字符不是“-” 2. 确保该文件的许可权限设置为600 3. 确保该文件的属主是该账号的属主 4. 确保在文件中的任何地方都不能有一个“+”条目 5. 确保在该文件中不出现“!”或“#”字符,该文件没有注释字符 4.5 root用户运行的文件 4.5.1 严格保证root运行的任何东西的属主都是root 4.5.2 为root账号检查下列文件的内容: 1. ~/.login, ~/.profile以及类似的登录初始化文件 2. ~/.exrc和类似的程序初始化文件 3. ~/.logout以及类似的登录session清理文件 4. crontab 和 at 条目 5. 在NFS分区上的文件 6. /etc/rc*和类似的系统启动和终止文件 4.6 文件权限 4.5.1 确保/etc/utmp的权限设置为644 4.5.2 确保/etc/state的权限设置为644 4.5.3 确保/etc/syslog.pid的权限设置为644 4.5.4 确保/etc/sm 和 /etc/sm.bak的权限设置为2755 4.5.5 考虑对用户不需要访问的文件取消读权限 4.5.6 确保操作系统核心(比如/vmunix)的属主为root,组id为0,权限为644 4.5.7 确保临时文件目录(比如/tmp)设置sticky-bit 4.5.8 取消不必要的SUID和SGID文件 4.5.9 确保umask值设置为027或077 4.5.10 确保/dev下都是特殊文件 4.5.11 确保在/dev之外没有不期待的特殊文件 4.5.12 确保启动和关闭系统脚本的许可权限不是666 4.5.13 最小的可写文件系统,如目录,文件等 5. 安全测试 5.1 确保已经安装了操作系统提供商发布的最新补丁 5.2 订阅安全邮件列表或者新闻组 5.3 如果你不使用 NIS或者NIS , 架构你的系统为一个可信赖的HP-UX系统来确保系统安全 5.4 经常用网络扫描工具来测试网络安全 如SATAN 5.5 经常使用工具检测各种系统问题 如COPS 5.6 在root用户受到威胁之后应使用一些入侵检测工具 如TIGER 5.7 定时使用密码破解工具确保密码不容易被破解 如CRACK 5.8 使用Tripwire 加密文件 5.9 经常查看日志文件, 如 btmp, wtmp, syslog, sulog 等 5.10 把任何可疑的信息自动发送给系统管理员 附录 A: 系统检查可能会用到的命令 A.1 重起 inetd # /bin/ps -aux | /bin/grep inetd | /bin/grep -v grep # /bin/kill -HUP A.2 列出已注册的rpc服务 # /usr/bin/rpcinfo –p A.3 重建alias(别名)映射 # /usr/bin/newaliases A.4 测试是否sendmail wizard password被允许 % telnet hostname 25 wiz debug kill quit % 应该看到响应"5nn error return",否则的化应该升级sendmail. A.5 把sendmail日志级别设置为9 在sendmail配置文件里的普通信息配置部分: O LogLevel=9 A.6 为mail消息设置syslog日志级别 /etc/syslog: mail.info /dev/console mail.info /var/adm/messages # kill –HUP A.7 测试ftpd是否支持SITE EXEC 普通用户: % telnet localhost 21 USER username PASS password SITE EXEC 匿名用户: % telnet localhost 21 USER ftp PASS test@test.com SITE EXEC 如果不支持的话有响应信息"5nn error return" A.8 查找 .exerc 文件 # /bin/find / -name '.exrc' -exec /bin/cat {} \; -print A.9 查找同组或所有用户可写文件和目录 # /bin/find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; # /bin/find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; A.10 查找代SUID位和SGID位的文件 # /bin/find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \; A.11 查找 /dev 下的普通文件 # /bin/find /dev -type f -exec ls -l {} \; A.12 查找块或字符特殊文件 # /bin/find / \( -type b -o -type c \) -print | grep -v '^/dev/' 发布者: lion 来源: 文章版权归原作者所有, 未经允许请勿转载, 如有任何问题请联系我们.

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 19:40 , Processed in 0.275898 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部