惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - wenus

树莓派做下载服务器 aria2 篇 免费 cdn 搞定迅雷固件在TP-LINK WR720N,127.0.0.1 9000 获取不到激活码 Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因? XXX esx.problem.syslog.nonpersistent.formatOnHost not found XXX 增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击 FreeBSD从零开始---安装后配置(一) FreeBSD从零开始---安装后配置(二) ngrok 配置 - wenus 安装Nginx作为Windows服务自启动运行 nginx secure_link下载防盗链 htaccess高级应用:防盗链阻止迅雷下载以及限制访问 - wenus 制作HP MicroServer Gen8可用的ESXi 5.x SD/TF卡启动盘 FreeBSD 10 中文环境 Web服务器禁止range请求 Apache性能优化、超时设置,linux 重启apache mysql 日志,临时文件. 如何使用tar对整个文件夹打包? freebsd 记事之PHP环境搭建
FreeBSD从零开始---安装后配置(三)
wenus · 2016-05-22 · via 博客园 - wenus

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的手册,解说非常详细。

options             ACCEPT_FILTER_DATA options             ACCEPT_FILTER_HTTP options             ACCEPT_FILTER_DNS