2010年08月16日

一.unix系统的基本安全机制

1.用户帐号

用户帐号就是用户在unix系统上的合法身份标志,其最简单的形式是用户名/口令。在unix系统内部,与用户名/口令有关的信息存储在/etc /passwd文件中,一旦当非法用户获得passwd文件时,虽然口令是被加密的密文,但如果口令的安全强度不高,非法用户即可采用“字典攻击”的方法 枚举到用户口令,特别是当网络系统有某一入口时,获取passwd文件就非常容易。

2.文件系统权限

unix文件系统的安全主要是通过设置文件的权限来实现的。每一个unix文件和目录都有18种不同的权限,这些权限大体可分为 3类,即此文件的所有者、组和其他人的使用权限如只读、可写、可执行、允许suid和sgid等。需注意的是权限为允许suid、sgid和可执行文件在 程序运行中,会给进程赋予所有者的权限,若被入侵者利用,就会留下隐患,给入侵者的成功入侵提供了方便。

3.日志文件

日志文件是用来记录系统使用状况的。unix中比较重要的日志文件有3种:

(1)/usr/adm/lastlog文件。此文件用于记录每个用户最后登录的时间(包括成功和未成功的),这样用户每次登录后,只要查看一下所有帐号的最后登录时间就可以确定本用户是否曾经被盗用。

(2)/etc/utmp和/etc/wtmp文件。utmp文件用来记录当前登录到系统的用户,wtmp文件则同时记录用户的登录和注销。

(3)/usr/adm/acct文件。此文件用于记录每个用户运行的每条命令,通常我们称之为系统记帐。

二.unix系统和安全防范

金融系统应用的unix网络系统一般均采用客户/服务器方式。系统前台客户机运行并向后台系统发出请求,后台服务器为前台系统提供服务,系统功能由前 后台协同完成,典型的应用如:前台运行银行界面输入输出、数据校验等功能,后台实现数据库查询等操作。由于unix系统设计基于一种开放式体系结构,系统 中紧密集成了通信服务,但存在一定程度的安全漏洞,容易受到非法攻击,通过多年的实践证明,加强安全防范,特别是针对一些可能的网络攻击采取一定的安全防 范措施,unix网络系统的安全性就可以大大提高。

1.网络攻击类型

(1)猛烈攻击(brute-force attack)。此攻击的目标是为破译口令和加密的信息资源,当试图入侵者使用一个高速处理器时,便可试用各种口令组合(或加密密钥),直到最终找到正确的口令进入网络,此法通常称之为“字典攻击”。

(2)社会工程攻击(social-engineering attack)。此攻击也是最难防备的一种攻击方式。网上黑客通常扮成技术支持人员呼叫用户,并向用户索要口令,而后以用户的身份进入系统。这是一种最简单同时也是最有效的攻击方式。

(3)被动攻击(passive attack)。非法用户通过探测网络布线等方法,收集敏感数据或认证信息,以备日后访问其他资源。

(4)拒绝服务(denial-of-service)。此攻击的目的通常是指试图入侵网络者采用具有破坏性的方法阻塞目标网络系统的资源,使网络系统暂时或永久瘫痪。如入侵者使用伪造的源地址发出tcp/ip请求,阻塞目标网络系统的资源从而使系统瘫痪。

2.网络安全防范策略

网络系统的攻击者可能是非法用户,也可能是合法用户,因此,加强内部管理、防范与外部同样重要。可实施以下策略进行防范。

(1)加强用户权限管理。为了保护unix系统资源安全,即使是对合法用户也必须采用最小权限法,即给每个用户只授予完成特定任务所必需的系统访问权 限。通常可以采用给每一个用户建立请求文件和资源访问许可权的程序,给定每个用户要处理的任务权限及任务的持续时间等。

(2)加强用户口令管理和更新。口令通常是较容易出现问题的地方,即使口令被加密,也容易在非法入侵者的“猛烈攻击”下被攻破。金融系统通常是一个群 体工作环境,工作中经常存在各种授权,银行的柜台活动也处在电视监控之下,口令泄露机会较多。因此,一方面要强制使用安全口令(使用非字母字符、大小写字 母混用、规定口令最小长度不得少于6位数,最好8位数、使用强加密算法等);另一方面系统管理员要主动定期使用口令检查程序(如:crack)对口令文件 进行检查,若口令不合乎安全规范,则需及时更换口令。还可以采用一定的技术手段,增加“字典攻击”的难度,如改变口令加密算法中的加密参数,然后加密口 令,这样除非攻击者同样改变了此参数,否则就得不到正确的口令。加强监控室及监控录象带的管理,对各类授权活动最好采用刷卡方式进行。

(3)设置防火墙。将网络系统内部分为多个子网,分级进行管理,这样可以有效地阻止或延缓入侵者的侵入。通常防火墙设置在内部网络与外部网络的接口 处,防火墙从功能和实现机制上分为数据包过滤、代理服务器两大类,两者在安全防护上各有特点,因此,一个比较完善的防护隔离体系就是将两种防火墙结合起 来,形成屏蔽子网体系结构,此举可大大提高内部网络的安全系数。但是,防火墙只能防护外部网络对内部网络的攻击,无法防护由内部网络发起的攻击或者拥有合 法访问权限的内部人员从外部发起的攻击,并且防火墙无法防护内外网络之间有其它不通过防火墙的通路。总之,防火墙需要与其它机制配合才能适应新的威协。

(4)建立实时监视系统。使用iss的realsecure实时监控系统对网络系统的运行过程进行实时监视和审计,对内部或外部黑客的侵入及一些异常 的网络活动能够实时地进行识别、审计、告警、拦截。realsecure还能和防火墙产品配合,及时切断“黑客”与信息系统的连接,形成一个动态的安全防 护体系。iss软件信息可访问[url]http://www.iss.net[/url]。

(5)定期对网络进行安全漏洞检测。网络安全是千变万化的,所以保护措施也应该是动态的,没有固定的模式可循,作为unix系统的管理人员,也要尝试 定期对网络服务器进行攻击测试,这样既可以分析和探索试图入侵者的攻击思路,同时又可以及时发现系统安全保护机制中的潜在问题,及时进行有效防范。

(6)制定相应的灾难恢复计划。没有一种安全策略是十全十美的,因此根据可能发生的情况制定相应的灾难恢复计划是非常有必要的。一是定时对网络系统上 各个计算机的系统文件、数据库文件进行备份。二是对网络系统和通讯系统备份,在系统万一遇到恶意攻击、软件故障、硬件故障、用户错误、系统管理员错误等灾 难后,可以及时采取相应的对策,恢复系统的正常运行,尽可能将损失减少到最小程度。

3.加强网络系统服务的安全手段和工具

(1)直接配置检查。使用cops(computer oracle password and seurity system)从系统内部检查常见的unix安全配置错误与漏洞,如关键文件权限设置、ftp权限与路径设置、root路径设置、口令等等,指出存在的失 误,减少系统可能被本地和远程入侵者利用的漏洞。cops软件信息可访问 [url]http://www.jordanpan@163.net[/url]。

(2)使用记录工具记录所有对unix系统的访问。大多数现成的unix应用系统可以通过syslog来记录事件,这是unix系统提供的集中记录工 具。通过每天扫描记录文件/var/adm/messaged,并可通过配置syslog,把高优先级的事件及时传送给系统安全员处理。另一个有用工具是 tcp wrappers,应用此软件可以解决unix网络系统安全监视和过滤问题,本软件将所有tcp连接试图(无论成功与否),都记录到一个文本文件里,文本 文件具体内容包括请求的源地址、目的地址、tcp端口和请求时间等。通过监视tcp wrappers记录,查看所有未遂连接试图,并可以通过配置,由tcp wrappers来根据某些因素,如源或目的tcp端口、ip地址等接受或者拒绝tcp连接。tcp wrappers软件下载地址为[url]ftp://ftp.win.tue.nl/pub/security[/url]。

(3)远程网络登录服务。此服务是我们使用最频繁的,unix系统提供了telnet和ftp远程登录,当使用telnet或ftp登录时,用户名和 口令是明文传输的,这就可能被网上其他用户截获。入侵者也经常使用telnet或 ftp对网络系统发动“猛烈攻击”。入侵者可较容易地编写一个脚本,通过破译不同的口令来试图和远程服务器建立连接,而telnet精灵进程在多次连接试 图失败之后会产生一定的延迟,延迟时间和未遂的注册次数成正比,从而防止入侵。还有一种加强telnet或ftp服务口令安全的方法,就是每次使用不同的 密码,这可通过s/key工具实现。s/key系统建立在一次性用户口令的基础上,生成一系列口令,用户可以使用这些口令与unix服务器进行远程访问, 且不需要特殊的客户机软件。s/key的认证算法使得入侵者无法预测用户下一个口令的内容。由于ftp功能与telnet类似,为此可以修改/etc /ftpusers文件,指定不允许通过ftp进行远程登录的用户。使用匿名ftp服务,任何人都可以随意注册下载或上载文件,如果不需要匿名ftp服 务,可以把username ftp从/etc/passwd文件里删除掉;如果必须提供匿名ftp服务,可以把它安装在本网络之外被称为停火区(dmz)的服务器中。同时,我们建议 使用安全的远程访问工具ssh,其安全性强于telent和ftp。ssh具有强力远程主机认证机制,可以有效降低入侵者通过dns或者ip地址欺骗手段 模仿客户机的可能性,同时ssh还支持多种端到端的加密协议,如des、triple-des、idea和blowfish等,从而更有利于保证整个通讯 系统的安全。使用ssh时应禁止使用telnet、ftp和rlogin服务。s/key信息可访问[url]http://yak.net /skey[/url]。

(4)nfs(network file system)服务。此服务允许工作站通过网络系统共享一个或多个服务器输出的文件系统。早期的nfs协议使用rpc(remote procedure call)进行客户机与服务器数据交换,由于用户不经登录就可以阅读或更改存储在nfs服务器上的文件,使得nfs服务器很容易受到攻击。为了确保基于 unix系统的所有nfs服务器均支持secure rpc,secure rpc使用des加密算法和指数密钥交换技术验证每个nfs rpc请求的身份。当用户登录到某台工作站时,login程序从nis(network information system)数据库中获得一个包含用户名、用户公钥以及用于用户口令加密的用户私钥三项内容的记录(在secure rpc4.1以上版本中,私钥被保存在内存中的 keyserver进程中),而工作站和服务器用自已的私钥和对方的公钥产生一个session key。随后工作站产生一个56位随机c key,用session key加密后传给服务器,登录时均使用c key进行加密。在数据传输过程中,服务器通过以下推理确认用户身份是否合法,首先用户传送的包是用c key加密的;其次只有知道用户的私钥才能产生c key;最后必须知道口令才能解开加密的私钥。使用nfs还应注意以下几点:尽可能以只读方式输出文件系统;只将必须输出的文件系统输出给需要访问的客 户,不要输出本机的可执行文件,或仅以只读方式输出;不要输出所有人都可以写的目录;不要输出用户的home目录;将所有需要保护的文件的owner设为 root,权限均设为755(或644),这样即使工作站上的root帐号被攻破,nfs服务器上的文件仍能受到保护;可使用fsirand程序,增加制 造文件句柄的难度。

