Spiga

sysctl.conf文件里的参数解释

sysctl.conf文件里的参数解释

引用自:FreeBSD下构建安全的Web服务器
作者:heiyeluren

一般优化系统主要是重新编译内核,去掉一些不要的驱动等等,你可以参考我在我Blog上写的关于编译内核的文章。我们这里对网络和内核一些选项进行优化和安全设置。编辑 /etc/sysctl.conf 文件,在里面加入如下内容:(有注释)

#最大的待发送TCP数据缓冲区空间
net.inet.tcp.sendspace=65536

#最大的接受TCP缓冲区空间
net.inet.tcp.recvspace=65536

#最大的接受UDP缓冲区大小
net.inet.udp.sendspace=65535

#最大的发送UDP数据缓冲区大小
net.inet.udp.maxdgram=65535

#本地套接字连接的数据发送空间
net.local.stream.sendspace=65535

#加快网络性能的协议
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1

#最大的套接字缓冲区
kern.ipc.maxsockbuf=2097152

#系统中允许的最多文件数量
kern.maxfiles=65536

#每个进程能够同时打开的最大文件数量
kern.maxfilesperproc=32768

#当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。该选项设置是否延迟ACK应答数据包,把它和包含数据的数据包一起发送,在高速网络和低负载的情况下会略微提高性能,但在网络连接较差的时候,对方计算机得不到应答会持续发起连接请求,反而会降低性能。
net.inet.tcp.delayed_ack=0

#屏蔽ICMP重定向功能
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0

#防止ICMP广播风暴
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0

#限制系统发送ICMP速率
net.inet.icmp.icmplim=100

#安全参数,编译内核的时候加了options TCP_DROP_SYNFIN才可以用
net.inet.icmp.icmplim_output=0
net.inet.tcp.drop_synfin=1

#设置为1会帮助系统清除没有正常断开的TCP连接,这增加了一些网络带宽的使用,但是一些死掉的连接最终能被识别并清除。死的TCP连接是被拨号用户存取的系统的一个特别的问题,因为用户经常断开modem而不正确的关闭活动的连接
net.inet.tcp.always_keepalive=1

#若看到net.inet.ip.intr_queue_drops这个在增加,就要调大net.inet.ip.intr_queue_maxlen,为0最好
net.inet.ip.intr_queue_maxlen=1000

#防止DOS攻击,默认为30000
net.inet.tcp.msl=7500

#接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包
net.inet.tcp.blackhole=2

#接收到一个已经关闭的端口发来的所有UDP包直接drop
net.inet.udp.blackhole=1

#为网络数据连接时提供缓冲
net.inet.tcp.inflight.enable=1

#如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表,节约路由的计算时间,但会需要大量的内核内存空间来保存路由表
net.inet.ip.fastforwarding=0

#kernel编译打开options POLLING功能,高负载情况下使用低负载不推荐SMP不能和polling一起用
#kern.polling.enable=1

#并发连接数,默认为128,推荐在1024-4096之间,数字越大占用内存也越大
kern.ipc.somaxconn=32768

#禁止用户查看其他用户的进程
security.bsd.see_other_uids=0

#设置kernel安全级别
kern.securelevel=0

#记录下任何TCP连接
net.inet.tcp.log_in_vain=1

#记录下任何UDP连接
net.inet.udp.log_in_vain=1

#防止不正确的udp包的攻击
net.inet.udp.checksum=1

#防止DOS攻击
net.inet.tcp.syncookies=1

#仅为线程提供物理内存支持,需要256兆以上内存
kern.ipc.shm_use_phys=1

# 线程可使用的最大共享内存
kern.ipc.shmmax=67108864

# 最大线程数量
kern.ipc.shmall=32768

# 程序崩溃时不记录
kern.coredump=0

# lo本地数据流接收和发送空间
net.local.stream.recvspace=65536
net.local.dgram.maxdgram=16384
net.local.dgram.recvspace=65536

# 数据包数据段大小,ADSL为1452。
net.inet.tcp.mssdflt=1460

# 为网络数据连接时提供缓冲
net.inet.tcp.inflight_enable=1

# 数据包数据段最小值,ADSL为1452
net.inet.tcp.minmss=1460

# 本地数据最大数量
net.inet.raw.maxdgram=65536

# 本地数据流接收空间
net.inet.raw.recvspace=65536

#ipfw防火墙动态规则数量,默认为4096,增大该值可以防止某些病毒发送大量TCP连接,导致不能建立正常连接
net.inet.ip.fw.dyn_max=65535

#设置ipf防火墙TCP连接空闲保留时间,默认8640000(120小时)
net.inet.ipf.fr_tcpidletimeout=864000

