免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4521 | 回复: 16
打印 上一主题 下一主题

[FreeBSD] FreeBSD 6.2 上使用 PF 防火墙(zt)  关闭 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-04 11:37 |只看该作者 |倒序浏览
  1. 要在 FreeBSD 6.2 上使用 PF 防火墙,有二个方式,一个是编译进入核心,另外是以动态模块方式加载。编译进入核心的方式
  2. #FreeBSD log traffic,如果有使用 pflog,就要编译进核心
  3. device bpf
  4. #启动 PF Firewall
  5. device pf
  6. #启动虚拟网络设备来记录流量(经由 bpf)
  7. device pflog
  8. #启动虚拟网络设备来监视网络状态
  9. device pfsync

  10. 以动态模块加载
  11. vi /etc/rc.conf
  12. 加入下面四行
  13. #启用 PF
  14. pf_enable="YES"
  15. #PF 防火墙规则的设定文件
  16. pf_rules="/etc/pf.conf"
  17. #启用 inetd 服务
  18. inetd_enable="YES"
  19. #启动 pflogd
  20. pflog_enable="YES"
  21. #pflogd 储存记录档案的地方
  22. pflog_logfile="/var/log/pflog"
  23. #转送封包
  24. gateway_enable="YES"

  25. #开启 ftp-proxy 功能
  26. vi /etc/inetd.conf
  27. 把下面这一行最前面的 # 删除
  28. ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy

  29. 使用 sysctl 做设定(也可以重新开机让设定生效)
  30. sysctl -w net.inet.ip.forwarding=1

  31. vi /etc/pf.conf
  32. #对外的网络卡
  33. ext_if = "sis0"
  34. #对内的网络卡
  35. int_if = "rl0"

  36. #频宽控管
  37. #定义 std_out 总频宽 512Kb
  38. #altq on $ext_if cbq bandwidth 512Kb queue { std_out }
  39. #定义 std_out 队列频宽 256Kb,使用预设队列
  40. #queue std_out bandwith 256Kb cbq (default)
  41. #定义 std_in 总频宽 2Mb
  42. #altq on $int_if cbq bandwidth 2Mb queue { std_in }
  43. #假设频宽足够的话,可以从父队列借用额外的频宽
  44. #queue std_in bandwidth 768Kb cbq (brrrow)

  45. #对外开放的服务
  46. open_services = "{80, 443}"
  47. #内部私有的 IP
  48. priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

  49. # options
  50. #设定拒绝联机封包的处理方式
  51. set block-policy return
  52. #
  53. set optimization aggressive
  54. #纪录 $ext_if
  55. set loginterface $ext_if

  56. # scrub
  57. #整理封包
  58. scrub in all

  59. #nat
  60. #NAT 地址转译处理
  61. nat on $ext_if from $int_if:network to any -> $ext_if

  62. #ftp-proxy
  63. #ftp-proxy 重新导向
  64. rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
  65. #rdr on $ext_if proto tcp from any to 140.111.152.13 port 21 -> 192.168.13.253 port 21
  66. #Transparent Proxy Server
  67. rdr on rl0 proto tcp from 192.168.13.0/24 to any 80 -> 127.0.0.1 port 3128

  68. #阻挡可疑封包在 $ext_if 网卡进出
  69. antispoof log quick for $ext_if

  70. #阻挡所有进出的封包
  71. block all

  72. #开放 loopback
  73. pass quick on lo0 all

  74. #拒绝内部私有 IP 对 $ext_if 网络卡联机
  75. block drop in quick on $ext_if from $priv_nets to any
  76. block drop out quick on $ext_if from any to $priv_nets

  77. #开放对外的 80, 443 埠
  78. pass in on $ext_if inet proto tcp from any to $ext_if port $open_services flags S/SA keep state
  79. #只容许 140.111.152.0/24 网段对本机做 22 埠联机
  80. pass in on $ext_if inet proto tcp from 140.111.152.0/24 to $ext_if port 22 flags S/SA keep state

  81. #开放内部网络对外联机
  82. #pass in on $inf_if proto rcp from any to any queue std_in
  83. pass in on $int_if from $int_if:network to any keep state
  84. pass out on $int_if from any to $int_if:network keep state

  85. #开放对外网络的联机
  86. #pass out $ext_if proto tcp from any to any queue std_out
  87. pass out on $ext_if proto tcp all modulate state flags S/SA
  88. pass out on $ext_if proto { udp, icmp } all keep state

  89. 启动 PF,并读取 pf 规则
  90. pfctl -e;pfctl -f /etc/pf.conf

  91. PF 指令的用法
  92. #启动 PF
  93. pfctl -e
  94. #加载 PF 规则
  95. pfctl -f /etc/pf.conf
  96. #检查 PF 语法是否正确 (未加载)
  97. pfctl -nf /etc/pf.conf
  98. #停用 PF
  99. pfctl -d
  100. #重读 PF 设定档中的 NAT 部分
  101. pfctl -f /etc/pf.conf -N
  102. #重读 PF 设定档中的 filter rules
  103. pfctl -f /etc/pf.conf -R
  104. #重读 PF 设定文件中的选项规则
  105. pfctl -f /etc/pf.conf -O

  106. #查看 PF 信息
  107. #显示现阶段过滤封包的统计资料
  108. pfctl -s info
  109. pfctl -si

  110. pfctl -s memory

  111. #显示现阶段过滤的规则
  112. pfctl -s rules
  113. pfctl -sr

  114. pfctl -vs rules

  115. #显示现阶段过滤封包的统计资料
  116. pfctl -vsr

  117. #显示现阶段 NAT 的规则
  118. pfctl -s nat
  119. pfctl -sn

  120. #检视目前队列
  121. pfctl -s queue

  122. #显示现阶段所有统计的数据
  123. pfctl -s all
  124. pfctl -sa

  125. #清除 PF 规则
  126. #清空 NAT 规则
  127. pfctl -F nat
  128. #清空队列
  129. pfctl -F queue
  130. #清空封包过滤规则
  131. pfctl -F rules
  132. #清空计数器
  133. pfctl -F info
  134. pfctl -F Tables
  135. #清空所有的规则
  136. pfctl -F all

  137. #PF Tables 的使用
  138. #显示 table 内数据
  139. pfctl -t ssh-bruteforce -Tshow
  140. pfctl -t table_name -T add spammers.org
  141. pfctl -t table_name -T delete spammers.org
  142. pfctl -t table_name -T flush
  143. pfctl -t table_name -T show
  144. pfctl -t table_name -T zero

  145. 过滤扫描侦测软件
  146. block in quick proto tcp all flags SF/SFRA
  147. block in quick proto tcp all flags SFUP/SFRAU
  148. block in quick proto tcp all flags FPU/SFRAUP
  149. block in quick proto tcp all flags /SFRA
  150. block in quick proto tcp all flags F/SFRA
  151. block in quick proto tcp all flags U/SFRAU
  152. block in quick proto tcp all flags P

  153. 如果防火墙和 Proxy Server 不在同一台主机
  154. Proxy Server:192.168.13.250
  155. no rdr on rl0 proto tcp from 192.168.13.250 to any port 80
  156. rdr on rl0 proto tcp from 192.168.13.0/24 to any port 80 -> 192.168.13.250 port 3128
