Archive

Archive for the ‘Linux’ Category

收集下各大搜索引擎蜘蛛的名字,应该有用!

五月 10th, 2011 No comments

一:百度蜘蛛
baidu的蜘蛛的名字:baiduspider 
访问互联网上的html网页,建立索引数据库,使用户能在百度搜索引擎中搜索到您网站的网页。
更多请了解-百度百科-百度蜘蛛

二:Google的机器人,爬虫
Google的蜘蛛的名字:Googlebot
Googlebot 是Google 的web 抓取漫游器。它从web上收集文档,为Google搜索引擎建立可搜索的索引。

三:腾讯Soso的蜘蛛的名字:Sosospider
SOso已经采用独立的引擎技术,未来在中过搜索引擎行业的竞争力是蛮巨大的,很看好SoSo

Read more…

Linux下Squid代理服务器的架设与维护

三月 6th, 2011 No comments

一、对使用者的分析
  
  现有网络情况:
  
  我校校园网通过光缆已将31座建筑物连通,光缆总长度约15Km,绝大多数楼中实现结构化布线,连入校园网的网络多媒体教室、教学基地、实验室、机房等约有数十个,连网计算机达3000多台 。我校目前出口有2个,一条速率为10M bps,通过光纤接入中国教育科研网CERNET,另一条速率为4M bps连入中国电信。
  
  用户的需求:
  
  我校校园网的使用者主体为在校学生及老师。根据统计,约80%的用户使用WWW、FTP等资源。我校现有Chinanet ip 126个,不可能分给所有的用户使用。通过架设代理服务器来实现让所有用户使用网络资源是最简单并且相对安全和可靠的方法。通过架设专门的WWW(FTP)代理来满足用户的主要需求,通过架设socks5代理来满足用户的其他需求。
  
  二、硬件及软件的选择
  
  硬件
  
  Cache Server可以是一台普通的PC服务器加上cache软件(如Squid、Inktomi)构成,也可以是软硬件系统和一台专门的cache服务器。根据Chinanet出口的实际情况,4Mbps速率的出口,每秒最大传入数据量为约500K/s。我校主干网节点间为双千兆连接,到达部分实验室是百兆,到达宿舍为10M。送出的最大数据量为约12M/s。传送的数据量不是很大,使用传统的IA32构架服务器既可满足需求。我校网络中心主机房使用机柜来存放服务器。惠普公司的LH6000服务器,具有很强的扩展性,是新型的六路服务器。代理服务器的运算负荷不是很重,对于IO的要求较高。LH6000通过自定义配置可以达到这个要求。通过使用raid可以提高磁盘性能,增加数据的可靠性。代理服务器软件占用内存较大。LH6000可以支持8GB内存。最终选择配置如下:
  
  配置
  
  处理器:1个100MHz系统总线的Intel Pentium III Xeon 700MHz处理器
  内存:1G PC-133 ECC SDRAM
  磁盘控制器:集成具有32MB高速缓存双通道Ultra3 SCSI HP NetRAID控制器
  附加单通道:Ultra Wide SCSI控制器
  内置存储:热插拔5x18G半高驱动器
  网卡:内置INTEL 82559 100M网卡
  电源:3个热插拔电源
  
  RAID使用了RAID5模式,这个模式是向阵列中的磁盘写数据,奇偶校验数据存放在阵列中的各个盘上,允许单个磁盘出错。RAID 5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样, 任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。
  
  软件
  
  Squid Internet Object Cache (Harvest Project的後续版本) 是美国政府大力助的一项研究计划。Squid是一个开放源代码的代理服务器软件。它是一个为UNIX系统下运行的全功能的代理服务器软件。它可以为HTTP协议、FTP协议以及其他使用URL方式定位的协议作缓存。它支持客户端使用SSL协议进行数据传送。它可以使用ICP, HTCP, CARP, Cache Digests等协议和方式和其他运行squid的服务器进行协同。它支持SNMP协议,可以用相应的软件来做协调和管理。并且能配置详细的访问控制列表(acl)。
  
  操作系统
  
  以前学校的代理服务器使用linux作为操作系统。这是因为以前的代理服务器通常还兼作其他的服务器。很多服务器软件是专门为linux开发的,或者在linux上运行的效率最高。Squid本身是为unix-like操作系统开发的。本身对系统没有太多的要求。目前我校Chinanet代理服务器使用的是FreeBSD作为操作系统。
  
  没有选择Linux有下面几点原因:
  
  Linux的核心部分开发相对比较开放,FreeBSD的核心是由一个严格的core team来完成的。相对检查更加严格。从核心部分比较BSD的内核更加稳定。
  
  Linux对高负荷的承载能力不如FreeBSD。对于高负荷下程序出错的容忍力,BSD远强于Linux。
  
  许多著名的网站,如:yahoo, netease 等著名的商业网站使用的就是freebsd,稳定性和性能早已通过很多专家的评测,远远强于Linux。
  
  在著名的文章“Linux vs BSD: A Tale of Two System”中,是这样评价Freebsd的: FreeBSD focuses on the Intel Architecture PC and server platforms, and on providing the best performance and stability possible. The DEC/Compaq Alpha is also supported.
  
  但是Freebsd也有不如Linux的弱点。主要表现在磁盘IO的性能上。这主要是因为Freebsd使用的文件系统—UFS的性能不如linux上使用的ext2/ext3。但是在加上softupdate之后会有很大的改进。而且出国代理上配置的使用raid5模式,磁盘使用高转速scsi硬盘,在上述硬件配置的情况下,读取squid cache的数k大小的小文件使用ext2和ufs+softupdate的效率的差别在万分之一以下。对于负载数千用户的代理服务器来说,可以忽略这样的效率差别。
  
  基于以上原因,最终选用Freebsd作为代理服务器的操作系统。
  
  三、代理服务器软件的安装
  
  squid的安装
  
  freebsd本身的ports程序带有squid的稳定版本。目前squid的最新版本是2.4.STABLE6。在freebsd的/usr/ports/www/squid 目录下执行make;make install就会将最新版本的squid代码下载、编译并最终安装到/usr中的相应路径中。
  
  Squid本身会被安装到/usr/local/sbin下
  Squid的cache目录默认为/usr/local/squid/cache
  Squid的log目录默认为/usr/local/squid/logs
  squid的配置文件目录默认为/usr/local/etc/squid
  
  这样的安装方式比直接使用二进制的package安装要好。因为二进制的package不能保证在自定义的系统上稳定运行。下载源代码代码在本地进行编译之前,首先会校验源代码的MD5 checksum,这样能保证我得到的源代码是未经修改过的版本。然后再在本地进行编译。最后安装到相应目录。
  
  Squid的配置
  
  Squid的配置文件是squid.conf
  
  部分参数的配置如下:(为保证代理服务器安全,部分参数用*代替)
  
  http_port 8080 设置http代理端口为8080
  cache_peer pa.us.ircache.net sibling 3128 3130 login=*:*
  cache_peer sj.us.ircache.net sibling 3128 3130 login=*:*
  cache_peer * parent 13280 4827 htcp *:*
  
  这几行是使用squid可以和其他几台机器进行协同工作的特性,同几台组成cache_peer。具体设置在后面的优化部分会解释。
  
  cache_peer_domain * .edu.cn设置.edu.cn的域名使用某个cache_peer访问
  cache_mem 400 MB设定内存cache的大小为400M
  cache_swap_low 80
  cache_swap_high 97这两行是设置cache进行替换的闸值。当占用到97%的cache后,cache中的内容将被清空20%。
  maximum_object_size 20000 KB 最大对象大小为20M.
  maximum_object_size_in_memory 10000 KB 内存中最大的对象大小为10M
  ipcache_size 4096 ip对应cache的大小为4096
  fqdncache_size 4096 域名全称cache的大小为4096
  cache_replacement_policy heap LFUDA cache替换策略
  memory_replacement_policy heap LRU 内存替换策略
  cache_dir ufs /usr/local/squid/cache 25000 16 256 cache存放的路径大小及具体配置
  dns_nameservers * * * * * 内部指定dns服务器
  authenticate_program * * 身份认证程序
  authenticate_children 32 身份认证程序启动的进程数目
  request_body_max_size 5 MB 最大请求的body大小
  reply_body_max_size 20 MB 最大回应的body大小
  acl all src 0.0.0.0/0.0.0.0
  acl dorm proxy_auth 192.168.0.0/255.255.0.0 REQUIRED
  acl bjpu proxy_auth 202.112.64.0/255.255.240.0 REQUIRED
  acl bjpu2 proxy_auth 211.71.80.0/255.255.240.0 REQUIRED
  
  访问控制列表
  
  acl banned_sites {过滤的关键字}
  http_access deny banned_sites
  deny_info ERR_BANNED_SITE banned_sites
  
  禁止访问违禁站点的设置
  
  acl manager proto cache_object
  acl localhost src 127.0.0.1/255.255.255.255
  acl SSL_ports port 443 563
  acl Safe_ports port 80 # http
  acl Safe_ports port 21 # ftp
  acl Safe_ports port 443 563 # https, snews
  acl Safe_ports port 70 # gopher
  acl Safe_ports port 210 # wais
  acl Safe_ports port 1025-65535 # unregistered ports
  acl Safe_ports port 280 # http-mgmt
  acl Safe_ports port 488 # gss-http
  acl Safe_ports port 591 # filemaker
  acl Safe_ports port 777 # multiling http
  acl CONNECT method CONNECT
  
  设置可以连接的端口
  
  http_access allow dorm
  http_access allow bjpu
  http_access allow bjpu2
  http_access allow manager localhost
  http_access deny manager
  http_access deny !Safe_ports
  http_access deny CONNECT !SSL_ports
  http_access deny all
  
  允许http访问
  
  icp_access allow *允许cache_peer使用ICP协议访问
  proxy_auth_realm BJPU proxy-caching web server 验证框提示的banner
  cache_mgr liukange@netease.com cache管理员的电子邮件地址
  cache_effective_user *
  cache_effective_group * 执行cache程序的用户uid和gid
  visible_hostname cnproxy.bjpu.edu.cn cache服务的机器名
  memory_pools on 内存池设置为打开。
  memory_pools_limit 50 MB 内存池的大小

  Socks5代理的安装
  
  出国代理上选用的socks5代理软件是NEC公司制作的软件。它实际上是一个商业版软件。但是根据它的license文件所述,在非商业用途上使用这个软件是免费的。在RFC-1928对socks5如何运行做了详细的描述。这个标准就是NEC公司的“Ying-Da Lee”和HP及IBM公司制定的。在相应的测试中,NEC公司的这个socks5代理软件的性能是较好的。虽然它有一些安全上的漏洞,但是使用freebsd的ports方式安装,将会自动对源代码打补丁,修正安全隐患。
  
  在/usr/ports/net/socks5下执行make;make install就能安装好该程序。相应的文件将被安装在下列目录:
  
  socks5可执行文件被放在/usr/local/bin
  socks5.conf文件被放在/usr/local/etc下
  
  bugtraq上曾经提到socks5的密码验证部分有安全隐患,因此没有使用该功能。
  
  Socks5代理的配置
  
  Socks5代理的配置文件是socks5.conf,内容如下:
  
  set SOCKS5_MAXCHILD 8000
  permit – - 192.168. – (1024,65535) -
  permit – - 202.112.64.0/255.255.240.0 – (1024,65535) -
  permit – - 211.71.80.0/255.255.240.0 – (1024,65535) ?C
  
  限制工大可以使用该socks5代理,限制目标端口为1024-65535。设置最多可以有8000个进程运行。
  
  配置文件的切换
  
  为了避免带宽的浪费,出国代理设置为夜间取消最大下载对象限制。这是是使用crontab来做到的。每天夜间23:30将配置文件切换为没有最大下载对象限制的。每天上午7:30切换回有最大下载对象限制的。
  
  四、使用情况分析
  
  单位时间内流量
  
  input (total) output
  packets errs bytes packets errs bytes colls
  917 0 646248 1015 0 767928 0
  941 0 667858 1287 0 1548180 0
  832 0 673330 897 0 836839 0
  895 0 655289 1067 0 878449 0
  
  *以上数据为出国代理负载中等时的数据。
  
  Chinanet出口已经被占满,经过cache的作用,送出数据大于进入数据
  
  CPU负荷
  
  使用top命令看到的CPU的负荷: load averages: 0.72, 0.86, 0.86(1mi,5min,15min),此数据为出国代理负载中等时的数据。
  
  Hourly usage
  
  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/hourlyusage.gif[/img:01091db545]
  
  通过这张图可以清晰的了解出国代理的使用情况。
  
  早6时,宿舍通电。出国代理的使用频度增加数倍。
  早8时,机房、实验室开始开放,出国代理的使用频度近一步增多。
  上午11时,课程结束,部分学生离开机房、实验室,午餐时间使用频度略微减少。
  中午13时,下午课程开始,学生离开宿舍,使用频度减少。
  下午15时,机房和实验室用户增多。
  下午17时,部分机房、实验室关闭,教师离开学校,造成使用频度减少。
  晚18-20时,学生去上自习或选修课,使用频度呈减少趋势
  晚21时-22时,选修课结束,学生回到宿舍,使用频度急剧增加,并且达到每天的最高点。
  晚23时,部分宿舍断电,实验室断电。使用频度进一步减少。
  0时-5时,宿舍学生大多已经休息,使用频度程减少趋势。
  
  Daily usage
  
  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/dailyusage.gif  [/img:01091db545]
  
  通过上面可以看出我校Chinanet线路代理服务器每天的使用情况。出国代理的日访问日志在约600M。图中显示出周末,尤其是周日访问量很大。这是由于周末我校宿舍不断电,作为用户主体的学生的使用网络的时间大大增加。对此称为“周末效应”。
  
  五、安全保障
  
  物理安全的保护
  
  供电:该服务器放在我校网络中心主机房,有双路供电。UPS可以保证在没有市电供应下5小时不中断服务。
  
  物理隔离:网络中心24小时有专人值班,进入主机房需要登记。
  
  服务器软件安全保护
  
  操作系统选用了FreeBSD。Freebsd本身几乎没有任何安全漏洞。根据服务最少化原则,出国代理上目前使用的服务有ssh ntp socks5 squid几种。其中ssh没有使用freebsd自带的openssh,而是使用了ssh.com出的非商业版的ssh服务器软件。这个版本的ssh服务器软件相对openssh有更安全效率更高的优势。而且对于非商业应用是免费的。 服务器通过ntp服务与某网络时间服务器进行时间同步,这是为了保证日志文件记录事件发生时间的准确性。另2个为必须提供的代理服务。其余服务没有打开。执行ps命令确认没有任何多余进程。
  
  对SYN-Flood及扫描的防护
  
  SYN Flood是当前最流行的DoS(拒绝服务攻击)与DdoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
  
  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/tcpconnection.gif[/img:01091db545]
  
  TCP协议的三次握手过程是这样的:
  
  首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
  
  第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。
  
  第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源—-数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
  
  实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃。即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),从而造成DoS。
  
  在freebsd的可以调整的内核参数中有下面2项:net.inet.tcp.blackhole和net.inet.udp.blackhole。相应的描述如下:The blackhole sysctl(8) MIB is used to control system behaviour when connection requests are received on TCP or UDP ports where there is no socket listening. Normal behaviour, when a TCP SYN segment is received on a port where there is no socket accepting connections, is for the system to return a RST segment, and drop the connection. The connecting system will see this as a “Connection reset by peer”. By setting the TCP blackhole MIB to a numeric value of one, the incoming SYN segment is merely dropped, and no RST is sent, making the system appear as a blackhole. By setting the MIB value to two, any segment arriving on a closed port is dropped without returning a RST. This provides some degree of protection against stealth port scans.In the UDP instance, enabling blackhole behaviour turns off the sending of an ICMP port unreachable message in response to a UDP datagram which arrives on a port where there is no socket listening. It must be noted that this behaviour will prevent remote systems from running traceroute(8) to a system. The blackhole behaviour is useful to slow down anyone who is port scanning a system, attempting to detect vulnerable services on a system. It could potentially also slow down someone who is attempting a denial of service attack.
  
  根据上面描述可以将net.inet.tcp.blackhole和net.inet.udp.blackhole设置为2和1,这样将防止半开式的端口扫描,并且能对syn-flood有初步的防护。
  
  在内核的配置文件中有options TCP_DROP_SYNFIN这个选项。通过加入这个参数,可以防止通过TCP/IP堆栈对操作系统进行识别。可以将安全问题中的”information gathering”解决
  
  六、优化
  
  内核的优化
  
  FreeBSD有很丰富的可以自定义的内核的参数。默认的内核为了保证通用性和稳定性,有大量优化性能的参数没有加入。
  
  我校Chinanet代理服务器操作系统内核部分优化参数如下:
  
  options MAXDSIZ=”(1024*1024*1024)”
  options MAXSSIZ=”(1024*1024*1024)”
  options DFLDSIZ=”(1024*1024*1024)”
  options CPU_ENABLE_SSE
  options PANIC_REBOOT_WAIT_TIME=16
  
  前三行是对freebsd下运行的应用程序可以使用的最大的内存资源作限制,默认为128M。由于出国代理服务器软件squid占用内存巨大,默认的配置显然不能满足要求,所以要使用自定义的配置。这个配置允许单一进程占用1G的内存资源。
  
  第四行是打开对SSE/MMX2指令集的支持。通过加入这一参数,出国代理的性能提高了约1%。即单位时间内吞吐量增加了1%。
  
  第5行是在内核发生严重错误的时候自动重新启动的时间。这个参数保证了服务器出现严重的软件错误后能自动恢复。
  
  Cache policy
  
  在本文的第三部分中提到了出国代理使用的cache policy。
  
  cache_replacement_policy heap LFUDA cache替换策略
  memory_replacement_policy heap LRU 内存替换策略
  
  HP公司曾经对squid作过详细的测试。
  
  参考该文档,对我校出国代理作了相应的调整。默认的cache_replacement_policy 和memory_replacement_policy都是LRU。这个算法用在cache上效率相对较低。经过实际测试,使用LFUDA(Least Frequently Used with Dynamic Aging)作为cache replacement policy,cache的命中率最高。使用heap LRU作为memory replacement policy,memory cache命中率最高。使用工具测得加入出国代理后,对使用代理的用户来说,Chinanet的出口带宽达到了5-7M,已经远远高于4M的实际带宽。确实起到了cache的作用。
  
  对于磁盘IO的优化
  
  前文提到freebsd的磁盘性能不佳。除使用raid技术之外,squid本身有unlinkd 和diskd两个子进程来专门负责对磁盘作操作。配置文件中的cache_dir ufs /usr/local/squid/cache 25000 16 256 这行指定了squid可以使用25G的硬盘空间来作为缓存。Ufs指定了使用unlinkd作为对磁盘做操作的进程。Unlinkd只负责删除文件的操作,diskd负责所有的操作。Squid的相应文档上建议使用diskd。但是经过测试,使用diskd虽然能提高系统的性能,但是会使squid进程变得不稳定。基于保证稳定性的考虑,选择使用unlinkd作为对磁盘操作的进程。
  
  Cache peer
  
  Squid支持多台服务器进行协同工作,组成cache peer。美国的National Laboratory for Applied Network Research、UCSD、The National Science Foundation建立了相应的cache peer组织(http://www.ircache.net)。我校Chinanet代理服务器将该组织中的2台服务器设置为slibing模式来调用,将我校另外一台cernet线路上的服务器设置为域名以.edu.cn结尾的parent模式。访问过程是这样的:如果客户端提交来的请求是以.edu.cn结尾的,首先查询cache中是否有,如果没有则请求cernet线路上的服务器去读取相应资源。
  
  对于其他的域名,则首先查询本身的cache,如果没有则查询slibing的cache,如果还没有,则自己主动去获取该资源。与ircache的协调使用ICP(Internet Cache Protoclol),与cernet线路服务器协调使用HTCP(Hypertext Caching Protocol)。对ICP的描述在RFC2186、RFC2187,对HTCP的描述在http://icp.ircache.net/htcp.txt。HTCP更有利于提高cache的性能,但是对系统的配置有要求,ICP相对简单。所以,选择使用ICP与ircache的服务器协同工作,使用HTCP与学校cernet服务器协同工作。

认识 Linux 配置文件掌握基本系统配置

一月 24th, 2011 No comments

每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。

一句话,没有。不熟悉 Linux 的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多,从 /etc/shells 文件(它包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。

内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。

除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类:

 /etc/host.conf

 告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过 netconf 对其进行更改)

 /etc/hosts

  包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。

 /etc/hosts.allow

 

 

 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。

 /etc/hosts.deny

 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。

 /etc/issue & /etc/issue.net

 这些文件由 mingetty(和类似的程序)读取,用来向从终端(issue)或通过 telnet 会话(issue.net)连接的用户显示一个“welcome”字符串。它们包括几行声明 Red Hat 版本号、名称和内核 ID 的信息。它们由 rc.local 使用。

 /etc/redhat-release

 包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。

 /etc/rc.d/rc

 通常在所有运行级别运行,级别作为参数传送。例如,要以图形(Graphics)模式(X-Server)引导机器,请在命令行运行下面的命令: init 5 。运行级别 5 表示以图形模式引导系统。

 /etc/rc.d/rc.local

 非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。

 /etc/rc.d/rc.sysinit

 通常是所有运行级别的第一个脚本。

 /etc/rc.d/rc/rcX.d

 从 rc 运行的脚本( X 表示 1 到 5 之间的任意数字)。这些目录是特定“运行级别”的目录。当系统启动时,它会识别要启动的运行级别,然后调用该运行级别的特定目录中存在的所有启动脚本。例如,系统启动时通常会在引导消息之后显示“entering run-level 3”的消息;这意味着 /etc/rc.d/rc3.d/ 目录中的所有初始化脚本都将被调用。

内核提供了一个接口,用来显示一些它的数据结构,这些数据结构对于决定诸如使用的中断、初始化的设备和内存统计信息之类的系统参数可能很有用。这个接口是作为一个独立但虚拟的文件系统提供的,称为 /proc 文件系统。很多系统实用程序都使用这个文件系统中存在的值来显示系统统计信息。例如,/proc/modules 文件列举系统中当前加载的模块。lsmod 命令读取此信息,然后将其以人们可以看懂的格式显示出来。下面表格中指定的 mtab 文件以同样的方式读取包含当前安装的文件系统的 /proc/mount 文件。

 /etc/mtab

 这将随着 /proc/mount 文件的改变而不断改变。换句话说,文件系统被安装和卸载时,改变会立即反映到此文件中。

 /etc/fstab

 列举计算机当前“可以安装”的文件系统。这非常重要,因为计算机引导时将运行 mount -a 命令,该命令负责安装 fstab 的倒数第二列中带有“1”标记的每一个文件系统。

 /etc/mtools.conf

 DOS 类型的文件系统上所有操作(创建目录、复制、格式化等等)的配置。

 /etc/group

 包含有效的组名称和指定组中包括的用户。单一用户如果执行多个任务,可以存在于多个组中。例如,如果一个“用户”是“project 1”工程组的成员,同时也是管理员,那么在 group 文件中他的条目看起来就会是这样的: user: * : group-id : project1

 /etc/nologin

 如果有 /etc/nologin 文件存在,login(1) 将只允许 root 用户进行访问。它将对其它用户显示此文件的内容并拒绝其登录。

 etc/passwd

 请参阅“man passwd”。它包含一些用户帐号信息,包括密码(如果未被 shadow 程序加密过)。

 /etc/rpmrc

 rpm 命令配置。所有的 rpm 命令行选项都可以在这个文件中一起设置,这样,当任何 rpm 命令在该系统中运行时,所有的选项都会全局适用。

 /etc/securetty

 包含设备名称,由 tty 行组成(每行一个名称,不包括前面的 /dev/),root 用户在这里被允许登录。

 /etc/usertty
/etc/shadow

 包含加密后的用户帐号密码信息,还可以包括密码时效信息。包括的字段有:

  • 登录名
  • 加密后的密码
  • 从 1970 年 1 月 1 日到密码最后一次被更改的天数
  • 距密码可以更改之前的天数
  • 距密码必须更改之前的天数
  • 密码到期前用户被警告的天数
  • 密码到期后帐户被禁用的天数
  • 从 1970 年 1 月 1 日到帐号被禁用的天数

 /etc/shells

 包含系统可用的可能的“shell”的列表。

 /etc/motd

 每日消息;在管理员希望向 Linux 服务器的所有用户传达某个消息时使用。

 /etc/gated.conf

 gated 的配置。只能被 gated 守护进程所使用。

 /etc/gated.version

 包含 gated 守护进程的版本号。

 /etc/gateway

 由 routed 守护进程可选地使用。

 /etc/networks

 列举从机器所连接的网络可以访问的网络名和网络地址。通过路由命令使用。允许使用网络名称。

 /etc/protocols

 列举当前可用的协议。请参阅 NAG(网络管理员指南,Network Administrators Guide)和联机帮助页。 C 接口是 getprotoent。绝不能更改。

 /etc/resolv.conf

 在程序请求“解析”一个 IP 地址时告诉内核应该查询哪个名称服务器。

 /etc/rpc

 包含 RPC 指令/规则,这些指令/规则可以在 NFS 调用、远程文件系统安装等中使用。

 /etc/exports

 要导出的文件系统(NFS)和对它的权限。

 /etc/services

 将网络服务名转换为端口号/协议。由 inetd、telnet、tcpdump 和一些其它程序读取。有一些 C 访问例程。

 /etc/inetd.conf

 inetd 的配置文件。请参阅 inetd 联机帮助页。包含每个网络服务的条目,inetd 必须为这些网络服务控制守护进程或其它服务。注意,服务将会运行,但在 /etc/services 中将它们注释掉了,这样即使这些服务在运行也将不可用。格式为:<service_name> <sock_type> <proto> <flags> <user> <server_path> <args>

 /etc/sendmail.cf

 邮件程序 sendmail 的配置文件。比较隐晦,很难理解。

 /etc/sysconfig/network

 指出 NETWORKING=yes 或 no。至少由 rc.sysinit 读取。

 /etc/sysconfig/network-scripts/if*

 Red Hat 网络配置脚本。

系统命令要独占地控制系统,并让一切正常工作。所有如 login(完成控制台用户身份验证阶段)或 bash(提供用户和计算机之间交互)之类的程序都是系统命令。因此,和它们有关的文件也特别重要。这一类别中有下列令用户和管理员感兴趣的文件。

 /etc/lilo.conf

 包含系统的缺省引导命令行参数,还有启动时使用的不同映象。您在 LILO 引导提示的时候按 Tab 键就可以看到这个列表。

 /etc/logrotate.conf

 维护 /var/log 目录中的日志文件。

 /etc/identd.conf

 identd 是一个服务器,它按照 RFC 1413 文档中指定的方式实现 TCP/IP 提议的标准 IDENT 用户身份识别协议。identd 的操作原理是查找特定 TCP/IP 连接并返回拥有此连接的进程的用户名。作为选择,它也可以返回其它信息,而不是用户名。请参阅 identd 联机帮助页。

 /etc/ld.so.conf

 “动态链接程序”(Dynamic Linker)的配置。

 /etc/inittab

 按年代来讲,这是 UNIX 中第一个配置文件。在一台 UNIX 机器打开之后启动的第一个程序是 init,它知道该启动什么,这是由于 inittab 的存在。在运行级别改变时,init 读取 inittab,然后控制主进程的启动。

 /etc/termcap

 一个数据库,包含所有可能的终端类型以及这些终端的性能。

守护进程是一种运行在非交互模式下的程序。一般来说,守护进程任务是和联网区域有关的:它们等待连接,以便通过连接提供服务。Linux 可以使用从 Web 服务器到 ftp 服务器的很多守护进程。

 /etc/syslogd.conf

 syslogd 守护进程的配置文件。syslogd 是一种守护进程,它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用,这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。

 /etc/httpd.conf

 Web 服务器 Apache 的配置文件。这个文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要确定它的位置,您还需要检查特定的 Apache 安装信息。

 /etc/conf.modules or /etc/modules.conf

 kerneld 的配置文件。有意思的是,kerneld 并不是“作为守护进程的”内核。它其实是一种在需要时负责“快速”加载附加内核模块的守护进程。

在 Linux(和一般的 UNIX)中,有无数的“用户”程序。最常见的一种用户程序配置文件是 /etc/lynx.cfg。这是著名的文本浏览器 lynx 的配置文件。通过这个文件,您可以定义代理服务器、要使用的字符集等等。下面的代码样本展示了 lynx.cfg 文件的一部分,修改这部分代码可以改变 Linux 系统的代理服务器设置。缺省情况下,这些设置适用于在各自的 shell 中运行 lynx 的所有用户,除非某个用户通过指定 --cfg = "mylynx.cfg" 重设了缺省的配置文件。

.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx image.
#
.ex 15
http_proxy:http://proxy3.in.ibm.com:80/
ftp_proxy:http://proxy3.in.ibm.com:80/
#http_proxy:http://penguin.in.ibm.com:8080
#ftp_proxy:http://penguin.in.ibm.com:8080/
.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space.  If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge

 

在更改配置文件时,如果程序不是由系统管理员或内核控制的,就要确保重新启动过使用该配置的程序。普通用户通常没有启动或停止系统程序和/或守护进程的权限。

更改内核中的配置文件会立即影响到系统。例如,更改 passwd 文件以增加用户将立即使该用户变为可用。而且任何 Linux 系统的 /proc/sys 目录中都有一些内核可调参数。只有超级用户可以得到对所有这些文件的写访问权力;其它用户只有只读访问权力。此目录中文件的分类的方式和 Linux 内核源代码的分类方式一样。此目录中的每个文件都代表一个内核数据结构,这些数据结构可以被动态地修改,从而改变系统性能。

注意:在更改其中任何文件的任何值之前,您应该确保自己全面了解该文件,以避免对系统造成不可修复的损害。
/proc/sys/kernel/ 目录中的文件

 文件名

 描述

 threads-max

 内核可运行的最大任务数。

 ctrl-alt-del

 如果值为 1,那么顺序按下这几个键将“彻底地”重新引导系统。

 sysrq

 如果值为 1,Alt-SysRq 则为激活状态。

 osrelease

 显示操作系统的发行版版本号

 ostype

 显示操作系统的类型。

 hostname

 系统的主机名。

 domainname

 网络域,系统是该网络域的一部分。

 modprobe

 指定 modprobe 是否应该在启动时自动运行并加载必需的模块。

守护进程是永远运行在后台的程序,它默默地执行自己的任务。常见的守护进程有 in.ftpd(ftp 服务器守护进程)、in.telnetd(telnet 服务器守护进程)和 syslogd(系统日志记录守护进程)。有些守护进程在运行时会严密监视配置文件,在配置文件改变时就会自动重新加载它。但是大多数守护进程并不会自动重新加载配置文件。我们需要以某种方式“告诉”这些守护进程配置文件已经被发生了改变并应该重新加载。可以通过使用服务命令重新启动服务来达到这个目的(在 Red Hat Linux 系统上)。

例如,如果我们更改了网络配置,就需要发出:
service network restart

注意:这些服务最常见的是 /etc/rc.d/init.d/* 目录中存在的脚本,在系统被引导时由 init 启动。所以,您也可以执行如下操作来重新启动服务:
/etc/rc.d/init.d/<script-for-the-service> start | stop | status
start、stop 和 status 是这些脚本接受的输入值,用来执行操作。

用户或系统程序在每次启动时都会读取其配置文件。尽管如此,请记住,有些系统程序在计算机打开时情况不一样,它们的行为依赖于在 /etc/ 中的配置文件中读到的内容。所以,用户程序第一次启动时将从 /etc/ 目录中存在的文件读取缺省配置。然后,用户可以通过使用 rc 和 .(点)文件来定制程序,正如下面一节所示。

我们已经看到怎样容易地配置程序。但是如果有的人不喜欢在 /etc/ 中配置程序的方式该怎么办呢?“普通”用户不能简单地进入 /etc 然后更改配置文件;从文件系统的角度来看,配置文件的所有者是 root 用户!这就是大多数用户程序都定义两个配置文件的原因:第一个是“系统”级别的,位于 /etc/;另一个属于用户“专用”,可以在他或她的主目录中找到。

例如,我在我的系统中安装了非常有用的 wget 实用程序。/etc/ 中有一个 /etc/wgetrc 文件。在我的主目录中,有一个名为 .wgetrc 的文件,它描述了我定制的配置(只有在我,也就是用户运行 wget 命令时,才会加载这个配置文件)。其它用户在他们自己的主目录(/home/other)中也可以有 .wgetrc 文件;当然,只有这些用户运行 wget 命令时,才会读取这个文件。换句话说,/etc/wgetrc 文件为 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列举了某个用户的“定制项”。重要的是这只是“一般规则”,并非所有情况都如此。例如,一个象 pine 一样的程序,在 /etc/ 中并没有任何文件,它只在用户主目录中有一个定制配置文件,名为 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允许用户“定制”这些配置文件(/etc 目录中只有少数 config. 文件是这种情况)。

 文件名

 描述

 ~/.bash_login

 请参考“man bash”。如果 ~/.bash_profile 不存在,bash 则将 ~/.bash_login 作为 ~/.bash_profile 处理。

 ~/.bash_logout

 请参考“man bash”。在退出时由 bash 登录 shell 引用。

 ~/.bash_profile

 由 bash 登录 shell 引用 /etc/profile 之后引用。

 ~/.bash_history

 先前执行的命令的列表。

 ~/.bashrc

 请参考“man bash”。由 bash 非登录交互式 shell 引用(没有其它文件)。除非设置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。

 ~/.emacs

 启动时由 emac 读取。

 ~/.forwa

 如果这里包含一个电子邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到这个电子邮件地址。

 ~/.fvwmrc ~/.fvwm2rc

 fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。

 ~/.hushlogin

 请参考“man login”。引起“无提示”登录(没有邮件通知、上次登录信息或者 MOD 信息)。

 ~/.mail.rc

 邮件程序的用户初始化文件。

 ~/.ncftp/

 ncftp 程序的目录;包含书签、日志、宏、首选项和跟踪信息。请参阅 man ncftp。ncftp 的目的是为因特网标准文件传输协议(Internet standard File Transfer Protocol)提供一个强大而灵活的接口。它旨在替换系统所使用的标准的 ftp 程序。

 ~/.profile

 请参考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 则将 ~/.profile 作为 ~/.bash_profile 处理,并被其它继承 Bourn 的 shell 使用。

 ~/.pinerc

 Pine 配置

 ~/.muttrc

 Mutt 配置

 ~/.exrc

 这个文件可以控制 vi 的配置。
示例:set ai sm ruler
在此文件中写入上面一行会让 vi 设置自动缩进、匹配括号、显示行号和行-列这几个选项。

 ~/.vimrc

 缺省的“Vim”配置文件。和 .exrc 一样。

 ~/.gtkrc

 GNOME 工具包(GNOME Toolkit)。

 ~/.kderc

 KDE 配置。

 ~/.netrc

 ftp 缺省登录名和密码。

 ~/.rhosts

 由 r- 工具(如 rsh、rlogin 等等)使用。因为冒充主机很容易,所以安全性非常低。

  1. 必须由用户(~/ 的所有者)或超级用户拥有。
  2. 列出一些主机,用户可以从这些主机访问该帐号。
  3. 如果是符号链接则被忽略。

 ~/.rpmrc

 请参阅“man rpm”。如果 /etc/rpmrc 不存在则由 rpm 读取。

 ~/.signature

 消息文本,将自动附加在从此帐号发出的邮件末尾。

 ~/.twmrc

 twm( The Window Manager)的配置文件。

 ~/.xinitrc

 启动时由 X 读取(而不是由 xinit 脚本读取)。通常会启动一些程序。
示例:exec /usr/sbin/startkde
如果该文件中存在上面这行内容,那么在从这个帐号发出 startx 命令时,这一行就会启动“KDE 视窗管理器”(KDE Window Manager)。

 ~/.xmodmaprc

 此文件被传送到 xmodmap 程序,而且可以被命名为任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。

 ~/.xserverrc

 如果 xinit 可以找到要执行的 X,xinit 就会将该文件作为 X 服务器运行。

 ~/News/Sent-Message-IDs

 gnus 的缺省邮件历史文件。

 ~/.Xauthority

 由 xdm 程序读和写,以处理权限。请参阅 X、xdm 和 xauth 联机帮助页。

 ~/.Xdefaults, ~/.Xdefaults-hostname

 在主机 hostname 的启动过程中由 X 应用程序读取。如果找不到 -hostname 文件,则查找 .Xdefaults 文件。

 ~/.Xmodmap

 指向 .xmodmaprc;Red Hat 有使用这个名称的 .xinitrc 文件。

 ~/.Xresources

 通常是送到 xrdb 以加载 X 资源数据库的文件的名称,旨在避免应用程序需要读取一个很长的 .Xdefaults 文件这样的情况。(有些情况曾经使用了 ~/.Xres。)

 ~/mbox

 用户的旧邮件。

http://www.thinkseo.cn

LINUX防DDOS和CC攻击的方法

十二月 28th, 2010 No comments

LINUX防DDOS和CC攻击的方法

mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能 有更好的效果。

LINUX防DDOS和CC攻击的方法
虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux虚拟主机服务器本身提供的防火墙功能来防御。
Read more…

Ubuntu 经典命令

四月 29th, 2010 2 comments

1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件
文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息
文件管理 # pwd pwd 查看当前所在目录的绝对路经
文件管理 # cd cd .. 回当前目录的上一级目录
文件管理 # cd cd – 回上一次所在的目录
文件管理 # cd cd ~ 或 cd 回当前用户的宿主目录
文件管理 # cd cd ~用户名 回指定用户的宿主目录
2 文件管理 # mkdir mkdir 目录名 创建一个目录
文件管理 # mkdir mkdir –p 递归式去创建一些嵌套目录
Read more…

Ubuntu 下的oracle 自启动设置

三月 25th, 2010 No comments

一、使用root用户修改/etc/oratab 文件:

$ gedit /etc/oratab

orcl:/Oracle/app/product/10.2.0/db_1:N

改为:

orcl:/Oracle/app/product/10.2.0/db_1:Y

也就是将最后的N改为Y

Read more…

Linux 命令收集

三月 25th, 2010 No comments

ls #列出文件夹内包含的文件

cd #切换文件夹(工作目录)

rm –r -f #删除文件,后面的命令还不清楚

mv  #重命名文件

Linux Ubuntu分区方案

三月 24th, 2010 No comments

Linux 下最少得有 2 个分区,一个是 /swap 交换分区,一个是 / 根分区。但一般人喜欢把 /boot /home /usr /var 这些挂载到单独的分区。为什么喜欢把 /boot 单独分出来,是因为一些老主板不支持大硬盘,这样就可以把 /boot 单独存放在硬盘的 1024 柱面内,不过现在还有这个必要吗?把 /var 单独分出来的原因是,它下面存放了一些日志和常变动的零时文件,容易产生碎片,而 /usr 就相当于 Windows 下面的 Program files+Windows 目录。

Read more…

什么是Ubuntu的云计算?

三月 23rd, 2010 No comments

今年的Ubuntu与往年的(Ubuntu)不一样。这话是怎么说的?

实际上,今年的Ubuntu已经进入了云计算领域,只是静悄悄地在进行。一组服务器,经过网络连接,形成所谓“云”(“Cloud”)。不过,这种“云”并不是服务器的传统物理集群,而是依靠虚拟技术将其变为一种新型的由许多虚拟机组成的计算环境。对于Ubuntu而言,就是利用OpenNebula虚拟架构引擎,连接起这些虚拟机(称为云的节点)。使其成为“云”。这种虚拟架构引擎OpenNebula就包括在Ubuntu 9.04的服务器版本里面。一旦“云”形成之后,也就是说,在“云”运行起来之后,某个特定的物理服务器就不再是重要的了,如果发生物理故障就可以随时将其热切换掉,而不致影响到整个“云”的正常运行。“云”具有无比强大的可伸缩的计算能力。

Read more…

Linux Ubuntu 服务器版 上編譯MySQL通不過的解決方法

三月 16th, 2010 No comments

   最近在Linux Ubuntu 服务器上編譯MySQL時通不過,停留在編譯sql/sql_yacc.cc文件處,很長 時間都通不過,有網友說編譯了三個多小時都通不過,我真的很佩服他的耐心了。我也 遇到了同樣的問題,還有過錯誤的判斷。通過與清華BBS的網友交流,我相信找到了問題 所在。
    有網友說用ports安裝就沒有什問題,但並沒有進一步說明 到底是因為什。看了一下ports中對mysql-server的說明,原來用ports編譯mysql需要 一個包:libtool-1.3.3。
    請看FreeBSD對libtool這個包的描述 Read more…