扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
3.1.2.4 加密与验证
Tripwire工具提出了使用密码校验和来确定文件是否经过了未认证的修改,加密技术可以用来保护机密文件甚至整个文件系统。加密是通过密钥将明文转化为一堆乱码的密文,从而起到保护文件内容的作用。Unix常用的加密算法有crypt(最早的加密工具)、DES(目前最常用的)、IDEA(国际数据加密算法)、RC4、Blowfish(简单高效的DES)、RSA等等。具体的加密算法这里不再阐明,需要了解请阅读Bruce Schneier的《应用密码学》一书。注意单向hash函数,他处理任意长度的信息并返回一个固定长度的hash值(128位)。常用的有MD5、SHA、HAVAL、Snefru等等。单向hash函数经常和公开密钥算法一起来创建数字签名,提供身份证明。与传统的签名相比,数字签名还可以指出文件是否被修改过。
PGP是unix下用来保护信息特别是电子邮件的工具。他使用IDEA算法为数据加密,使用RSA算法来进行密钥管理和数字签名,使用MD5来作为一个单向hash函数。其特点在于安全:不仅内容被伪装,连发送者的签名也加密。PGP还可以用来加密本地文件。现在常用的Linux下的PGP工具为:pgpe(加密)、pgps(签名)、pgpv(确认/解密)、pgpk(管理密钥)。请参考相应的帮助来使用。
\"特洛伊木马\"的故事不知道大家听说过没有。古希腊人久攻特洛伊城不下,于是假装求和,送了一个巨大的木马作为礼物,向城主Minerva表示和解。特洛伊人将木马拉入城内,到了夜晚,藏在木马中的希腊士兵钻出来,里应外合,攻破特洛伊城。在计算机安全领域,这种欺骗技巧成为攻击计算机安全的一种标准方式。他藏在你的计算机里,随时可能爆发,如果攻击者需要的话。因此,一旦一个系统被装了特洛伊木马,他就不能在信任了,必须从新安装。怎么避免呢,要养成良好的习惯,例如:限制下载,只从有声望的站点下载东西;检验下载的文件;避免运行已编译好的二进制代码,从源代码开始编译;不执行不信任的电子邮件发送的程序;不执行从非信任的Web站点得到的Java applets和Java Script。
MD5校验和有时与软件一起发行,用户可以用他来检验一个软件包。用户可以运行Red Hat Linux中包含的md5sum工具,例如:md5sum cops.1.04.tar.gz 结果:lfa416872934e5bee99068f9989cb8b0 cops.1.04.tar.gz 和软件包自带的校验和文件比较,如果不符,则说明文件在传输过程中出了问题,最好从新下载,本文件不可靠。md5sum还可以用来检验系统文件,在第一次安装系统之后对重要的lilo系统二进制文件进行一下校验:md5sum lilo,其结果应该一直保持不变,除非升级。
3.1.2.5 完整性检查
完整性是安全系统的核心属性。用户需要知道昨天写的文件和今天打开的文件没有被改动。攻击者可以用很多方法破坏文件系统,从依靠错误配置的权限获益到放置特洛伊木马和病毒。Linux中用cksum命令对一个特定文件执行16位校验和的计算,上面的md5sum也是一个检验的命令。
RPM(Red Hat Package manager)是由Red Hat Software开发并包含在其Linux产品之中的多功能软件安装管理器。他可以用来建立、安装、查询、检验、升级和卸载独立的软件包。
3.1.2.6 加密文件系统
加密文件系统是文件系统安全的一个更引人注目的方法。他根据一个简单的推断:如果一个系统保存机密数据,那么就应该以加密形式保存。加密文件系统(CFS)的核心思想是: CFS为目录和文件提供一个透明的接口,并自动使用用户的密钥加密。一条单独的命令把一个密钥和一个目录关联起来,从这时起,目录的内容在写时自动加密,在打开时自动解密。
一个由意大利人开发的透明加密文件系统(TCFS),用户甚至不知道他们的文件倍加密了。从下面的地址下载:
http://tcfs.dia.unisa.it/
3.1.2.7 备份
备份的重要性我想不需要多说了,那么备份有那些策略呢?常见的有:系统初装时的备份、定期备份、增量式备份(只备份改动的)、特别备份(为某些文件备份)等等。Linux系统提供了以下备份工具:
1) cp:拷贝,例如把dir1中的所有内容拷贝到dir2:cp -R dir1 dir2
2) tar:可以创建、把文件添加到或从一个tar档案中解开文件。档案本身也是一个文件,它包含其他的许多文件和有关信息。Tar最初用于磁带机。
3) cpio:把文件拷贝进或拷贝出一个cpio档案或tar档案,与tar类似
4) dump:得到整个文件系统并把他拷贝到备份介质上,一个确保完整备份的正规方式是跟随定期增量备份运行一个0级或完全备份,dump支持10个级别并能把上次备份后改动的所有文件以更低的级别备份。缺省情况dump将备份到磁盘介质。例如,把一个SCSI硬盘(/dev/rsd0a) 以0级备份到磁带(/dev/rst0)。dump 0f0 /dev/rst0 1500 /dev/sd0a
5) restore:用来恢复整个文件系统或提取单个文件。与dump相对。注意,restore命令特别冒险,因为他运行SUID root,像任何SUID root程序一样,可以根据自己的风险来运行restore。
3.1.2.8 其他常见系统安全工具导航
1)CRYPT BREAKERS WORKBENCH一个集成多种工具的平台,帮助一个加密人员读取BSD4.2加密的文件。ftp://coast.cs.purdue.edu/pub/tools/unix/cbw
2)HOBGOBLIN ftp://coast.cs.purdue.edu/pub/tools/unix/hobgoblin/
3)TRIPWIRE,强烈推荐,是一个文件系统完整性检查工具。http://www.tripwiresecurity.com/
4)TROJAN,一个可以被任何用户运行来检查特洛伊木马的perl程序。ftp://coast.cs.purdue.edu/pub/tools/unix/trojan/trojan.pl
5)PGP,流行的邮件和文件加密程序。http://rufus.w3.org/linux/RPM/pgp.html
6)LIBDES,建立一个DES加密库和一个DES加密程序的工具。包括一个crypt(3)的快速实现。ftp://ftp.psy.uq.oz.au/pub/Crypto/DES/
3.1.3 用户账号和环境的安全
3.1.3.1 口令管理增强方法
可以使用如下命令及其参数来增强对用户密码的管理:
1)passwd -n 30 user #强迫用户每30天修改一次密码;
2)passwd -f user #强迫用户在下一次登录时修改口令;
3)passwd -n 2 -x 1 user #禁止用户修改口令;
4)passwd -l user #封锁用户账号,禁止登录。
3.1.3.2 CRACK
Crack可以找出/etc/shadow中那些容易猜测的口令,虽然运行crack将会使CPU的负载加重,但它在第一次运行时就可以给出10%系统帐号的口令。
URL:ftp://sable.ox.ac.uk/pub/comp/security/software/crackers/
3.1.3.3 取消ROOT的远程登陆
默认在/etc/default/login里加上 \"CONSOLE\"行,在/etc/ftpusers里加上root。
3.1.3.4 配置ROOT的环境
1)将umask设为077或者027.
2)查看你的环境中路径设置情况,不要有./
3.1.3.5 删除不必要的帐号
移去或者锁定那些不是必须的帐号,比如sys\\uucp\\nuucp\\listen等等,简单的办法是在/etc/shadow的password域中放上NP字符。
3.1.3.6 NIS的安全问题
NIS从来就不是一个安全的服务,如果配置得当的话NIS+会更好些,就象暴力破解密码一样,NIS域名如果被猜出来,就会给入侵者提供相当丰富的信息,要关闭这个漏洞,可以将信任主机的地址放在/var/yp/securenets中。并且考虑使用NIS+或者secure RPC。
3.1.3.7 取消rlogin/rsh服务
移去/etc/hosts.equiv和/.rhosts以及各home目录下的.rhosts,并且在/etc/inetd.conf中把r系列服务都杀掉,然后找出inetd的进程号,重启它。
3.1.3.8 限制通过网络进入系统
Telnet和ftp守护进程是从inetd进程启动的,inetd的配置文件是/etc/inetd.conf,还包含了其它的各种服务,所以你可以干脆移去这个文件,新建一个只包括以下两行的文件:
ftp stream tcp nowait root /usr/local/bin/tcpd /usr/local/bin/wu-ftpd
telnet stream tcp nowait root /usr/local/bin/tcpd /usr/sbin/in.telnetd
当然这是基于你需要telnet及ftp的基础上的,如果你连这两个服务都不用的话,你就可以将它注释掉或者删除,这样在系统启动的时候inetd就不需要启动了。
Tcpd的访问控制是由/etc/hosts.allow和/etc/hosts.deny文件控制的,tcpd先查找/etc/hosts.allow,如果你在这里面允许了某几台主机的telnet或ftp访问的话,那么deny访问就是对其它所有机器的了。这是\"默认拒绝\"的访问控制策略,下面是一个hosts.allow文件的样本:
ALL: 172.16.3.0/255.255.255.0
这将允许172.16.3.0网络的主机上任何用户访问你的telnet及ftp服务,记住在这里要放置IP地址,因为域名比较容易受到欺骗攻击……
现在我们准备拒绝其余所有人的连接了,将下面的语句放在/etc/hosts.deny中:
ALL: /usr/bin/mailx -s \"%d: connection attempt from %c\" root@mydomain.com
这条指令不仅拒绝了其它所有的连接,而且能够让tcpd发送email给root--一旦有不允许的连接尝试发生时。
现在你可能希望用syslog记录下所有的访问记录,那么在/etc/syslog.conf放进如下语句:
auth.auth.notice;auth.info /var/log/authlog
注意两段语句间的空白是tab键,否则syslog可能会不能正常工作。
3.1.3.9 配置S/Key
S/Key是一个用于实现安全的一次性口令方案的软件,它根据一系列信息(包括一个秘密口令)通过MD5处理而形成的初始钥匙,该初始钥匙再交给MD4进行处理,资助将128位的数字签名缩成64位,该64位信息再次传给MD5函数,这个过程一直持续直到达到期望值…… 开始使用S/Key时,要建立一个以/usr/local/bin/keysh为shell的帐号:
在/etc/passwd中加入
access:x:100:100:Access Account:/tmp:/usr/local/bin/keysh
并且在/etc/shadow中加入
access:NP:6445::::::
然后使用passwd access命令来设定用户的访问密码。
由于/usr/local/bin/keysh不是一个标准的shell,所以你的/etc/shells文件中内容如下:
/sbin/sh
/usr/local/bin/keysh
只有使用这两种login shell的用户才允许接入。
然后建立一个文件/etc/skeykeys并赋予一定的许可权限:
touch /etc/skeykeys
chmod 600 /etc/skeykeys
chown root /etc/skeykeys
chgrp root /etc/skeykeys
使用keyinit access命令来初始化S/Key秘密口令。
现在你可以配置允许用户通过keysu命令来成为超级用户,首先改变/etc/group:
root::0:root,access
只有在这里列出来的用户才允许通过keysu成为超级用户。现在可以使用不着keyinit root命令来初始化超级用户的S/Key秘密口令,建议该口令要与user的有所区别。
本来你可以将/bin/su删掉以确定用户只能使用keysu……,但不幸的是,许多脚本使用/bin/su来开启进程,所以只需用chmod 500 /bin/su来改变它的权限就行了。
3.1.3.10 X的安全配置
使用SUN-DES-1选项来调用Secure RPC来通过X鉴别,可以使用xhost +user@host来通过访问请求。
3.1.3.11 开启SUN-DES-1鉴别机制
set DisplayManager*authorize: true
set DisplayManager._0.authName: SUN-DES-1
rm ~/.Xauthority
增加对localhost的许可权限,通过
xauth local/unix:0 SUN-DES-1 unix.local@nisdomain
xauth local:0 SUN-DES-1 unix.local@nisdomain
Start X via xinit -- -auth ~/.Xauthority
把你自己加入,并移去其他所有人:
xhost +user@ +unix.local@nisdomain -local -localhost
赋予用户foo进入主机\"node\"的权限:
允许foo进入node: xhost +foo@
建立适当的foo的xauthority: xauth add node:0 SUN-DES-1 unix.node@nisdomain
foo现在就能连上\"node\"了: xload -display node:0
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。