现在的位置: 首页 > 综合 > 正文

基于visual c++之windows核心编程代码分析(33)实现防火墙模型

2012年08月19日 ⁄ 综合 ⁄ 共 1537字 ⁄ 字号 评论关闭

防火墙(英文:firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。防火墙可以是一台专属的硬件也可以是架设在一般硬件上的一套软件。
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Interne防火墙
t与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,   防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。  

 在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。

下列代码为防火墙的简单规则实现,过滤相关信息

void CxpktfilterDlg::OnBnClickedOk()
{
	PfCreateInterface(0, 
                     PF_ACTION_DROP,//PF_ACTION_FORWARD,
                     PF_ACTION_DROP,//PF_ACTION_FORWARD, 
                     FALSE, 
                     TRUE, 
                     &hInterface);

    // 绑定需要网络包过滤的IP地址
	
	BYTE localIp[]={127,0,0,1};
	
    PfBindInterfaceToIPAddress(hInterface, PF_IPV4, localIp);
    // 现在我们开始过滤HTTP协议的的接口
    
    // 填充过滤包的规则结构
    PF_FILTER_DESCRIPTOR inFilter;
    inFilter.dwFilterFlags = FD_FLAGS_NOSYN; //一直添这个值
    inFilter.dwRule = 0; //一直添这个值
    inFilter.pfatType = PF_IPV4; //用 ipV4 地址
    inFilter.SrcAddr = localIp; //设置本地IP地址
  
    inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; //任意来源端口
    inFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY;
    inFilter.DstAddr = 0; //任意目标地址
    inFilter.DstMask = 0;
    inFilter.wDstPort = FILTER_TCPUDP_PORT_ANY; //任意目标端口
    inFilter.wDstPortHighRange =FILTER_TCPUDP_PORT_ANY;
    inFilter.dwProtocol = FILTER_PROTO_TCP; // 过滤的协议,可选FILTER_PROTO_ICMP
    // 加入一个过滤接口
    PfAddFiltersToInterface(hInterface, 1, &inFilter, 0, NULL, &fHandle);
}

void CxpktfilterDlg::OnBnClickedButton1()
{
PfRemoveFilterHandles(hInterface, 1, &fHandle);
PfUnBindInterface(hInterface);
PfDeleteInterface(hInterface);
}

 

抱歉!评论已关闭.