服务之:防火墙入站规则设置

开启服务时:1 需要开放对外的端口设置,需要设置防火墙入站规则。2 或则将整个服务程序排除到防火墙之外

在设置入站时有如下

1 编码添加COM操作组件

 2 入站信息类

    /// <summary>
    /// 防火墙入站
    /// </summary>
    public class FirewallInbound
    {
        public string Name { get; set; }
        public string Port { get; set; }
        public string Protocol { get; set; }
    }

3  入站操作

  public class FireWallManger
    {
        /// <summary>
        /// 通过对象防火墙操作
        /// </summary>
        /// <param name="isOpenDomain">域网络防火墙(禁用:false;启用(默认):true)</param>
        /// <param name="isOpenPublicState">公共网络防火墙(禁用:false;启用(默认):true)</param>
        /// <param name="isOpenStandard">专用网络防火墙(禁用: false;启用(默认):true)</param>
        /// <returns></returns>
        public bool FirewallOperateByObject(bool isOpenDomain = true, bool isOpenPublicState = true, bool isOpenStandard = true)
        {
            try
            {
                INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
                // 启用<高级安全Windows防火墙> - 专有配置文件的防火墙
                firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, isOpenStandard);
                // 启用<高级安全Windows防火墙> - 公用配置文件的防火墙
                firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, isOpenPublicState);
                // 启用<高级安全Windows防火墙> - 域配置文件的防火墙
                firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN, isOpenDomain);
            }
            catch (Exception e)
            {
                string error = $"防火墙修改出错:{e.Message}";
            }
            return true;
        }

        /// <summary>
        /// 添加防火墙例外端口
        /// </summary>
        /// <param name="firewallInbounds"></param>
        public void NetFwAddPorts(List<FirewallInbound> firewallInbounds)
        {
            //创建firewall管理类的实例
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
            var objPorts = GetNetFwOpenPorts(firewallInbounds);

            //加入到防火墙的管理策略
            IList<INetFwOpenPort> needSetFwOpenPorts = new List<INetFwOpenPort>();

            //获取防火墙已入站的协议
            var globallyOpenPorts =  netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts;

            foreach (var objPort in objPorts)
            {
                bool exist = false;
                foreach (INetFwOpenPort globallyOpenPort in globallyOpenPorts)
                {
                    if (objPort.Name.Equals(globallyOpenPort.Name, StringComparison.CurrentCultureIgnoreCase) && objPort.Port == globallyOpenPort.Port)
                    {
                        exist = true;
                        break;
                    }
                }

                if (!exist)
                    needSetFwOpenPorts.Add(objPort);
            }
            AddRules(needSetFwOpenPorts);
        }

        private IList<INetFwOpenPort> GetNetFwOpenPorts(List<FirewallInbound> firewallInbounds)
        {
            IList<INetFwOpenPort> objPorts = new List<INetFwOpenPort>();
            foreach (var firewallInbound in firewallInbounds)
            {
                INetFwOpenPort objPort = (INetFwOpenPort)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwOpenPort"));
                objPort.Name = firewallInbound.Name;
                objPort.Port =  Int32.Parse(firewallInbound.Port);
                objPort.Protocol = firewallInbound.Protocol.ToUpper() == "TCP" ? NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP;
                objPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
                objPort.Enabled = true;
                objPorts.Add(objPort);
            }
            return objPorts;
        }

        /// <summary>
        /// 将指定端口添加到防火墙外
        /// </summary>
        /// <param name="objPorts"></param>
        private void AddRules(IList<INetFwOpenPort> objPorts)
        {
            if (objPorts == null || !objPorts.Any()) return;

            INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
            foreach (var objPort in objPorts)
            {
                INetFwRule2 rule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
                rule.Protocol = (int)objPort.Protocol; 
                rule.Profiles = (int)(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_ALL);
                rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
                rule.Name = objPort.Name;
                rule.LocalPorts = objPort.Port.ToString();
                rule.Enabled = true;
                firewallPolicy.Rules.Add(rule);
                //netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(objPort);
            }
        }

        /// <summary>
        /// 将应用程序添加到防火墙例外
        /// </summary>
        /// <param name="name">应用程序名称</param>
        /// <param name="executablePath">应用程序可执行文件全路径</param>
        public void NetFwAddApps(string name, string executablePath)
        {
            //创建firewall管理类的实例
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

            INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
                Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication"));

            //在例外列表里,程序显示的名称
            app.Name = name;
            //程序的路径及文件名
            app.ProcessImageFileName = executablePath;
            //是否启用该规则
            app.Enabled = true;
            bool exist = false;
            //加入到防火墙的管理策略
            foreach (INetFwAuthorizedApplication mApp in netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications)
            {
                if (app == mApp)
                {
                    exist = true;
                    break;
                }
            }
            if (!exist) netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
        }

        /// <summary>
        /// 删除防火墙例外端口
        /// </summary>
        /// <param name="port">端口</param>
        /// <param name="protocol">协议(TCP、UDP)</param>
        public void NetFwDelApps(int port, string protocol)
        {
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
            netFwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove(port,
                protocol == "TCP"
                    ? NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP
                    : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP);
        }

        /// <summary>
        /// 删除防火墙例外中应用程序
        /// </summary>
        /// <param name="executablePath">程序的绝对路径</param>
        public void NetFwDelApps(string executablePath)
        {
            INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
            netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(executablePath);
        }
    }

