您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Freebsd PF 安装使用详解

添加时间:2018-1-25 22:41:14  添加: 思海网络 

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

关键字:Freebsd、防火墙、PF、安装使用

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站