Dienstag, 16. Januar 2018

Логирование в Cisco

Устройства Cisco позволяют писать подробные "лог" журналы, позволяющие анализировать состояние устройств, выявлять проблемы и разбирать сетевые инциденты. Глубина логирования это как всегда компромисс между сбором максимально возможной информации и возможностью проанализировать этот объем. Анализ логов необходимо производить регулярно, а при большом количестве устройств имеет смысл установки в сети единого сервера логирования и, возможно, автоматизировать процесс анализа критичных событий.

Способы логирования

Существует шесть способов сбора лог-информации с устройств Cisco:
  1. Console logging - вывод сообщений на консоль маршрутизатора, т.е. для их чтения нужно быть подключенным к консоли.
  2. Buffered logging - в этом случае все лог-сообщения будут размещаться в оперативной памяти маршрутизатора. Просмотреть их можно командой show logging, но следует помнить, что буфер сбора логов ограничен и при большом количестве сообщений старые записи будут затёрты более новыми и будут потеряны. Размер буфера можно менять.
  3. Terminal logging - выводятся лог-сообщения на VTY терминал. По умолчанию функция отключена, чтобы включить надо ввести в терминале команду terminal monitor.
  4. Syslog - устройство будит посылать лог сообщения на один или несколько внешних syslog серверов.
  5. SNMP traps - устройство Cisco будет посылать посылать SNMP сообщения (traps) на один или несколько SNMP серверов для сбора событий происходящих на маршрутизаторе.
  6. AAA accounting - если использовать AAA, то можно заставить устройство отправлять информацию о подключениях администраторов к устройству и командах выполненных на маршрутизаторе во время этого подключения на NAS (Network Access Server) сервер.
Каждый из способов сбора лог сообщений можно включить либо отключить, а также настроить на каждом глубину (уровень) логирования. Всего существует 8 уровней от 0 до 7:
  • 0    Emergencies   Система не работоспособна 
  • 1    Alerts        Необходимо срочное вмешательство 
  • 2    Critical      Критические события 
  • 3    Errors        Сообщения о ошибках 
  • 4    Warning       Всевозможные предупреждения
  • 5    Notifications Различные важные уведомления
  • 6    Informational Информационные сообшения
  • 7    Debugging     Отладочые сообщения
Чем больше номер уровня тем большее количество информации будет сообщать устройство. Так, уровень №6 будет содержать информацию всех остальных уровней с меньшими номерами.

Метки времени

В записях логов Cisco возможно использование двух типов меток времени – промежуток времени, прошедший с момента включения устройства (uptime) и текущие дата и время (по-умолчанию).
Для настройки uptime используется команда:
(config)#service timestamps log uptime
Для того чтобы заставить маршрутизатор Cisco снабжать все лог сообщения подробным временем их происхождения, следует использовать команду service timestamps log datetime, которая имеет несколько опций:
  • msec - указывать миллисекунды в каждой лог записи, без этой опции лог сообщения будут иметь временные отметки глубиной до секунды; 
  • localtime - эта опция указывает устройству использовать местное время для лог записей, рекомендуется использовать её для упрощения понимания логов. Однако следует помнить о возможной путанице, если несколько маршрутизаторов с разных часовых поясов,буду писать свои логи на один syslog сервер;
  • show-timezone - при помощи данной опции можно заставить устройство cisco указывать текущий часовой пояс в каждом лог сообщении, при помощи этой опции можно упростить разбор лог сообщений от нескольких устройств с разными часовыми поясами;
Ещё пара команд для правильного отображения времени в логах. 
Для отображения локального времени в логах в памяти устройства применяется команда:
(config)#service timestamps log datetime localtime
 Ну и ещё одна команда для режима отладки (debugging):
(config)#service timestamps debug datetime localtime

Console logging

Как было сказано выше, для их чтения этого вида логов нужно быть подключенным к консоли устройства. По-умолчанию уровень логирования на консоле 5 (Notifications). Поменять его можно командой:
R7(config)# logging console 6
или
R7(config)# logging console informational
Также может быть очень полезной команда logging synchronous на консоль, это упростит чтение логов.

Buffered logging

Запись логов в оперативную память. Как правило, сейчас устройства обладают достаточным количеством оперативной памяти поэтому лог размером, например 52000 байт не будет критичным для устройства Cisco.
R7(config)# logging buffered 52000
R7(config)# logging buffered informational

Terminal logging

Terminal logging настроен по-умолчанию, но на VTY терминалы логи не выводятся. Для включения вывода логирования, в момент когда вы подключены к устройству по telnet или ssh необходимо ввести команду terminal monitor в привилегированном режиме. Отключение вывода лог сообщений: terminal no monitor
R7(config)# logging monitor warning
R7# terminal monitor

