建立一个带宽、线程可控的下载型WEB网站( 三 )


modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 >/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 >/proc/sys/net/ipv4/conf/all/log_martians

iptables -F
iptables -X
iptables -Z

iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP

##
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

## SYN-Flooding
iptables -N syn-flood
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP

## Make sure that new TCP connections are SYN packets
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

## HTTP
iptables -A INPUT -i eth0 -p tcp -d 0/0 --dport 80 -j ACCEPT

## IP packets limit
iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 3 -j ACCEPT

## FTP service
iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT

## SSH login
iptables -A INPUT -i eth0 -m mac --mac-source 00:00:00:00:00:00 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP

## Anything else not allowed
iptables -A INPUT -i eth0 -j DROP



九、附录:

mod_bandwidth选项简单说明:

BandWidthPulse
格式: BandWidthPulse <毫秒(千分之一秒>
默认: 1000
上下文: per server config

改变计算带宽的时间间隔 , 默认为1000毫秒(1秒) 。使用更低的间隔可以获得
更精确的带宽控制 , 但消耗更多的CPU时间 , 反之亦然 。

BandWidth
格式: BandWidth <速率>
默认: 无
上下文: per directory, .htaccess

限制这个目录下文件下载的速率 。

domain 指定来自哪个域的连接受到这个设置的影响 。
ip 指定来自哪个ip地址(或者ip段)的连接受到影响 。
all 所有连接都受到影响 。

示例:


# 来自 dualface.com 的连接不限制下载速度
BandWidth dualface.com 0
# 来自 192.168.0.0/16(或者192.168.0) 网段的连接不限制下载速度
BandWidth 192.168.0.0/16 0
# 其他连接限制下载速度为每秒1024字节
BandWidth all 1024
# 越前面的设置优先权越高


LargeFileLimit
格式: LargeFileLimit <文件大小> <速率>
默认: 无
上下文: per directory, .htaccess

对于超过指定大小的文件 , 下载时使用的速率 。如果速率设置0即不限制速度 ,
但下载速度仍然要受到BandWidth设置的影响 。如果设置成-1 , 则完全不受影响 。
通过设置不同的文件大小和速率 , 可以设置不同大小范围内文件的下载速度 。

示例:

文件尺寸大于等于200千字节的文件 , 下载速率为每秒3072字节
LargeFileLimit 200 3072
LargeFileLimit 1024 2048
MaxConnection
格式: MaxConnection <连接数>
默认: 0 (不限制)
上下文: per directory, .htaccess

当超过指定连接数时 , 拒绝新的连接 。

MinBandWidth
格式: MinBandWidth <速率>
默认: all 256
上下文: per directory, .htaccess

设置最小带宽 , 默认为每秒256字节 。根据BandWidth和LargeFileLimit设置的速
率 。mod_bandwidth会计算允许的连接数 。例如BandWidth为4096字节 , 而
MinBandWidth为1024字节 , 则最大并发连接数为4 。

Mod_limitipconn选项简单说明:

推荐阅读