Cisco ASA 9 以编程方式更新 ACL

网络工程 思科-ASA
2022-02-04 06:11:42

我一直在为我的基础设施中的 VoIP 攻击收集不同的 IP 地址。这些攻击每天都会发生多次。我创建了一个服务,它生成一个通知给 python 订阅服务,然后可以根据请求执行任何操作。

是否可以为以编​​程方式显示的每个 IP 地址添加 ACL?通过 REST API 到 ASA 的示例。这是我生成的 JSON 对象,我只需将我的 python 脚本配置为使用 IP 地址并向 ASA 发送更新 ACL 的请求,以防 IP 地址已经存在忽略。

{u'Content': u'163.172.120.42', u'From': u'honeypot-ef4b6aa1-d5ca-43f8-92c8-f9840fb5bb9f-deadbeef'}
1个回答

虽然一种方法是以编程方式更新 ACL,但您可能会考虑

后一种技术写在这里,可能有点复杂: https://www.cisco.com/c/dam/en/us/products/collat​​eral/security/ios-network-foundation-protection-nfp/prod_white_paper0900aecd80313fac。 pdf

可以使用更简单的方法来做到这一点,例如填充下一跳的 RIP2。

对于您所指出的用途,听起来您并不需要它非常快,所以我将从 make-text-file-and-remotely-load 开始。该技术非常通用,而且很容易做到。

运行一个脚本来创建您的 ACL 命令,可能会定期使用 cron 或类似命令;然后它发出

ssh edgerouter1 copy http://localserver/dynamicacl runing-config

请注意,此“副本”实际上是一个合并,因为它保留了现有配置,除非新配置明确否定了某些内容no access-list 22或类似内容。

您需要在路由器上进行基于证书的登录才能实现此目的。

[编辑] 在尝试时,我发现了一个小惊喜,所以添加了细节。我使用 15.1.4 的 Cisco 2800 路由器进行了测试,因为我没有可用的 ASA,服务器是 Ubuntu 16。

重复一遍,这是对 Cisco 设备进行任何编程配置的一种非常通用的方法。一般来说,采用完全非交互式的方法比基于期望的方法要好得多。如果交互式系统做了一些不寻常的事情,你的期望脚本可能会以非常难以调试的方式出错。如果这个编程副本出错,您可以手动发出相同的命令并从那里进行调试。

示例网络举例来说,假设您的 ASA/路由器内部地址是 192.168.0.1,并且您在 192.168.0.32 有一个内部 Web 服务器可用。

生成配置假设您有一个程序badaddresses可以生成要阻止的地址列表。在 awk/python/whatever 中创建一个格式化程序mkciscoacl以生成适当的访问列表,可能如下所示:

ip access-list extended autobad
 1 deny ip host 10.10.0.5 any
 2 deny ip host 10.10.0.9 any
 1000000 permit ip any any
end

放在内部网络上 让我们假设您有一个 cron 作业,它使该文件在网络服务器上可用,网址为http://192.168.0.32/cisco/automatic.conf

无提示通常,当您这样做时,您copy http://somewhere running-config会收到确认目标为running-config. 这必须在您的配置中禁用。

file prompt quiet

证书登录您的路由器上必须有一个基于证书的登录,因为您希望配置完全自动化。文档

username autoloader priv 15 secret 12345 ! use a better one!
ip ssh pubkey-chain
  username autoloader
    key-string
      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZahXX11Muz3ChJtmVvofZhv5T
        ...
        username@webserver
    exit
  exit
exit

做一件事dowholething.sh做一个做一件事的脚本

#!/bin/sh
set -e
badaddresses | mkciscoacl > /var/www/html/cisco/automatic.conf
logger blahblah
ssh autoloader@192.168.0.1 \
  copy http://192.168.0.32/cisco/automatic.conf running-config

自动调用在 Web 服务器上,有一个像这样的 cron 作业:

* * * * * /path/to/dowholething.sh

显然,您可以使用此方法进行任何您喜欢的配置。您也可以考虑基于源的路由进入黑洞而不是直接阻塞。