Cat2950

Материал из OpenWiki
Перейти к: навигация, поиск

Данный шаблон предназначен для коммутаторов Catalyst 2950, но с минимальными изменениями может быть использован для других Catalyst'ов

  • Алгоритм обработки пакетов rlogin и telnet для оптимизации ими полосы пропускания. Смысл его при работе telnet-а происходит передача каждого символа в отдельном пакете. Соответственно к 40 байтам IP/TCP заголовков добавляется 1 байт полезной нагрузки. Алгоритм Нагля накапливает байты и отправляет их не в соответствии с механизмом плавающего окна, а только после получения ACK от удаленного узла. Таким образом, алгоритм Нагля оптимизирует полосу пропускания. Включать имеет смысл только на каналах с маленькой полосой пропускания более подробно про эту команду можно посмотреть на cisco.com, а про сам алгоритм в RFC896.
   service nagle
  • На каталистах этот сервис не нужен. Насколько знаю это что-то связанное с X.25
   no service pad
  1. NAT не разрывал соединение
  2. Чтоб зависшая сессия не висела долго, если нет keepalive пакетов сессия сбрасывается.
   service tcp-keepalives-in
   service tcp-keepalives-out
  • В дебаге указывать местное время с точностью до милисекунд
   service timestamps debug datetime msec localtime
  • В логе указывать местное время
   service timestamps log datetime localtime
  • Скрывать пароли от случайного подглядывания. На вид они не читаются, но есть алгоритм, который позволяет узнать исходный пароль.
   service password-encryption
  • Нумеровать сообщения, которые пишутся в лог это позволяет узнать, что какие то сообщения были потеряны либо из-за rate-limit на самой циске, либо при передаче по сети (это возможно, так как протокол syslog использует udp, и повтороной отправки сообщений нет)
   service sequence-numbers
  • отключаем dhcp все равно на каталисте он не нужен, только занимает память и снижает защищенность
   no service dhcp
  • Имя это sw_порядковый_номер_коммутатора_на_данной_точке . обозначение_точки_присутствия
   hostname sw1.msk8
  • Выделить в оперативной памяти буфер 256 Кб для записи логов не смотря на то, что логи пишутся по сети на сервер, если связь по сети временно отсутствовала, то посмотреть ошибки можно будет только в локальном буфере командой show logging
   logging buffered 262144 debugging
  • Писать в лог не больше 10 сообщений (уровня debugging, informational и notifications) в секунду, чтоб не вызвать этим перегрузку. Сообщения уровня warnings и выше (errors, critical, alerts, emergencies) пишутся не смотря на это ограничение скорости
   logging rate-limit 10 except warnings
  • На консоль (rs-232) выводить только критические сообщения, т. к. вывод сообщений на консоль замедляет работу
   logging console critical
  • Включаем AAA
   aaa new-model
  • По умолчанию при заходе на каталист (через telnet или console) аутентификация идет через tacacs+. Если tacacs+ сервер недоступен, то для входа используется enable secret (логин при этом не спрашивается, сразу пароль)
   aaa authentication login default group tacacs+ enable
  • Авторизация идет через tacacs+, если он недоступен то авторизацию проходит любой, кто прошел аутентификацию, т. е. ввел enable secret
   aaa authorization exec default group tacacs+ if-authenticated
  • Посылать stop-пакет, если был неправильно введен логин/пароль нужно, чтобы в /var/log/tac_plus.acct попадали попытки подобрать пароль
   aaa accounting send stop-record authentication failure
  • Для учета работы через телнет использовать tacacs+ записи о том, что когда заходил на циску и когда выходил пишутся в /var/log/tac_plus.acct
   aaa accounting exec default start-stop group tacacs+
  • Посылать на tacacs+ сообщения о перезагрузке каталиста
   aaa accounting system default start-stop group tacacs+
  • Задаем enable, чтоб если tacacs+ не работает по нему мы зайти на каталист
   enable secret ***
  • Указываем часовой пояс, разница времени по сравнению с UTC 3 часа
   clock timezone MSK 3
  • Когда переводить часы на летнее время
   clock summer-time MSD recurring last Sun Mar 2:00 last Sun Oct 2:00
  • Автоматически восстанавливать работу порта, если он отключился по port security по прошествии errdisable recovery interval если посторонних мак-адресов на порту больше нет
   errdisable recovery cause security-violation
  • В состоянии errdisable порт находится 120 секунд, после этого пробует включиться если для данной причины была указана команда errdisable recovery cause
   errdisable recovery interval 120
  • Разрешить использование 0 в номере подсети
   ip subnet-zero
  • Запретить обработку опций ip пакета source routing в современных сетях это не используется для нормальной работы и нужно отключить из соображений безопасности
   no ip source-route
  • Ограничить скорость посылаемых каталистом icmp пакетов типа destination unreachable до 1-го пакета в секунду (1000 мс)
   ip icmp rate-limit unreachable 1000
  • То же самое но для icmp destination unreachable, подтип fragmentation is needed and DF set
   ip icmp rate-limit unreachable DF 1000
  • Включаем TCP Selective Acknowledgment для повышения производительности tcp на каналах, где есть потери пакетов. Более подробно про SACK можно прочитать в RFC2018 если в пределах окна было потеряно несколько пакетов, SACK позволяет повторно отправить только потерянные пакеты, а не все пакеты, начиная с первого потеряно. Например, без SACK если были посланы пакеты с 1-го по 8-й и потеряны 4-й и 7-й пакеты, то передающий хост получить подтверждение о приеме только 1, 2 и 3-го пакетов и должен будет повторно отправить 4, 5, 6, 7, 8. Если включить SACK то будет получены подтверждения для пакетов 1, 2, 3, 5, 6, 8 и повторно нужно будет отправить только 4-й и 7-й пакеты.
   ip tcp selective-ack
  • Включаем опцию TCP timestamp для более точного измерения RTT что повышает производительность TCP более подробно описано в RFC1323
   ip tcp timestamp
  • Включаем path mtu discovery, который необходим, если по маршруту есть участки с mtu меньше чем 1500 байт более подробно можно прочитать про эту команду на cisco.com
   ip tcp path-mtu-discovery
  • Указываем список доменов, который подставляют когда указано только имя хоста, без указания домена (в командах ping, traceroute, telnet и др.)
   ip domain-list example.ru
   ip domain-list msk8.example.ru
  • имя домена для данного хоста
   ip domain-name example.ru
  • наши ДНС сервера
   ip name-server 192.168.4.68
   ip name-server 192.168.6.6
  • per vlan spanning tree
   spanning-tree mode pvst
  • включать по умолчанию bpdufilter для портов с настройкой spanning-tree portfast
   spanning-tree portfast bpdufilter default
  • описание этой команды на cisco.com найти не удалось
   no spanning-tree optimize bpdu transmission
  • использовать расширения 802.1t для pvst
   spanning-tree extend system-id
  • Порт, подключенный к маршрутизатору или серверу на котром настроен inter-vlan routing
   interface FastEthernet0/1
         ! перед любым description ставим -- чтобы он не сливался с конфигом, а выделялся
         description -- to gw1.msk8
         ! 802.1q транк
         switchport mode trunk
         ! отключаем DTP - не распознавать режим (mode access или mode trunk) автоматически
         switchport nonegotiate
         ! загрузка интерфейса, показываемая в show int, вычисляется за последние 60 секунд
         load-interval 60
         ! сразу переводить порт в forwarding без задержки
         spanning-tree portfast trunk
  • Порт, к которому подключен другой коммутатор. Обращаю внимание, что spanning-tree portfast в этом случае прописывать нельзя
   interface FastEthernet0/2
         description -- to sw2.msk8
         switchport mode trunk
         switchport nonegotiate
         load-interval 60
  • Настройки порта для клиента, подключенного к общему vlan. Чтобы он не мог менять Ip на маршрутизаторе с помощью static arp привязываем ip к mac, а чтобы не мог менять mac прописываем на порту port-security
   interface FastEthernet0/3
         description -- 1111 Firmname, location1
         switchport access vlan 100
         switchport mode access
         ! отключаем DTP, чтоб клиент не смог перевести порт в режим trunk
         switchport nonegotiate
         switchport port-security
         load-interval 60
         ! отключаем на клиентских портах cdp  клиентам не нужно знать технически подробности нашего оборудования
         no cdp enable
         ! сразу переводить порт в forwarding без задержки, кроме того на таких портах у нас по умолчанию включается bpdufilter
         spanning-tree portfast
  • Клиент для которого выделен отдельный vlan
   interface FastEthernet0/4
         description -- 2222 Firm2name, location2
         switchport access vlan 14
         switchport mode access
         switchport nonegotiate
         load-interval 60
         no cdp enable
         spanning-tree portfast
  • Неиспользуемые порты помещаем в 1001 vlan чтоб они не имели доступа к сети. shutdown на таких портах не делам, чтоб видеть подключено к ним что то или нет.
   interface FastEthernet0/5
         switchport access vlan 1001
         switchport mode access
         switchport nonegotiate
         load-interval 60
         spanning-tree portfast
