Сетевая инфраструктура (роутеры, коммутаторы, МСЭ, АТС и так далее) являются очень важными ресурсами организации, и поэтому очень важно корректно настроить доступ к данным устройствам – для достижения нужного уровня защиты.
Множество корпораций фокусируются на защите своих серверов, приложений, баз данных и прочих компонентов сети, но они могут совершенно забыть о том, что часть установленных у них устройств содержат, к примеру, дефолтные логин и пароль.
К примеру, скомпрометированный маршрутизатор может доставить гигантское количество проблем – злоумышленники могут получить доступ к информации, трафик может улетать на другое направление и так далее. Так что корректная настройка устройств с точки зрения сетевой безопасности является крайне важным моментом при обеспечении защиты информации вашей организации.
К примеру Cisco разделяет любое сетевое устройство на 3 функциональных плоскости, а именно:
- Плоскость менеджмента – это все о том, как непосредственно управлять железкой. То есть данная плоскость используется для доступа, настройки и мониторинга устройства. В нашей статье мы непосредственно расскажем, как защитить данную плоскость;
- Плоскость управления – данная плоскость содержит в себе сигнальные протоколы и процессы, которые отвечают за связность между устройствами – например такие известные вам протоколы как OSPF, EIGRP и так далее;
- Плоскость данных – плоскость, ответственная за перемещение информации по сети от источника до ее назначения. В данной плоскости и происходит, как правило, обмен пакетами между устройствами;
Из этих трех плоскостей наиболее защитить первую и вторую плоскости, однако в нашей статье мы сконцентрируемся на плоскости менеджмента и обсудим 10 важных шагов по улучшению защищенности сетевого устройства Cisco с IOS.
Десять пунктов ниже не являются избыточными, но они включают в себя наиболее важные команды и настройки, которые позволят «закрыть» устройство от нежелательного доступа и повысить степень защищенности. Данные пункты применимы как к маршрутизаторам, так и к коммутаторам.
Создание секретного пароля
В целях предоставления доступа к IOS устройству только людям, имеющим право (например, сисадмину/эникею/инженеру) всегда нужно создавать сложный «секретный» пароль (enable secret). Мы советуем придумать/сгенерировать пароль минимум 12 знаков, содержащий цифры, буквы и специальные символы. Проверьте, что вы вводите именно
enable secret- тогда в конфиге пароль будет отображаться в зашифрованном виде.
Router# config terminal Router(config)# enable secret сложныйпароль
Зашифруйте пароли на устройстве
Все пароли, настроенные на устройстве (за исключением «секретного»), не шифруются от слова совсем и легко видны в конфиге. Чтобы зашифровать все пароли в конфиге, необходимо использовать глобальную команду
service password encryption
Router# config terminal Router(config)# service password-encryption
Используйте внешний сервер авторизации для аутентификации пользователей
Вместо использования локальных учетных записей на каждом устройстве для доступа администратора, мы рекомендуем использование внешнего AAA сервера (TACACS+ или RADIUS) для обеспечения Аутентификации, Авторизации и Учета (вольный перевод Authentication, Authorization, Accounting).
С централизованным ААА сервером гораздо проще управлять учетными записями, реализовывать политики безопасности, мониторить использование аккаунтов и многое другое.
Ниже на схеме вы можете видеть как настроить TACACS+ и RADIUS серверы с использованием enable secret пароля в случае отказа этих серверов.
TACACS+ Router# config terminal Router(config)# enable secret K6dn!#scfw35 //создаем “секретный ” пароль Router(config)# aaa new-model //включаем ААА службу Router(config)# aaa authentication login default group tacacs+ enable //Используем TACACS сервер и обычный пароль на случай отказа Router(config)# tacacs-server host 192.168.1.10 //указываем внутренний ААА сервер Router(config)# tacacs-server key ‘secret-key’ //указываем секретный ключ для ААА сервера Router(config)# line vty 0 4 Router(config-line)# login authentication default //применяем ААА аутентификацию для линий удаленного доступа (telnet, ssh) Router(config-line)# exit Router(config)# line con 0 //применяем ААА аутентификацию для консольного порта Router(config-line)# login authentication default RADIUS Router# config terminal Router(config)# enable secret K6dn!#scfw35 //создаем “секретный ” пароль Router(config)# aaa new-model //включаем ААА службу Router(config)# aaa authentication login default group radius enable //Используем RADIUS сервер и обычный пароль на случай отказа Router(config)# radius-server host 192.168.1.10 //указываем внутренний ААА сервер Router(config)# radius-server key ‘secret-key’ //указываем секретный ключ для ААА сервера Router(config)# line vty 0 4 Router(config-line)# login authentication default //применяем ААА аутентификацию для линий удаленного доступа (telnet, ssh) Router(config-line)# exit Router(config)# line con 0 //применяем ААА аутентификацию для консольного порта Router(config-line)# login authentication default
Создайте отдельные аккаунты для пользователей
Если у вас отсутствует возможность использовать внешний ААА сервер, по инструкции, описанной в предыдущем шаге, то как минимум, вам необходимо создать несколько отдельных локальных аккаунтов для всех, у кого должен быть доступ к устройству. Приведем пример создания трех локальных аккаунтов для троих системных администраторов.
Кроме того, в версии IOS начиная с 12.2(8)T и позднее, есть возможность настроить повышенную надежность паролей (Enhanced Password Security) для локальных учетных записей – это зашифрует пароли с помощью MD5 хэша.
Ниже пример настройки трех учетных записей:
Router# config terminal Router(config)# username efstafiy-admin secret Lms!a2eZf*%_rete Router(config)# username evlampiy-admin secret d4N3%sffeger Router(config)# username vova-admin secret 54sxSFT*&_(!zsd
Настройте лимит возможных попыток подключения
Для того, чтобы избежать взламывания вашей учетной записи на маршрутизаторе с помощью брутфорса, вы можете настроить ограничение количества попыток подключения, когда после определенного предела система заблокирует пользователя. Это работает для локальных учетных записей.
Router# config terminal Router(config)# username john-admin secret Lms!a2eZSf*% Router(config)# aaa new-model Router(config)# aaa local authentication attempts max-fail 5 //max 5 failed login attempts Router(config)# aaa authentication login default local
Открытие доступа на управление устройством только для определенных IP – адресов
Данный пункт является одним из наиболее важных для сетевых устройств Cisco – необходимо оставить доступ к Telnel или SSH только для определенных сетевых адресов (например, рабочей станции системного администратора). В нашем примере сисадмин находится в пуле 192.168.1.0/28
Router# config terminal Router(config)# access-list 10 permit 192.168.1.0 0.0.0.15 Router(config)# line vty 0 4 Router(config)# access-class 10 in //применить ограничения на все VTY линии (SSH/Telnet)
Включить логирование
Логирование является очень полезной функцией для отслеживания, аудита и контроля инцидентов. Вы можете включить логирование во внутренний буфер устройства или на внешний лог-сервер. Вторая опция является более предпочтительной, так как вы можете хранить там больше информации и проще производить различного рода аналитику.
Всего существует 8 уровней логирования (от 0 до 7), каждый из которых делает лог более насыщенным деталями. Лучше всего избегать 7 уровень логирования (дебаг), т.к это может легко потратить все ресурсы вашего устройства.
Ниже пример, как включить логирование и на внешний сервер, и на сам девайс (можно использовать два варианта одновременно).
Router# config terminal Router(config)# logging trap 6 //Включить 6 уровень логирования для логов, отправляемых на внешний сервер Router(config)# logging buffered 5 //Включить 5 уровень логирования для логов, хранимых на самом девайсе Router(config)# service timestamps log datetime msec show-timezone //Включить таймстампы с милисекундной точностью Router(config)# logging host 192.168.1.2 //Отправлять логи на внешний сервер Router(config)# logging source-interface ethernet 1/0 //Использовать интерфейс Eth1/0 для отправки логов
Включение NTP (Network Time Protocol)
Данный шаг необходим для корректной работы логирования – т.к вам необходимо синхронизированное и точное системное время на всех сетевых устройствах, для правильного понимания ситуации при траблшутинге. Вы можете использовать как публичный, так и свой собственный NTP cервер.
Router# config terminal Router(config)# ntp server 3.3.3.3 Router(config)# ntp server 4.4.4.4
Использование безопасных протоколов управления
По умолчанию, протоколом, с помощью которого можно управлять устройством является Telnet. Однако весь трафик передается в незашифрованном виде – поэтому предпочтительно использовать SSH.
Важно – для использования SSH необходимо настроить хостнейм и доменное имя, а также сгенерировать SSH ключи. Также следует разрешить только протокол SSH на VTY линиях
Защитить SNMP доступ
Про SNMP мы писали в одной из наших статей – это протокол для управления сетью, который, однако, также может служить «дырой» для доступа в вашу сеть. Для защиты данного направления, вам необходимо установить сложную Community String (что-то вроде пароля для SNMP) и разрешить доступ только с определенных рабочих станций.
Давайте настроим две Community String – одну с правами на чтение, и другую с правами на чтение и изменение. Также добавим ACL с нужными сетевыми адресами.
Router# config terminal Router(config)# access-list 11 permit 192.168.1.0 0.0.0.15 Router(config)# access-list 12 permit 192.168.1.12 Router(config)# snmp-server community Mer!0nET RO 11 //создание community string с правами на чтение и использование ACL 11 для SNMP доступа Router(config)# snmp-server community Mer!0NeTRules RW 12 //создание community string с правами на чтение/запись и использование ACL 12 для SNMP доступа
Команды выше позволят сети сисадмина 192.168.1.0/28 иметь доступ на чтение и хосту 192.168.1.12 иметь полный доступ на SNMP чтение / запись к устройствам.