王俊杰 武汉传媒学院
服务器运行的物理安全环境是很重要的,很多人忽略了这点。物理环境主要是指服务器托管机房的设施状况,包括通风系统、电源系统、防雷防火系统以及机房的温度、湿度条件等。这些因素会影响到服务器的寿命和所有数据的安全。我不想在这里讨论这些因素,因为在选择IDC时你自己会作出决策。
在这里着重强调的是,有些机房提供专门的机柜存放服务器,而有些机房只提供机架。所谓机柜,就是类似于家里的橱柜那样的铁柜子,前后有门,里面有放服务器的拖架和电源、风扇等,服务器放进去后即把门锁上,只有机房的管理人员才有钥匙打开。而机架就是一个个铁架子,开放式的,服务器上架时只要把它插到拖架里去即可。这两种环境对服务器的物理安全来说有着很大差别,显而易见,放在机柜里的服务器要安全得多。
很多Windows服务器采用终端服务进行管理,在一个机架式的机房里,你可以随便把显示器接在哪台服务器上。如果你碰巧遇到某台机器的管理员或使用者正通过终端使用这台机器,那么他的操作你可以一览无余。甚至,你可以把键盘接上去,把他killoff,然后完全控制这台机器。当然,这种事情比较少见,但不意味着不可发生。
在系统安全体系中,权限认证体系最为关键。当一个用户访问一个文件的时候;如果当前用户的UID与文件owner的UID匹配,那么就遵守第一个三位组的权限,如果不匹配那么看GID。如果当前用户的GID与文件group的GID匹配,那么就遵守第二个三位组的权限。如果当前用户的UID与GID和文件的owner与group都不匹配,那么就看第三个三位组other的权限。
默认情况下管理员的umask 022,普通用户的umask 002。
下面我们就以文件默认权限是666,umask是033,来讲解一下最后我们得到一个文件的权限。
1.666的权限是rw- rw- rw-,换算成 2进制 110 110 110。
2.umask 033 权限是 --- -wx -wx ,换算成2进制 000 011 011。
3.umask 2进制取反 000 011 011 -------->111 100 100。
4.umask 取反后的2进制和默认权限做与运算。
inux建议使用普通用户,如果用到root之后,需要切换管理员,那么用su有安全问题,su的时候需要输入root密码,可能密码太简单,站旁边就能看到你输入的什么密码,有可能有键盘记录木马,所以这种情况相当危险。可以使用sudo,sudo用的是普通用户的密码,就算丢密码也没问题,再一个使用sudo是需要授权的。
系统是怎么对一个用户的登录过程进行一步步验证的,如果验证的过程中不能满足我的要求,那我们能不能设置我们自己的验证?
假如我是以上程序的开发人员,在写代码的时候,有一部分代码是做身份验证的,比如使用的时候使用账户密码,什么时候只要有密码都可以登录,那好,我加点功能,规定指定的时间可以登录,问题又来了,用户要求只想让某台机器登录,这时候我又加点功能,这样下去,千奇百怪的问题都会来,那我的代码会越来越长。怎么办?
同一种花色的门,用户对锁有各种各样的要求,要都生产的话,那生产的太多了,怎么办?我在门上留锁孔,由用户自己去市场买锁,这锁还可换,选择性还大。以上的道理就是:应用与验证分离那么现在就来说下PAM ,pam就相当于一堆锁,用户想用就用。
安全增强型Linux(SELinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组件及用户工具,可以让应用程序运行在其所需 的最低权限上。未 经修改过的Linux系统是使用自主访问控制的,用户可以自己请求更高的权限,由此恶意软件几乎可以访问任何它想访问的文件,而如果你授予其root权限,那它就无所不能了。
所有DAC机制都有一个共同的弱点,就是它们不能识别自然人与计算机程序之间最基本的区别。简单点说就是,如果一个用户被授权允许访问,意味着程序也被授权访问,如果程序被授权访问,那么恶意程序也将有同样的访问权。DAC最根本的弱点是主体容易受到多种多样的恶意软件的攻击,MAC就是避免这些攻击的出路,大多数MAC特性组成了多层安全模型。
工作在linux内核中的网络防火墙系统,iptables与netfilter是一组工具,起到防火墙作用的是netfilter,它是内核中的一个框架frame。iptables是一个能够生成防火墙规则,并将规则加载到frame中使其生效的一个工具。
防火墙定义:对于计算机网络而言,工作在主机边缘(网卡)或者网络的边缘(路由),对于进出的各种数据报文(TCP报文、IP报文等)进行检查和监控,并且能够根据事先定义好的规则(匹配标准),对匹配到的报文做出该规则中定义好的处理方法进行处理(管理)的一套组件或者机制就叫做防火墙(网络防火墙)。
网络防火墙(Linux主机),其网络功能是由Linux内核实现,而netfilter框架上应用的防火墙规则也应该是加载到内核中,由内核执行相应的规则,使其具有相应功能。具体来说,Linux内核中,TCP/IP协议栈具体完成网络通信功能实现,而所谓的netfilter会将防火墙规则加载或者设置到TCP/IP协议栈上才能发挥具体功用。
①规则(rules):网络管理员预定义的条件
②链(chains):是数据包传播的路径
③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能。
另外一个问题,对每个"链"上都放置了一串规则,但是这些规则有些很相似,比如,A类规则都是对IP或者端口的过滤,B类规则是修改报文,那么这个时候,我们是不是能把实现相同功能的规则放在一起呢,必须能的。
我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功能,而我们定义的规则也都逃脱不了这4种功能的范围,所以,学习iptables之前,我们必须先搞明白每种表的作用。
iptables为我们提供了如下规则的分类,或者说,iptables为操作者提供了如下"表"。
但是需要注意的是,某些"链"中注定不会包含"某类规则",就像某些"关卡"天生就不具备某些功能一样,比如,A"关卡"只负责打击陆地敌人,没有防空能力,B"关卡"只负责打击空中敌人,没有防御步兵的能力,C"关卡"可能比较NB,既能防空,也能防御陆地敌人,D"关卡"最屌,海陆空都能防。