虽然一种方法是以编程方式更新 ACL,但您可能会考虑
后一种技术写在这里,可能有点复杂:
https://www.cisco.com/c/dam/en/us/products/collateral/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
显然,您可以使用此方法进行任何您喜欢的配置。您也可以考虑基于源的路由进入黑洞而不是直接阻塞。