无须紧张,无须强硬,外国已经乱套 (转)

       关于西藏暴乱,我当时是在法国,通过youtube也看到了很多后续事件,就在几天前,大概是18号左右。法国国际广播电台出了一个节目,是两个法国教授在电台上辩论西藏问题,有亲中国派的,有亲独立派的。而后两个人基本上是吵起来了。而后世界报,法国大报纸全都开始骂总统撒科齐,因为他一直没有发表看法,报纸都有浅意思说他不敢于表明立场。而法国报纸普遍认为法国是中国最亲密的西方国家,法国对中国有别的国家没有的影响力。无论是支持或者反对,法国都应该表态,以显示大国地位。反倒西藏问题实质没有那么重要,这个和德国是完全不一样的。事不凑巧,法国正在地方选举,选举市长和地方政府。反对派,在大选中落选的罗亚尔女士先出来发表了看法,为了选表和政治资本。所以西藏问题反倒成了法国内部政治派系混战的天下了。总统当然不会坐以待毙,然后就发表了个声明。当然对中国北京是没好处的,但是法国总统自己也因为这个又开始被法国报纸追杀。罗亚尔果然厉害,自己不是总统不会被邀请,她当然可以随便说了,但是撒科齐就没有那个运气了。而真正的法国人是怎么想的?其实社会的左派和右派民众都认为,其实西藏就根本不是问题。一向认为巴黎第四大学(索帮大学,左派)是法国社会民族政治的中心,那里的观点就是,中国正在民主化,需要时间和理解。而政治精英派的大本营巴黎政治学院(右派),疯狂说西藏,只是政治精英想在国际政治上有所表演,因为法国影响力衰退是大家都承认的事情。所以就因为这样,总统处于自己,以及被巴黎政治学院从背后吹风。 波兰的表态更是在法国民众中被耻笑。因为法国人精明的看到波兰的表态只是想讨好欧盟,尤其是法德中心体,尤其上这两国的中央政府。法国巴黎政治学院当然喜欢听到自己有支持者,但是民众都看太明白了。

在这次根本和法国没关系的事件中,大家都看到了,西方本国自己的政治都打成了一团。只是为了个自的政治利益而已。

而欧盟的两个表态又重撮了欧盟本身,在欧盟一体化的危机刚过,法国的地位受到挑战,而后科所窝的独立,西班牙等国家的强烈反对,以及德国的支持,都让欧盟感觉到政治无力,而这次在斯洛文尼亚的会议,更让欧盟难过,因为显示了欧盟无法达成统一的政治力量。英国处于对自身将举行奥运,以及本身就有分裂问题(北爱尔兰)所以力挺北京,bbc作为传统的反本国政府的东西,就更有理由追杀英国首相,另外外相本身就是亲中国的,所以这个声明和他也脱不了关系。而在野党和工党的大战一触即发,北爱尔兰也在暗涌。英国内部的政治斗争才刚开始。

而后的德国,这次比较厉害是因为2007年的外交对抗的结果,德国社会是完全右倾的,议会里,右派占了400多席次,左派才80多。所以这次的事件对德国民众冲击比较大。但是德国急于表态是因为他们有恢复大国政治的想法。因为只有能冲击包括中国,俄罗斯,美国这三个国家的事件出现后,德国才有表现的机会,因为只有足够的大事件才能表现出他足够大的声音。而民间估计错了政府的考虑,因为2007政府和商业界受到教训,所以他们不敢有所表示,也只能在欧盟声明中略微表现而已,所以德国媒体不仅夸大事实,也追杀起政府。因为民间确实很着急他们德国的政治前途。这个德国是我们最应该注意和防范的,因为他的情况和法国正好相反。
西 班牙和葡萄牙,都有分裂问题,所以西班牙和葡萄牙的支持可以理解。尤其是西班牙反对科所窝的独立,已经看出西班牙一贯的反独立立场了。意大利因为和法国有 敏感的高斯岛问题(高斯是法国的分裂问题,有很多年了,分裂后的最大主张就是加入意大利)所以意大利也无从表态,如果反对北京,那么它就是给法国了一个大 难题,高斯岛分裂的可能性变大。如果赞成的话,那刚好在欧盟内和法国唱了反调。显然意大利在欧盟中的地位不及法,德,英。出于梵蒂冈的考虑,梵蒂冈也很沉 默,而意大利更是要看北京的法国的后续才敢于表态。所以意大利是最沉默的。当然做法和德国一样,在欧盟宣言下偷偷表述一下而已。

美 国现在也是护不了那么多了,美国1年的大选就在民主党内斗里动荡呢。因为台湾大选后,美国开始了对中国政策的调整,而忙于国内政治斗争还转不过身来说这个 问题。共和党的布什表态的话,说不好被民主党骂,加上他的战争情形,估计党内会和他算账。而民主党内斗的一片狼及,更不会回应海外问题,因为噢巴马一回答,希拉里就要心里偷笑了。

