本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7629834
建立时间:2006年5月29日




[网络与系统管理]Debian学习笔记10
软件技术

lhwork 发表于 2007/2/2 10:16:46

Chapter 11. 系统安全 Table of Contents 11.1. 安全等级 11.2. 安全策略 11.3. 密码学原理 11.4. 强化系统安全过程 11.4.1. 检查系统 11.4.2. 小技巧 11.4.3. 检查网络 11.4.4. 安装防火墙和过滤器 11.4.5. 强化软件系统 11.4.6. 灾备 11.4.7. 文件访问控制 11.4.8. 数据安全 11.4.9. 强化身份验证机制 11.4.10. 强化软件运行环境 11.4.11. 强化网络通信 11.5. 监控你的网络 11.6. PAM 11.6.1. PAM配置文件 11.6.2. PAM模块介绍 11.7. 创建chroot环境 11.8. SSH 11.9. VPN 11.10. 安全工具列表 系统安全是应用的基础,一个安全的系统才能长时间不间断运行,有效支持我们的应用。建立一个安全的系统需要一个好的软硬件平台,但更重要的是要有一个优秀的系统管理员能及时地发现安全问题和解决安全问题。 11.1. 安全等级 如何评价一个系统的安全程度,美国国家计算机安全中心(NCSC)制定了可信任计算机标准评价准则(TCSEC Trusted Computer System Evaluation Criteria)对计算机系统进行分级。共有4个类别7个等级,分别是: A类 A1级:验证设计级(Verified Design),A1级是这套评价标准里的最高安全级别。要求组成系统的每个组件都需提供安全保证,并在出厂、销售、安装等的步骤中仍需保持这些特性。 B类 B3级:安全域级(Security Domain) B2级:结构化保护级(Structured Protection) B1级:标记安全保护级(Label Security Protection) C类 C2级:受控安全保护级,Unix、Linux和Windows NT都是C2级的产品。 C1级:自主安全保护级(Discretionary Security Protection) D类 D1级:安全保护欠缺级,Dos、Windows 95/98是D1级的产品。 TCSEC标准是计算机系统安全评估的第一个正式标准,于1985年12月由美国国防部公布。最初的TCSEC是一个军用的标准,后来延用于民用领域。随着技术的不断发展,新的功能被不断开发出来,对安全的评价标准提出了新的要求。欧洲四国(英、法、德、荷)提出了评价满足保密性、完整性、可用性要求的信息技术安全评价准则(ITSEC)。之后,美国联合英、法、德、荷和加拿大,会同国际化标准化组织(OSI)共同提出信息技术安全评价通用准则(CC for ITSEC)。 CC是目前最全面的安全评价准则,1996年6月,CC的第一版发布;1998年5月,第二版发布;1999年10月CC V2.1版发布,并正式成为ISO标准。 有关各种安全评价准则的详细介绍请参考相关的文档,这里就不一一展开说明了。 11.2. 安全策略 在这个世界上没有绝对的安全,我们说这台服务器安全并不是说它绝对不会有安全风险,不会受到损害。只能说明该台服务器的安全可信度高,不易受到侵害。相反,如果我们说这台服务器不安全,即可信度低,则这台服务器可能是一些服务的配置有安全漏洞或没有做数据冗余。每种环境、每种应用的可信度要求是有不同的,不能一概而论,如作为企业中心数据库服务器的可信度要求就比内部WEB服务器的可信度要求高。需投入更多的资金和时间对数据库服务器进行配置和优化。为确保系统安全,我们需制定安全策略。安全策略涉及系统、网络、数据和人员等方方面面,制定的安全策略应考虑以下几个安全要素。 机密性,信息或信息片段只应由合法用户访问,防止信息被非法用户访问。 数据完整性,防止数据被非法修改或删除。 可用性,防止服务的中断。 一致性,确保提供的服务行为保持一致。 可控性,控制用户对系统的访问。 审计,记录用户的正常操作和错误操作,一旦发生事故,可通过日志追查事故的发生过程。 为了使安全策略更有效,更符合实际情况,我们在制定安全策略前需先进行风险评估,风险评估的内容包括: 保护的范围和内容,并对所保护内容的价值进行估算。 需防御的侵害。 你可利用的资源,包括资金、人员、时间。 风险评估的步骤: 收集、识别安全策略需保护的资产。这里说的资产不仅仅指计算机,还应包括数据、文档、企业利益和人人利益等。我们可把这些资产分成有形资产和无形资产两类。 有形资产包括: 计算机及其外设 网络设备及线路 电子文档 软件 系统日志 无形资产包括: 员工安全及健康 员工的合法权益 企业的形象 客户的满意度 员工的经验和知识 系统密码 收集、识别可能发生的侵害与威胁。包括: 员工离职 员工被收买 员工无意或蓄意破坏 电脑失窃 计算机病毒 黑客入侵 网络线路故障 洪水、雷击和台风等自然灾害 硬件故障 系统Bug 费用-效益分析,分别计算损失费用和预防费用,并按损失的大小和发生机率的大小排列。优先处理损失大,发生机率高的项目。费用-效益分析可产生大量的数据,通过数据的展现,使管理层能更好地理解IT系统安全的重要性,投入更多的资源,提高可信息度。 无论你采取什么措施和投入多少资源,安全风险都是不能完全消除的。但我们可以把风险减低到我们可以接收的程度。同时,要求系统管理员不断跟踪系统变化和最新威胁,及时更新系统,才能使系统处于高可信度的状态。 一个完善的安全系统还包含一系列的说明文档,如安全策略、安全标准和安全指南。 安全策略是一种指导性的文档,具有通用性,一旦确定,很少改动。安全策略应该包含以下内容。第一,它明确保护的对象和原因。第二,它明确了保护的责任。第三,它为解析和解决后续可能出现的冲突提供基础。 安全标准通常需要用"必须"这个词来强调。如数据备份标准,网络使用标准。标准并不牵涉具体的技术实现,它只是一种安全事务的描述。 安全指南是指安全事务的具体操作指南,可指引用户进行一步步的操作,指南会涉及具体的技术和工具。 制定安全策略应注意的内容: 在编制安全文档时,需明确指定责任人,使大家明确自已所担当的责任。 使用肯定的语气,明确指出用户应该做什么和应该怎么做。 要培训用户,培养他们的安全意识。 制定的规定或制度要权责一致,谁具有相应的安全职责就应该赋予他相应的权力,使他能保证安全职责的顺利执行。 确定安全管理范围,应该包括的范围有:在家办公的计算机,外来的临时接入的计算机,PDA,远程接入的计算机,移动存储设备(U盘,CD,DVD等)。 使用"没有特别声明禁止的事,默认是允许的"或"没有特别声明允许的事,默认是禁止的"两句中的一句作为安全描述的补充说明。 在安全要求高的地方,可以设置二层或多层防御。加多几把锁虽然不能彻底防止入侵的风险,但可增加入侵的难度和时间。 安全是一个过程,需不断改进、验证和调整。 11.3. 密码学原理 我们使用密码控制用户登录系统,授予相应的访问权限,用加密算法对信息进行加密和签名后,才在网上进行传输,密码和加密技术是我们确保系统安全的第一道屏障。密码学原理是这个技术的理论基础,这一节我们简单介绍一下密码学的原理。 常用算法 symmetric ciphers(对称加密算法),对称加密算法有DES, 3DES, Blowfish, AES (Rijndael), RC5, RC6,Serpent, 和 IDEA。可把信息加密成密文进行传送,在接收方再进行解密恢复成明文。 asymmetric ciphers(非对称加密算法),RSA是最常用的一种非对称加密算法,该算法会生成一对公钥和私钥,私钥自已保存,公钥可公开给用户。用一个密钥加密的信息只能由另外密钥对中另外一个密钥进行解密。 message digests(信息摘要),常用的摘要算法有MD5和SHA-1,它采用一种不可逆的算法,从一段信息中能很快计算出一个固定长度的值(摘要值),但要从摘要值中反向推导出信息内容基本上是不可能的。而且当原始信息改动一个字符,生成的摘要值就完全不同。通过这种特性,可把信息摘要用于验证传输数据的完整性。 digital signatures(数字签名) 信息安全的定义 Confidentiality(机密性),利用对称加官算法中的密钥在通信前对信息进行加密,密文在通信线路中传输,在接收方,用相同的密钥对信息进行解密。在传输前需进行密钥分发是它的一个弱点。 Integrity(完整性),在传输两端分别对信息进行摘要计算,比较前后两个摘要值就可确定信息在传输中有没有被篡改。 Authentication(验证),发送方用对信息进行摘要计算后再用私钥加密该摘要信息,最后用对称加密算法对这个包含明文信息和用私钥加密的摘要进行加密,形成密文。接收方解密出发送方用私钥加密的摘要值后,用发送方的公钥再解密摘要信息,如果成功,则验证了信息来源的正常性且不可否认性。接收方还可对接收的信息进行摘要计算,再与接收的摘要值比较,确认数据在传输过程中是否被修改过。 Non-repudiation(不可否认),验证和不可否认是关联的。 11.4. 强化系统安全过程 下面介绍如何一步步地强化我们的Linux系统。 11.4.1. 检查系统 在强化系统前,我们要检查我们的系统是否正常,在一个不正常运行或已受黑客破坏的系统上进行安全强化是没有任何意义的。 用户是系统安全的实体,系统通过用户来执行各种操作,所以我们强化安全的第一步就是确定系统中是否存在不合法的用户。在/etc/passwd文件中保存了系统所有的用户。下面列出Linux系统默认创建的一些系统用户。 root,超级用户,系统安全的焦点所在。 daemon,用来处理后台服务(程序)的用户。 bin,系统级二进制文件所有者,没有执行程序的权限。 mail,处理电子邮件。 uucp,拥有控制串口的权限。 news,处理Usenet新闻组。 lp,处理打印系统。 nobody,不拥有任何帐号,是执行非特权操作的默认帐号。 www或http,运行Web服务。 named,运行BIND服务器的帐号。 sshd,运行ssh服务的帐号。 backup,进行系统备份的帐号。 系统对应每个用户名赋予一个数字,叫uid(用户标识符),系统实际上是通过这个uid来控制用户行为的。uid为0的是超级用户,所以root的uid是0。如果我们把其他用户的uid设置成0,则这个用户也就变成了超级用户。还有一个gid(组标识符),在/etc/group文件中可查到系统上所有组。我们可把有相同权限的用户组成一个组,便于管理。在linux中,可用id命令查看当前用户uid和gid信息。在一个正常的系统中,应该只存在一个uid为0的root帐号,如果你的系统中还存其它uid为0的帐号,那你可要小心啦,这很可能是黑客所为。debian:#~ iduid=0(root) gid=0(root) groups=0(root) 用w或last命令查看用户登录帐号信息:debian:#~ w 10:18:15 up 1:50, 1 user, load average: 0.11, 0.23, 0.27USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot :0 - 08:34 ?xdm? 8:42m 0.09s /bin/sh /usr/bin/startkde 如果发现可疑帐号,我们可以用以下命令来锁住它:debian:#~ passwd -l username 如果系统被黑客攻陷,黑客一般会启动一些后台进程来干坏事。我们要经常运行"ps -aux"查看进程或用"netstat -ap"来查进程所监听的端口。一旦发现不熟悉的进程,应该马上进行追查。 另外一个记录黑客事件的地方就是日志文件,Linux提供详细的日志信息记录用户或进程的操作过程,通过一些失败操作的日志记录我们就可以发现黑客的蛛丝马迹。/var/log/message日志记录了大量系统级的日志信息,是我们关注的焦点。一些有经验的黑客会清除日志来隐藏所做的操作,这将给我们追查带来困难,但我们也可从日志记录的完整性方面进行分析,查出问题。 11.4.2. 小技巧 下面介绍的内容将帮助你提高系统安全。 找出所有的suid和sgid文件# find / \( -perm -004000 -o -perm -002000 \) -type f -print 模式004000表示suid,模式002000表示sgid。 用mount的nosuid选项在安装文件系统时关闭suid和sgid。# mount -o nosuid /dev/hdb1 /mnt/hdb1 在lilo.conf里设置密码控制,使用户在开机时需输入开机密码。...timeout=00 #系统启动不进行倒数,直接启动指定内核restricted #启用安全控制password=xxxxxx #设置安全控制密码... 由于lilo.conf包含有开机密码,所以我们需把该文件的访问权限设置成只有root用户可访问,且不能更改。操作步骤如下:debian:~# chmod 0600 /etc/lilo.confdebian:~# chattr +i /etc/lilo.confdebian:~# lilo -v #使lilo.conf配置生效 chattr +i这个命令也适用于一些重要的文件,以防被破坏或恶意修改。 在bash shell下输入的每条命令,都会存放在内存,当退出当前shell时,内存中的命令就会保存在.bash_history文件中。它们最多可记录500条命令。该功能的好处是可以记录你输入过的命令,方便查询和重复调用。但如果你在命令行上输入过密码,则很可能会泄漏给其他人,造成安全问题。所以我们要根据自已的安全要求和使用习惯,重新设置历史命令的记录情况。保存的命令行数受bash shell的HISTSIZE和HISTFILESIZE这两个环境变量控制。HISTSIZE控制当前shell中保存在内存中的历史命令行数,这些命令可用上下方向键来重复调用。HISTFILESIZE控制退出当前shell时保存在.bash_history文件中的命令行数,.bash_history里记录的命令行会在下一次登录shell时被读入内存供用户调用。这两个命令在/etc/profile文件中设置,设置方法如下:HISTSIZE=20HISTFILESIZE=0 在/etc/profile时设置TIMEOUT环境变量,使bash shell在一定的时间内没有操作的情况下自动注销。如:TIMEOUT=60 #60秒没操作,bash shell将自动注销 口令限制 终端使用限制 登录限制 防火墙 身份验证 加密 数字签名 内容检查 反病毒、反垃圾邮件 11.4.3. 检查网络 网络服务是造成安全漏洞最主要的源头之一,为了确保系统的安全,我们要确保网络服务的安全。通常的做法是关闭掉不用的网络服务,或对有安全漏洞的服务增加安全措施。下面介绍如何加固网络安全。 当我们重新安装一台服务器后,应首先关闭网络功能。等我们配置好网络安全后再连接上网络。我们可用ifconfig命令关闭网络。debian:~# ifconfig eth0 down 如果有多个网卡,重复以上命令把eth0改成eth1、eth2...就可以啦。 确定机器所需的服务和所需服务的依赖关系。 关闭不需的服务,在各种发行版中,都有工具来管理服务。如rcconf,chkconfig,ntsysv等。 重启系统,复查服务的配置情况是否正确。 如果服务配置一切正常,则我们可以重新连接网络。 11.4.4. 安装防火墙和过滤器 现在最新的Linux内核都是使用iptables作为防火墙软件,过滤器则使用tcp_wrappers。 iptables通过设置防火墙规则控制网络通信。用以下命令可以检查系统是否已启用iptables防火墙规则。debian:~# iptables -L -vChain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 如果出现如上的输出,则说明系统还没有设置防火墙规则。我们要根据实际情况进行设置。如果系统已设置有防火墙规则,则我们不能随便修改规则,需与设置规则的管理员联系,了解规则的作用和含意,以便日后进行维护。 tcp_wrappers过滤器用于保护通过Internet超级守护进程(inetd或xinetd)实现的服务。它主要靠两个文件来控制过滤规则,一个是/etc/hosts.allow,一个是/etc/hosts.deny。这两个文件的具体含义和设置请参考后面的debian常用配置文件说明一章的内容。 11.4.5. 强化软件系统 软件是计算机的灵魂,计算机依靠软件完成实现各种功能。配置不当的软件或不必要的软件都会给系统造成安全问题。所以强化软件也是我们确保系统安全的重要步骤之一。我们应该采用最小化的原则,只安装必须的软件,下载软件时要到可信的网站下载,并使用MD5和GPG签名来验证软件包。 11.4.6. 灾备 世上没有一个绝对安全的系统,我们应该随时做好灾难恢复的准备。有关灾难恢复的内容很多,可以用一章的内容来讨论。这里只给出一些常用的做法。 尽量不要定制内核,减少系统恢复的复杂度。 备份服务器设置和系统配置。 制定快速重装系统的策略。当系统崩溃后,能以最快速的方法重装系统是快速恢复系统的前提。 11.4.7. 文件访问控制 网络访问控制能限制对一个系统的访问,而文件访问控制能限制对系统中每个文件的访问。在Linux中我们通过Linux的文件权限模式来设置每个文件的访问权限。有关如何设置文件的访问权限请参考文件系统一章的相关内容。 11.4.8. 数据安全 数据是我们最终要保护的内容,上面讲到的网络安全,软件安全,文件安全等,都是为了保护我们的数据不会丢失或被其他窃取。要保证数据安全,我们可以采取以下几种技术: 合理选择数据存储的位置和方式,提供数据容灾功能。 用GnuPG加密文件 用OpenSSL加密文件 安装和使用一个加密文件系统 11.4.9. 强化身份验证机制 我们要通过PAM(Pluggable Authentication Modules 可插拔式身份验证模块)来强化系统的身份验证机制。早期的unix系统把用户名和加密后的密码保存在/etc/passwd文件,而/etc/passwd是所有用户都有权读取的文件,所以虽然passwd文件中的密码已加密,但黑客只要获取了密码串就很容易利用"字典攻击"获取密码。为提高系统安全,近代的Unix都启用了影子口令文件/etc/shadow。/etc/passwd中的密码串被移到/etc/shadow文件中,/etc/shadow文件只能由管理员访问其它用户不能读取该文件的内容,所以密码的安全性大大提高。但现在随着网络应用的发展,我们的系统上会安装各种网络服务,如果每种网络服务都使用同一种身份验证方式,则网络的安全性和配置的灵活性都不够理想,于是人们开发了PAM模块。 PAM可使一些不支持shadow的系统支持shadow影子口令文件。PAM可使用强度更高的口令字加密函数。PAM可根据系统要求灵活配置身份证机制。有关PAM的安装配置请参考本笔记相关PAM的内容。 11.4.10. 强化软件运行环境 利用chroot工具可以在Linux系统中创建一个受控的执行环境,可以把一些应用服务安装在这个受控环境中运行。受控环境一旦被黑客攻破,也不会危害到整个Linux系统。在Linux下类似的受控执行环境还有User Mode Linux和BSD家族的jail命令。有关chroot环境的创建请参考本笔记的相关内容。 11.4.11. 强化网络通信 现在互联网已发展成为一个巨大的网络空间,网络无处不在,同时,危险也无处不在。数据通过网络传输时如果没有加密的安全措施,你的信息随时都可能会被别人监听和窃取。所以为了确保数据传输的安全,我们要利用ssh工具来保护不具备加密功能的协议,不要使用传统的以r开头的各种远程登录程序。或者通过搭建VPN通道来实现网络互联。有关ssh的使用和VPN服务器和客户端的使用请参考本笔记的相关内容。


阅读全文(1787) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.906 second(s), page refreshed 144787518 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号