IPFW和IPF

 
一、IPFW
IPFW意思可以理解为ip防火墙,主要作用是拦截设定规则外的ip包。你可以把这个理解为linux下的iptables,但是,ipfw要比iptables简单易用。
 
freebsd系统默认是不安装ipfw或者ipf的,你需要在内核配置文件中启用并重新编译内核。所以,你需要先运行sysinstall-->Distribution->src->选择base,sys,然后安装系统内核源码。
 
然后进行下列步骤
 
#cd /usr/src/sys/amd64/conf #cp GENERIC IPFW #vi IPFW
在最下面加入以下内容
options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=10 options IPFIREWALL_DEFAULT_TO_ACCEPT
粗体字十分重要,如果你不加上的话,IPFW将默认关闭所有连结,相当于物理隔离了,你将无法远程登录维护。
 
然后编译内核。注,你必须安装源码中的base,否则你将无法编译任何东西
 
#cd /usr/src #make buildkernel KERNCONF=IPFW #make installkernel KERNCONF=IPFW
然后进入/etc
 
#vi rc.conf 加入以下内容
firewall_enable="YES" firewall_type="open" #open或规则文件绝对路径
 
之后等待编译并安装完成。IPFW就启用了,然后重启就可以开始配置IPFW的规则了。你过去的kernel将放在/boot/kernel.old,如果你编译后有任何启动方面的问题,可以在刚开始启动的选择菜单选择Load Prompt选项,然后打boot kernel.old启动你原来没有问题的内核。
 
相比于iptables那种-m -d的选项方式的命令行,IPFW的配置更接近于人类的语言。其实目前有很多防火墙或者流控系统都是是基于FreeBSD的IPFW或IPF的,只是做了一个网页的界面,便于不太熟悉命令行操作的人使用,比如panabit或者m0n0wall。不过我觉得,其实命令行更灵活和方便简单。
 
ipfw分内规则和外规则两种,设定规则时,你需要给定规则编号,10000以内为内规则,以上是外规则。当然你也可以给10000以内的,只要你自己看得懂就行,一条规则ID可以分配多个规则使用。关于规则ID,如果你学习过路由交换和cisco的acl,应该是比较容易理解的。实际上Cisco的IOS就是基于BSD系统做嵌入式开发的。如果实在没有概念,你可以把规则ID理解为key,规则内容就是key对应的value。
 
ipfw基本语法如下
 
ipfw 操作(添加|删除) 规则编号 动作(允许|拒绝) 地址(All) from 地址(IP|ANY) to 地址(IP|ANY) 端口号
 
示例如下
 
#ipfw add 10001 deny all from any to 192.168.1.10 22
注意,请不要将这行代码放入你的服务器里,否则你将无法访问。
 
按照人类语言的描述就是,ipfw 添加 10001 拒绝 所有 从 任意地址 到 192.168.1.10的22端口。如果你需要去掉这条规则,就把add换成delete,ipfw的使用方法写出来有好几页,可以去查看FreeBSD的中文手册,BSD这点非常好,手册非常详细。
 
你也可以用ipfw做nat转发,示例如下
 
#ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66 #ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500 #ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
这样来说,ipfw可以完成的事情非常多,并不比iptables差,并且由于tcp/ip协议是在bsd上先实现的,所以,效率更高。而且语法更简单明了。也同样可以对二层地址(MAC)进行访问控制。
 
使用ipfw list查看当前规则
 
二、IPF
 
IPFW和IPF是两个完全不同的东西,但是功能和性能很接近,没有谁好谁坏,看使用习惯了,但是同样都需要重新编译内核才可以生效。前面几步跟IPFW一样。
 
#cp GENERIC IPF #vi IPF
插入以下内容
options                                 IPFILTER options                                 IPFILTER_LOG
编辑/etc/rc.conf
 
#vi /etc/rc.conf
加入
ipfilter_enable="YES" #打开ipfilter ipfilter_rules="/etc/ipf.rules" #ipfilter规则文件绝对路径 gateway_enable="YES" #作为网关使用 ipnat_enable="YES" #nat转发打开 ipnat_rules="/etc/ipnat.rules" #nat 规则文件绝对路径
然后重新编译,安装内核,重启。
 
典型命令如下
 
#ipf -l pass in quick on lo0 all #ipf -l block in quick on em0 from any to 192.168.0.0/16
解释一下:
ipf 允许 进入 在 lo0(环回地址) 全部
ipf 锁定 进入 在em0 从 任意 到 192.168.0.0/16(B类)
 
非常简单
 
ipnat是ipf下可以做nat转发的工具,我一般会把nat规则写入到一个文件里,这样启动的时候会自动加载很多规则,不用一个一个去执行。
 
典型文件内容如下
 