(5)nis (network information system)服务。这是一个分布式数据系统,计算机用它能够通过网络共享passwd文件、group文件、主机表和一些类似的资源。通过nis和 nfs,整个网络系统中所有工作站的操作就好象在使用单个计算机系统,而且其中的过程对用户是透明的。但在nis系统中,用户可以编写程序模仿 ypserv来响应ypbind的请求,从而获取用户的口令。因此,nis客户最好使用ypbind的secure选项,不接受非特权端口(即端口号小于 1024)的ypserv响应。

(6)finger服务。通常使用finger命令是为了查看本地或远程网络系统中当前登录用户的详细信息,但同时也为入侵者提供了成功入侵系统的机会。所以,最好禁止使用finger。

3.结束语

只有针对unix网络系统存在的漏洞采取相应的安全保护措施,才能遏制金融计算机犯罪率。但在客观上要完全消除unix网络系统的安全隐患非常困难, 一是因为unix系统本身是一种非常复杂的系统,二是因为unix系统数年来在各领域的广泛使用,使得它成为被研究得最透彻的系统之一。通常入侵者发动的 攻击形式是极其复杂的,保护unix系统安全的关键是针对入侵者可能发动的攻击制定出一系列切实可行的安全防范策略,使各种攻击在多样化的安全防范措施面 前不能轻易得逞。在对ip级安全实施加固之后(如设立安全ip包、过滤防火墙等),还必须对传输层和应用层的安全进行加固,同时要在金融系统内部建立一整 套网络系统安全管理规章和防范措施,经常进行监督检查,使安全管理规章和防范措施落到实处。要使每一位员工都有防范金融计算机犯罪的概念,了解其作案的手 法及产生的危害,提高全员主动防范意识,这样才能真正有效地预防金融计算机案件的发生。

一.unix系统的基本安全机制

1.用户帐号

用户帐号就是用户在unix系统上的合法身份标志,其最简单的形式是用户名/口令。在unix系统内部,与用户名/口令有关的信息存储在/etc /passwd文件中,一旦当非法用户获得passwd文件时,虽然口令是被加密的密文,但如果口令的安全强度不高,非法用户即可采用“字典攻击”的方法 枚举到用户口令,特别是当网络系统有某一入口时,获取passwd文件就非常容易。

2.文件系统权限

unix文件系统的安全主要是通过设置文件的权限来实现的。每一个unix文件和目录都有18种不同的权限,这些权限大体可分为 3类,即此文件的所有者、组和其他人的使用权限如只读、可写、可执行、允许suid和sgid等。需注意的是权限为允许suid、sgid和可执行文件在 程序运行中,会给进程赋予所有者的权限,若被入侵者利用,就会留下隐患,给入侵者的成功入侵提供了方便。

3.日志文件

日志文件是用来记录系统使用状况的。unix中比较重要的日志文件有3种:

(1)/usr/adm/lastlog文件。此文件用于记录每个用户最后登录的时间(包括成功和未成功的),这样用户每次登录后,只要查看一下所有帐号的最后登录时间就可以确定本用户是否曾经被盗用。

(2)/etc/utmp和/etc/wtmp文件。utmp文件用来记录当前登录到系统的用户,wtmp文件则同时记录用户的登录和注销。

(3)/usr/adm/acct文件。此文件用于记录每个用户运行的每条命令,通常我们称之为系统记帐。

二.unix系统和安全防范

金融系统应用的unix网络系统一般均采用客户/服务器方式。系统前台客户机运行并向后台系统发出请求,后台服务器为前台系统提供服务,系统功能由前 后台协同完成,典型的应用如:前台运行银行界面输入输出、数据校验等功能,后台实现数据库查询等操作。由于unix系统设计基于一种开放式体系结构,系统 中紧密集成了通信服务,但存在一定程度的安全漏洞,容易受到非法攻击,通过多年的实践证明,加强安全防范,特别是针对一些可能的网络攻击采取一定的安全防 范措施,unix网络系统的安全性就可以大大提高。

1.网络攻击类型

(1)猛烈攻击(brute-force attack)。此攻击的目标是为破译口令和加密的信息资源,当试图入侵者使用一个高速处理器时,便可试用各种口令组合(或加密密钥),直到最终找到正确的口令进入网络,此法通常称之为“字典攻击”。

(2)社会工程攻击(social-engineering attack)。此攻击也是最难防备的一种攻击方式。网上黑客通常扮成技术支持人员呼叫用户,并向用户索要口令,而后以用户的身份进入系统。这是一种最简单同时也是最有效的攻击方式。

(3)被动攻击(passive attack)。非法用户通过探测网络布线等方法,收集敏感数据或认证信息,以备日后访问其他资源。

(4)拒绝服务(denial-of-service)。此攻击的目的通常是指试图入侵网络者采用具有破坏性的方法阻塞目标网络系统的资源,使网络系统暂时或永久瘫痪。如入侵者使用伪造的源地址发出tcp/ip请求,阻塞目标网络系统的资源从而使系统瘫痪。

2.网络安全防范策略

网络系统的攻击者可能是非法用户,也可能是合法用户,因此,加强内部管理、防范与外部同样重要。可实施以下策略进行防范。

(1)加强用户权限管理。为了保护unix系统资源安全,即使是对合法用户也必须采用最小权限法,即给每个用户只授予完成特定任务所必需的系统访问权 限。通常可以采用给每一个用户建立请求文件和资源访问许可权的程序,给定每个用户要处理的任务权限及任务的持续时间等。