! .........................
! .........................

   interface FastEthernet0/24
         switchport access vlan 1001
         switchport mode access
         switchport nonegotiate
         load-interval 60
         spanning-tree portfast
  • Интерфейс, через который мы получаем доступ к коммутатору
   interface Vlan1
         description -- management interface
         ip address 192.168.4.51 255.255.255.248
         no ip redirects
         no ip proxy-arp
         no ip route-cache
  • Шлюз по умолчанию

ip default-gateway 192.168.4.49

  • Отключаем веб интерфейс. Во многих версиях IOS он подвержен DoS.

no ip http server

  • Ограничиваем доступ к коммутатру по telnet. Это особенно актуально учитывая что пароль при подключении по telnet передается открытым текстом, и нужны дополнительные меры для защиты от подключения извне
ip access-list extended vty-access
   remark hosts permitted to access the router
   permit tcp 192.168.4.0 0.0.0.255 any
   permit tcp 192.168.6.0 0.0.0.7 any
   deny tcp any any range 0 65535 log-input
   deny ip any any log-input
  • сервер на который мы по сети пишем логи. На нем настроен syslogd
logging 192.168.4.67
  • Сервера по которым мы можем синхронизировать время если не использовать этот access list то у злоумышленника будет шанс изменить время на коммутаторе