4 入站调用

 /// <summary>
        /// 设置防火墙入站
        /// </summary>
        private void SetFirewallInbound(string[] args)
        {
            var fireWallManger = new FireWallManger();
            List<FirewallInbound> firewallInbounds = new List<FirewallInbound>
            {
                new FirewallInbound() {Name = "测试名字", Port = "45000", Protocol = "Tcp"}
            };
            fireWallManger.NetFwAddPorts(firewallInbounds);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络安全防护技战法报告 一、防守技战法概述 为了顺利完成本次护网行动任务,切实加强网络安全防护能力,XXXX设立HW2019领导组和工作组,工作组下设技术组和协调组。护网工作组由各部门及各二级单位信息化负责人组成,由股份公司副总裁担任护网工作组的组长。 为提高护网工作组人员的安全防护能力,对不同重要系统进行分等级安全防护,从互联网至目标系统,依次设置如下三道安全防线: 第一道防线:集团总部互联网边界防护、二级单位企业互联网边界防护。 第二道防线:广域网边界防护、DMZ区边界防护。 第三道防线:目标系统安全域边界防护、VPN。 根据三道防线现状,梳理出主要防护内容,包括但不限于:梳理对外发布的互联网应用系统,设备和安全措施,明确相关责任人,梳理网络结构,重要的或需要重点保护的信息系统、应用系统与各服务器之间的拓扑结构,网络安全设备及网络防护情况, SSLVPN和IPSECVPN接入情况。集团广域网、集团专线边界,加强各单位集团广域网、集团专线边界防护措施,无线网边界,加强对无线WIFI、蓝牙等无线通信方式的管控,关闭不具备安全条件及不必要开启的无线功能。 结合信息化资产梳理结果,攻防演习行动安全保障小组对集团信息化资产及重点下属单位的网络安全状况进行安全风险评估和排查,确认薄弱环节以便进行整改加固。 二、 防守技战法详情 2.1 第一道防线--互联网边界及二级单位防护技战法 2.1.1 安全感知防御、检测及响应 构建从"云端、边界、端点"+"安全感知"的防御机制。相关防护思路如下: 防御能力:是指一系列策略集、产品和服务可以用于防御攻击。这个方面的关键目标是通过减少被攻击面来提升攻击门槛,并在受影响前拦截攻击动作。 网络安全防护技战法报告全文共9页,当前为第1页。检测能力:用于发现那些逃过防御网络的攻击,该方面的关键目标是降低威胁造成的"停摆时间"以及其他潜在的损失。检测能力非常关键,因为企业应该假设自己已处在被攻击状态中。 网络安全防护技战法报告全文共9页,当前为第1页。 响应能力:系统一旦检测到入侵,响应系统就开始工作,进行事 处理。响应包括紧急响应和恢复处理,恢复处理又包括系统恢复和信息恢复。 2.1.2 安全可视及治理 l 全网安全可视 结合边界防护、安全检测、内网检测、管理中心、可视化平台,基于行为和关联分析技术,对全网的流量实现全网应用可视化,业务可视化,攻击与可疑流量可视化,解决安全黑洞与安全洼地的问题。 l 动态感知 采用大数据、人工智能技术安全,建立了安全态势感知平台,为所有业务场景提供云端的威胁感知能力。通过对边界网络流量的全流量的感知和分析,来发现边界威胁。通过潜伏威胁探针、安全边界设备、上网行为感系统,对服务器或终端上面的文件、数据与通信进行安全监控,利用大数据技术感知数据来发现主动发现威胁。 2.1.3 互联网及二级单位的区域隔离 在互联网出口,部署入侵防御IPS、上网行为管理,提供网络边界隔离、访问控制、入侵防护、僵尸网络防护、木马防护、病毒防护等。 在广域网接入区边界透明模式部署入侵防御系统,针对专线接入流量进行控制和过滤。 办公网区应部署终端检测和响应/恶意代码防护软件,开启病毒防护功能、文件监测,并及时更新安全规则库,保持最新状态。 服务器区部署防火墙和WEB应用防火墙,对数据中心威胁进行防护;汇聚交换机处旁路模式部署全流量探针,对流量进行监测并同步至态势感知平台;部署数据库审计系统,进行数据库安全审计。 在运维管理区,部署堡垒机、日志审计、漏洞扫描设备,实现单位的集中运维审计、日志审计和集中漏洞检查功能。 2.1.3.1 互联网出口处安全加固 网络安全防护技战法报告全文共9页,当前为第2页。互联网出口处双机部署了因特网防火墙以及下一代防火墙进行出口处的防护,在攻防演练期间,出口处防火墙通过对各类用户权限的区分,不同访问需求,可以进行精确的访问控制。通过对终端用户、分支机构不同的权限划分保障网络受控有序的运行。 网络安全防护技战法报告全文共9页,当前为第2页。 对能够通过互联网访问内网的网络对象IP地址进行严格管控,将网段内访问IP地址段进行细化,尽量落实到个人静态IP。 开启精细化应用控制策略,设置多条应用控制策略,指定用户才可以访问目标业务系统应用,防止出现因为粗放控制策略带来的互联网访问风险。 对所有通过联网接入的用户IP或IP地址段开启全面安全防护策略,开启防病毒、防僵尸网络、防篡改等防护功能。 通过对全网进行访问控制、明确权限划分可以避免越权访问、非法访问等情况发生,减少安全事件发生概率。 护网行动开始之前,将防火墙所有安全规则库更新到最新,能够匹配近期发生的绝大部分已知威胁,并通过SAVE引擎对未知威胁进行有效防护。 攻防演练期间,通过互联网访问的用户需要进行严格的认证策略和上网策略

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值