Признаться, я порядком подустал в процессе этой лабароторки. Сегодня "свежая струя", скажем так. Ну вот прям по списку и пойдем...
8. Management (IPv4/IPv6)
- SNMP v2
- SNMP v3
- TFTP/SCP operation
- Archives
- Syslog
- Netflow
- VTY ACL (IPv4/IPv6)
- Debugging (conditional)
- Time Based ACL
- NTP (Server, Peer, Client, Authentication, ACL)
- TACACS server
- uRPF
SNMPv2
Тут все довольно просто. Указываем сервер, community и ACL, который ограничивает доступ. Настроим, например, на О3.
snmp-server community SECRET_COMMUNITY RO 10
snmp-server community WRITE_COMMUNITY RW 10
access-list 10 permit 192.168.0.100
Теперь заходим на наш SNMP Manager, роль которого выполняет Cacti. Для начала указываем адрес и community.
Далее проходит проверка
После этого Cacti будет строить несколько графиков для устройства O3.
Далее проходит проверка
После этого Cacti будет строить несколько графиков для устройства O3.
SNMPv3
Здесь немного улучшили вопрос безопасности, но в продакшене я SNMPv3 так и не видел.
В SNMPv3 есть три "стратегии":
- noAuthNoPriv - для аутентификации используется username, шифрования нет
- AuthNoPriv - аутентификация с помощью MD5 или SHA-1, шифрования нет
- AuthPriv - аутентификация с помощью MD5 или SHA-1, шифрование с помощью DES, 3DES, AES
Также в SNMPv3 используется концепция USER, GROUP, VIEW.
- VIEW
- GROUP
- USER
Произведем настройки на E5.
Первым делом создадим ACL для ограничения доступа.
access-list 10 permit 192.168.0.100
Создадим два VIEW. Один с полным доступом к дереву MIB, второй только для просмотра Up Time.
snmp-server view ALL iso included
snmp-server view UPTIME_ONLY sysUpTime included
Создадим пару групп. Первая группа сможет и читать и писать во view ALL. Дополнительно указываем ACL. Вторая группа сможет только читать данные из view с именем UPTIME_ONLY. Наворачиваем ACL и здесь. В первой группе используем модель priv, что означает, что мы будем использовать максимально защищенную стратегию AuthPriv. Вторая группа использует политику auth, т.е. шифрования нет.
snmp-server group RW v3 priv read ALL write ALL access 10
snmp-server group OPERATORS v3 auth read UPTIME_ONLY access 10
Теперь создаем пользователей и помещаем их в группы. Здесь же указываем аутентификацию и параметры шифрования. Первый пользователь - administrator, использует SHA аутентификацию с паролем admin_pass и шифрование с алгоритмом AES 128 c ключом CRYPTO_KEY. Второй пользователь - operator, для него мы ничего шифровать не собираемся, использует пароль oper_pass по алгоритму SHA.
snmp-server user administrator RW v3 auth sha admin_pass priv aes 128 CRYPTO_KEY
snmp-server user operator RW v3 auth sha oper_pass
Все. Юзеров, к слову, в CLI в running-config посмотреть не получится, только специфическими командами show.
TFTP
Для начала старый добрый TFTP. На стороне клиента самый обычный tftpd-hpa со следующими настройками.
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
Заходим на E5 и копируем running-config, например.
Смотрим на сервере
SCP
По сути, это способ передавать файлы поверх SSH. Удобно. На стороне наших устройств нужно дать всего лишь две команды.
ip scp server enable
aaa authorization exec default local
После чего без труда копируем конфиг прям с нашей линукс машины средствами стандартного SCP.
Archives
Простой способ бекапить конфигурацию устройств по расписанию или при сохранении конфигурации.
Настройка проста. Указываем путь. Используем две переменные ($h - имя хоста, $t - время). Далее указываем, что мы хотим бэкапить конфиг при выполнении команды wr. Ну и раз в сутки (1440 минут) тоже не помешает.
archive
path tftp://192.168.0.100/$h-$t
write-memory
time-period 1440
Теперь, когда мы будем выполнять wr, мы увидим маленький такой восклицательный знак...
Это значит, что конфиг был отправлен на tftp сервер. Это можно проверить как локально
, так на сервере
К слову, можно их ещё и сравнивать. Команда show archive config diff не уместилась на скриншоте.
Вообще, штука очень полезная и простая в настройках.
Syslog
Этот сервис позволяет слать логи на удаленный сервер, что удобно, если устройство, например, совсем умерло. Есть и возможность слать вообще все команды на syslog. Со стороны сервера обычный rsysog c практически дефолтными настройками. Скажу лишь, что накрутить там можно многое. И ротацию и разбор по директориям и прочее такое.
Настроить отправку логов на уделаннеый syslog сервер очено просто.
logging host 192.168.0.100
Также сделаем необходимые изменения в секции archive, включим отправку всех команд на syslog.
archive
log config
logging enable
notify syslog contenttype plaintext
path tftp://192.168.0.100/$h-$t
write-memory
time-period 1440
log config
logging enable
notify syslog contenttype plaintext
path tftp://192.168.0.100/$h-$t
write-memory
time-period 1440
Немного поконфигурируем E5 и глянем в логи на сервере.
Netflow
Настроить NetFlow в Cisco можно разными способами. Мы же настроим простейший вариант. Будем отслеживать что там делает наш одинокий клиент только в диагностических целях. Будем смотреть на порт e0/3 на R5 и отправлять флоу на наш сервер, на котором запущен nfcapd командой nfcapd -p 2056 -l /tmp.
На R5 настраиваем сам net-flow
ip flow-export source Loopback2
ip flow-export version 9
ip flow-export interface-names
ip flow-export destination 192.168.0.100 2056
ip flow-export version 9
ip flow-export interface-names
ip flow-export destination 192.168.0.100 2056
И запихивает туда все с интерфейса e0/3
interface Ethernet0/3
ip vrf forwarding CUSTOMER1
ip address 10.0.1.1 255.255.255.0
ip flow ingress
ip flow egress
ip vrf forwarding CUSTOMER1
ip address 10.0.1.1 255.255.255.0
ip flow ingress
ip flow egress
Можно посмотреть локальные net-flow данные.
Так, соответствующая flow должна прилететь на нашу линукс машину. Чем там клиент занимается? Пингует что-то...
VTY ACL
Все тривиально. Создаем ACL
ip access-list extended VTY_ACCESS
permit ip 10.0.0.0 0.255.255.255 any
permit ip 10.0.0.0 0.255.255.255 any
Вешаем на VTY
line vty 0 4
access-class VTY_ACCESS in
exec-timeout 0 0
transport input ssh
access-class VTY_ACCESS in
exec-timeout 0 0
transport input ssh
Теперь попробуем зайти на устройство R5 с подсети 10.0.0.0/8.
А вот с сервера 192.168.0.100 не работает.
Debugging
Про обычный дебаг все ясно, а вот с conditional не совсем. Этот инструмент позволяет как-то сузить поиски и сократить количество сообщений валящихся в дебаг.
Допустим, нужно отдебажить RIP на R5, но нас интересует только интерфейс eth0/0. Установим соответствующий condition. Их может быть и несколько, кстати. Далее запускаем debug и радуемся.
Time-based ACL
Позволяют нам применять ACL по времени. Например, пусть на R5 можно будет зайти только в рабочее время. Доработаем уже существующий ACL, но сначала нужно создать сам time-range.
time-range WORKDAYS
periodic weekdays 8:00 to 17:00
periodic weekdays 8:00 to 17:00
!
ip access-list extended VTY_ACCESS
permit ip 10.0.0.0 0.255.255.255 any
permit ip 10.0.0.0 0.255.255.255 any time-range WORKDAYS
permit ip 10.0.0.0 0.255.255.255 any
permit ip 10.0.0.0 0.255.255.255 any time-range WORKDAYS
Ну и как бы все.
NTP
Тут все несколько сложней и надо освежать знания из CCNP Switch.
Сущесвтует три режима NTP:
- Server - является источником времени для клиентов
- Client - получает время от серверов синхронизируя с ними часы
- Peer - синхронизирует время в двустороннем порядке с другим пиром
Доставлять время клиентам можно как средствами broadcast, так и multicast.
В нашей топологии E3/R2 и E4/O2 будут является серверами для всей сети. Между собой они будут синхронизировать время и являться пирами. На них абсолютно симметричная настройка.
clock timezone MSK 3 0
ntp master 1
ntp peer 10.0.30.X
ntp peer 10.0.30.X
После чего они начнут синхронизировать свои часы.
Подвох в том, что сервера у нас два и IP у них два, а нужен один. Логично настроить FHRP, хоть он и в скойпе CCNP Switch. Для этого немного изменим подсеть на линке между E3/R2 и E4/O2, чтобы в неё влез Virtual IP.
interface Ethernet0/1
ip address 10.30.34.1 255.255.255.0
standby 1 ip 10.30.34.100
ipv6 address 2001:A:0:3034::A/127
ip address 10.30.34.1 255.255.255.0
standby 1 ip 10.30.34.100
ipv6 address 2001:A:0:3034::A/127
interface Ethernet0/1
ip address 10.30.34.2 255.255.255.0
standby 1 ip 10.30.34.100
ipv6 address 2001:A:0:3034::B/127
ip address 10.30.34.2 255.255.255.0
standby 1 ip 10.30.34.100
ipv6 address 2001:A:0:3034::B/127
Теперь настроим на всей остальной сети NTP сервер 10.30.34.100. Active HSRP нода будет обрабатывать запросы до тех пор, пока с ней что-то не случится. Обратимся к E7, пока что достаточно только одной команды ntp server 10.30.34.100.
Добавим немного секьюрности. Во-первых, мы можем авторизовать источник (!) по ключу. Т.е. мы настраиваем на сервере некий ключ, если клиент ему доверяет, он будет синхронизировать время, если нет, то нет.
На серверах указываем ключ и включаем аутентификацию
ntp authentication-key 1 md5 NTP_KEY
ntp authenticate
ntp trusted-key 1
ntp authenticate
ntp trusted-key 1
На клиенте делаем похожие операции. Крепим его к серверу.
ntp authentication-key 1 md5 NTP_KEY
ntp authenticate
ntp trusted-key 1
ntp server 10.30.34.100 key 1
ntp authenticate
ntp trusted-key 1
ntp server 10.30.34.100 key 1
После чего, все продолжает работать в номральном режиме.
Вопрос. Что будет, если мы уберем ассоциацию ключа и сервера на клиенте? Перестанет ли синхронизироваться время. Правильный ответ - нет. Все будет работать как и раньше. Потому что мы аутентифицируем не клиента, а источник времени - сервер. А вот если на сервере нет соотвесвтующего ключа, а клиент его хочет видеть, то синхронизация не произойдет.
Можно ещё и ACL навернуть на серверах, чтобы абы кто не лез со своими запросами. Настроим пару ACL, одним будем ограничивать то, с кем мы будем пириться. А вторым обозначим клиентов.
access-list 2 permit 10.30.34.0 0.0.0.255
access-list 3 permit 10.0.0.0 0.255.255.255
Далее применяем их в соответствующих направлениях.
ntp access-group peer 2
ntp access-group serve-only 3
ntp access-group serve-only 3
TACACS server
Ох, моя любимая тема. Такие протоколы как TACACS или RADIUS позволяют выносить AAA за пределы устройства.
Ещё при подготовке окружения я смастерил простенький конфиг.
key = "supersecretkey"
user = melhiour {
default service = permit
login = cleartext "melhiour"
member = admin
}
group = admin {
service = exec {
priv-lvl = 15
}
user = melhiour {
default service = permit
login = cleartext "melhiour"
member = admin
}
group = admin {
service = exec {
priv-lvl = 15
}
Теперь настроим Е7
Укажем сервер
tacacs server FIRST
address ipv4 192.168.0.100
key supersecretkey
address ipv4 192.168.0.100
key supersecretkey
Определим его в группу, если вдруг появится второй.
aaa group server tacacs+ TAC_GROUP
server name FIRST
server name FIRST
Теперь непосредсвтенная настройка.
Аутентификация через группу, если не получится, то локально. Авторизация консоли включена. Авторизация команд - с TACACS сервера или локально, но только если пользователь аутентифицирован. Отправляем начало и конец конфигурирования на TACACS, как и сами команды, но только 15го уровня.
aaa authentication login default group TAC_GROUP local
aaa authorization console
aaa authorization exec default group TAC_GROUP local if-authenticated
aaa accounting exec default start-stop group TAC_GROUP
aaa accounting commands 15 default start-stop group TAC_GROUP
aaa authorization console
aaa authorization exec default group TAC_GROUP local if-authenticated
aaa accounting exec default start-stop group TAC_GROUP
aaa accounting commands 15 default start-stop group TAC_GROUP
Т.к. используем группу default, то указывать его на VTY и консоли нет смысла. Если бы группа была отлично от дефолтной, то везде пришлось бы её указывать.
Теперь SSH будет использовать TACACS, в случае его недоступности - локальную базу пользователей.
Зайдем на E7 через SSH и "выстрелим себе в ногу".
На сервере теперь можно посмотреть, кто это сделал.
uRPF
Позволяет отслеживать ситуацию с несимметричным роутингом. Каждый раз при получении пакета, роутер будет проверять в какой интерфейс пришел пакет. Сущесвует несколько режимов:
- Strict mode - Если роутер не использует этот интерфейс для передачи трафика обратно, то он такой пакет прибьет.
- Loose mode - роутер будет проверять только доступность источнка по своей таблице маршрутизации. С опцией allow-default маршрут по умолчанию тоже будет учитываться.
Команды довольно просты.
ip verify unicast source reachable-via rx
ip verify unicast source reachable-via any allow-default
ip verify unicast source reachable-via any allow-default
Фух...
8. Management (IPv4/IPv6)
- SNMP v2
- SNMP v3
- TFTP/SCP operation
- Archives
- Syslog
- Netflow
- VTY ACL (IPv4/IPv6)
- Debugging (conditional)
- Time Based ACL
- NTP (Server, Peer, Client, Authentication, ACL)
- TACACS server
- uRPF
Комментариев нет:
Отправить комментарий