|
|
用户名:pengfeili 笔名:johney 地区: 北京-北京 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
纷繁世界,多 则惑,少 则明。
SSH使用指南
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。
最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。
因为受到美国法律的限制,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH(有关OpenSSH的安装和配置请参考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。
安装完OpenSSH之后,用下面命令测试一下:
ssh -l [your accountname on the remote host] [address of the remote host]
如果OpenSSH工作正常,你会看到下面的提示信息:
The authenticity of host [hostname] can't be established.Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。
生成并分发你自己的密匙有两个好处:
1) &nsp; 可以防止“中间人”这种攻击方式
2) 可以只用一个口令就登录到所有你想登录的服务器上
用下面的命令可以生成密匙:
ssh-keygen
如果远程主机使用的是SSH 2.x就要用这个命令:
ssh-keygen –d
在同一台主机上同时有SSH1和SSH2的密匙是没有问题的,因为密匙是存成不同的文件的。
ssh-keygen命令运行之后会显示下面的信息:
Generating RSA keys: ............................ooooooO......ooooooOKey generation complete.Enter file in which to save the key (/home/[user]/.ssh/identity):
[按下ENTER就行了]Created directory '/home/[user]/.ssh'.Enter passphrase (empty for no passphrase):
[输入的口令不会显示在屏幕上]Enter same passphrase again:
[重新输入一遍口令,如果忘记了口令就只能重新生成一次密匙了]Your identification has been saved in /home/[user]/.ssh/identity.
[这是你的私人密匙]Your public key has been saved in /home/[user]/.ssh/identity.pub.The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user]@[local machine]
“ssh-keygen –d”做的是几乎同样的事,但是把一对密匙存为(默认情况下)“/home/[user]/.ssh/id_dsa”(私人密匙)和“/home/[user]/.ssh/id_dsa.pub”(公用密匙)。
现在你有一对密匙了:公用密匙要分发到所有你想用ssh登录的远程主机上去;私人密匙要好好地保管防止别人知道你的私人密匙。用“ls –l ~/.ssh/identity”或“ls –l ~/.ssh/id_dsa”所显示的文件的访问权限必须是“-rw-------”。
如果你怀疑自己的密匙已经被别人知道了,不要迟疑马上生成一对新的密匙。当然,你还要重新分发一次公用密匙。
在每一个你需要用SSH连接的远程服务器上,你要在自己的家目录下创建一个“.ssh”的子目录,把你的公用密匙“identity.pub” 拷贝到这个目录下并把它重命名为“authorized_keys”。然后执行:
chmod 644 .ssh/authorized_keys
这一步是必不可少的。如果除了你之外别人对“authorized_keys”文件也有写的权限,SSH就不会工作。
如果你想从不同的计算机登录到远程主机,“authorized_keys”文件也可以有多个公用密匙。在这种情况下,必须在新的计算机上重新生成一对密匙,然后把生成的“identify.pub”文件拷贝并粘贴到远程主机的“authorized_keys”文件里。当然在新的计算机上你必须有一个帐号,而且密匙是用口令保护的。有一点很重要,就是当你取消了这个帐号之后,别忘了把这一对密匙删掉。
OpenSSH有三种配置方式:命令行参数、用户配置文件和系统级的配置文件(“/etc/ssh/ssh_config”)。命令行参数优先于配置文件,用户配置文件优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件,所以要把“/etc/ssh/ssh_config”拷贝并重新命名为“~/.ssh/config”。
标准的配置文件大概是这样的:
[lots of explanations and possible options listed]
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no
还有很多选项的设置可以用“man ssh”查看“CONFIGURATION FILES”这一章。
配置文件是按顺序读取的。先设置的选项先生效。
假定你在www.foobar.com上有一个名为“bilbo”的帐号。而且你要把“ssh-agent”和“ssh-add”结合起来使用并且使用数据压缩来加快传输速度。因为主机名太长了,你懒得输入这么长的名字,用“fbc”作为“www.foobar.com”的简称。你的配置文件可以是这样的:
Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
Compression yes
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no
你输入“ssh fbc”之后,SSH会自动地从配置文件中找到主机的全名,用你的用户名登录并且用“ssh-agent”管理的密匙进行安全验证。这样很方便吧!
用SSH连接到其它远程计算机用的还是“paranoid(偏执)”默认设置。如果有些选项没有在配置文件或命令行中设置,那么还是使用默认的“paranoid”设置。
在我们上面举的那个例子中,对于到www.foobar.com的SSH连接:“ForwardAgent”和“Compression”被设置为“Yes”;其它的设置选项(如果没有用命令行参数)“ForwardX11”和“FallBackToRsh”都被设置成“No”。
其它还有一些需要仔细看一看的设置选项是:
l CheckHostIP yes
这个选项用来进行IP地址的检查以防止DNS欺骗。
l CompressionLevel
压缩的级别从“1”(最快)到“9”(压缩率最高)。默认值为“6”。
l ForwardX11 yes
为了在本地运行远程的X程序必须设置这个选项。
l LogLevel DEBUG
当SSH出现问题的时候,这选项就很有用了。默认值为“INFO”。
SSH服务器的配置使用的是“/etc/ssh/sshd_config”配置文件,这些选项的设置在配置文件中已经有了一些说明而且用“man sshd”也可以查看帮助。请注意OpenSSH对于SSH 1.x和2.x没有不同的配置文件。
在默认的设置选项中需要注意的有:
l PermitRootLogin yes
最好把这个选项设置成“PermitRootLogin without-password”,这样“root”用户就不能从没有密匙的计算机上登录。把这个选项设置成“no”将禁止“root”用户登录,只能用“su”命令从普通用户转成“root”。
l X11Forwarding no
把这个选项设置成“yes”允许用户运行远程主机上的X程序。就算禁止这个选项也不能提高服务器的安全因为用户可以安装他们自己的转发器(forwarder),请参看“man sshd”。
l PasswordAuthentication yes
把这个选项设置为“no”只允许用户用基于密匙的方式登录。这当然会给那些经常需要从不同主机登录的用户带来麻烦,但是这能够在很大程度上提高系统的安全性。基于口令的登录方式有很大的弱点。
l # Subsystem /usr/local/sbin/sftpd
把最前面的#号去掉并且把路径名设置成“/usr/bin/sftpserv”,用户就能使用“sftp”(安全的FTP)了(sftpserv在sftp软件包中)。因为很多用户对FTP比较熟悉而且“scp”用起来也有一些麻烦,所以“sftp”还是很有用的。而且2.0.7版本以后的图形化的ftp工具“gftp”也支持“sftp”。
SSH提供了一些命令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件,但是还是提供了一个“scp”命令。
假定你想把本地计算机当前目录下的一个名为“dumb”的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为“bilbo”。可以用这个命令:
scp dumb bilbo@www.foobar.com:.
把文件拷贝回来用这个命令:
scp bilbo@www.foobar.com:dumb .
“scp”调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。
如果在你的“~/.ssh/config”文件中已经为www.foobar.com做了这样的配置:
Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
那么你就可以用“fbc”来代替“bilbo@www.foobar.com”,命令就简化为“scp dumb fbc:.”。
“scp”假定你在远程主机上的家目录为你的工作目录。如果你使用相对目录就要相对于家目录。
用“scp”命令的“-r”参数允许递归地拷贝目录。“scp”也可以在两个不同的远程主机之间拷贝文件。
有时候你可能会试图作这样的事:用SSH登录到www.foobar.com上之后,输入命令“scp [local machine]:dumb .”想用它把本地的“dumb”文件拷贝到你当前登录的远程服务器上。这时候你会看到下面的出错信息:
ssh: secure connection to [local machine] refused
之所以会出现这样的出错信息是因为你运行的是远程的“scp”命令,它试图登录到在你本地计算机上运行的SSH服务程序……所以最好在本地运行“scp”除非你的本地计算机也运行SSH服务程序。
如果你习惯使用ftp的方式拷贝文件,可以试着用“sftp”。“sftp”建立用SSH加密的安全的FTP连接通道,允许使用标准的ftp命令。还有一个好处就是“sftp”允许你通过“exec”命令运行远程的程序。从2.0.7版以后,图形化的ftp客户软件“gftp”就支持“sftp”。
如果远程的服务器没有安装sftp服务器软件“sftpserv”,可以把“sftpserv”的可执行文件拷贝到你的远程的家目录中(或者在远程计算机的$PATH环境变量中设置的路径)。“sftp”会自动激活这个服务软件,你没有必要在远程服务器上有什么特殊的权限。
“rsync”是用来拷贝、更新和移动远程和本地文件的一个有用的工具,很容易就可以用“-e ssh”参数和SSH结合起来使用。“rsync”的一个优点就是,不会拷贝全部的文件,只会拷贝本地目录和远程目录中有区别的文件。而且它还使用很高效的压缩算法,这样拷贝的速度就很快。
如果你坚持要用传统的FTP客户软件。SSH可以为几乎所有的协议提供“安全通道”。FTP是一个有一点奇怪的协议(例如需要两个端口)而且不同的服务程序和服务程序之间、客户程序和客户程序之间还有一些差别。
实现“加密通道”的方法是使用“端口转发”。你可以把一个没有用到的本地端口(通常大于1000)设置成转发到一个远程服务器上,然后只要连接本地计算机上的这个端口就行了。有一点复杂是吗?
其实一个基本的想法就是,转发一个端口,让SSH在后台运行,用下面的命令:
ssh [user@remote host] -f -L 1234:[remote host]:21 tail -f /etc/motd
接着运行FTP客户,把它设置到指定的端口:
lftp -u [username] -p 1234 localhost
当然,用这种方法很麻烦而且很容易出错。所以最好使用前三种方法。
SSH的“加密通道”是通过“端口转发”来实现的。你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立“加密通道”。然后只要连到本地端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候“加密通道”才能工作。可以用下面命令检查一些远程服务器是否运行SSH服务:
telnet [full name of remote host] 22
如果收到这样的出错信息:
telnet: Unable to connect to remote host: Connection refused
就说明远程服务器上没有运行SSH服务软件。
端口转发使用这样的命令语法:
ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]
你不仅可以转发多个端口而且可以在“~/.ssh/config”文件中用“LocalForward”设置经常使用的一些转发端口。
你可以用POP协议从服务器上取email。为POP加上“加密通道”可以防止POP的密码被网络监听器(sniffer)监听到。还有一个好处就是SSH的压缩方式可以让邮件传输得更快。
假定你在pop.foobar.com上有一个POP帐号,你的用户名是“bilbo”你的POP口令是“topsecret”。用来建立SSH“加密通道”的命令是:
ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5
(如果要测试,可以把“sleep”的值加到500)。运行这个命令之后会提示你输入POP口令:
bilbo@pop.foobar.com's password:
输入口令之后就可以用“telnet”连接到本地的转发端口了。
telnet localhost 1234
你会收到远程mail服务器的“READY”消息。
当然,这个方法要求你手工输入所有的POP命令,这是很不方便的。可以用Fetchmail(参考how to configure Fetchmail)。Secure POP via SSH mini-HOWTO、man fetchmail和在“/usr/doc/fetchmail-[…]”目录下的Fetchmail的FAQ都提供了一些具体的例子。
请注意IMAP协议使用的是不同的端口:IMAP v2的端口号为143而IMAP v3的端口号为220。
如果你打算在本地计算机上运行远程SSH服务器上的X程序,那么登录到远程的计算机上,创建一个名为“~/.ssh/environment”的文件并加上这一行:
XAUTHORITY=/home/[remote user name]/.Xauthority
(如果在远程主机上你的家目录下不存在“.Xauthority”这个文件,那么当用SSH登录的时候就会自动创建)。
比如启动一个X程序(xterm)可以这个命令:
ssh -f -X -l [remote user name] [remote machine] xterm
这将在远程运行xterm这个程序。其它的X程序也是用相同的方法。
Linuxconf是Linux的配置工具,它支持远程管理。Linuxconf的FAQ重说明了如何通过SSH使用linuxconf:
其命令为:
remadmin --exec [link_command] linuxconf --guiproto
如果你想在两台计算机之间用加密的方式传送信息,那么最好用ssh。命令是:
remadmin --exec ssh -l [account] linuxconf --guiproto
这是非常有效的而且运行用图形界面管理计算机。
这种方法需要在客户端安装linuxconf。其它的方法还有直接登录到服务器上用“
Webmin是一个新的基于浏览器的配置工具。它运行在1000端口。你可以用SSH的“端口转发”对它进行加密:
ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd
把浏览器指向
这篇文章翻译和改编自:http://www.mandrakeuser.org/secure/index.html。英文版的版权属于“MandrakeSoft SA and LSTB 1999/2000”。
中文版版权归译者brimmer(brimmer@linuxaid.com.cn)和www.linuxaid.com.cn站点所有。
使用网络隔离技术(GAP)进行内部防护
1、“多安全域划分”技术
“多安全域划分”技术就是根据内网的安全需求将内网中具有不同信任度(安全等级)网段划分成独立的安全域,通过在这些安全域间加载独立的访问控制策略来限制内网中不同信任度的网络之间的相互访问。这样,即使某个低安全级别区域出现了安全问题,其他安全域也不会受到影响。
2、利用网络隔离技术(GAP)实现办公内网的“多安全域划分”
首先,必须根据办公内网的实际情况将内网划分出不同的安全区域,根据需要赋予这些安全区域不同的安全级别。安全级别越高则相应的信任度越高,安全级别较低则相应的信任度较低。然后按照所划分的安全区域对GAP设备进行安装。系统管理员依照不司安全区域的信任度高低设置GAP设备的连接方向,GAP设备的内网处理单元安装在高安全级别区域,GAP设备的外网处理单元安装在低信任度的安全区域,专用隔离硬件交换单元则布置在这两个安全区域之间。内网处理单元代理高安全级别区域(假设为A区域)用户的网络服务请求,外网处理单元负责从低安全级别区域(设为B区域)取得网络数据,专用隔离硬件则将B区域的网络数据转移至A区域,最终该网络数据返回给发出网络服务请求的A区域用户。这样,A区域内用户可通过GAP系统访问B区域内的服务器、邮件服务器、进行邮件及网页浏览等。同时,A区域内管理员可以进行A区域与B区域之间的批量数据传输、交互操作,而B区域的用户则无法访问A区域的资源。这种访问的不对称性符合不同安全区域信息交互的要求,实现信息只能从低安全级别区域流向高安全级别区域的“安全隔离与信息单向传输”,如图1所示。

