• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 全部
  • 全部
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
高级搜索

使用NETCONF为防火墙下发安全策略(Python ncclient模块实现)

2021-01-06 发表
  • 0关注
  • 2收藏,223浏览
胡伟 七段
粉丝:7人 关注:2人

组网及说明

设备:防火墙

型号:F1070

软件版本:D022及以上


说明:

1.1 NETCONF简介

  • NETCONFNetwork Configuration Protocol,网络配置协议)是一种基于XML的网络管理协议,他提供了一种可编程的、对网络设备进行配置和管理的方法。用户可以通过该协议设置属性、获取属性值、获取统计信息等。这使得他在第三方软件的开发上非常便利,很容易开发出在混合不同厂商、不同设备的环境下的特殊定制的网管软件。
  • ncclient是一个用于NETCONF客户端的Python库。它旨在体用一个直观的API,将NETCONF的XML编码特性映射到Python构造和习语,并使编写网络管理脚本更容易。

本次典型配置使用上述工具和组件为防火墙下发:禁止源地址为1.1.1.1的安全策略。

【附】

H3C Netconf配置相关指导

  • Comware 7 NETCONF XML API Reference(请拨打400售后获取)。

     


配置步骤

1,确保Python以及ncclient库已成功安装,安装操作指导可参考相关网上链接。以下操作无报错说明ncclient库已安装成功。

   


2,明确脚本下发步骤。使用NETCONF为防火墙下发安全策略主要有以下四步(通过查看API文档分别找出每一步相关模块XML格式):

  • 创建IPv4地址对象组

  • 创建IPv4地址对象

  • 创建安全策略规则

  • 安全策略规则中引用IPv4地址对象组

3,Python代码实现。

  • 设备开启NETCONF over SSH功能,确保NETCONF客户端到设备的830端口可通,且NETCONF使用的SSH用户已被分配权限。
  • 通过Python连接防火墙设备,并下发配置脚本。

from ncclient import manager

 

xml1 = """

<config

    xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"

    xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

    <top

        xmlns="http://www.h3c.com/netconf/config:1.0" xc:operation="create">

        <OMS>

            <IPv4Groups>

                <Group>

                    <Name>IPv4_1.1.1.1</Name>

                    <Description>IPv4_1.1.1.1</Description>

                    <SecurityZone>Trust</SecurityZone>

                </Group>

            </IPv4Groups>

        </OMS>

    </top>

</config>

"""

 

xml2 = """

<config

    xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"

    xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

    <top

        xmlns="http://www.h3c.com/netconf/config:1.0" xc:operation="create">

        <OMS>

            <IPv4Objs>

                <Obj>

                    <Group>IPv4_1.1.1.1</Group>

                    <ID>0</ID>

                    <Type>3</Type>

                    <HostIPv4Address>1.1.1.1</HostIPv4Address>

                </Obj>

            </IPv4Objs>

        </OMS>

    </top>

</config>

"""

 

xml3 = """

<config

    xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"

    xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

    <top

        xmlns="http://www.h3c.com/netconf/config:1.0" xc:operation="create">

        <SecurityPolicies>

            <IPv4Rules>

                <Rule>

                    <ID>1000</ID>

                    <RuleName>Drop_1.1.1.1</RuleName>

                    <Action>2</Action>

                </Rule>

            </IPv4Rules>

        </SecurityPolicies>

    </top>

</config>

"""

 

xml4 = """

<config

    xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"

    xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

    <top

        xmlns="http://www.h3c.com/netconf/config:1.0" xc:operation="create">

        <SecurityPolicies>

            <IPv4SrcAddr>

                <SrcAddr>

                    <ID>100</ID>

                    <SeqNum></SeqNum>

                    <IsIncrement>false</IsIncrement>

                    <NameList>

                        <NameItem>IPv4_1.1.1.1</NameItem>

                    </NameList>

                </SrcAddr>

            </IPv4SrcAddr>

        </SecurityPolicies>

    </top>

</config>

"""

 

 

with manager.connect(  

        host="172.31.0.24",

        port=830,

        username="admin",

        password="Admin@h3c!",

        hostkey_verify=False,

        device_params={"name":"h3c"},

        timeout=300

        ) as m:

       

        for xml in [xml1, xml2, xml3, xml3]:

                print (m.edit_config(target="running", config=xml))

 


4,查看运行结果。

    运行Python脚本,有以下OK返回值则表示配置下发成功。

<?xml version="1.0" encoding="UTF-8"?><rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:28f0e0b3-a542-471f-9757-3b0e9fdb190e"><ok/></rpc-reply>

<?xml version="1.0" encoding="UTF-8"?><rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:a016052e-e20d-4f1e-8713-cb18214cd08f"><ok/></rpc-reply>

<?xml version="1.0" encoding="UTF-8"?><rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:1b6d0c44-fb6d-43b2-b8ad-9cc35236e2d0"><ok/></rpc-reply>

<?xml version="1.0" encoding="UTF-8"?><rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:a677d53e-61ba-43e5-b5e8-6bffc941668a"><ok/></rpc-reply>




配置关键点

XML编写之前需要仔细阅读API文档,明确XML中 Table和Columns的定义和参数说明。


0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +
<

亲~登录后才可以操作哦!

确定

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作