复制代码

论坛徽章:
1
金牛座
日期:2014-05-29 15:55:47
2 [报告]
发表于 2006-12-04 11:49 |只看该作者
#开启 ftp-proxy 功能
vi /etc/inetd.conf
把下面这一行最前面的 # 删除
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
看到这个就有些吐血~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-12-04 12:03 |只看该作者
原帖由 iceblood 于 2006-12-4 11:49 发表
#开启 ftp-proxy 功能
vi /etc/inetd.conf
把下面这一行最前面的 # 删除
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
看到这个就有些吐血~

论坛徽章:
0
4 [报告]
发表于 2006-12-04 12:36 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2006-12-04 13:51 |只看该作者
好東西,先收藏
慢慢消化

论坛徽章:
0
6 [报告]
发表于 2006-12-04 13:56 |只看该作者
up

论坛徽章:
1
金牛座
日期:2014-05-29 15:55:47
7 [报告]
发表于 2006-12-04 16:39 |只看该作者
呵呵~别误会,不说说你的东西不好,而是讨厌PF在FTP代理上的模式。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2006-12-04 16:43 |只看该作者
原帖由 iceblood 于 2006-12-4 16:39 发表
呵呵~别误会,不说说你的东西不好,而是讨厌PF在FTP代理上的模式。

哈哈 没误会 你不吐血了
还准备组织人去给你输血呢
今天 小呆 问这个问题 正好找到就转过来 共大家学习一下

论坛徽章:
0
9 [报告]
发表于 2006-12-04 17:08 |只看该作者
原帖由 iceblood 于 2006-12-4 11:49 发表
#开启 ftp-proxy 功能
vi /etc/inetd.conf
把下面这一行最前面的 # 删除
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy


使用过程中,有的ftp连接不规范,会导致freebsd无法关闭fpt-proxy代理,我遇到过一次,始终无法释放内网一IP地址的ftp-proxy连接,内网ip的这台电脑关机也不行,inetd重启也不行,当然pf重启也不行。

论坛徽章:
0
10 [报告]
发表于 2006-12-04 17:10 |只看该作者
原帖由 大大狗 于 2006-12-4 16:43 发表

哈哈 没误会 你不吐血了
还准备组织人去给你输血呢
今天 小呆 问这个问题 正好找到就转过来 共大家学习一下



其实我看了这篇文章后,发现我没有做错。
我是用动态模块加载的方式来实现的。

delphij也说不应该,估计八成是我那个超超级烂Dell服务器搞的(说他烂我可以说出5、6处问题,包括1周前在其他系统上的问题)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP