使用rsync的多功能性获得更有效的网络安全

ZDNet软件频道 时间:2006-04-05 作者:Chad Perrin |  我要评论()
本文关键词:linuxtrend
在知识渊博的系统管理员的手中,rsync将成为一款功能强大的安全性工具。

在知识渊博的系统管理员的手中,rsync将成为一款功能强大的安全性工具。

IT业界发展已经显示,在当前的服务器市场领域,Linux已经成为微软Windows和Unix系统之后的第三大服务器操作系统。Linux的快速发展,已经成为低端服务器市场中微软必须面对的主要竞争者,其中的原因之一是安全性,其二是费用。无论你执行从单一工作站或者工作站网络的自动化备份,或是执行一个安全命令,rsync utility都可以提高网络操作的安全性。本文将讲述管理人员如何使用rsync安全化他们的服务器。

从设计角度上看,rsync utility就是一种简单的文件复制工具。由于使用检查比较的方法确定需要复制的内容以及目标路径中已经包含的内容,rsync拥有cp与rcp工具所缺乏的优点。例如,如果你使用rsync将foo计算机中的30个文件复制到bar计算机,cp将只会复制文件,并将bar已有的相同文件覆盖。然而,rsync将快速比较foo与bar相同路径上的文件,并查明二者的文件差异,然后只复制不同部分的文件,这样就可以减少大量的文件复制时间。

rsync的使用非常直接和简单。除了复制功能,它同样也可以当成一种安全性工具使用。

文件复制过程的安全化

数据安全化即是关键数据的备份。虽然数据备份可以通过很多普用商业工具实现,如烧录方法等。目前,最有效率、低费用与高速度的备份方式就是使用备份服务器,即通过网络将数据从硬盘复制到备份服务器。即便一台普通的老式计算机也可以担当这样的服务器角色,尤其当半夜或周末时,即没人使用网络时进行文件备份是最好不过了。

使用rsync在网络中复制文件过程相当简单。在Linux系统中输入以下命令,以复制需要的文件:

rsync localdir host:remotedir

以上命令以默认条件执行rsync命令。它指定了需要复制的当前系统路径、远程系统的主机名及目标机器的路径。例如,如果想从foo机器的/home/baz的文件复制到bar机器的/home/backup/qux,在foo机器上的命令如下:

rsync /home/baz bar:/home/backup/qux

这一操作以“clear”方式结束。然而这一方式具有比较低的安全等级;同样,这一方式也不能复制符号连接,也不能保护许可、用户所有权及建立时间等。由此,你最好增加-a选项(即“archive”)以及-e选项以指定一个远程程序来保证安全性。远程程序使用加密协议,比如SSH。由此远程选项将附有-e ssh。由此相应的rsync命令如下:

rsync –a –e ssh localdir host:remotedir

如果你想了解文件复制的进度,可以使用-v和-progress选项。-v选项指定详细的输出状态。Rsync默认情况下的输出是“silently”状态,即简单地执行而不妨碍用户的当前工作。第一次使用时,Rsync将会告诉你哪些文件已经被复制,并在结束时给出一个总结。当使用第二次,通过在命令之后加入-vv,rsync将会告诉你哪些文件被删除,并在最后总结中给出更多详细的信息。

同样,-progress选项将会给出文件复制的进度显示条,包括文件大小、已经完成复制的百分量、复制的速度、估计剩余时间。使用archive方式,ssh方式,以及需要显示进度,则rsync命令为:

rsync –avv –e ssh –progress localdir host:remotedir

如果在文件复制过程中遭到意外中断,rsync默认情况下将删除已经复制好的文件。可以使用-partial选项以防止rsync删除复制好的部分,这样在第二次复制时,你就可以只复制剩下的部分,以加快文件复制时间。如果你同时使用-partial和-progress,rsync将提供一个保证复制部分不被删除与显示复制的进度。由此,以“archive”方式、不删除已完成部分、显示进度、以及ssh方式操作,rsync命令格式如下:

rsync –avvP –e ssh localdir host:remotedir

为了根据已安排的计划自动备份文件,可以将rsync命令添加到一个cron工作。通过添加/etc/crontab文件的入口可以实现这一过程,如下:

30 4 * * * user rsync –aP -e ssh localdir host:remotedir

cron工作入口的前5个field指定这一工作的运作时间,第6个field告诉crontab哪些用户可以运行这一工作。使用用户帐号取代“user”字符就可以运行这一工作。Cro命令使得它每天上午4:30运行一次。

这5个field的顺序为分、小时、以及月中的天、年中的月,星期中的天。所以,分钟从0-59,小时0-23,接着月中的天与年中的月为1-31和1-12,星期中的天为0-7。cron工作的配置将变得复杂,然而这些都是rsync操作的基本方法。如果想了解建立cron工作的更多信息,可输入命令man cron,man crontab以及man 5 crontab。

如果你想管理数据备份cron工作,可以在备份服务器上建立crontab入口:

30 4 * * * user rsync –aP –e ssh host:remotedir localdir

这样,rsync可以从指定的远程主机的路径(remotedir)中获取文件,并将其复制到规定的本地路径上。 

完整检测

通常,filesystem integrity auditing(文件系统完整检测)由比如tripwire的安全工具来执行。这种工具功能比较完整,并且为系统管理人员提供文件完整检测的灵活性。

然而,rsync也可用于文件的完整检测。通过源文件与复制文件之间的比较,检测到文件系统之间的差异,并可检测到这些差异是否属于合法更改。

使用rsync执行完整检测的第一件事是建立文件系统的镜像。为了实现这一过程,在命令行中运行rsync复制命令。为了保证所使用的rsync版本不受破坏者的攻击,你最好从计算机(在/usr/bin/rsync)将rsync二进制文档复制到不可编写的煤质,比如CD-R。当使用rsync操作时,直接使用CD-R中的rsync二进制文件。例如,如果你的CD放置在/mnt/cdrom,运行以下命令将文件从一个计算机中复制到另一计算机:

rsync –av --rsync-path=/mnt/cdrom/rsync –e ssh host:/ localdir

以上操作将远程主机(你想检测的文件系统)的整个文件系统复制到本地机的路径中。一旦你有了文件系统的镜像,可使用以下命令检测文件系统:

rsync –avn --rsync-path=/mnt/cdrom/rsync –e ssh host:/ localdir

以上命令-n选项确保文件不会被其它方式的复制。Rsync简单地对目标文件与已复制文件进行比较,并给出报告。如果找到不同之处,你有必要对它们进行检查,以确保是否属于合法更改。

将复制与安全化统一起来

自动化备份可以与整体检测可有效地结合在一起。例如,你可以使用自动化方式备份整个系统,并建立一个类似的cron工作,以执行整体检测。在这种情况下,最好的办法是对没有任何更改的系统文件进行检测,而对整个文件系统进行备份。例如,备份针对于根目录下的文件,而检测可忽略掉经常更新的目录,比如/home和/var。

如果你想得到更好效果,可以编写一个cron工作运行的程序段。在这一程序段中,首先,执行整体检测,如果没有错误则运行备份。显然,程序段的编写超出本文讨论的范围,但对于一个Linux系统管理员来说,这种能力是应该具备的。

使用rsync可以很方便地实现自动化备份。而rsync还可以用于执行其它方面的任务,比如文件系统整体检测,体现了Linux强大的灵活性。Rsync功能还可相互结合,用于执行更加复杂的任务,大大提高了数据与系统安全性。在知识面宽广的系统管理员的手中,rsync将会成为一种具有多功能和高效率的安全工具。

责任编辑:张琎

查看本文的国际来源

 


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134