加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

Freebsd PF 安装使用步骤详解

发布时间:2023-07-08 16:36:24 所属栏目:系统 来源:
导读:为大家带来的是Freebsd PF 安装使用详解,希望对大家会有帮助,有需要的朋友一起去看看吧

  Freebsd PF 安装使用

FreeBSD下的PF

  FreeBSD下的包过滤工具有IPFW,IPF以及PF,它们各有特点。PF原本是
为大家带来的是Freebsd PF 安装使用详解,希望对大家会有帮助,有需要的朋友一起去看看吧
 
  Freebsd PF 安装使用
 
FreeBSD下的PF
 
  FreeBSD下的包过滤工具有IPFW,IPF以及PF,它们各有特点。PF原本是OpenBSD下的包过滤工具,FreeBSD开发人员已经把PF移植到了FreeBSD上了。如果要在FreeBSD上使用PF,需如下操作:
 
1. 编译内核:
 
  cd /usr/src/sys/i386/conf
 
  cp GENERIC LOULAN
 
  编辑 LOULAN加入以下内容
 
  device pf
 
  device pflog
 
  device pfsync
 
  options ALTQ
 
  options ALTQ_CBQ
 
  options ALTQ_RED
 
  options ALTQ_RIO
 
  options ALTQ_HFSC
 
  options ALTQ_CDNR
 
  options ALTQ_PRIQ
 
  options ALTQ_NOPCC
 
  options ALTQ_DEBUG
 
  config LOULAN
 
  make depend&& make && make install && reboot
 
2. 编写防火墙规则pf.conf
 
  具体可以参考 man pf.conf ,根据实现需求编写防火墙规则。
 
  pfctl -f pf.conf 应用pf.conf的规则
 
  pfctl -sr   查看访问规则
 
  pfctl -sn  查看NAT规则
 
  pfctl -sa  查看所有PF信息
 
  pfctl -Rf pf.conf  重新加载访问规则
 
  pfctl -Nf pf.conf  重新加载NAT规则
 
  pfctl -Fa -f pf.conf 重新加载所有规则
 
Freebsd PF 安装使用
 
  要在 FreeBSD 6.2 上使用 PF 防火墙,有二个方式,一个是编译进入核心,另外是以动态模块方式加载。
 
  编译进入核心的方式
 
  #FreeBSD log traffic,如果有使用 pflog,就要编译进核心
 
  device bpf
 
  #启动 PF Firewall
 
  device pf
 
  #启动虚拟网络设备来记录流量(经由 bpf)
 
  device pflog
 
  #启动虚拟网络设备来监视网络状态
 
  device pfsync
 
  以动态模块加载
 
  vi /etc/rc.conf
 
  加入下面四行
 
  #启用 PF
 
  pf_enable="YES"
 
  #PF 防火墙规则的设定文件
 
  pf_rules="/etc/pf.conf"
 
  #启用 inetd 服务
 
  inetd_enable="YES"
 
  #启动 pflogd
 
  pflog_enable="YES"
 
  #pflogd 储存记录档案的地方
 
  pflog_logfile="/var/log/pflog"
 
  #转送封包
 
  gateway_enable="YES"
 
  #开启 ftp-proxy 功能
 
  vi /etc/inetd.conf
 
  把下面这一行最前面的 # 删除
 
  ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
 
  使用 sysctl 做设定(也可以重新开机让设定生效)
 
  sysctl -w net.inet.ip.forwarding=1
 
  vi /etc/pf.conf
 
  #对外的网络卡
 
  ext_if = "sis0"
 
  #对内的网络卡
 
  int_if = "rl0"
 
  #频宽控管
 
  #定义 std_out 总频宽 512Kb
 
  #altq on $ext_if cbq bandwidth 512Kb queue { std_out }
 
  #定义 std_out 队列频宽 256Kb,使用预设队列
 
  #queue std_out bandwith 256Kb cbq (default)
 
  #定义 std_in 总频宽 2Mb
 
  #altq on $int_if cbq bandwidth 2Mb queue { std_in }
 
  #假设频宽足够的话,可以从父队列借用额外的频宽
 
  #queue std_in bandwidth 768Kb cbq (brrrow)
 
  #对外开放的服务
 
  open_services = "{80, 443}"
 
  #内部私有的 IP
 
  priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
 
  # options
 
  #设定拒绝联机封包的处理方式
 
  set block-policy return
 
  #
 
  set optimization aggressive
 
  #纪录 $ext_if
 
  set loginterface $ext_if
 
  # scrub
 
  #整理封包
 
  scrub in all
 
  #nat
 
  #NAT 地址转译处理
 
  nat on $ext_if from $int_if:network to any -> $ext_if
 
  #ftp-proxy
 
  #ftp-proxy 重新导向
 
  rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
 
  #rdr on $ext_if proto tcp from any to 140.111.152.13 port 21 -> 192.168.13.253 port 21
 
  #Transparent Proxy Server
 
  rdr on rl0 proto tcp from 192.168.13.0/24 to any 80 -> 127.0.0.1 port 3128
 
  #阻挡可疑封包在 $ext_if 网卡进出
 
  antispoof log quick for $ext_if
 
  #阻挡所有进出的封包
 
  block all
 
  #开放 loopback
 
  pass quick on lo0 all
 
  #拒绝内部私有 IP 对 $ext_if 网络卡联机
 
  block drop in quick on $ext_if from $priv_nets to any
 
  block drop out quick on $ext_if from any to $priv_nets
 
  #开放对外的 80, 443 埠
 
  pass in on $ext_if inet proto tcp from any to $ext_if port $open_services flags S/SA keep state
 
  #只容许 140.111.152.0/24 网段对本机做 22 埠联机
 
  pass in on $ext_if inet proto tcp from 140.111.152.0/24 to $ext_if port 22 flags S/SA keep state
 
  #开放内部网络对外联机
 
  #pass in on $inf_if proto rcp from any to any queue std_in
 
  pass in on $int_if from $int_if:network to any keep state
 
 
  pass out on $int_if from any to $int_if:network keep state
 
  #开放对外网络的联机
 
  #pass out $ext_if proto tcp from any to any queue std_out
 
  pass out on $ext_if proto tcp all modulate state flags S/SA
 
  pass out on $ext_if proto { udp, icmp } all keep state
 
  启动 PF,并读取 pf 规则
 
  pfctl -e;pfctl -f /etc/pf.conf
 
