项目地址:
http://wipfw.sourceforge.net
一、下载地址:
http://sourceforge.net/projects/wipfw/files/
安装:
解压软件包后执行install.cmd文件,就安装完成。

二、相关参数:
The following options are available:
-a     查看规则,并统计经过的数据包。
-d     显示动态规则,除了静态规则。
-e     和-d参数一样,也显示过期的规则。
-f     一般用在清空规则的时候
-q     在添加、清空、resetlogging、flushing,它会打印一条消息,因为所有的规则都被重置,这个消息会被传到登陆回话,回话可能会被关闭;在调整多个ipfw命令的时候非常有用。
-t     查看所有规则,并打印最后查看时间。
-N     在输出的时候,解析IP地址和服务的名称(建议不要用,因为解析地址和服务名称会很慢)

额外的命令(仅用于Windows):
enum     查看本地所有网络接口
sysctl    编辑sysctl的值.如:ipfw sysctl debug=0

三、规则的格式如下:
[prob match_probability] action [log [logamount number]] proto from src to dst [interface-spec] [options]
1、相关解释:
rule_number
规则数,范围1-65535,默认不指定为100;规则的排序是从小到大排,规则数越小优先级越高。另外多个规则可以指定一个number
log 
消息包与规则匹配日志,默认会放到%systemroot%\security\logs\wipfwYYYYMMDD.log下

2、规则动作:
action: allow、accept、pass、permit
check-state:匹配动态规则集,如果有检查状态规则,则从第一条开始检查;如果没有检查状态规则,动态规则优先。
count针对所有的数据包更新计数器。
deny|drop 匹配到规则,就终止。
3、规则主体:
[proto from src to dst] [options]
proto: protocol 支持协议列表%systemroot%\system32\drivers\etc\protocol
列入常用的IP/TCP/UDP/ICMP/RDP等

源和目的地址:
any、单个IP或主机名,IP/netmask,IP:netmask
ports: {port|port-port|port:mask}[,port[,...]]
"-"表示端口范围
":"这个用在端口上暂时还没理解,官网是这么解释的notation specifies a port and a mask, a match is declared if the port number in the packet matches the one in the rule, limited to the bits which are set in the mask.

4、规则的options:
established  TCP信息包匹配具有RST或ACK bits设置
fragment     片段 
icmptypes    匹配ICMP packets,支持的数据包类型
    reply (0) 回复
    destination unreachable (3)目的不可达
    source quench (4) 关闭源
    redirect(5)  重定向
    echo request (8) 输出请求
    router advertisement (9)路由通告
    router solicitation (10) 路由器请求
    time-to-live exceeded (11)传出时间超时
     IP header bad (12) 坏的IP包头
    timestamp request(13) 时间戳请求
    timestamp reply (14) 时间戳应答
    information request (15) 信息请求 
    information reply (16) 信息应答
    address mask request (17) 地址掩码请求
    address mask reply (18) 地址掩码应答
    
in | out  匹配进出请求
ipoptions 匹配指定IP报头
keep-state 更新规则的生命周期,一有请求就刷新规则
limit {src-addr | src-port | dst-addr | dst-port} N
recv | xmit | via {ifX | if* | ipno | any} 匹配收到,传中中的,检测中的包。
setup 匹配SYN TCP请求,不匹配ACK bit;tcpflags syn,!ack
tcpflags spec  
tcpoptions spec

四、命令的使用以及案例:
默认安装完的防火墙规则是允许所有的,如下
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
add 100 allow all from any to any via lo*
add 110 deny log all from any to 127.0.0.0/8 in
add 110 deny log all from 127.0.0.0/8 to any in
add check-state
add pass all from me to any out keep-state
add count ip from any to any
++++++++++++++++++++++++++++++++++++++++++++++++

清掉所有的规则:
ipfw -f flush
ipfw delete number删除某条规则
ipfw  -at list  常看当前规则
ipfw -a list 查看当前规则
ipfw list 查看当前规则
ipfw show 查看当前规则,更详细些
ipfw add check-state 添加动态规则集
ipfw add 220 allow/deny tcp/udp from 192.168.0.1/24 2000-4000 to any  限制TCP/UDP和客户端
ipfw add 101 deny tcp from 192.168.1.0/24 to  172.16.0.19 3389  限制指定客户端远程服务器

+++++++++限制访问(不使用动态规则)+++++++++++++++++++++++++++++++++++
ipfw add allow tcp from any to any established
ipfw add allow tcp from net1 portlist1 to net2 portlist2 setup
ipfw add allow tcp from net3 portlist3 to net3 portlist3 setup
ipfw add deny tcp from any to any

++++为了保护一个网站从洪水袭击涉及假TCP数据包,更安全的做法是使用动态规则+++++++++++
ipfw add check-state
ipfw add deny tcp from any to any established
ipfw add allow tcp from my-net to any setup keep-state

++++++++++++++++++++我现在的windows服务器规则++++++++++++++++++++++++++++++
#写批处理文件,然后加到启动项里面。

ipfw -f flush 清掉所有规则
ipfw add check-state
ipfw add 101 allow ip from 192.168.1.0/24  to any
ipfw add 101 allow ip from 10.0.0.0/8 to any
ipfw add 102 allow ip from 10.0.0.0/16 to any
ipfw add deny tcp from any to any
ipfw add deny udp from any to any