(2)加强用户口令管理和更新。口令通常是较容易出现问题的地方,即使口令被加密,也容易在非法入侵者的“猛烈攻击”下被攻破。金融系统通常是一个群 体工作环境,工作中经常存在各种授权,银行的柜台活动也处在电视监控之下,口令泄露机会较多。因此,一方面要强制使用安全口令(使用非字母字符、大小写字 母混用、规定口令最小长度不得少于6位数,最好8位数、使用强加密算法等);另一方面系统管理员要主动定期使用口令检查程序(如:crack)对口令文件 进行检查,若口令不合乎安全规范,则需及时更换口令。还可以采用一定的技术手段,增加“字典攻击”的难度,如改变口令加密算法中的加密参数,然后加密口 令,这样除非攻击者同样改变了此参数,否则就得不到正确的口令。加强监控室及监控录象带的管理,对各类授权活动最好采用刷卡方式进行。

(3)设置防火墙。将网络系统内部分为多个子网,分级进行管理,这样可以有效地阻止或延缓入侵者的侵入。通常防火墙设置在内部网络与外部网络的接口 处,防火墙从功能和实现机制上分为数据包过滤、代理服务器两大类,两者在安全防护上各有特点,因此,一个比较完善的防护隔离体系就是将两种防火墙结合起 来,形成屏蔽子网体系结构,此举可大大提高内部网络的安全系数。但是,防火墙只能防护外部网络对内部网络的攻击,无法防护由内部网络发起的攻击或者拥有合 法访问权限的内部人员从外部发起的攻击,并且防火墙无法防护内外网络之间有其它不通过防火墙的通路。总之,防火墙需要与其它机制配合才能适应新的威协。

(4)建立实时监视系统。使用iss的realsecure实时监控系统对网络系统的运行过程进行实时监视和审计,对内部或外部黑客的侵入及一些异常 的网络活动能够实时地进行识别、审计、告警、拦截。realsecure还能和防火墙产品配合,及时切断“黑客”与信息系统的连接,形成一个动态的安全防 护体系。iss软件信息可访问[url]http://www.iss.net[/url]。

(5)定期对网络进行安全漏洞检测。网络安全是千变万化的,所以保护措施也应该是动态的,没有固定的模式可循,作为unix系统的管理人员,也要尝试 定期对网络服务器进行攻击测试,这样既可以分析和探索试图入侵者的攻击思路,同时又可以及时发现系统安全保护机制中的潜在问题,及时进行有效防范。

(6)制定相应的灾难恢复计划。没有一种安全策略是十全十美的,因此根据可能发生的情况制定相应的灾难恢复计划是非常有必要的。一是定时对网络系统上 各个计算机的系统文件、数据库文件进行备份。二是对网络系统和通讯系统备份,在系统万一遇到恶意攻击、软件故障、硬件故障、用户错误、系统管理员错误等灾 难后,可以及时采取相应的对策,恢复系统的正常运行,尽可能将损失减少到最小程度。

3.加强网络系统服务的安全手段和工具

(1)直接配置检查。使用cops(computer oracle password and seurity system)从系统内部检查常见的unix安全配置错误与漏洞,如关键文件权限设置、ftp权限与路径设置、root路径设置、口令等等,指出存在的失 误,减少系统可能被本地和远程入侵者利用的漏洞。cops软件信息可访问 [url]http://www.jordanpan@163.net[/url]。

(2)使用记录工具记录所有对unix系统的访问。大多数现成的unix应用系统可以通过syslog来记录事件,这是unix系统提供的集中记录工 具。通过每天扫描记录文件/var/adm/messaged,并可通过配置syslog,把高优先级的事件及时传送给系统安全员处理。另一个有用工具是 tcp wrappers,应用此软件可以解决unix网络系统安全监视和过滤问题,本软件将所有tcp连接试图(无论成功与否),都记录到一个文本文件里,文本 文件具体内容包括请求的源地址、目的地址、tcp端口和请求时间等。通过监视tcp wrappers记录,查看所有未遂连接试图,并可以通过配置,由tcp wrappers来根据某些因素,如源或目的tcp端口、ip地址等接受或者拒绝tcp连接。tcp wrappers软件下载地址为[url]ftp://ftp.win.tue.nl/pub/security[/url]。

(3)远程网络登录服务。此服务是我们使用最频繁的,unix系统提供了telnet和ftp远程登录,当使用telnet或ftp登录时,用户名和 口令是明文传输的,这就可能被网上其他用户截获。入侵者也经常使用telnet或 ftp对网络系统发动“猛烈攻击”。入侵者可较容易地编写一个脚本,通过破译不同的口令来试图和远程服务器建立连接,而telnet精灵进程在多次连接试 图失败之后会产生一定的延迟,延迟时间和未遂的注册次数成正比,从而防止入侵。还有一种加强telnet或ftp服务口令安全的方法,就是每次使用不同的 密码,这可通过s/key工具实现。s/key系统建立在一次性用户口令的基础上,生成一系列口令,用户可以使用这些口令与unix服务器进行远程访问, 且不需要特殊的客户机软件。s/key的认证算法使得入侵者无法预测用户下一个口令的内容。由于ftp功能与telnet类似,为此可以修改/etc /ftpusers文件,指定不允许通过ftp进行远程登录的用户。使用匿名ftp服务,任何人都可以随意注册下载或上载文件,如果不需要匿名ftp服 务,可以把username ftp从/etc/passwd文件里删除掉;如果必须提供匿名ftp服务,可以把它安装在本网络之外被称为停火区(dmz)的服务器中。同时,我们建议 使用安全的远程访问工具ssh,其安全性强于telent和ftp。ssh具有强力远程主机认证机制,可以有效降低入侵者通过dns或者ip地址欺骗手段 模仿客户机的可能性,同时ssh还支持多种端到端的加密协议,如des、triple-des、idea和blowfish等,从而更有利于保证整个通讯 系统的安全。使用ssh时应禁止使用telnet、ftp和rlogin服务。s/key信息可访问[url]http://yak.net /skey[/url]。