这样,较易出现安全问题的低安全区(包括人员和设备)就不会对高安全区造成安全威胁,保证了核心信息的机密性和完整性。同时,由于在GAP外网单元上集成了入侵检测和防火墙模块,GAP本身综合了访问控制、代理检测、内容过滤、病毒查杀,可限制指定格式的文件,采用专用映射协议实现系统内部的纯数据传输等技术,因此限定了内网局部安全问题只能影响其所在那个安全级别的区域,控制了其扩散的范围。
3、“多安全域划分”的防护效果
由于GAP实现内网的信任度划分和安全区域设定,使办公内网的安全性极大提高,办公内网易出现的安全问题得到有效控制。
首先,在安装GAP设备并进行内网的信任度划分时,会使单位领导形成内网安全级别的概念,明白其所在的安全区域具有较高的安全级别,因而对于网络基本情况,包括网络规模、网络结构、网络设备、网络出口等了解知情。对内网安全的关注将使其重视对内部办公人员进行安全技术培训和安全意识教育并建立相应的办公网络安全岗位和安全管理制度。
此外,对于内部办公人员,无论其安全意识是否淡漠或别有用心进行破坏,在GAP设备的有效防护下,内部人员无法拷贝到核心的机密信息或将其修改删除。因为他们所在的区域根本就不被允许对高安全级别的区域进行访问。即使内部人员实施了不安全的行为如私自拨号上网或在办公计算机上运行黑客软件等,也只能将损失限制在其所在的低安全区域,不会给整个办公内部网络造成太大的影响,而且根据发生安全问题的区域还能够很快找出越轨的内部人员。同时,网络病毒在内网的广泛传播也将得到有效的遏制。
网络隔离技术(GAP)简介
GAP是指通过专用硬件使两个或以上的网络在不连通的情况下进行网络之间的安全数据传输和资源共享的技术。简而言之,就是在不连通的网络之间提供数据传输,但不允许这些网络间运行交互式协议。GAP一般包括三个部分:内网处理单元、外网处理单元、专用隔离交换单元。其内、外网处理单元各拥有一个网络接口及相应的IP地址,分别对应连接内网(涉密网)和外网(互联网),专用隔离交换单元受硬件电路控制高速切换,在任一瞬间仅连接内网处理单元或外网处理单元之一。
GAP切断网络之间的TCP/IP连接,分解或重组TCP/IP数据包,进行安全审查,包括网络协议检查和内容确认等,在同一时间只与一边的网络连接,与之进行数据交换。
2、GAP的数据传递过程
内网处理单元代理内网用户的网络服务请求,将数据通过专用隔离硬件交换单元转移至外网处理单元,外网处理单元负责向外网服务器发出连接请求并取得网络数据,然后通过专用隔离交换单元将数据转移回内网处理单元,再由其返回给内网用户。
3、GAP具有的高安全性
GAP设备具有安全隔离、内核防护、协议转换、病毒查杀、访问控制、安全审计和身份认证等安全功能。由于GAP断开链路层并切断所有的TCP连接,并对应用层的数据交换按安全策略进行安全检查,因此能够保证数据的安全性并防止未知病毒的感染破坏。
访问控制技术
1 访问控制技术简介
访问控制技术最早产生于六十年代,随后出现了两种重要的访问控制技术:自主访问控制(Discretionary Access Control,DAC)和强制访问控制(Mandatory Access Control,MAC)
1.1自主访问控制技术(DAC)
目前我国大多数信息系统的访问控制模块基本都是借助于自主型访问控制方法中的访问控制列表(ACLs)。自主访问控制有一个明显的缺点就是这种控制是自主的,它能够控制主体对客体的直接访问,但不能控制主体对客体的间接访问(利用访问的传递性,即A可访问B,B可访问C,于是A可访问C)。虽然这种自主性为用户提供了很大的灵活性,但同时也带来了严重的安全问题。
1.2 强制访问控制技术(MAC)
安全级别高的计算机采用这种策略,它常用于军队和国家重要机构,如将数据分为绝密、机密、秘密和一般等几类。用户的访问权限也类似定义,即拥有相应权限的用户可以访问对应安全级别的数据,从而避免了自主访问控制方法中出现的访问传递问题。这种策略具有层次性的特点,高级别的权限可以访问低级别的数据。这种策略的缺点在于访问级别的划分不够细致,在同级间缺乏控制机制。
1. 3基于角色的访问控制技术RBAC(Role-Based Access Control)
由于DAC和 MAC安全性的缺陷及其基于用户的机制造成的添加用户和功能时操作的复杂性,我们选择了一种新型的访问控制技术RBAC。在RBAC中,在用户和访问许可权之间引入角色(Role)的概念,用户与特定的一个或多个角色相联系,角色与一个或多个访问许可权相联系,角色可以根据实际的工作需要生成或取消,而用户可以根据自己的需要动态地激活自己拥有的角色,避免了用户无意中危害系统安全。
目前大型系统应用于社会的方方面面,寻找一种适合大型可扩展系统的安全管理方案就显得极为重要。而RBAC技术由于其对角色和层次化管理的引进,特别适用于用户数量庞大,系统功能不断扩展的大型系统。所以我们选择了基于RBAC的系统安全设计方案。
2 RBAC原理简介
2.1 RBAC中的基本概念
·用户(User):系统的使用者。可以是人、计算机、机器人等,一般指人。
·角色(Role):对应于组织中某一特定的职能岗位,代表特定的任务范畴。角色的例子有:经理、采购员、推销员等。
·许可(Permission):表示对系统中的客体进行特定模式访问的操作许可,例如对数据库系统中关系表的选择、插入、删除。在应用中,许可受到特定应用逻辑的限制。
·用户分配、许可分配:用户与角色,角色与许可之间的关系都是多对多的关系。用户分配指根据用户在组织中的职责和能力被赋为对应角色的成员。许可分配指角色按其职责范围与一组操作许可相关联。用户通过被指派到角色间接获得访问资源的权限。进行许可分配时,应遵循最小特权原则(the Least Privilege Rule),即分配的许可集既能保证角色充分行使其职权,又不能超越职权范围。
·会话(Session):用户是一个静态的概念,会话则是一个动态的概念。一次会话是用户的一个活跃进程,它代表用户与系统进行交互,也叫主体/Subject。用户与会话是一对多关系,一个用户可同时打开多个会话。
·活跃角色集(ARS):一个对话构成一个用户到多个角色的映射,即会话激活了用户授权角色集的某个子集,这个子集被称为活动角色集,ARS决定了本次会话的许可集。
2.2 RBAC基本原则
·角色继承
为了提高效率,避免相同权限的重复设置,RBAC采用了“角色继承”的概念,定义了这样的一些角色,他们有自己的属性,但可能还继承其他角色的属性和权限。角色继承把角色组织起来,能够很自然地反映组织内部人员之间的职权、责任关系。
·最小权限原则
所谓最小权限原则是指:用户所拥有的权力不能超过他执行工作时所需的权限。实现最小权限原则,需分清用户的工作内容,确定执行该项工作的最小权限集,然后将用户限制在这些权限范围之内。在RBAC中,可以根据组织内的规章制度、职员的分工等设计拥有不同权限的角色,只有角色需要执行的操作才授权给角色。当一个主体预访问某资源时,如果该操作不在主体当前活跃角色的授权操作之内,该问将被拒绝。
·职责分离
对于某些特定的操作集,某一个角色或用户不可能同时独立地完成所有这些操作。
JavaScript基础
<!--
JavaScript介绍
JavaScript是一种面向对象的脚本语言
JavaScript的特点
解释性脚本语言
基于对象
开发环境简单,记事本就可以编写
安全性好
动态性(客户端、事件驱动)
跨平台性(与操作系统无关,依赖于浏览器)
JavaScript与Java
运算符 JavaScript Java
运行方式 解释执行 JDK编译后Java虚拟机上执行
代码格式 纯文本 JDK编译得class二进制文件
嵌入方式 直接写入HTML文件 通过Applet嵌入
或单独文本文件再包括
JavaScript变量
变量的命名规则
变量名必须以英文字母或_开头
变量名最大长度255字节
变量名中不能有空格
不能包含JavaScript的运算符号,如+
不能使用JavaScript的保留字,如aqrt
变量名大小写敏感,a与A不同
JavaScript和VBScript的语法区别
VBScript JavaScript
变量声名 Dim Var
语句末尾 无(;) 有(;)
消息框函数 MsgBox(...) Alert(...)
消息映射 按钮的name属性xxx, 按钮的属性onclick=“语句”
则单击按钮时激活函数
xxx_OnClick()
按钮属性onclick=“语句”
注释 ‘ 注释内容 //注释内容
REM注释内容 /*注释内容
//注释内容 注释内容*/
JavaScript的语句结束都有分号(;)
JavaScript运算符
与VBScript运算符相同
JavaScript流程控制语句
条件分支语句
If...else...
格式 : if(条件)
{执行语句}
Else
{执行语句}
switch(...){case...}
格式:
Switch(条件)
{
case lable1:
语句1
break;
...
default:
...
}
循环语句
For,do...while,等
Do...while格式 :
Do
{执行语句
}while(条件)
For语句:
for(i=a;i<b;i++)
{语句
}
JavaScript函数
函数定义格式:
Function 函数名称(参数表)
{
函数执行部分
}
JavaScript事件
JavaScript的时间处理机制可以改变浏览器响应用户操作的方法,
使得网页更具交互性
JavaScript的三类事件
超级链接事件
Click MouseOut MouseOver MouseDown MouseUp
浏览器事件
各种元素的Load和Unload
窗口事件
窗口改变尺寸,最大化
JavaScript常用事件的处理
事件 触发条件 代码格式
单击事件 按钮被单击 onClick=“函数或处理语句”
OnSelect事件 文本框文字被选中 onSelect="函数或处理语句"
OnFocus事件 光标落入文本框中 onFocus="函数或处理语句”
OnChange事件 选择了下拉列表的一项 onChange=“函数或处理语句”
JavaScript的 Window对象
方法 &nsp;意义
Open(URL,windowname,parameterlist) 打开目标文件
setTimeout(expersion,time) 定时,一段时间后执行expression
clearTimeout(timer) 取消定时信号
setIntervel(expression,time) 以time为间隔周期执行expression
Confirm() 确认对话框
alert() 弹出对话框msgbox
prompt() 提示对话框,input
JavaScript常用对象的应用
对象 函数
时间对象Date getDay(),getYear(),GetMonth()等
用事件对象之前必须先声明,var now=new Date();
字符串对象String charAt(),indexOf(),lastIndexOf(),toLowerCase,
toUpperCase()
文档对象Document 可以用于操作页面内元素
位置对象location Window.location="目标地址 "
HTML网页中加入按钮
<input>标签(不成对标签)
<input type="button" value="caption"...>
<button>标签(成对标签)
<button name=“...”> caption</button>
-->
VBScript基础
<!--
VBScript 简介
微软为与网景公司在网页制作上竞争推出的脚本语言
VBScript源于微软的Visual Basic
为增强可移植性和网络安全性,删除了一些API和Class
VBScript是为了增强网页的交互功能以及取代某些CGI的功能
VBScript
VBScript放在<head>与</head>内的<SCRIPT>和</SCRIPT>之间
<head>与</head>内的内容首先加载,所以这样可让代码在触发任何事情之前加载
代码一般放入注释标记<!--和-->之内
避免不识别<SCRIPT>标记的浏览器将代码显示出来
<SCRIPT>标记的用法
<SCRIPT LANGUAGE="VBScript">.. </SCRIPT>
LANGUAGE属性指定代码所用的脚本语言
HTML的注释的两种方式
单行注释 <!注释内容!>
多行注释
<!--注释内容
注释内容
注释内容
注释内容-->
VBScript的数据类型
只有一种数据类型Variant
根据使用方式,Variant可以包含不同类别的信息
所有的函数的返回值也为Variant类型
最简单的Variant可包含数或字符串
根据上下文判断具体Variant中信息的类型
数字用(“”)扩起来-〉字符
VBScript的变量的声明
第一个字符必须是字母
不能包含嵌入的句点
长度不能超过255个字符
在被声明的作用于内必须唯一
变量的类型
标量变量 一个变量包含一个值
数组变量 一个变量包含多个值
VBScript的标量变量的声明
显式声明
用Dim语句,Public语句,Private语句
用法:
单个变量 Dim student_score
多个变量之间都好隔开 Dim age,num,score
隐式声明
在代码中直接应用改变量
如:student_score=99
VBScript的语句结束没有分号(;)
VBScript的数组变量的声明
声明语句的变量后加括号(),()内指定数组元素的个数
如Dim Array(10)
数组变量可以多维
如Dim Array2(10,6)
数组元素的赋值
Array(2)=3
VBScript运算符
算数运算符
+ 加法运算 5+3
- 减法运算 4-2
* 乘法运算 5*7
/ 除法运算 4/5
& 字符串连接运算 “abc”&“789”
关系运算符
= 相等 x=y
<> 不等 x<>y
> 大于 x>y
< 小于 x<y
逻辑运算符
And 逻辑与 x And y
OR 逻辑或 x OR y
Xor 逻辑异或 x Xor y
Not 逻辑非 x Not y
VBScript流程控制语句
条件分支语句
If...Then...Else...
格式:if(条件) then
语句
else
语句
Select...Case...
select case(条件)
case 表达式
case else
缺省情况
end selet
循环语句
For...next
指定循环次数,计数递增
格式
for i=起始 to 结束 step 步距
执行语句
next
Do...loop
Do until(条件)
语句
loop
Do
语句
loop until(条件)
Do while(条件)
语句
loop
Do
语句
loop while(条件)
While...wend
格式:
While(条件)
语句
wend
VBScript 过程
函数
过程
两个内置过程
VBScript中的过程_Sub
Sub过程的定义
Sub与End Sub作为开始和结束
Sub过程可以有输入参数
不返回值,仅执行操作
Sub过程的调用
Sub_name参数
VBScript中的过程_function
function过程的定义
Function与End Function作为开始和结束
Function fname(参数)
代码
End function
注意:函数的计算结果通过函数名返回
function过程的调用
fname(参数)
-->
努力学习,收获多多
一本厚厚的ciss的书终于读完了一遍,虽然不是精读,但是还是收获很多阿。呵呵,接下来把信息安全管理方面的知识先放放,该学点技术上的东西了,正准备Linux的学习呢,早都想好好研究一下了,还有网页制作,网页制作应该是学计算机方面的基本技能阿,不能不会哦。
呵呵,学习能使人充实,这话一点都不错。不过要劳逸结合啦,今晚又现代和曼联的友谊赛,又可以好好的看球了。呵呵。
无题
2005年7月24日 晴 长春
真不想不出来一个题目来写今天的日记,所以只有写个无题了,或许无聊也有点合适,呵呵.
本来想今天出去走走的,但是看到外面烈日炎炎,还是打消了念头,其实更主要的原因是一个人没意思.一个人能去哪里呢?还是在家里待着吧.
又是个无聊的周末
2005年7月23日 晴 长春
又是个星期六,没什么安排,没有出门。由于平时也没有什么事情,所以也没有显得周末有什么特别。一周都在学习,今天就放松一下自己吧,不想学习的事情,水水懒觉,调节一下心态。呵呵。
今晚有皇对现代队的足球比赛,虽然是一场近似于走秀的商业比赛,但是还是要看的。看看巨星们的表演,享受一下足球带来的快乐。呵呵。
周末愉快
2005年7月22日 晴 长春
今天上午上qq竟然遇到高中的老同学,高中毕业后就没有了联系,转眼间5年啦。要不今天在qq上碰到,连她在北京我都不知道。在学校的时候没有体会到朋友的珍贵,工作了在异乡有朋友真是一种心里上的安慰啊。呵呵。今天很心里高兴,没有什么比有朋友更令我欣喜的了。
又到周末了,真快啊。只是一一转眼阿,还好啦,这种感觉自己还不错,起码有收获,坚持下去。
风险管理的基本概念
信息安全风险管理过程中牵涉到诸多要素或者概念,包括:
资产(Asset)—— 任何对组织具有价值的东西,包括计算机硬件、通信设施、建筑物、数据库、文档信息、软件、信息服务和人员等,所有这些资产都需要妥善保护。对资产的评估要从价值、重要性或敏感度等方面来考虑。
威胁(Threat)—— 就是可能对资产或组织造成损害的意外事件的潜在原因,即某种威胁源(threat source)或威胁代理(threat agent)成功利用特定弱点对资产造成负面影响的潜在可能。威胁类型包括人为威胁(故意和无意)和非人为威胁(自然和环境)。识别并评估威胁时需要考虑威胁源的动机和能力。风险管理关心的是威胁发生的可能性。
弱点(Vulnerability)—— 也被称作漏洞或脆弱性,即资产或资产组中存在的可被威胁利用的缺点,弱点一旦被利用,就可能对资产造成损害。弱点本身并不能构成伤害,它只是威胁利用来实施影响的一个条件。风险管理过程中要识别弱点,并评估弱点的严重性和可被利用的容易程度。
风险(Risk)—— 特定威胁利用资产的弱点给资产或资产组带来损害的潜在可能性.单个或者多个威胁可以利用单个或者多个弱点。风险是威胁事件发生的可能性与影响综合作用的结果。
可能性(Likelihood)—— 对威胁事件发生的几率(Probability)或频率(Frequency)的定性描述。
影响(Impact)—— 或者是后果(Consequence),意外事件发生给组织带来的直接或间接的损失或伤害。
安全措施(Safeguard)—— 也称作控制措施(control)或对策(countermeasure),即通过防范威胁、减少弱点、限制意外事件带来影响等途径来消减风险的机制、方法和措施。
残留风险(Residual Risk)—— 在实施安全措施之后仍然存在的风险。
弱点暴露了具有价值的资产,威胁对弱点加以利用,从而造成负面影响,由此导致风险.正是因为风险的存在,我们才提出了安全需求,为了实现需求,必须采取安全措施,以便防范威胁并减少风险。风险管理的整个过程就是在这些要素间相互制约相互作用的关系中得以进展的。
基础知识(1)
LINUX的内核:内核是系统的核心,是运行程序和管理像磁盘和打印机等硬件设备的核心程序. LINUX SHELL :shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。LINUX文件系统:linux文件系统是文件存放在磁盘等存储设备上的组织方法。Linux能支持多种目前文件系统,如ext2,ext3,fat,vfat,iso9660,nfs,snb等。 LINUX应用系统:标准的Linx系统都有一整套成为应用程序的程序集,包括文本编辑器,编程语言,X Window,办公套件,Internet工具,数据库等。
1。挂载和卸载软盘
在使用软盘之前,它一定要先被挂载。要挂载软盘,把它插入软盘驱动器,然后在终端提示键入“mount /mnt/floppy/" 。当该软盘的文件系统被挂载到“mount /mnt/floppy/"目录中时,软盘驱动器的活动灯应该闪动。可以通过使用“cd /mnt/floppy/”命令转换到那个目录里存取软盘上的内容。当完成了软盘的任务后,在把它从驱动器中取出之前,应改先卸载它。关闭所有可能还在使用软盘上文件的程序或展示软盘内容的程序,然后在终端提示下键入以下命令:umount /mnt/floppy/ 。 2。在MS-DOS 软盘上存放Linux文件 使用以下命令来复制文件(把filename 替换为要复制的文件):#cp filename/mnt/floppy
然后,便可以卸载软盘并把它从驱动器中取出.软盘的新文件现在就可以从Widows机器上被存取了. 3.格式化软盘
如果只在Red Hat Linux 中使用软盘,仅需要使用ext2文件系统来格式化它.一旦已在软盘上创建ext3文件系统,就可以使用与在硬盘上操作文件和目录相同的方法来操作该软盘的内容.
用户还可以手工地在shell提示下挂载和卸载光盘.在光盘驱动器内插入一张光盘,打开终端,然后键入以下命令:
#mount/mnt/cdrom 这样,光盘就被挂载,便可以用文件管理器来使用它了.还可以通过点击桌面上的主目录图标,并在位置栏内键入"/mnt/cdrom" 来访问光盘.
光盘上工作完毕后,在把它从驱动器内弹出之前必须卸载它.关闭所有使用的应用程序或者文件管理器,然后在终端提示下键入以下命令:#umount/mnt/cdrom 那么便可以安全地取出光盘了.
RPM软件管理器是开放打包系统,任何人都可以使用.它在Red Hat Linux ,以及其他Linux和UNIX系统上运行。对于终端用户来说,RPM简化了系统更新。安装、删除安全装、升级RPM软件包可以使用简短的命令就可以完成。RPM维护一个已安装系统软件包和他们的文件数据库,因此,可以在系统上使用功能强大的查询和校验。
安装RPM包
命令格式:
rpm -i RPM包的全路径文件名
如果想安装RPM包并显示安装进度信息可以使用如下命令格式:
rpm -ivh RPM包的全路径文件名
在此命令的参数选项中:
i:代表安装
v:代表verbose,设置在安装过程中将显示详细的信息.
h:代表hash ,设置在安装过程中将显示"#"来表示安装进度.
删除RPM包
命令格式:
rpm -e RPM包名称
rpm -e命令用于从当前系统中删除以安装的软件包,需要在信念中指定要删除的软件包的名称而不是安装命令中的软件
包安装文件名.
1.首先在终端上将系统中自带的输入法删除.
#rpm -e miniChinput
2.进入到下载fcitx的目录(假设是/input目录)
#cd /input
3.然后使用RPM命令来安装fcitx
#rpm -ivh fcitx-1.8.5-1.rpm
4.要让此输入法生效,还必须重新启动系统.
升级RPM包
命令格式:rpm -U RPM包的全路径文件名
查询RPM包
命令格式:rpm -q
使用rpm -q 命令来查询安装的软件包的数据库,rpm -q fcitx命令会显示安装的软件包fcitx的名称,版本和方形号码
天气不好,心情还不错.
2005年7月21日 阴 长春
今天的长春天气反常,阴天,而且好象有种雾蒙蒙的感觉,空气里有水气,像是雾一样.
天气比较闷,可能又要有雨啦.虽然天气不怎么好,但是今天精神还不错,体力好象也恢复了,不像前两天那样感到困乏了.一切还是照常,工作,学习.提醒自己哦,要努力,加油吧!!
大陆.台湾关系进一步融洽啊
"海棠"从台湾登陆,最近的所有媒体都在跟踪报道。加上前段时间台湾的一些党的领导人访问大陆,这一切都说明了,大陆和台湾的关系在向好的方向上发展啊,我们的关系近一步融洽了。
最近电视里演<<康熙大帝>>正到了收复台湾的时候,看到康熙的胆略与魄力,让人佩服。不愧为一代圣君,为统一中国做出了巨大的贡献,换来了中国的繁荣盛事。
统一是大势所趋,这是不可改变的,关键是通过怎样的方式。和平的方式是最佳的,就是康熙也是在和平不能解决的情况下,才决定使用武力的。希望今时今日,和平能够成为解决一切问题的方式吧,从现在的情势来看,和平解决台湾问题已经是人心所向啊,大家都来为台湾问题和平解决出一份心吧。