新德里当然是最应该注意的,但是印度自己的社会机构也成了他们自己的一个问题,第一是印度人大多数是印度教徒,对佛教根本不理睬。而印度也缺少资源对西藏问题发表言论。不过城门失火殃及鱼池。1955年被印度入侵成了保护国的尼不尔也暴乱了。很有可能,这次事件会波及本来印度自己身的利益地区。所以印度也不敢多说话。

总上,外国,尤其是西方都在各国本国政治厮杀而大打西藏的事情。大家无须自乱,只要保持西藏发展,大家都知道这个只能是一个美国制造,印度参与,欧盟远观的不是问题的问题。而dl无论他内心如何考虑,其实他一死,就无所谓这样的事情了。

理想的分析后,我们无需变成鹰派,我们只要依法治理好自己的事情,让事件平息,而后让那些想大捞政治资本人的失去他们的法宝,才是最应该做的。

有趣的Google maps视频

很精彩的视频,这个人好厉害哦

L7filter七层过滤服务


L7-filter

1、概述

L7-filter (Application Layer Packet Classifier for Linux), 是 Linux netfilter 的一个外挂模块, 它能使 Linux 的 iptables 支持 Layer 7 (OSI应用层) 过滤功能, 限制封杀 P2P、即时通讯(MSN、QQ、AIM)软件。

官方站点http://l7-filter.sourceforge.net/

2、L7filter功能

L7filter是Linux上的一个数据包分类器,作为iptables的扩展它加强iptables在分析封包的能力,iptables在处理封包时不是简单的基于如网络应用port号,而是用正则表达式匹配Layer7应用协议(HTTP、FTP)的传输数据,这样更能准确的分析数据包。


  1. L7filter由于要处理应用层包信息,对性能有一定影响,它主要用于那些不能基于端口来处理包信息的情况。如下

  • 分析那些不可预知、不固定PORT的协议(如P2P)

  • 非标准PORT的数据包(如http 8080、442)

  • 多种协议共享一个端口(p2p用80端口)


2) 主要功能

  • 禁止应用服务(http、MSN、QQ)

  • 流量限制

  • Accouting


3) L7filter目前有两个版本

  • .Kernel version 内核和iptables打补丁,比较稳定

  • User space version 也要重编内核,安装在内核外壳的应用程序


3、L7filter安装

L7filter安装包括编译内核(打补丁)、iptables编译(打补丁)、安装L7protocols文件


  1. 所需软件包


内核kernel 2.6.21.1

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.1.tar.gz

并不是所有kernel都经测试过,下面链接列出了所内核的测试情况,这里我们选择2.6.21.1 http://l7-filter.sourceforge.net/kernelcompat.en.php


Iptables 1.3.8

http://www.netfilter.org/projects/iptables/files/iptables-1.3.8.tar.bz2


Kernel 版L7filter 2.17

http://jaist.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.17.tar.gz

包里有kernel和iptables补丁


应用层协议定义(11.22)

http://nchc.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2007-11-22.tar.gz


2) 安装步骤


  • 解压L7filter

cd /root/

tar xzf netfilter-layer7-v2.17.tar.gz

里面有kernel和iptables补丁


  • Patch kernel

cd netfilter-layer7-v2.17

cp for_older_kernels/kernel-2.6.20-2.6.21-layer7-2.16.1.patch /usr/src/linux-2.6.21.1/

cd /usr/src/linux-2.6.21.1

patch -p1 < kernel-2.6.20-2.6.21-layer7-2.16.1.patch


  • 重编内核enable下列选项

"Prompt for development and/or incomplete code/drivers" ("Code maturity level options"下面)

"Network packet filtering framework" (Networking → Networking Options)

"Netfilter Xtables support"(...→Network packet filtering framework(netfilter)→Core Netfilter Configuration)

"Netfilter connection tracking support"(同一屏幕),选择"Layer 3 Independent Connection tracking"

"Connection tracking flow accounting"(同一屏幕)

"Layer 7 match support"(同一屏幕)

"FTP protocol support",“IRC protocol support”

最好把netfilter下的所有选项都选上。


  • Patch iptables

解压iptables1.3.8

cd /usr/local/src/

tar jxf iptables-1.3.8.tar.bz2

复制netfilter-layer的iptables 补丁当前目录

cp /root/netfilter-layer7-v2.17/iptables-1.3-for-kernel-2.6.20forward-layer7-2.17.patch ./

cd iptables-1.3.8

patch –p1 < iptables-1.3-for-kernel-2.6.20forward-layer7-2.17.patch

chmod +x extensions/.layer7-test

make KERNEL_DIR=/usr/src/linux-2.6.21.1

