ciscoconfparse2:一款针对思科IOS风格配置的安全审计工具

2024-09-24 36 0

关于ciscoconfparse2

ciscoconfparse2是一款针对思科IOS风格配置的安全审计工具,该工具是一个Python库,可以帮助广大研究人员快速解析、审计、查询、构建和修改 Arista / Cisco / Juniper / Palo Alto / F5 配置。

功能介绍

ciscoconfparse2可以帮助您快速回答有关 Cisco 配置的以下问题:

1、哪些接口已关闭?

2、哪些接口处于中继模式?

3、每个接口分配了什么地址和子网掩码?

4、哪些接口缺少关键命令?

5、此配置是否缺少标准配置行?

它可以帮助您:

1、审核现有的路由器 / 交换机 / 防火墙 / WLC 配置;

2、修改现有配置;

3、构建新配置;

一般来说,该库会检查 IOS 样式的配置并将其分解为一组相互关联的父/子关系。您可以针对这些关系执行复杂的查询:

工具要求

Python 3

attrs

passlib

tomlkit

dnspython

hier_config

PyYAML

pyparsing

typeguard

loguru

工具安装

由于该工具基于Python 3.7开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3.7+环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone git://github.com/mpenning/ciscoconfparse2

然后切换到项目目录中,执行安装脚本完成工具安装:

cd ciscoconfparse2/

 python -m pip install .

或者直接使用pip完成安装:

python -m pip install ciscoconfparse2

工具使用

假设您的配置中有一堆接口。如何找到哪些接口已关闭?

一种方法是手动读取整个 Cisco IOS-XE 配置,另一个选项是ciscoconfparse2:

>>> from ciscoconfparse2 import CiscoConfParse

>>>

>>> parse = CiscoConfParse('/path/to/config/file')

>>> intf_cmds = parse.find_parent_objects(['interface', 'shutdown'])

>>>

>>> shut_intf_names = [" ".join(cmd.split()[1:]) for cmd in intf_cmds]

>>>

>>> shut_intf_names

['GigabitEthernet1/5', 'TenGigabitEthernet2/2', 'TenGigabitEthernet2/3']

>>>

假设您有以下 IOS-XR bgp 配置:

router bgp 65534

  bgp router-id 10.0.0.100

  address-family ipv4 unicast

  !

  neighbor 10.0.0.37

    remote-as 64000

    route-policy EBGP_IN in

    route-policy EBGP_OUT out

  !

  neighbor 10.0.0.1

    remote-as 65534

    update-source Loopback0

    route-policy MANGLE_IN in

    route-policy MANGLE_OUT out

      next-hop-self

  !

  neighbor 10.0.0.34

    remote-as 64000

    route-policy EBGP_IN in

    route-policy EBGP_OUT out

您可以使用此脚本快速生成 EBGP 对等体的列表:

from ciscoconfparse2 import CiscoConfParse

 

parse = CiscoConfParse('/path/to/config/file')   # Or read directly from a list of strings

 

# Get all neighbor configuration branches

branches = parse.find_object_branches(('router bgp',

                                       'neighbor',

                                       'remote-as'))

 

# Get the local BGP ASN

bgp_cmd = branches[0][0]

local_asn = bgp_cmd.split()[-1]

 

# Find EBGP neighbors for any number of peers

for branch in branches:

    neighbor_addr = branch[1].split()[-1]

    remote_asn = branch[2].split()[-1]

    if local_asn != remote_asn:

        print("EBGP NEIGHBOR", neighbor_addr)

当你运行它时,你会看到:

$ python example.py

EBGP NEIGHBOR 10.0.0.37

EBGP NEIGHBOR 10.0.0.34

$

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可协议。

项目地址

ciscoconfparse2:【GitHub传送门

参考资料

http://www.diveintopython3.net/

https://team-cymru.com/company/

http://www.cisco.com/c/en/us/support/docs/ip/access-lists/13608-21.html

https://learn.cisecurity.org/benchmarks


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

GShark:一款针对GitHub的敏感信息安全扫描与审计工具
BotKube:一款针对Kubernetes集群的安全监控与调试部署工具
Apache OFBiz SSRF漏洞CVE-2024-45507分析
Chainsaw:一款基于Windows事件日志的信息安全取证工具
SEMA:一款基于符号执行的恶意软件分析工具
简单易懂!Java应用中的不安全反序列化

发布评论