技术开发 频道

OpenBSD.Nginx.MySQL.PHP环境搭建手册(v2)

  八、启用Packet Filter防火墙

  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

  保存退出。

0
相关文章