make install KERNEL_DIR=/usr/src/linux-2.6.21.1

链接iptables到新的/usr/local/sbin/iptables

cd /sbin/

mv iptables iptables.old
ln -s /usr/local/sbin/iptables iptables


  • 安装Layer7 protocols

tar zxf l7-protocols-2007-11-22.tar.gz

cd l7-protocols-2007-11-22
make install

Layer7协议安装后的路径:/etc/l7-protocols/


4、L7filter使用

1) 协议匹配文件

iptables把数据包交由l7filter模块处理,而l7filter是用正则表达式的string-match方式辨别数据包的。L7filter依据/etc/l7-protocols/protocols/下.pat文件所提供的关键字业判断网络数据流。

FTP

^220[x09-x0d -~]*ftp|331[x09-x0d -~]*password

HTTP

http/(0.9|1.0|1.1)[1-5][0-9][0-9][x09-x0d-~]*

(connection:|content-type:|content-length:|date:)|post [x09-x0d -~]* http/[01].[019]

QQ

^.?x02.+x03$

表一 Partten示例

表一是FTP、HTTP、QQ 的.pat文件

FTP:数据包中开头是“220”之后有“ftp”字样,并且之后有“331”和“password”则判断此连接是FTP服务。

HTTP:数据包中包含”http”,“connection:”,“content-type:”,“content-length:”內容时,则判断此连接是HTTP服务。


这些.pat文件我们可以修改,或自己编写.pat。L7filter支持大部分的应用协议,在官方测试后的效果如下表所示

Protocol详细说明: http://l7-filter.sourceforge.net/protocols

分类

应用协议

Great

FTP,DNS,HTTP,IMAP,irc,POP3,SMTP,SSH

Good

AIM,bittorrent,gopher,jabber,msn-filetransfer,msnmessenger,QQ,NTP,rtsp,SNMP,SOCKS,SSL,telnet,yahoo,xunlei,whois,ident,DHCP,CVS,

Ok

H323,http-rtsp,kugoo,SIP,skypeout,skypetoskype,uucp,

Poor

mute,netbois,tftp

表二

L7filter还可以基于filetype限制网络数据包:jpg、exe、gif、htm、flv、tar等


2) 防火墙设定

L7filter有对网络数据包过滤,流量管理等功能,作为iptables的一个扩展,iptables加载l7filter的命令语法为


iptables [specify table & chain] -m layer7 --l7proto [name of protocol] -j [action]


通常是操作iptables的mangle表如

iptables -t mangle -A POSTROUTING -m layer7 --l7proto [etc.]


  • 禁止应用层服务

L7filter可以禁止QQ、HTTP、FTP、MSN、P2P等应用服务,假如我们作如下规则,不允许用户使用MSN,iptables命令规则为

iptables -t mangle -A POSTROUTING -m layer7 --l7proto msnmessenger -j DROP

--l7proto后面加/etc/l7-protocols/protocols下面protocol名msnmessenger

限制单一IP

iptables -s 192.168.100.161 -t mangle -A POSTROUTING -m layer7 --l7proto msnmessenger -j DROP

限制子网访问

iptables -s 192.168.100.0/24 -t mangle -A POSTROUTING -m layer7 --l7proto msnmessenger -j DROP


  • 流量限制

流量限制也是iptables与TC结合控制应用服务流量的,只有iptables规则不一样。官方有一个shell脚本自动加载iptables策略

http://l7-filter.sourceforge.net/L7-Netfilter-example-nonbridge。


删除iptables mangle和TC策略

iptables -t mangle –F

tc qdisc del dev eth0 root


#缺省控制

tc qdisc add dev eth0 root handle 1: htb default 10

#设置类1:1总频宽

tc class add dev eth0 parent 1: classid 1:1 htb rate 1200kbps ceil 1200kbps

#设置http流量

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 300kbps ceil 500kbps prio 1

#设置BT

tc class add dev eth0 parent 1:1 classid 1:20 htb rate 20kbps ceil 200kbps prio 3


#设置队列规则

tc qdisc add dev eth0 parent 1:10 handle 11: sfq perturb 10

tc qdisc add dev eth0 parent 1:20 handle 12: sfq perturb 10


#设置过滤规则

tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1 fw flowid 1:10

tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 2 fw flowid 1:20


#设置iptables

iptables -t mangle -A POSTROUTING -m layer7 --l7proto http -j MARK --set-mark 1

iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 2

可以看出主要是在iptables里控制,TC和普通控制相同。


  • Accouting

要统计跟踪应用服务的流量,如http、pop3等可用下面的命令得到

iptables -t mangle -A POSTROUTING -m layer7 --l7proto http

iptables -t mangle -A POSTROUTING -m layer7 --l7proto pop3

#查看流量

iptables -L -t mangle –nv


5、参考信息