Как отключить лишние сервисы, включить безопасные протоколы и ограничить доступ.

Маршрутизатор живет на границе сети. На него первым ложится удар сканеров, ботов и нетерпеливых соседей по провайдеру. От его настроек зависит не только устойчивость связи, но и то, попадут ли злоумышленники дальше. Хорошая новость в том, что базовая защита строится из понятных шагов. Ничего космического, просто аккуратная гигиена и дисциплина.
В этом материале разберем три самые важные темы. Сначала убираем лишние сервисы. Затем наводим порядок в протоколах управления. После этого закрываем консольный и удаленный доступ. По пути дадим примеры для популярных систем, отметим типовые ошибки и соберем короткий чеклист, чтобы было удобно проверять себя.
Начинаем с инвентаризации. Нужно знать модель устройства, версию прошивки и перечень включенных функций. Полезно зафиксировать схему подключений, адреса управленческого сегмента и список людей с доступом. Пара строк в вики или в тикете сэкономят много нервов позже.
Дальше обновляем прошивку до стабильной версии. Часто это закрывает десятки уязвимостей. Обновление стоит планировать заранее. Снимайте резервную копию конфигурации и имейте план отката. Одно дело домашний роутер, другое дело устройство на границе офиса. Тишина в канале связи не радует никого.
Чем меньше открытых дверей, тем меньше шансов, что кто-то войдет туда, куда не просили. Многие функции включены для удобства. В повседневной жизни они не нужны, а риски добавляют. Задача простая. Выключить все лишнее и оставить только то, без чего никак.
Под прицел попадают веб-интерфейс по незащищенному каналу, Telnet, неиспользуемый FTP, UPnP, WPS, внешний доступ к гуи, старые протоколы управления, ненужные сервисы обнаружения и помощи. Если сомневаетесь, вспоминайте правило. Лучше сначала выключить и при необходимости включить обратно, чем держать открытым без очевидной причины.
Ниже несколько коротких фрагментов. Команды могут отличаться в зависимости от версии. Проверяйте на своем устройстве и тестируйте в нерабочее время.
! отключаем старые службы
no ip http server
ip http secure-server
ip http authentication local
!
line vty 0 4
transport input ssh
exec-timeout 10 0
login local
!
ip ssh version 2
!
no cdp run
no lldp run
!
! если SNMP не нужен
no snmp-server
# выключаем лишние службы
/ip service disable telnet,ftp,api-ssl,api,www
/ip service enable ssh
/ip service set ssh address=10.10.10.0/24
/ip service set www-ssl certificate=router cert disabled=no address=10.10.10.0/24
# UPnP
/ip upnp set enabled=no
# SNMP
/snmp set enabled=no
delete system services telnet
delete system services ftp
set system services ssh protocol-version v2
set system services web-management https system-generated-certificate
deactivate snmp
configure
set service ssh port 22
delete service telnet
delete service http
set service https listen-address 10.10.10.1
set service https disable-certificate-verification
commit
save
exit
Даже такие простые правки заметно уменьшают площадь атаки. Если после отключения чего-то перестало работать, спокойная проверка зависимостей вернет все на место. Важно не спешить и вносить изменения по одному шагу с проверкой результатов.
К управлению устройством нельзя относиться как к обычному трафику. Здесь ходят пароли и команды. Ошибка стоит дорого. Наша цель. Свести все к защищенным каналам, ограничить места входа и поставить правила поверх. Так легче жить и проще расследовать инциденты.
Базовая политика звучит просто. Только SSH для командной строки и только HTTPS для веб. Никакого Telnet и открытого HTTP. Управление допускается из отдельного сегмента. Если устройство поддерживает выделенный порт или виртуальный контекст для управления, используем его. Тогда служебный трафик не пересекается с пользовательским.
SSH с ключами значительно надежнее паролей. Генерируем пару ключей, добавляем публичный ключ на устройство и запрещаем вход только по паролю. При необходимости оставляем пароль как запасной вариант, но ограничиваем источники доступов и включаем контроль попыток.
! Cisco IOS
ip ssh version 2
ip ssh time-out 60
ip ssh authentication-retries 3
!
username netadmin privilege 15 secret <длинный_пароль>
ip access-list standard MGMT_SSH
permit 10.10.10.0 0.0.0.255
deny any
!
line vty 0 4
access-class MGMT_SSH in
transport input ssh
login local
exec-timeout 10 0
Если графический интерфейс нужен, включаем только HTTPS и ограничиваем доступ по адресам. Добавляем свой сертификат, если устройство поддерживает. Самоподписанный вариант тоже лучше открытого HTTP. Главное, чтобы доступ был только из нужной подсети и только по шифрованному каналу.
Мониторинг полезен. Но открытый SNMP версии 1 или 2c превращается в дверь без замка. SNMPv3 дает проверку подлинности и шифрование. Если мониторинга нет, лучше отключить службу полностью. Если мониторинг есть, ограничьте источники запросов и используйте учетные записи с минимальными правами.
! Cisco IOS
snmp-server group SEC v3 priv
snmp-server user mon SEC v3 auth sha <пароль> priv aes 128 <ключ>
snmp-server view READONLY iso included
snmp-server group SEC v3 priv read READONLY
snmp-server host 10.10.10.50 version 3 priv mon
ip access-list standard MGMT_SNMP
permit 10.10.10.50
deny any
snmp-server community public RO <не использовать, удалить>
Без точного времени расследовать события тяжело. Подключаем NTP к доверенным серверам и включаем отправку журналов на центральный syslog. Пригодится для аудита, отчетов и поиска аномалий. Для чувствительных сетей делайте отдельный внутрений источк времени.
! Cisco IOS
ntp server 10.10.10.20
service timestamps debug datetime msec
service timestamps log datetime msec
logging 10.10.10.30
logging trap warnings
В некоторых случаях удобно включить потоковую телеметрию. Но только через защищенный канал и только на доверенные коллекторы. Это уже следующий уровень зрелости. В базовой защите достаточно syslog и аккуратных лимитов по уровню сообщений.
Админка нужна всем, пока все хорошо. При инциденте админка становится самой желанной целью. Поэтому доступы стоит организовать так, чтобы даже при компрометации одной учетной записи это не ломало всю систему. Здесь помогают принципы разделения прав, ограничение по адресам и проверка личности через внешний сервер.
Начинаем с базового. Сильные уникальные пароли, вход только для тех, кому действительно нужно, и двухфакторная проверка там, где устройство и инфраструктура позволяют. Если есть RADIUS или TACACS+, используем централизованную аутентификацию и авторизацию. Это упрощает аудит и отзыв прав. Локального администратора оставляем только как аварийный вариант с надежным паролем, спрятанным в сейфе и под контролем.
AAA дает три вещи. Проверку личности, назначение прав и учет действий. Это ровно то, что нужно, когда доступа несколько и время дорого. Роли ограничивают возможности. Например инженеру достаточно прав на просмотр и отдельные команды, а полный доступ хранится у ответственных за изменения. Срок жизни сессии нужно ограничить. Автоматическое завершение простоя снижает риск захваченной консоли.
! Cisco IOS c использованием RADIUS
aaa new-model
aaa authentication login default group radius local
aaa authorization exec default group radius local
aaa accounting commands 15 default start-stop group radius
radius-server host 10.10.10.60 key <секрет>
!
line console 0
login authentication default
exec-timeout 5 0
!
line vty 0 4
login authentication default
exec-timeout 10 0
transport input ssh
Лучше, когда управление идет с выделенного хоста или сети. Тогда список источников короткий и понятный. На границе ставится список контроля доступа. Он пропускает только нужные адреса и только нужные порты. Все остальное блокируется. Если есть возможность вынести управление в отдельный VRF или порт, делаем это. Так трафик управления не смешивается с пользовательским.
! Cisco IOS
ip access-list extended MGMT_EDGE
permit tcp 10.10.10.0 0.0.0.255 host 203.0.113.10 eq 22
permit tcp 10.10.10.0 0.0.0.255 host 203.0.113.10 eq 443
deny ip any any log
!
interface GigabitEthernet0/0
ip access-group MGMT_EDGE in
Полезно выставить приветствие, которое ясно сообщает. Доступ только для авторизованных. Это не про угрозы, а про юридическую чистоту. Параметры блокировки после нескольких неудачных попыток входа спасают от простого перебора. Пригодится и защита от частых подключений, если такое поддерживается прошивкой.
! Cisco IOS
banner login ^C
Доступ только для авторизованных пользователей
Все действия записываются
^C
login block-for 60 attempts 5 within 60
Логи рассказывают историю. Без них расследование превращается в гадание. Отправляйте события на внешний сервер журналов. Там их удобно хранить, искать и связывать с другими источниками. Минимальный набор. Предупреждения и ошибки. Если ресурсов хватает, добавляйте сведения об изменениях конфигурации и попытках входа. Обязательно синхронизируйте время с надежным источником.
Не забывайте про резервное копирование конфигураций. Можно настроить автоматический экспорт на внутренний сервер при каждом изменении. Тогда восстановление займет минуты. В спокойное время это кажется лишним. В стрессовой ситуации это лучший друг.
Самая частая беда. Оставили веб-интерфейс для всех. Второе место занимает Telnet. Третье место делят открытый SNMP старых версий и универсальные пароли. Все это исправляется за полчаса. Нужно просто дойти до устройства и сделать несколько правок. Лучше не ждать, пока это сделают за вас.
Еще одна ошибка. Управление из любых сетей. Кажется удобным. На деле это подарок для злоумышленника. Правильнее выделить одну управленческую подсеть и ходить только из нее. Если нужно администрировать из дома, поднимайте защищенный туннель в эту подсеть. Так вы не открываете доступ всему свету.
Даже если речь о небольшом офисе или квартире, логика та же. Отключаем удаленное управление снаружи, выключаем UPnP, ставим длинный пароль на Wi-Fi, сегментируем устройства. Если роутер позволяет создать гостьевой Wi-Fi, переносим туда все умные лампочки и телевизоры. Основная сеть остается только для ноутбуков и рабочих станций.
Периодически заходите в список клиентов и смотрите, что подключено. Неожиданные устройства лучше проверять сразу. Если провайдер навязывает удаленное управление, меняйте пароли по умолчанию и уточняйте, как это отключить. В крайнем случае лучше поставить свой маршрутизатор и настроить его под себя.
Хорошо иметь под рукой понятные справочники. Они помогут углубить настройку и не забыть мелочи. Ниже несколько ссылок на открытые источники.
Базовая защита маршрутизатора не требует редких знаний. Достаточно спокойного подхода и готовности довести начатое до конца. Выключили лишнее, включили защищенные протоколы, ограничили доступ и настроили учет. Из этих кирпичиков складывается надежная первая линия. Остальное нарастет позже. Когда фундамент крепкий, строить проще.