Chinaunix首页 | 论坛 | 博客
  • 博客访问: 629839
  • 博文数量: 197
  • 博客积分: 4858
  • 博客等级: 上校
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-06 22:46
文章分类

全部博文(197)

文章存档

2011年(30)

2010年(21)

2009年(25)

2008年(80)

2007年(41)

分类: Mysql/postgreSQL

2011-11-11 19:56:43

max number  
服务器最大可以建立的连接数(状态数量),如果已经建立的连接数达到了这个数那么多处的连接将被丢弃。

source-track
跟踪每个IP的连接状态数它有中使用格式:source-track rule 和 source-track global

max-src-nodes number
最多允许连接的IP数量,它必须和“source-track rule”一块使用。

max-src-states number
单个IP的最大连接数。

 

例子:
pass in on $ext_if proto tcp to $web_server port www flags S/SA keep state \
(max 200, source-track rule, max-src-nodes 100, max-src-states 3)

这个例子达到了这样的效果:

1 绝对限制了最大连接状态数为200个。
2 所有连接状态数据依据source-track规则提供。
3 最大允许100个节点(IP地址)并发连接。
4 每个IP地址最大3个连接状态。


max-src-conn number
单个IP的最大连接数,注意这里是指完成了三次握手的并发连接数

max-src-conn-rate number/interval
但IP的连接建立的速率(个/秒)


例子:
table persist
block in quick from
pass in on $ext_if proto tcp to $web_server port www flags S/SA keep state \
(max-src-conn 100, max-src-conn-rate 15/5, overload flush)


overload


在这里放置符合条件的IP

flush [global]
清除原来的IP状态

这个例子达到这样的效果:

1 允许每个IP最大可以有100个非并发的连接
2 允许每个IP最大连接建立的速率小于每秒15个
3 把连接建立过快的IP放到abusive_hosts表中
4 一旦一个IP被放到了abusive_hosts表中后,立即应用block规测

 

 

Packet Filter是非常优秀的包过滤防火墙,OpenBSD核心已经集成了Packet Filter防火墙,不过默认并没有启用,下面我们来启用Packet Filter的强大功能!
vi /etc/pf.conf


跳到最后,加入下面的内容:
# 宏定义
# 请把下面的fxp0换成你自己用的外网网卡,不知道的可以输入ipconfig查看
ext_if="fxp0"

# 指定可以使用SSH登录的IP,支持CIDR
admin_add="192.168.0.0/24"

# 指定SSH端口。
# 注意,如果在/etc/ssh/sshd_config文件中更改了SSH端口号,这里的也需要同样修改。否则连不上了不要怪偶没有提醒!
ssh_port="58937"

# 维持一个持久的表,里面存放的是对本机发动DDoS攻击的IP
table persist

# 选项设定
set require-order yes
set block-policy drop
set optimization aggressive
set loginterface none
set skip on lo0

# TCP参数设定
set timeout {interval 3,frag 10}
set timeout {tcp.first 10,tcp.opening 2,tcp.established 600,tcp.closing 20,tcp.finwait 10,tcp.closed 10}

# UDP、ICMP及其它参数设定
set timeout {udp.first 20,udp.single 10,udp.multiple 10}
set timeout {icmp.first 10,icmp.error 5}
set timeout {other.first 20,other.single 10,other.multiple 20}
set timeout {adaptive.start 0,adaptive.end 0}

# 允许最多有65536个连接
set limit { states 65535, frags 200, src-nodes 65536, tables 65536, table-entries 1048576 }

# 包整形
scrub in all
scrub out all

# 阻止所有不匹配的包和从DDoS主机来的包
block quick from
block return
block in all
block out all

# 防止IP欺骗
antispoof quick for {lo0,$ext_if}

# 允许本机访问其他机器
pass out quick on $ext_if inet from $ext_if to any flags S/SA keep state

# 允许IPv4地址的客户机访问本地80(www)端口,发起过快连接(DDoS)的主机加入阻止列表。注意是一行,下同
pass in quick on $ext_if inet proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload flush global )

# 允许IPv6地址的客户机访问本地80(www)端口,发起过快连接(DDoS)的主机加入阻止列表
pass in quick on $ext_if inet6 proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload flush global )

# 允许管理IP远程连接本机SSH端口
pass in quick on $ext_if inet proto tcp from $admin_add to $ext_if port $ssh_port flags S/SA synproxy state

保存退出。

修改系统配置,使得开机启用PF防火墙:
vi /etc/rc.conf.local


跳到最后,加入下面这行:
pf=YES

保存退出。

 

转自:

阅读(889) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~