PF 指令的用法
 
  #启动 PF
 
  pfctl -e
 
  #加载 PF 规则
 
  pfctl -f /etc/pf.conf
 
  #检查 PF 语法是否正确 (未加载)
 
  pfctl -nf /etc/pf.conf
 
  #停用 PF
 
  pfctl -d
 
  #重读 PF 设定档中的 NAT 部分
 
  pfctl -f /etc/pf.conf -N
 
  #重读 PF 设定档中的 filter rules
 
  pfctl -f /etc/pf.conf -R
 
  #重读 PF 设定文件中的选项规则
 
  pfctl -f /etc/pf.conf -O
 
  #查看 PF 信息
 
  #显示现阶段过滤封包的统计资料
 
  pfctl -s info
 
  pfctl -si
 
  pfctl -s memory
 
  #显示现阶段过滤的规则
 
  pfctl -s rules
 
  pfctl -sr
 
  pfctl -vs rules
 
  #显示现阶段过滤封包的统计资料
 
  pfctl -vsr
 
  #显示现阶段 NAT 的规则
 
  pfctl -s nat
 
  pfctl -sn
 
  #检视目前队列
 
  pfctl -s queue
 
  #显示现阶段所有统计的数据
 
  pfctl -s all
 
  pfctl -sa
 
  #清除 PF 规则
 
  #清空 NAT 规则
 
  pfctl -F nat
 
  #清空队列
 
  pfctl -F queue
 
  #清空封包过滤规则
 
  pfctl -F rules
 
  #清空计数器
 
  pfctl -F info
 
  pfctl -F Tables
 
  #清空所有的规则
 
  pfctl -F all
 
  #PF Tables 的使用
 
  #显示 table 内数据
 
  pfctl -t ssh-bruteforce -Tshow
 
  pfctl -t table_name -T add spammers.org
 
  pfctl -t table_name -T delete spammers.org
 
  pfctl -t table_name -T flush
 
  pfctl -t table_name -T show
 
  pfctl -t table_name -T zero
 
过滤扫描侦测软件
 
  block in quick proto tcp all flags SF/SFRA
 
  block in quick proto tcp all flags SFUP/SFRAU
 
  block in quick proto tcp all flags FPU/SFRAUP
 
  block in quick proto tcp all flags /SFRA
 
  block in quick proto tcp all flags F/SFRA
 
  block in quick proto tcp all flags U/SFRAU
 
  block in quick proto tcp all flags P
 
如果防火墙和 Proxy Server 不在同一台主机
 
  Proxy Server:192.168.13.250
 
  no rdr on rl0 proto tcp from 192.168.13.250 to any port 80
 
  rdr on rl0 proto tcp from 192.168.13.0/24 to any port 80 -> 192.168.13.250 port 3128
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!