Cat2950
Материал из OpenWiki
Данный шаблон предназначен для коммутаторов Catalyst 2950, но с минимальными изменениями может быть использован для других Catalyst'ов
- Алгоритм обработки пакетов rlogin и telnet для оптимизации ими полосы пропускания. Смысл его при работе telnet-а происходит передача каждого символа в отдельном пакете. Соответственно к 40 байтам IP/TCP заголовков добавляется 1 байт полезной нагрузки. Алгоритм Нагля накапливает байты и отправляет их не в соответствии с механизмом плавающего окна, а только после получения ACK от удаленного узла. Таким образом, алгоритм Нагля оптимизирует полосу пропускания. Включать имеет смысл только на каналах с маленькой полосой пропускания более подробно про эту команду можно посмотреть на cisco.com, а про сам алгоритм в RFC896.
service nagle
- На каталистах этот сервис не нужен. Насколько знаю это что-то связанное с X.25
no service pad
- Периодически посылать пакеты, даже если сессия неактивна. Об этом можно почитать на cisco.com в статье Using service tcp-keepalives to Avoid Hung Telnet Sessions. Нужно чтобы:
- NAT не разрывал соединение
- Чтоб зависшая сессия не висела долго, если нет 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
Продолжение выложу в ближайшее время