(4)nfs(network file system)服务。此服务允许工作站通过网络系统共享一个或多个服务器输出的文件系统。早期的nfs协议使用rpc(remote procedure call)进行客户机与服务器数据交换,由于用户不经登录就可以阅读或更改存储在nfs服务器上的文件,使得nfs服务器很容易受到攻击。为了确保基于 unix系统的所有nfs服务器均支持secure rpc,secure rpc使用des加密算法和指数密钥交换技术验证每个nfs rpc请求的身份。当用户登录到某台工作站时,login程序从nis(network information system)数据库中获得一个包含用户名、用户公钥以及用于用户口令加密的用户私钥三项内容的记录(在secure rpc4.1以上版本中,私钥被保存在内存中的 keyserver进程中),而工作站和服务器用自已的私钥和对方的公钥产生一个session key。随后工作站产生一个56位随机c key,用session key加密后传给服务器,登录时均使用c key进行加密。在数据传输过程中,服务器通过以下推理确认用户身份是否合法,首先用户传送的包是用c key加密的;其次只有知道用户的私钥才能产生c key;最后必须知道口令才能解开加密的私钥。使用nfs还应注意以下几点:尽可能以只读方式输出文件系统;只将必须输出的文件系统输出给需要访问的客 户,不要输出本机的可执行文件,或仅以只读方式输出;不要输出所有人都可以写的目录;不要输出用户的home目录;将所有需要保护的文件的owner设为 root,权限均设为755(或644),这样即使工作站上的root帐号被攻破,nfs服务器上的文件仍能受到保护;可使用fsirand程序,增加制 造文件句柄的难度。

(5)nis (network information system)服务。这是一个分布式数据系统,计算机用它能够通过网络共享passwd文件、group文件、主机表和一些类似的资源。通过nis和 nfs,整个网络系统中所有工作站的操作就好象在使用单个计算机系统,而且其中的过程对用户是透明的。但在nis系统中,用户可以编写程序模仿 ypserv来响应ypbind的请求,从而获取用户的口令。因此,nis客户最好使用ypbind的secure选项,不接受非特权端口(即端口号小于 1024)的ypserv响应。

(6)finger服务。通常使用finger命令是为了查看本地或远程网络系统中当前登录用户的详细信息,但同时也为入侵者提供了成功入侵系统的机会。所以,最好禁止使用finger。

3.结束语

只有针对unix网络系统存在的漏洞采取相应的安全保护措施,才能遏制金融计算机犯罪率。但在客观上要完全消除unix网络系统的安全隐患非常困难, 一是因为unix系统本身是一种非常复杂的系统,二是因为unix系统数年来在各领域的广泛使用,使得它成为被研究得最透彻的系统之一。通常入侵者发动的 攻击形式是极其复杂的,保护unix系统安全的关键是针对入侵者可能发动的攻击制定出一系列切实可行的安全防范策略,使各种攻击在多样化的安全防范措施面 前不能轻易得逞。在对ip级安全实施加固之后(如设立安全ip包、过滤防火墙等),还必须对传输层和应用层的安全进行加固,同时要在金融系统内部建立一整 套网络系统安全管理规章和防范措施,经常进行监督检查,使安全管理规章和防范措施落到实处。要使每一位员工都有防范金融计算机犯罪的概念,了解其作案的手 法及产生的危害,提高全员主动防范意识,这样才能真正有效地预防金融计算机案件的发生。

Tags: .
2009年12月10日
A、修改ip地址
即时生效:
# ifconfig eth0 192.168.0.20 netmask 255.255.255.0
启动生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0

B、修改default gateway
即时生效:
# route add default gw 192.168.0.254
启动生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0

C、修改dns
修改/etc/resolv.conf
修改后可即时生效,启动同样有效

D、修改host name
即时生效:
# hostname DF

启动生效:
修改/etc/sysconfig/network
2009年08月18日