Syslog

Вывод лог информации на syslog сервер. Является наиболее удобным методом анализа логов, в случае, когда имеется большое количество устройств. Метод позволяет централизовать сбор логов. Здесь используются настройки syslog, настраивается категория (facility), уровень логов отправляемых на сервер, ip-адрес syslog сервера и адрес устройства с которого будут отсылаться логи (здесь логично использовать Loopback):
R7(config)#logging facility local2
R7(config)#logging trap notifications
R7(config)#logging source-interface Loopback1
R7(config)#logging host 10.10.10.1
Ещё дополнительна команды для удобства чтения логов, она добавляет имя устройства к каждой записи:
R7(config)logging origin-id hostname

Безопасность syslog сервера

По-умолчанию большинство syslog серверов принимают все сообщения. Поэтому злоумышленник может зафлудить сервер ложными или не интересными нам сообщениями. Чтобы этого избежать, считается хорошим тоном ограничить прием сообщений  syslog сервером, таким образом чтобы он мог работать только с внутренней сетью предприятия, либо (если предприятие большое и ip пространство хорошо спланировано) только с сетями выделенными под управление сетевыми устройствами. Сервер принимает сообщения на порту 514 (UDP).
Также контроль целостности лог файла можно косвенно осуществлять по порядковому номеру записи. У каждой последующей записи увеличивается порядковый номер. Если злоумышленник имеет доступ к лог файлу, то порядковые номера он конечно сможет подделать. Включение порядковых номеров в лог сообщениях осуществляется командой:
R7(config)#service sequence-numbers

Ограничение количества лог сообщений

Это бывает необходимо, так как при происхождении некоторых событий, устройство может сгенерировать тысячи сообщений с секунду, что может перегрузить сервер. Делается это командой:
R7(config)#logging rate-limit all 15
Но логичнее ставить ограничение по уровням.
R7(config)#logging rate-limit 15 except warnings
 В первом случае ограничиваются все сообщения 15-ю сообщениями в секунду, во втором случае ограничивается 15-ю сообщениями в секунду только уровень 4 (Warning).

AAA Accounting

Позволяет получить дополнительную информацию с устройств Cisco, которая не можут быть получена вышеуказанными способами. Для этого может понадобиться сервер TACACS. Об ААА и TACACS я писал здесь.

Полезные команды связанные с логированием

Логирование нарушения списков доступа (ACL). Бывает полезно при разборе сетевых. инцидентов. В стандартных списков доступа в интересующей стройке указывается параметр log, который позволяет фиксировать тип, дату и время нарушения списка доступа. В расширенном списке доступа можно в интересующей строке внести параметр log-input позволяющий получать ещё и такую информацию как интерфейс и MAC-адрес источника.
На контроле списка доступа можно построить логирование попыток доступа к устройству Cisco.
ip access-list extended acl-CiscoAccess
 permit 10.10.10.0 0.0.0.63
 deny any log-input
...
line vty 0 15
 access-class acl-CiscoAccess in
На устройство могут заходить только админы из сети 10.10.10.0/26, все остальные попытки будут отклоняться и логироваться.

Логирование событий серверов и клиентов, работающих на устройстве. Например, для настройки логирования событий SSH сервера используется команда:
(config)#ip ssh logging events
Для логирования событий синхронизации времени по NTP:
(config)#ntp logging
Дальнейшие команды актуальны только при отсутствии TACACS сервера. 
Запись в журнал всех попыток подключения к устройству:
(config)# login on-failure log
(config)# login on-success log
Запись в лог всех вводимых команд:
archive
 log config
 logging enable
 notify syslog contenttype plaintext
 hidekeys
Для настройки логирования информации о переключения пользователя в привилегированный режим и изменения уровня его привилегий (команды enable/disable) на устройстве Cisco используется команда:
(config)#logging userinfo

4 Kommentare:

  1. А слать логи на несколько внешних syslog серверов как выглядит команда?

    AntwortenLöschen
    Antworten
    1. Честно говоря в моих сетях никогда не было более одного syslog-сервера, поэтому даже не интересовался этим вопросом. Теперь после смены работы (как собственно и страны проживания) мой фокус сместился в сторону Juniper и HP-Aruba. Так что и поэкспериментировать сейчас негде, разве что в GNS3.

      Löschen
  2. Antworten
    1. Просто дописываете ip адрес логсервера еще и все. Н-р: logging host 20.20.20.1

      Löschen