У меня есть маршрутизатор Cisco (877), выступающий в качестве основного шлюза для сети; он имеет DSL-соединение и выполняет NAT из внутренней сети на свой внешний общедоступный IP-адрес.
Маршрутизатор разрешает доступ по SSH для управления, и это было ограничено с помощью списка доступа:
access-list 1 permit <internal network range>
line vty 0 4
transport input ssh
access-class 1 in
Внутренний веб-сервер маршрутизатора не включен, но если бы он был, я знаю, что его доступ может быть ограничен с использованием той же логики:
ip http access-class 1
Итак, подводный камень: этот маршрутизатор также действует как DNS-сервер, перенаправляя запросы на внешние серверы:
ip name-server <ISP DNS 1>
ip name-server <ISP DNS 2>
ip dns server
Моя проблема: маршрутизатор с радостью отвечает на DNS-запросы при их получении через внешний интерфейс.
Как я могу заблокировать такой трафик, чтобы маршрутизатор отвечал только на DNS-запросы из внутренней сети?
!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
Есть более простой способ сделать это с помощью NAT:
ip nat inside source static udp 1.1.1.1 53 interface GigabitEthernet0/0 53
(С 877 я предполагаю, что ваш внешний интерфейс будет Dialer0 или atm0.1 в зависимости от того, используете ли вы ppp вместо Gi0 / 0 - независимо от того, что на нем есть "ip nat outside")
Это должно перенаправить все входящие соединения, но все соединения, исходящие изнутри, должны иметь соответствующую запись в таблице NAT и работать. Это также требует, чтобы вы указали свой внутренний интерфейс в качестве интерфейса поиска источника:
ip domain lookup source-interface Vlan1
(замените свой внутренний интерфейс на Vlan1, если вы используете что-то еще)
И это должно помочь.
Я бы добавил комментарий, но не могу. Ответ заключается в том, чтобы просто добавить оператор разрешения для ваших DNS-серверов, которые вы используете, поэтому, если вы используете Google 8.8.8.8, добавьте оператор разрешения для порта UDP 53 из 8.8.8.8 выше вашего запрета.
ИЛИ используйте рефлексивные ACL: http://www.cisco.com/c/en/us/td/docs/ios/12_2/security/configuration/guide/fsecur_c/scfreflx.html
Поместите ACL на внешний интерфейс. Работает точно так же. Создайте ACL, расширенный или обычный, затем примените его, но на внешнем интерфейсе, разрешая только тот трафик, который вам нужен. Независимо от DNS, он у вас должен быть.
Я сам этого не пробовал (не стал бы запускать DNS на своих маршрутизаторах) ... но, похоже, это то, что вы ищете:
Ограничения на использование просмотра DNS на основе IP-адреса источника запроса
Стандартный список управления доступом IP - это пронумерованный или именованный набор правил сопоставления 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
Допустим у вас 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
Если бы у кого-то был внешний интерфейс G0 / 1 с IP 34.34.34.34. Этот ACL блокирует запросы, специально поступающие извне, пытающиеся поразить ваш внешний интерфейс, не затрагивая при этом другие формы трафика DNS.
ip access-list extended Outside-In
deny udp any host 34.34.34.34 eq domain
deny tcp any host 34.34.34.34 eq domain
permit ip any any
interface GigabitEthernet0/1
ip access-group Outside-In in
Я решил эту проблему в своей сети, предоставив своим клиентам dns-серверы в параметрах пула dhcp, я обнаружил DNS-серверы моего isp, а затем отключил DNS-сервер на маршрутизаторе - нет ip dns-server