如何设定/改变/启用 root 使用者的密码?

  • sudo passwd root

    为了启用 root 帐号 (也就是 设置一个口令) 使用:

    sudo passwd root

    当你使用完毕后屏蔽 root 帐号 使用:

    sudo passwd -l root

    这个将锁住 root 帐号.

    如何在终端机模式下切换到 root 身份?

  • sudo -s -H
    Password: <在这注明您的密码>缺省禁止 root 的好处包括了以下内容.
    • 起初 Ubuntu 团队希望安装尽可能的简单. 不使用 root , 在安装期间的两个用户交互步骤可以省略. (科林·沃森)

    • 更进一步, 如果在安装中使用 root, 用户将被要求永远记住他们选择的密码–即使他们很少使用到它. Root 密码经常被对 Unix 安全模型不熟悉的用户忘记. (马特·齐默曼)

    • 它防止了缺省登录时 "我能做任何事情" –在较大的变化发生之前,你将被提示输入口令,这可以使你考虑你这样做的结果. 如果你作为 root 登录, 你可以删除一些 "没用的文件夹" 并且不会意识到你正处于错误的目录,那时已经太晚了. 它是在 Unix 下长时间使用 "su-command-^D" 练习的情况下,代替一直呆在 root shell–除非你做严重的系统维护 (那时你仍然可以使用 "sudo su"). (吉姆·奇塔姆 和 安德鲁·索巴拉)

    • Sudo 增加了运行命令的日志记录 (在 /var/log/auth.log). 如果你陷入困境, 你总是可以返回并看见那些运行的命令. (安德鲁·Zbikowski)

    安全

    与传统的 superuser 模型相比,这种方法有不同的利弊,两者都不总是显示优良的.

    • 在鼓励使用 root 权限执行一个单独的命令, sudo 好过打开一个 shell:
    • 减少使用 root 权限的时间总耗用, 降低了不注意使用 root 执行命令的风险
    • 提供了有用的审核痕迹
    • 有一个单独的 root 密码 (传统模型) 提供了一层额外的保护,当如果一个管理员的密码被侵害时。
    • 无论怎样, 如果管理员 (使用 sudo 或 su 变成 root) 被侵害, 攻击者一般可以通过一次间接的攻击来获得 root
  • Sudo 和Root 帐号— Ubuntu中文
    缺省禁止root 的好处包括了以下内容. 起初Ubuntu 团队希望安装尽可能的简单. 不使用root ,
    在安装期间的两个用户交互步骤可以省略. (科林·沃森). 更进一步, 如果在安装中使用root,
    用户将被要求永远记住他们选择的密码–即使他们很少使用到它.
    www.ubuntu.org.cn/support/documentation/doc/sudoroot

    2009年08月01日

    首先php.ini的配置中
    cgi.fix_pathinfo=1
    doc_root=

    doc_root曾经被我设置过一个路径,结果php老提示“No input file specified.”,只有一个虚机好使。改掉后就正常了。

    nginx中的配置有些麻烦

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;

    每个虚机要根据自己不通的虚机设置不不同的目录,要保证这个路径正确。
    fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name

    安装平台基于Ubuntu 9.04.使用apt-get简单安装.在安装之前你要准备好源.还有安装库g++ vim ssh links因为你要用到这些功具.

    1、 Install Tools

    #apt-get install g++ vim links ssh

    2 安装 MySQL 5.0

    #apt-get install mysql-server mysql-client

    在安装这个过程中会提示让你输入MYSQL数据库的密码:

    New password for the MySQL “root” user: <– yourrootsqlpassword 你的MYSQL密码

    Repeat password for the MySQL “root” user: <– yourrootsqlpassword 你的MYSQL密码

    3 安装 Nginx

    #apt-get install nginx

    启动nginx:

    #/etc/init.d/nginx start

    在IE浏览器输入你的IP地址:http://ip

    看到Welcome to nginx!,说明你已安装上了nginx了.接下来我们要来配置它.设置启动系统时会自动启动它.

    root@ubuntu:~# update-rc.d nginx defaults

    System startup links for /etc/init.d/nginx already exist.

    4、安装 PHP5

    root@Ubuntu:~# apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

    接下来要配置php.ini这个文件,在做一些配置文件之前最好你要做一个备份.

    root@Ubuntu:~# cd /etc/php5/cgi/

    root@Ubuntu:/etc/php5/cgi# ls

    conf.d  php.ini

    root@Ubuntu:/etc/php5/cgi# cp php.ini php.ini.bak

    root@Ubuntu:/etc/php5/cgi# vi php.ini

    在php.ini这个文件里添加下一行

    cgi.fix_pathinfo = 1

    安装lighttpd

    root@Ubuntu:# apt-get install lighttpd

    安装完接下来要移除它的自动启动程序让它不自动启动.

    root@Ubuntu:# update-rc.d -f lighttpd remove

    Removing any system startup links for /etc/init.d/lighttpd …

    /etc/rc0.d/K09lighttpd

    /etc/rc1.d/K09lighttpd

    /etc/rc2.d/S91lighttpd

    /etc/rc3.d/S91lighttpd

    /etc/rc4.d/S91lighttpd

    /etc/rc5.d/S91lighttpd

    /etc/rc6.d/K09lighttpd

    开启PHP FastCGI 设置听的端口9000上运行的本地用户和www-data, 运行下面程序:

    root@ubuntu:~# /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

    spawn-fcgi.c.197: child spawned successfully: PID: 16273

    修改rc.local 这个文件.先备份一个.

    root@Ubuntu:~# cp /etc/rc.local  /etc/rc.local.bak

    root@Ubuntu:~# vi /etc/rc.local

    添加

    /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

    5 、配置Nginx

    root@Ubuntu:/etc/nginx# cp nginx.conf nginx.conf.bak

    root@Ubuntu:/etc/nginx# vi nginx.conf

    修改如下

    [...]

    worker_processes  5;

    [...]

    keepalive_timeout  2;

    [...]

    配置sites-available/default

    root@Ubuntu:/etc/nginx/sites-available# cp default default.bak

    root@Ubuntu:/etc/nginx/sites-available# vi default

    下面这个就是配置文档,斜体是添加修改:

    root@Ubuntu:/etc/nginx/sites-available# vi default

    # You may add here your

    # server {

    #    …

    # }

    # statements for each of your virtual hosts

    server {

    listen   80;

    server_name  192.168.2.13 localhost;

    access_log  /var/log/nginx/localhost.access.log;

    location / {

    root   /var/www/nginx-default;

    index  index.php index.html index.htm;

    }

    location /doc {

    root   /usr/share;

    autoindex on;

    allow 127.0.0.1;

    deny all;

    }

    location /images {

    root   /usr/share;

    autoindex on;

    }

    #error_page  404  /404.html;

    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

    root   /var/www/nginx-default;

    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #proxy_pass   http://127.0.0.1;

    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    location ~ \.php$ {

    fastcgi_pass   127.0.0.1:9000;

    fastcgi_index  index.php;

    fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;

    include        fastcgi_params;

    }

    #

    #location ~ \.php$ {

    #fastcgi_pass   127.0.0.1:9000;

    #fastcgi_index  index.php;

    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    #includefastcgi_params;

    #}

    # deny access to .htaccess files, if Apache’s document root

    # concurs with nginx’s one

    #

    #location ~ /\.ht {

    #deny  all;

    #}

    }

    # another virtual host using mix of IP-, name-, and port-based configuration

    #

    #server {

    #listen   8000;

    #listen   somename:8080;

    #server_name  somename  alias  another.alias;

    #location / {

    #root   html;

    #index  index.html index.htm;

    #}

    #}

    # HTTPS server

    #

    #server {

    #listen   443;

    #server_name  localhost;

    #ssl  on;

    #ssl_certificate  cert.pem;

    #ssl_certificate_key  cert.key;

    #ssl_session_timeout  5m;

    #ssl_protocols  SSLv2 SSLv3 TLSv1;

    #ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

    #ssl_prefer_server_ciphers   on;

    #location / {

    #root   html;

    #index  index.html index.htm;

    #}

    #}

    创建一个info.php页面.

    #vi /var/www/nginx-default/info.php

    <?php phpinfo(); ?>

    重启nginx

    root@Ubuntu:/etc/nginx/sites-available# /etc/init.d/nginx restart

    root@Ubuntu:/var/www/nginx-default# /etc/init.d/lighttpd stop

    这lighttp 要关了.要不然会网页显示会给跑到这里来.因为nginx & ligttpd两个同时打开也会发生冲突的.而这里我们只是用到lighttp的插件所以没有必要开启.

    接下来要安装的是支持PHP mysql

    root@Ubuntu:/usr/local/src# wget http://nchc.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.9.5-all-languages.tar.bz2

    root@Ubuntu:/usr/local/src#cp phpMyAdmin-2.11.9.5-all-languages.tar.bz2 /var/www/nginx-default/

    root@Ubuntu:/usr/local/src#cd /var/www/nginx-default/

    root@Ubuntu: /var/www/nginx-default#tar xvf phpMyAdmin-2.11.9.5-all-languages.tar.bz2

    root@Ubuntu: /var/www/nginx-default#mv phpMyAdmin-2.11.9.5-all-languages phpmyadmin

    root@Ubuntu: /var/www/nginx-default#cd phpmyadmin/

    接着修改配置文档.

    root@Ubuntu: /var/www/nginx-default/phpmyadmin#cp config.sample.inc.php config.inc.php

    */

    $cfg['blowfish_secret'] = ‘yoozhu’;    (其中的”yoozhu”自定义)

    /*

    其他地方也就不用改了就可以使用了.

    2009年07月29日

    一). ubuntu下mysql安装布局:

    /usr/bin                      客户端程序和mysql_install_db
    /db                             数据库和日志文件
    /var/run mysqld        服务器
    /etc/mysql mysql       配置文件my.cnf
    /usr/share/mysql       字符集,基准程序和错误消息
    /etc/init.d/mysql        启动mysql服务器

    二). 设置mysql服务器随开关机自动启动和关闭:

    系统 -> 系统管理 -> 服务
    进行到“服务设置”窗口后,激活mysql数据库服务即可

    三). 修改mysql数据库文件的存储目录:

    假设我们指定的数据库文件目录为/db
    1. 创建目录 /db,并修改其拥有者及所属群组为mysql:mysql.命令:chown mysql:mysql db
    2. 关闭mysql数据库服务:mysqladmin -u root -p shutdown
    3. 修改mysql配置文件my.cnf:将datadir=/var/lib/mysql改为datadir=/db
    4. 重新初始化数据文件:执行mysql_install_db
    5. 启动mysql数据库服务:sudo /etc/init.d/mysql start
    6. 设置mysql数据库root密码:mysqladmin -u root password ‘new-password’
    此时我们会发现/db目录下出现mysql相关文件。如果我们新建数据库,其数据库文件也将出现在db目录下。表示我们修改的mysql数据库文件存储目录正确。

    四). 配置mysql数据库的INNODB存储引擎:

    1 . 查看mysql存储引擎情况: 登录mysql数据库,在mysql>提示符下搞入show engines;命令。发现: InnoDB | YES,说明此mysql数据库服务器支持InnoDB引擎。
    2. 设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,保存。
    3. 重启mysql服务器:mysqladmin -u root -p shutdown(回车),sudo /etc/init.d/mysql start(回车)。
    4. 登录mysql数据库,在mysql>提示符下搞入show engines;命令。如果出现 InnoDB |DEFAULT,则表示我们 设置InnoDB为默认引擎成功。
    ps: 这里我用重启命令sudo /etc/init.d/mysql restart,出现错误信息, 所以用了上面(步骤3)那种关闭服务又启动的笨方法。

    Linux、Fedora、Ubuntu修改文件文件夹权限的方法差不多。很多人开始接触Linux时都很头痛Linux的文件权限问题。这里告诉大家如何修改Linux文件-文件夹权限。以主文件夹下的一个名为“cc”的文件夹为例。

    下面一步一步介绍如何修改权限:

    1.打开终端。输入”su”(没有引号)

    2.接下来会要你输入密码,输入你的root密码。

    3.假设我的文件夹在主目录里,地址为  /var/home/dengchao/cc  。假设我要修改文件权限为777,则在终端输入  chmod  777 /var/home/userid/cc

    文件夹的权限就变为了777。

    如果是修改文件夹及子文件夹权限可以用  chmod -R 777 /var/home/userid/cc

    具体的权限(例如777的含意等)在下面解释下:

    1.777有3位,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限。

    其中每一位的权限用数字来表示。具体有这些权限:

    r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。

    w(Write,写入,权限值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。

    x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

    2.首先我们来看如何确定单独一位上的权限数值,例如最高位表示文件所有者权限数值,当数字为7时,7用“rwx”表示–{4(r)+2(w)+1(x)=7}–

    又如果数值为6,则用“rw-”表示–{4(r)+2(w)+0(x)=6}–,”-”表示不具备权限,这里表示不具备“执行”权限。

    假如我们设定其他用户的访问权限为 “r–”,则数值为4+0+0=4

    一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111

    而二进制的111就是7。

    3.我们再来看下怎么确定3个数位上的权限。假如我们要给一个文件设置权限,具体权限如下:

    文件所有者有“读”、“写”、“执行”权限,群组用户有“读”权限,其他用户有“读”权限,则对应的字母表示为”rwx r– r–“,对应的数字为744

    一般都是最高位表示文件所有者权限值,第二位表示群组用户权限,最低位表示其他用户权限。

    下面来举些例子熟悉下。

    权限 数值
    rwx rw- r– 764
    rw- r– r– 644
    rw- rw- r– 664

    具体linux修改文件夹-文件目录权限就是这样设置的了

     

    来源于网络 收藏

    http://it.dengchao.org/linux-fedora-ubuntu-file/linux/

    表示对青柠蒙的感谢,有好文章分享

    一直一来,在Ubuntu Linux系统下调试php的web程序都是使用的apache+php+mysql的开发环境,近来看到网上大家都在讨论nginx架设的web服务器,据说性能比apache要高上十几倍。所以自己想也想尝尝鲜,在自己的电脑上先装一个体验一下!

      跟安装其他软件差不多,安装过程基本上都是傻瓜式的

      安装nginx,执行以下命令,很快完成

    sudo apt-get install nginx

       配置文件默认安装位置:

    conf: /etc/nginx/nginx.conf
    bin:/usr/sbin/nginx
    vhost: /etc/nginx/sites-enable/default
    cgi-params: /etc/nginx/fastcgi-params

      安装php-cgi模块

    sudo apt-get install php5-cgi

      配置文件默认安装位置:

    php-cgi: /usr/bin/php-cgi
    php5-cgi: /usr/bin/php5-cgi
    cgi config: /usr/bin/cgi/php.ini

      这里有一点要注意一下,一定要修改php.ini文件的cgi.fix_pathinfo数据为1,默认为0    cgi.fix_pathinfo=1; 这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。

      安装spawn-fcgi

      如果系统没有安装GCC编译环境,刚需要在安装lighttpd之前要安装build-essential工具包,执行以下命令:

    sudo apt-get install build-essential
    wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz
    tar -xvf lighttpd-1.4.19.tar.gz
    cd lighttpd-1.4.19/
    sudo apt-get install libpcre3-dev
    ./configure –without-zlib –without-bzip2
    make
    sudo cp src/spawn-fcgi /usr/local/bin/spawn-fcgi

      启动fast_cgi:

    spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi

      启动nginx

    sudo /etc/init.d/nginx start

    2009年07月11日

    整理一些linux系统一些常用的系统信息查看命令.

      有些在freebsd下也能用…

      # uname -a               # 查看内核/操作系统/CPU信息

      # head -n 1 /etc/issue   # 查看操作系统版本

      # cat /proc/cpuinfo      # 查看CPU信息

      # hostname               # 查看计算机名

      # lspci -tv              # 列出所有PCI设备

      # lsusb -tv              # 列出所有USB设备

      # lsmod                  # 列出加载的内核模块

      # env                    # 查看环境变量资源

      # free -m                # 查看内存使用量和交换区使用量

      # df -h                  # 查看各分区使用情况

      # du -sh <目录名>        # 查看指定目录的大小

      # grep MemTotal /proc/meminfo   # 查看内存总量

      # grep MemFree /proc/meminfo    # 查看空闲内存量

      # uptime                 # 查看系统运行时间、用户数、负载

      # cat /proc/loadavg      # 查看系统负载磁盘和分区

      # mount | column -t      # 查看挂接的分区状态

      # fdisk -l               # 查看所有分区

      # swapon -s              # 查看所有交换分区

      # hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)

      # dmesg | grep IDE       # 查看启动时IDE设备检测状况网络

      # ifconfig               # 查看所有网络接口的属性

      # iptables -L            # 查看防火墙设置

      # route -n               # 查看路由表

      # netstat -lntp          # 查看所有监听端口

      # netstat -antp          # 查看所有已经建立的连接

      # netstat -s             # 查看网络统计信息进程

      # ps -ef                 # 查看所有进程

      # top                    # 实时显示进程状态用户

      # w                      # 查看活动用户

      # id <用户名>            # 查看指定用户信息

      # last                   # 查看用户登录日志

      # cut -d: -f1 /etc/passwd   # 查看系统所有用户

      # cut -d: -f1 /etc/group    # 查看系统所有组

      # crontab -l             # 查看当前用户的计划任务服务

      # chkconfig –list       # 列出所有系统服务

      # chkconfig –list | grep on    # 列出所有启动的系统服务程序

      # rpm -qa                # 查看所有安装的软件包

      cat /proc/cpuinfo :查看CPU相关参数

      cat /proc/partitions :查看硬盘和分区

      cat /proc/meminfo :查看内存信息

      cat /proc/version :查看版本,类似uname -r

      cat /proc/ioports :查看设备io端口

      cat /proc/interrupts :查看中断

      cat /proc/pci :查看pci设备的信息

      cat /proc/swaps :查看所有swap分区的信息

    2009年06月25日

    输入如下命令:

           sudo sh /media/cdrom0/VBoxLinuxAdditions-x86.run

    然后回车,要求你输入用户密码,你输入密码再回车即可