wayne's blog

在一秒钟的时间里,也可以突然很感动!~

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  139篇文章 :: 0篇收藏:: 54篇评论:: 1个Trackbacks

公告


使用 POTU 订阅!


Subscribe in My MSN

文章

收藏

相册

友情

存档


正在读取评论……


2007年11月


===========网络接口界面(比如lo,eth0,eth1)参数===========


/proc/sys/net/ipv4/conf/{interface}/* :
/proc/sys/net/ipv4/conf/ 下可以发现类似 all,eth0,eth1,default,lo 等网络接口界面,每一个都是目录,他们下属的文件中,每个文件对应该界面下某些可以设置的选项设置.(all/是特定的,用来修改所有接口的设置,default/ 表示缺省设置,lo/表示本地接口设置,eth0/表示第一块网卡,eth1/表示第2块网卡.注意:下面有的参数,是需要all和该界面下同时为ture才生效,而某些则是只需要该界面下为true即可,注意区别!!)


log_martians : BOOLEAN
记录带有不允许的地址的数据报到内核日志中。all/ 或者{interface}/至少有一个True即可生效.

accept_redirects : BOOLEAN
对于主机来说默认为True,对于用作路由器时默认值为False
收发接收ICMP重定向消息。all/{interface}/两者同时True方可生效.
(如果不熟悉所在网络的结构.推荐不修改,因为在有多个出口的网络的时候,如果有2个出口路由器,由于作为主机的时候默认只指认一个网关,出口路由可能有策略设置转到另一个路由器上.)

forwarding : BOOLEAN
在该接口打开转发功能 (在3块或以上的网卡的时候很实用,有时候只想让其中一外一内,另一块做服务,就可以让这块做服务的网卡不转发数据进出)

mc_forwarding :BOOLEAN
是否进行多播路由。只有内核编译有CONFIG_MROUTE并且有路由服务程序在运行该参数才有效。

medium_id :INTEGER
默认值是0
通常,这个参数用来区分不同媒介.两个网络设备可以使用不同的值,使他们只有其中之一接收到广播包.默认值为0表示各个网络介质接受他们自己介质上的媒介,值-1表示该媒介未知。 通常,这个参数被用来配合proxy_arp实现:proxy_arp的特性即是允许arp报文在两个不同的网络介质中转发.(第一段 Integer value used to differentiate the devices by the medium they
are attached to. Two devices can have different id values when
the broadcast packets are received only on one of them.
The default value 0 means that the device is the only interface
to its medium, value of -1 means that medium is not known.
没读懂,去cu问人,以后更正)


proxy_arp : BOOLEAN
打开arp代理功能。all/ 或者{interface}/至少有一个True即可生效

shared_media : BOOLEAN
默认为True

发送(路由器)或接收(主机) RFC1620 共享媒体重定向。覆盖ip_secure_redirects的值。all/ 或者{interface}/至少有一个True即可生效

secure_redirects : BOOLEAN
默认为True

仅仅接收发给默认网关列表中网关的ICMP重定向消息,默认值是TRUE。all/ 或者{interface}/至少有一个True即可生效。 (这个参数一般情形请不要修改,可以有效地防止来自同网段的非网关机器发出恶意ICMP重定向攻击行为)

send_redirects : BOOLEAN
默认为True
如果是router,允许发送重定向消息.all/ 或者{interface}/至少有一个True即可生效。(根据网络而定,如果是做NAT,并且网内只有此一个网关的时候,其实是可以关闭掉它的,事实上目前而言,IP Redirects是TCP/IP协议产生早期为了解决网络持续性而提出的一种方法,后来事实证明这种措施不太实用而且具有很大的安全风险,可能引起各种可能的网络风险产生 - 拒绝服务攻击,中间人攻击,会话劫持等等,所以很多安全文档是推荐关闭它.)


bootp_relay : BOOLEAN
默认为False

接收源地址为0.b.c.d,目的地址不是本机的数据报。用来支持BOOTP转发服务进程,该进程将捕获并转发该包。目前还没有实现。

accept_source_route : BOOLEAN
对于主机来说默认为False,对于用作路由器时默认值为True
接收带有SRR选项的数据报。all/{interface}/两者同时True方可生效.(IP源路由选项,也是TCP/IP协议早期的一个实现缺陷,允许IP包自身携带路由选择选项,这将允许攻击者绕过某些安全检验的网关,或者被用来探测网络环境。 在企业网关上强烈建议设置关闭或过绿丢弃IP源路由选项数据包。这个功能在调试网络的时候很有用,但是在真正的实际应用中,有可能造成一些麻烦和危险)

rp_filter : BOOLEAN
默认值为False

1 - 通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项。
0 - 不通过反向路径回溯进行源地址验证。
默认值为0,但某些发布在启动时自动将其打开。 (router默认会路由所有东西﹐就算该封包'显然'不属於我们的网路的。常见的例子﹐莫过於将私有 IP 泄漏到 internet 上去。假如某个界面﹐其上设定的网络地址段為
195.96.96.0/24﹐那么理论上不会有212.64.94.1 这样的地址段封包会到达这个界面上。许多人都不想转发非本网段的数据包﹐因此核心设计者也打开了方便之门。在 /proc 裡面有些档案﹐透过它们您可以让核心為您做到这点。此方法被称為 "逆向路径过滤(Reverse Path Filtering)"。基本上﹐假如对此封包作出的回应﹐不是循其进入的界面送出去﹐那它就被置之不理。)


arp_filter : BOOLEAN
默认值为False
1 -允许多个网络介质位于同一子网段内,每个网络界面依据是否内核指派路由该数据包经过此界面来确认是否回答ARP查询(这个实现是由来源地址确定路由的时候决定的),换句话说,允许控制使用某一块网卡(通常是第一块)回应arp询问。(做负载均衡的时候,可以考虑用
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
这样的方式就可以解决,当然 利用
echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
两条命令配合使用更好,因为arp_announcearp_ignore 似乎是对arp_filter的更细节控制的实现。)


0 -默认值,内核设置每个网络界面各自应答其地址上的arp询问。这项看似会错误的设置却经常能非常有效,因为它增加了成功通讯的机会。在Linux主机上,每个IP地址是网络界面独立的,而非一个复合的接口。只有在一些特殊的设置的时候,比如负载均衡的时候会带来麻烦。
all/ 或者{interface}/至少有一个True即可生效。(简单来说,就是同一Linux上,如果有某些原因,有2块网卡必须设置为同一网段,那么默认情况下,会有一块工作,而另外一块不工作或者内核频繁报告错误,这个时候就需要打开这个选项了)


arp_announce : INTEGER
默认为0

对网络接口上本地IP地址发出的ARP回应作出相应级别的限制:


确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
0 - (默认) 在任意网络接口上的任何本地地址
1 -尽量避免不在该网络接口子网段的本地地址. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送


all/{interface}/两者同时比较,取较大一个值生效.


提高约束级别有益于从指定的目标接受应答,而降低级别可以给予更多的arp查询者以反馈信息(关于arp代理这一段我普遍翻译地不好,去啃一下tcp/ip bible的卷一,然后再翻译吧)


arp_ignore : INTEGER
默认为0
定义对目标地址为本地IP的ARP询问不同的应答模式


0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使eth0收到来自10.1.1.2这样地址发起的对10.1.1.1 的arp查询也会回应--而原本这个请求该是出现在eth1上,也该有eth1回应的)


1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使eth0收到来自10.1.1.2这样地址发起的对192.168.0.1的查询会回答,而对10.1.1.1 的arp查询不会回应)
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,eth1收到来自10.1.1.2这样地址发起的对192.168.0.1的查询不会回答,而对192.168.0.2发起的对192.168.0.1的arp查询会回应)
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应(do not reply for local addresses configured with scope host,only resolutions for global and link addresses are replied 翻译地似乎不好,这个我的去问问人)
4-7 - 保留未使用
8 -不回应所有(本地地址)的arp查询


all/{interface}/两者同时比较,取较大一个值生效.


tag : INTEGER
默认为0
你可以写一些,可以视需要而定.(没有明白这个是什么作用,以后补充)



以后如果有机会,我会把route部分的设置也翻译了。 通过翻译以及了解相关协议的过程中,我本人也学习到了很多,也了解到了linux在一些方面还存在着的不足,比如linux无法设置定期ARP清理的时间,linux的sysctl可控制参数比bsd来弱了很多(后者基本上是除了kernel的编译参数外,都可以通过sysctl调整).也有不少比大多数unix优秀的地方,比如TIME_WAIT的超时设置,在AIX,Tru64 UNIX里就没有.而且linuxTCP序列号本身就是依照RFC1948实现的(RFC1948 协议提出了一个加强的随机TCP序列号生成算法,启用RFC 1948支持将时TCP序列号能难以被预测,从而防止IPSpoof攻击和TCP任务劫持攻击产生。)

http://skylove.study-area.org/blog/2006/07/verycd.html




==============IP、ICMP===========


ip_local_port_range: (两个INTEGER)
定于TCP和UDP使用的本地端口范围,第一个数是开始,第二个数是最后端口号,默认值依赖于系统中可用的内存数:
> 128Mb 32768-61000
< 128Mb 1024-4999 or even less.
该值决定了活动连接的数量,也就是系统可以并发的连接数(做nat的时候,我将它设置为了1024 65530 工作正常)


ip_nonlocal_bind : BOOLEAN
默认值是0
如果您想让应用程式能够捆绑到一个不属於该系统的位址﹐就需要设定这裡。(当机器使
用非固定/动态的网络连接的时候,或者离线调试程序的时候,当线路断掉之后﹐该服务仍可啟动而且捆绑到特定的位址之上。)


ip_dynaddr : BOOLEAN
默认值是0
假如甚至为0值,那么将支持动态地址.如果是设置为>1的值,将在动态地址改写的时候发一条内核消息。(如要用动态界面位址做 dail-on-demand ﹐那就设定它。一旦请求界面起来之
后﹐所有看不到回应的本地 TCP socket 都会重新捆绑(rebound)﹐以获得正确的位址。
假如遇到该网络界面的连线不工作﹐但重新再试一次却又可以的情形﹐设定这个可解决这
个问题。)


icmp_echo_ignore_allBOOLEAN
icmp_echo_ignore_broadcastsBOOLEAN
默认值是0

如果任何一个设置为true(>0)则系统将忽略所有发送给自己的ICMP ECHO请求或那些广播地址的请求。(现在网络上很多病毒/木马自动发起感染攻击是先用icmp的echo方式判断对方是否存活,因此开启该值,会降低一些被骚扰的可能性。但由于禁止了icmp,就无法ping到该机器了,因此网络管理员也没有办法判断机器是否存活了,所以可以考虑用netfilter/iptables来完成该工作会更有所选择针对性.icmp_echo_ignore_all 是禁止所有的icmp包,而icmp_echo_ignore_broadcasts是禁止了所有的广播包)


icmp_ratelimit : INTEGER
默认值是100 Jiffie
限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。0表示没有任何限制,否则表示jiffies数据单位中允许发送的个数。(如果在icmp_ratemask进行相应的设置Echo Request的标志位掩码设置为1,那么就可以很容易地做到ping回应的速度限制了)


icmp_ratemask : INTEGER
在这里匹配的ICMP被icmp_ratelimit参数限制速率.
匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100000011000 (6168)
关于标志位的设置,可参考 源程序目录/include/linux/icmp.h



0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply


* 号的被默认限速(见上表mask)



icmp_ignore_bogus_error_responses : BOOLEAN
默认值是0
某些路由器违背RFC1122标准,其对广播帧发送伪造的响应来应答。这种违背行为通常会被以告警的方式记录在系统日志中。如果该选项设置为True,内核不会记录这种警告信息。(我个人而言推荐设置为1)

 

http://skylove.study-area.org/blog/2006/07/linuxip_115417139458879727.html





ip_forwardBOOLEAN
0 - 关闭(默认值)
非0值 - 打开ip转发
在网络本地接口之间转发数据报。该参数非常特殊,对该参数的修改将导致其它所有相关配置参数恢复其默认值(对于主机参阅RFC1122,对于路由器参见RFC1812)(在其他一些操作系统中,这个参数不是boolean型,而是INTEGER型,设置为0为不转发,1为根据接口情形决定是否转发,2是始终转发)

ip_default_ttlINTEGER
默认值为 64
表示IP数据报的Time To Live值(在网络传递中,每经过一"跳",该值减少1,当ttl为0的时候,丢弃该包.该值越大,即在网络上可以经过的路由器设备的数量越多,但一个错误的包,也会越发浪费生存周期.根据目前的实际情形而看,设置为32已经足够普通网络访问Internet的需求了)

ip_no_pmtu_discBOOLEAN
默认值为FALSE(0)
关闭路径MTU探测(典型的瓶颈原理,一次成功的传输中,mtu是由网络上最"窄"的位置决定的.如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这样每一片都小于MTU。
几种常见网络的MTU值:



超通道         65535
16Mb/ s令牌网(IBM)   17914
4Mb/ s令牌网(IEEE 802.5) 4464
FDDI          4352
以太网         1500
IEEE 802.3/802.2     1492
X.25          576
点对点(低延时)     296




ipfrag_high_threshINTEGER
默认值为262144
用来组装分段的IP包的最大内存量。两个文件分别表示用于重组IP分段的内存分配最低值和最高值,一旦达到最高内存分配值,其它分段将被丢弃,直到达到最低内存(ipfrag_low_thresh 见下文)分配值。(根据我个人理解,就是达到最高后,就"关门打狗",直到处理到最低值的时候才又开门放分段的ip包进来处理.如果最高/最低差距过小,很可能很快又达到限制又开始丢弃包;而设置过大,又会造成某段时间丢包时间持续过久.因此需要适当地考虑,默认值中给出的最低/最高比率值为3/4.此外补充说明,kernel中,对内存的使用单位,都是以byte为单位的.当TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。我在1G内存的NAT机器上,分别设置最低为262144,最高为393216)


ipfrag_low_threshINTEGER
默认值为196608
参见ipfrag_high_thresh。

ipfrag_timeINTEGER
默认值为30
保存一个IP分片在内存中的时间。

inet_peer_thresholdINTEGER
默认值为65664
INET对端存储器某个合适值,当超过该阀值条目将被丢弃。该阀值同样决定生存时间以及废物收集通过的时间间隔。条目越多﹐存活期越低﹐GC 间隔越短(GC=Grabage Collection 废物收集?默认值65664=65536 + 128 是怎么得来的呢?看include/net/inetpeer.h struct inet_peer的内容,是为了IP ROUTE更快,缓冲对方IP的信息,一个对方IP一个记录.该值与
inet_peer_gc_maxtime
inet_peer_gc_mintime
inet_peer_maxttl
inet_peer_minttl
inet_peer_threshold
参数都是用来控制这个cache的大小的。似乎这个cache消耗比较大,在CU上有朋友提到过在一个26M的嵌入式Linux中,这个cache就用到了1M多内存)


inet_peer_minttlINTEGER
默认值为120

条目的最低存活期。在重组端必须要有足够的碎片(fragment)存活期。这个最低存活期必须保证缓冲池容积是否少于 inet_peer_threshold。该值以 jiffies为单位测量。(每次整理的时候,会考虑小于inet_peer_minttl 的ip条目一定保存,而大于inet_peer_maxttl时间设置的ip条目会被释放)

inet_peer_maxttlINTEGER
默认值为600

条目的最大存活期。在此期限到达之后﹐如果缓冲池没有耗尽压力的话(例如﹐缓冲池中的条目数目非常少)﹐不使用的条目将会超时。该值以 jiffies为单位测量。


inet_peer_gc_mintimeINTEGER
默认值为10
废物收集(GC)通过的最短间隔。这个间隔会影响到缓冲池中内存的高压力。 该值以 jiffies为单位测量。(如果长期不整理,会cache很多条目,而整理的时间太频繁,又会给系统造成压力,这个值就是确定最小整理周期间隔的)

inet_peer_gc_maxtimeINTEGER
默认值为120
废物收集(GC)通过的最大间隔,这个间隔会影响到缓冲池中内存的低压力。 该值以 jiffies为单位测量。



Jiffie: 内核使用的内部时间单位,在i386系统上大小为1/100s,在Alpha中为1/1024S。在/usr/include/asm/param.h中的HZ定义有特定系统的值。

http://skylove.study-area.org/blog/2006/07/linuxip.html




    摘要:

tcp_syn_retriesINTEGER
默认值是5

对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1此处阅读全文





    摘要:

DDOS攻击中最流行的也是威力最大的就是基于页面的DDOS以及将这个攻击理论发挥得淋漓尽致的攻击工具CC,本文特邀CC作者和我们共同了解CC的相关攻击原理和防范方法,希望能让更多的朋友了解这样的攻击方式并能防范它。  
  
  蝴蝶:前段时间上海一家游戏娱乐公司的网站遭到了基于页面请求的DDOS分布式拒绝服务攻击,网站陷入完全瘫痪状态,并被黑客的匿名信勒索,金额高达10万元,而在勒索过程中,这群黑客还表示会对腾讯QQ等网站下手,随后QQ“服务器维护”几天。12月5号的时候,全球BitTorrent服务器也受到了很强烈的DDOS攻击,一度陷入瘫痪。而DDOS攻击中最流行的也是威力最大的就是基于页面的DDOS以及将这个攻击理论发挥得淋漓尽致的攻击工具CC,本文特邀CC作者和我们共同了解CC的相关攻击原理和防范方法,希望能让更多的朋友了解这样的攻击方式并能防范它。

  很多朋友都知道木桶理论,一桶水的最大容量不是由它最高的地方决定的,而是由它最低的地方决定,服务器也是一样,服务器的安    (全文共4353字)——点击此处阅读全文





    摘要:

内容概要

本文详细讲述一台Linux服务器系统安装完毕后,从初步系统调整到安装L.A.M.P环境再到服务器优化、安全策略等操作步骤,通过阅读本文,您将能够轻松快速的完成对 CentOS3 服务器的环境配置!

1)本文包含如下主要内容:

  • CentOS3 安装后的调整以及设置
  • 升级OpenSSL和OpenSSH加强安全性
  • 安装Apache+PHP+MySQL+Zend Optimizer环境
  • 配置Apache以及建立虚拟主机
  • 服务器优化
  • 服务器iptables防火墙安全策略定制参考

2)本文约定

  • 下载的RPM包和源码包存放位置:/usr/local/src
  • MySQL 数据库位置:/var/lib/mysql
  • Apache 网站    (全文共22501字)——点击此处阅读全文