access-list 2 remark ntp hosts to which the router can synchronize
access-list 2 permit 192.168.4.80
access-list 2 permit 192.168.4.68
access-list 2 deny any log
  • Указываем на какие сервера можно копировать конфигурацию (или с каких), если дана команда по snmp. Без этого включать WR snmp community небезопасно.
access-list 4 remark tftp servers to/from which config download/upload is permitted
access-list 4 permit 192.168.4.67
access-list 4 deny any
  • Ограничиваем доступ по snmp на чтение.
access-list 5 remark hosts permitted to read snmp MIBs on the switch
access-list 5 permit 192.168.4.34
access-list 5 permit 192.168.4.64 0.0.0.7
access-list 5 deny any log
  • Ограничиваем доступ по snmp на запись. Чем меньше хостов здесь указаны, тем спокойнее можно спать.
access-list 6 remark hosts permitted to write snmp MIBs on the switch
access-list 6 permit 192.168.4.67
access-list 6 deny any log
  • snmp community для доступа на чтение. Я предпочитаю генерировать случайную строку программой pwgen. 5 номер акцесс листа.
snmp-server community RohShee1 RO 5
  • То же самое но с доступом на запись. Обязательно указываем aceess list
snmp-server community Uwee2xoh RW 6
  • Физическое расположение сервера. Настоятельно рекомендую указывать, чтоб не перепутать что где стоит. Когда каталистов в сети много помнить наизусть это нереально.
snmp-server location Petrovka 37, 2 floor, room 220
  • контактная информация
snmp-server contact noc@example.ru
  • акцесс лист с адресами куда можно по tftp копировать конфиг, если была команда на это по snmp
snmp-server tftp-server-list 4
  • такой же ключик указывается в конфиге сервере tacacs+
tacacs-server host 192.168.4.67 key wooRop2l

Продолжение выложу в ближайшее время