map bce1 192.168.10.0/25 -> 211.103.xxx.xx1/32
#将bce1地址192.168.10.0/25(VLSM)转发到211.103.xxx.xx1/32(固定地址)
map bce1 192.168.20.111/32 -> 211.103.xxx.xx2/32
#将bce1地址192.168.20.111/32(固定地址)转发到211.103.xxx.xx2/32(固定地址)
rdr bce1 192.168.10.2/32 port 80 ->    211.103.xxx.xx2/32 port 8100 tcp
#端口转发(rdr) bce1 地址192.168.10.2/32(固定地址)的80端口 转发到 211.103.xxx.xx2/32的8100端口。
 
 
ipfw和ipf大致就是这样,还有一个过滤工具叫pf,全称为packet filter,那个不是很熟,就不写了。有任何疑问可以参看BSD的手册,解说非常详细。
 
增加fsck_y提供的内核选项
 
options             ACCEPT_FILTER_DATA options             ACCEPT_FILTER_HTTP options             ACCEPT_FILTER_DNS

FreeBSD从零开始---安装后配置(三)的更多相关文章

  1. FreeBSD从零开始---安装后配置(一)

    一.安装后配置   上次我们说到FreeBSD的安装,这次我们说FreeBSD安装后的配置和简单优化方法.   安装完BSD只是服务器提供服务这条万里长征路的开始,还需要一些基本的设定和优化.不过实际 ...

  2. FreeBSD从零开始---安装后配置(二)

    系统优化及安全设置   上次说了FreeBSD基本的软件安装和配置,接下来会说系统的详细配置和安全性设置   一.系统优化设置   1.网络相关设置   网卡和IP地址设置: 如果在安装时没有设置IP ...

  3. zabbix系列之八——安装后配置三Triggers

    1Triggers(触发器) 描述 详细 备注 术语描述 1)触发器是评估监控项采集的数据的逻辑表达式,代表了当前系统状态. 2)触发器可定义一个什么数据是可接受的阈值,因此,如果接收的数据超过了可接 ...

  4. Anaconda 安装后配置环境变量

    Anaconda 安装后在 cmd 中运算 python 无效, 是环境变量没有生效.正常安装需要有三个,配置好就行. D:\xwapp\ProgramData\Anaconda3 D:\xwapp\ ...

  5. CentOS7安装后配置MariaDB

    安装后,优先推荐先对安全设置进行配置,键入命令 sudo mysql_secure_installation 键入当前密码,当前没有,直接回车,之后跟随提示会问几个问题:设置 root 密码? / 移 ...

  6. Centos 7最小化安装后配置

    关闭SELINUX vi /etc/sysconfig/selinux SELINUX=disabled :wq 配置网卡(最小化安装后ifconfig无法使用),该配置的前提是采用 NAT模式 vi ...

  7. zabbix系列之六——安装后配置二Items

    https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/snmp 1Items 1.1creating items ...

  8. git安装后配置--config

    安装git后需要配置一下环境,每台计算机上只需要配置一次,程序升级时会保留配置信息. 你可以在任何时候再次通过运行命令来修改它们. 通过git config命令来配置环境变量,这些变量存储在三个不同的 ...

  9. kali2016.2安装后配置

    接触kali有几个月了,总是有一种浅尝辄止的感觉.因为不常用,一些常用操作时常想不起来了.为日后查找方便,特通过写博客方式来记录. 新建虚拟机,和安装其它操作系统差别不大,按提示一步一步安装.第1次安 ...

随机推荐

  1. JAVA,NET RSA密钥格式转换

    JAVA和NET RSA密钥格式相互转换(公钥,私钥) 做了一个小项目遇到java和.net非对称加密问题,java的公钥和私钥就直接是一个字符串的形式展示的,但是.net是以xml简单包裹形式展示的 ...

  2. 1-Spark高级数据分析-第一章 大数据分析

    1.1 数据科学面临的挑战 第一,成功的分析中绝大部分工作是数据预处理. 第二,迭代与数据科学紧密相关.建模和分析经常需要对一个数据集进行多次遍历.这其中一方面是由机器学习算法和统计过程本身造成的. ...

  3. Array.splice()理解记忆

    var arr = [0,1,2,3,4,5,6,7,8,9]; arr.splice(0,0,"添加项1"); //arr => ["添加项",0,1, ...

  4. MATLAB中fft函数的正确使用方法

    问题来源:在阅读莱昂斯的<数字信号处理>第三章离散傅里叶变换时,试图验证实数偶对称信号的傅里叶变换实部为偶对称的且虚部为零.验证失败.验证信号为矩形信号,结果显示虚部是不为零且最大幅值等于 ...

  5. jquery 无缝滚动 jquery.kxbdmarquee

    DEMO http://code.ciaoca.com/jquery/kxbdmarquee/demo/ 官网 http://code.ciaoca.com/jquery/kxbdmarquee/ D ...

  6. Flex 监听浏览器关闭

    在creationComplete的事件中,添加如下: if(ExternalInterface.available)//外部接口是否可用    {     var js:String= " ...

  7. 备忘DES简单加密与解密

    package com.ego.util; import java.io.IOException; import java.security.SecureRandom; import javax.cr ...

  8. Spring 发送 Email

    本文转自:http://zl198751.iteye.com/blog/757617 看到了本文,收获颇丰,感谢之至! 首先介绍下Email的发送流程: 需要选中smtp邮件服务器,Yahoo不提供免 ...

  9. 刷题ING...

    我用codeVS刷题.. 努力准备!!

  10. JSP学习流程