我有一台思科 (877) 路由器,作为网络的主网关;它具有 DSL 连接并执行从内部网络到其外部公共 IP 地址的 NAT。
路由器允许通过 SSH 访问进行管理,并使用访问列表进行限制:
access-list 1 permit <internal network range>
line vty 0 4
transport input ssh
access-class 1 in
路由器的内部 Web 服务器未启用,但如果启用了,我知道可以使用相同的逻辑限制其访问:
ip http access-class 1
现在,问题来了:这个路由器还充当 DNS 服务器,将查询转发到外部服务器:
ip name-server <ISP DNS 1>
ip name-server <ISP DNS 2>
ip dns server
我的问题是:当路由器在其外部接口上收到 DNS 查询时,它非常乐意回答这些查询。
我如何阻止这种流量,以便路由器只回答来自内部网络的 DNS 查询?
答案1
!Deny DNS from Public
ip access-list extended ACL-IN_FROM-WAN
remark allow OpenDNS lookups
permit udp 208.67.222.222 0.0.0.0 any eq domain
permit tcp 208.67.220.220 0.0.0.0 any eq domain
remark deny all others and log the attempts
deny udp any any eq domain log
deny tcp any any eq domain log
permit ip any any
! Apply to WAN interface
int WAN
ip access-group ACLIN-TO_WAN in
答案2
在外部接口上放置 ACL。工作原理相同。创建一个 ACL(扩展或常规),然后将其应用于外部接口,只允许您想要的流量。无论 DNS 是什么,您都应该拥有它。
我自己还没有尝试过(不会在我的路由器上运行 DNS)...但这似乎是您正在寻找的:
根据查询源 IP 地址的 DNS 视图使用限制
标准 IP ACL 是一组编号或命名的主机 IP 地址匹配规则,每条规则指定当 IP 地址与规则中的文本字符串模式匹配时要执行的操作类型。拆分 DNS 功能支持使用标准 ACL 作为基于查询源 IP 地址的查看使用限制。为了使源 IP 地址与名称列表匹配,IP 地址必须与明确允许匹配模式的规则匹配,但 IP 地址不能与明确拒绝匹配模式的任何规则匹配。
http://www.cisco.com/c/en/us/td/docs/ios/12_4t/12_4t11/htspldns.html#wp1049435
答案3
我想添加一条评论,但我不能。答案是简单地为您使用的 DNS 服务器添加一个允许语句,因此如果您使用的是 Google 的 8.8.8.8,则在拒绝语句上方为 8.8.8.8 的 udp 端口 53 添加一个允许语句。
或者使用反射 ACL: http://www.cisco.com/c/en/us/td/docs/ios/12_2/security/configuration/guide/fsecur_c/scfreflx.html
答案4
假设你有 fa0 作为 WAN
ip access-list extended WAN_ACL_IN
remark --- These are outgoing DNS queries.
permit udp any eq domain any gt 1023
remark --- Permit legitimate business traffic.
permit tcp any any established
permit udp any range 1 1023 any gt 1023
remark --- Deny all other DNS traffic.
deny udp any any eq domain
deny tcp any any eq domain
remark --- Explicitly deny all other traffic.
deny ip any any
你需要将 acl 应用到你的 WAN 接口
interface fa0
ip access-group WAN_ACL_IN in