花费了半个下午终于搞定了windows下的安全,有些地方是自己翻译的不是很精确,有出入的地方望指教。cecnck@gmail.com

本文出自 “Larry学习之路” 博客,请务必保留此出处http://5iqiong.blog.51cto.com/2999926/1112657

学习使用windows下类似iptables的防火墙软件的更多相关文章

  1. OpenGL学习之windows下安装opengl的glut库

    OpenGL学习之windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装.  Windows环境下的GLUT下载地址:(大小约为15 ...

  2. 深入学习:Windows下Git入门教程(上)

    一,安装Git: 1.1Linux上安装命令: sudo apt-get install git 1.2在Windows上安装Git: 使用Windows版的msysgit,官方下载地址:http:/ ...

  3. 学习笔记——Windows下cocos2d-x,eclipse中自编译

    cocos2d-x创建的安卓项目导入eclipse后. 在项目属性中配置Builders. 在eclipse编译还需要配置相应的变量,即后面提到的cygwin编译中要添加的变量. D:/cygdriv ...

  4. 深入学习:Windows下Git新手教程(上)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangyabin001/article/details/35557231 一,安装Git: 1.1 ...

  5. QT学习之windows下安装配置PyQt5

    windows下安装配置PyQt5 目录 为什么要学习QT 命令行安装PyQt5以及PyQt5-tools 配置QtDesigner.PyUIC及PyRcc 为什么要学习QT python下与界面开发 ...

  6. RabbitMQ学习在windows下安装配置

    RabbitMQ学习一. 在windows下安装配置 1.下载并安装erlang,http://www.erlang.org/download.html,最新版是R15B01(5.9.1).由于我机器 ...

  7. python 学习之Windows 下的编码处理!

    问题1: Non-ASCII character '\xe9' in file 问题原因:程序编码上出现问题 解决方法:在程序头部加上代码 #-*- coding: UTF-8 -*- 设置代码编码为 ...

  8. windows下最好的豆瓣fm软件——K.F.storm豆瓣电台,没有之一

    哈哈,发现windows下最好的豆瓣电台啦~~~基本全部功能都能满足哈,绝对没有之一的软件--K.F.storm豆瓣电台. 官方地址: http://www.kfstorm.com/blog/doub ...

  9. windows下网络丢包模拟软件(Network Emulator for Windows Toolkit)

    最近公司有一个直播的测试项目,需要模拟各种网络环境下的直播状态,最后找到一款这样的软件(如果有遇到更好的软件,望和网友多多交流) 介绍一款windows下的网络模拟器,可以模拟各种丢包或延迟的网络(N ...

随机推荐

  1. DFS Codeforces Round #299 (Div. 2) B. Tavas and SaDDas

    题目传送门 /* DFS:按照长度来DFS,最后排序 */ #include <cstdio> #include <algorithm> #include <cstrin ...

  2. Tarjan UVALive 6511 Term Project

    题目传送门 /* 题意:第i个人选择第a[i]个人,问组成强联通分量(自己连自己也算)外还有多少零散的人 有向图强联通分量-Tarjan算法:在模板上加一个num数组,记录每个连通分量的点数,若超过1 ...

  3. 命名管道实现进程间通信--石头、剪刀、布游戏 分类: linux 2014-06-01 22:50 467人阅读 评论(0) 收藏

    下面这个程序利用命名管道实现进程间通信,模拟石头剪刀布游戏. 主进程为裁判进程,两个子进程为选手进程.裁判与选手间各建立一个命名管道. 进行100次出招,最后给出游戏胜负. #include < ...

  4. 面试王牌 JAVA 多态只针对方法 不针对属性

    子类是永远继承父类的非私有化方法,当子类中重写父类方法时,调用的是子类的方法,没有重写时,调用的是父类中的方法 1 多态是只针对方法,而不是属性的,但是写法上,子类重写父类的属性,编译器是不会报错的 ...

  5. git免密码

    法1: git config --global credential.helper store 这样就自动储存密码 法2: 使用ssh访问(https:// 改成 ssh://)

  6. webapp开发学习---Cordova环境搭建

    Cordova 使用HTML, CSS & JS进行移动App开发;多平台共用一套代码;免费开源 步骤:(来自Cordova官网) 1.安装Cordova(在node.js环境下进行安装) 命 ...

  7. 安装CentOS--设置网络_1

    (1)在登录黑框中输入如下命令,让CentOS 7自动获取一个IP地址: # dhclient (2)正常情况下不会有任何输出内容.用如下命令查看获取到的IP地址: # ip addr 它将返回如图所 ...

  8. AJPFX总结在循环中break与continue的区别

    相信刚学编程的人很容易被break,continue这两个关键词搞混淆了,两者都有跳出循环的意思,但是他们到底有什么区别呢?其实很简单,break是结束整个循环体,continue是结束当前这一单次循 ...

  9. git---安装及配置

    git官网:https://git-scm.com 安装: 官网下载->一路Next->安装完成 配置git: 1.win+r进入windows命令行 2.注册: git config - ...

  10. Android学习笔记(七) 布局基础

    一.概念 控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法.有两种方法可以控制布局: 在布局文件(xxx.xml)中完成控件的布局. 在JAVA代码中完成 ...