Шаблон базовой настройки маршрутизатора Cisco

    В последнее время приходится часто настраивать с нуля маршрутизаторы Cisco (в основном 800-1800 серии) для филиалов моей компании и дабы не набирать одни и теже команды третий десяток раз составил для себя небольшой шаблон настроек на разные случаи жизни. Сразу скажу что сертификаты от Cisco не получал, книжек по данным роутерам особо не читал, весь свой опыт приобрел методом научного тыка, курением мануалов на cisco.com и кое каким вдумчивым заимствованием кусков чужих конфигов…

    Итак распаковываем роутер, заливаем последнюю прошивку (для SSH необходим минимум Advanced Security), делаем
    #erase startup-config
    дабы избавится от преднастроеного мусора и перегружаемся.

    Настройка авторизации и доступа по SSH



    ! включаем шифрование паролей
    service password-encryption
    ! используем новую модель ААА и локальную базу пользователей
    aaa new-model
    aaa authentication login default local
    ! заводим пользователя с максимальными правами
    username admin privilege 15 secret PASSWORD

    ! даем имя роутеру
    hostname <...>
    ip domain-name router.domain
    ! генерируем ключик для SSH
    crypto key generate rsa modulus 1024
    ! тюнингуем SSH
    ip ssh time-out 60
    ip ssh authentication-retries 2
    ip ssh version 2
    ! и разрешаем его на удаленной консоли
    line vty 0 4
     transport input telnet ssh
     privilege level 15


    Настройка роутинга



    ! включаем ускоренную коммутацию пакетов
    ip cef

    Настройка времени



    ! временная зона GMT+2
    clock timezone Ukraine 2
    clock summer-time Ukraine recurring last Sun Mar 2:00 last Sun Oct 2:00
    ! обновление системных часов по NTP
    ntp update-calendar
    ! ntp сервера лучше задавать по айпи, ибо если при перегрузке DNS-сервера не доступны то настройки по именам слетают…
    ntp server NTP.SERVER.1.IP
    ntp server NTP.SERVER.2.IP

    Архивирование конфигов



    ! включаем архивирование всех изменений конфига, скрывая пароли в логах
    archive
     log config
      logging enable
      hidekeys


    ! историю изменения конфига можно посмотреть командой
    show archive log config all

    Настройка DNS



    ! включить разрешение имен
    ip domain-lookup
    ! включаем внутренний DNS сервер
    ip dns server
    ! прописываем DNS провайдера
    ip name-server XXX.XXX.XXX.XXX
    ! на всякий случай добавляем несколько публичных DNS серверов
    ip name-server 4.2.2.2
    ip name-server 208.67.222.222
    ip name-server 208.67.220.220


    Настройка локальной сети



    ! обычно порты внутреннего свитча на роутере объединены в Vlan1
    interface Vlan1
     description === LAN ===
     ip address 192.168.???.1


    ! включаем на интерфейсе подсчет пакетов передаваемых клиентам — удобно просматривать кто съедает трафик
     ip accounting output-packets

    ! посмотреть статистику можно командой
    show ip accounting
    ! очистить
    clear ip accounting

    Настройка DHCP сервера



    ! исключаем некоторые адреса из пула
    ip dhcp excluded-address 192.168.???.1 192.168.???.99
    ! и настраиваем пул адресов
    ip dhcp pool LAN
       network 192.168.???.0 255.255.255.0
       default-router 192.168.???.1
       dns-server 192.168.???.1


    Настройка Internet и Firewall



    ! настраиваем фильтр входящего трафика (по умолчанию все запрещено)
    ip access-list extended FIREWALL
     permit tcp any any eq 22


    ! включаем инспектирование трафика между локальной сетью и Интернетом
    ip inspect name INSPECT_OUT dns
    ip inspect name INSPECT_OUT icmp
    ip inspect name INSPECT_OUT ntp
    ip inspect name INSPECT_OUT tcp router-traffic
    ip inspect name INSPECT_OUT udp router-traffic
    ip inspect name INSPECT_OUT icmp router-traffic


    ! настраиваем порт в Интернет и вешаем на него некоторую защиту
    interface FastEthernet0/0
     description === Internet ===
     ip address ???.???.???.??? 255.255.255.???
     ip virtual-reassembly
     ip verify unicast reverse-path
     no ip redirects
     no ip directed-broadcast
     no ip proxy-arp
     no cdp enable
     ip inspect INSPECT_OUT out
     ip access-group FIREWALL in


    ! ну и напоследок шлюз по умолчанию
    ip route 0.0.0.0 0.0.0.0 ???.???.???.???

    Настройка NAT



    ! на Интернет интерфейсе
    interface FastEthernet0/0
     ip nat outside


    ! на локальном интерфейсе
    interface Vlan1
     ip nat inside


    ! создаем список IP имеющих доступ к NAT
    ip access-list extended NAT
     permit ip host 192.168.???.??? any


    ! включаем NAT на внешнем интерфейсе
    ip nat inside source list NAT interface FastEthernet0/0 overload

    ! добавляем инспекцию популярных протоколов
    ip inspect name INSPECT_OUT http
    ip inspect name INSPECT_OUT https
    ip inspect name INSPECT_OUT ftp

    Отключение ненужных сервисов



    no service tcp-small-servers
    no service udp-small-servers
    no service finger
    no service config
    no service pad
    no ip finger
    no ip source-route
    no ip http server
    no ip http secure-server
    no ip bootp server

    UPD. Убрал лишнее по советам хаброюзеров
    UPD2. Добавил отключение ненужных сервисов
    UPD3. Изменил настройка файрвола (спасибо Fedia)
    Поделиться публикацией
    Комментарии 47
      +3
      Спасибо.
        –3
        Конечно любопытно. Но, имхо, каждый использует роутер в своих целях, так как ему надо.
        Зачем вот мне нат, если я им не пользуюсь? Или SSH и настройки фаервола?)
        Это базовый конфиг для ваших целей. У меня для своих целей есть свой базовый конфиг =))
          +1
          Шаблон блочный, если что то не нужно — просто пропусти эти команды…
          Конечно каждый настраивает роутер как ему необходимо, но думаю данный костяк настроек будет аналогичен более чем в половине конфигов.
          Для меня это просто памятка в какой последовательности вводить какие команды, дабы ничего не пропустить.
            0
            Не заметил каких-то «особенных» целей. Все вполне популярно. Если вам NAT не надо — так и не настраивайте.
              0
              Тогда в чем смысл? Видимо слово «базовый» подразумевает, что этот конфиг подходит для всех роутеров, и после настройки базового конфига идет уже конкретика. Это в идеале.

              У нас много каталистов, которые используются как точки агрегации. Так вот там базовый конфиг — это куча вланов, дшсп пулы, оспф, авторизация, акцесс листы и тп и тд. Но это никому здесь не надо, так как у всех свои цели.

              Это я все к тому, что смысл этого топика — ноль. Без обид конечно же….
                +1
                каталисты не настраивал, там думаю своя специфика…
                Здесь мы рассматриваем маршрутизаторы в общем случае — есть LAN, есть Интернет, их надо как-то связать. Все вполне наглядно, не имея опыта в настройке оборудования cisco подобный конфиг может немного помочь. В свое время мне нечто типа подобного руководства очень не хватало — приходилось разбираться с нуля в элементарных вещах…
                Если вам это неинтересно — на Хабре много других статей которые стоит почитать…
            0
            для базовой настройки можно добавить: snmp-server, отключение console (no modem enable), отключение веб-инт-са (ip http server|secure server), отключение telnet (transport input telnet ssh) и отключение баннера входа (banner login)
              0
              snmp в филиалах я настраиваю обычно временно — для тестирования пропускной способности каналов в основном:
              snmp-server community public RO
              snmp-server ifindex persist

              а после erase startup-config по дефолту и так отключены ip http server'а и баннеры

              telnet я оставляю на всякий пожарный для экстренных случаев когда нет под рукой ssh-клиента
              0
              Базовая настройка для какого ИОСа? Скорее всего вы имеете ввиду ИОС адвансед-секурити.
              Может повторюсь, но, ИМХО, понятие базовый обозначает четкие определения среды.
              А серии 800, 1700 и 1800 различаются между собой по железу. Если я не ошибаюсь в 800 и 1700 серии нет interface FastEthernet0/0.

              Ну и я бы еще добавил netflow snmp и tacacs+ :)
                0
                Изначально писалось под обычный IOS 12.4, без Т
                Ничего нестандартного в командах вроде нет, должно во всех основных ветках работать.

                Железо конечно разное, но в конфигурировании по сути отличаются только именованием WAN интерфейсов — FastEthernet0 или FastEthernet0/0 или GigabitEthernet0 (в 890-х) это неважно. Шаблон написан для человека понимающего где у него какой интерфейс и все что ему надо так это исправить имена интерфейсов, номера локальной сети и забить параметры подключения к интернету.
                  0
                  netflow и tacacs+ я у себя не использую, к томуж по моим понятиям это выходит за рамки базового конфига ;)
                    +1
                    Это выходит за рамки у вас, а у кого-то нет :) Условия и среда у всех разная.
                    Если говорить о совсем универсальном базовом конфиге, то достаточно задать пароли, временную зону и айпи на интерфейс, с которого потом будете настраивать.

                    Обычный IOS 12.4, без Т
                    — ipbase имеете ввиду?
                    Обычно минимальная поставка такого рода железяк идет с IOS ipbase, которая не знает про ssh, dot1q и еще многие вещи.
                      0
                      нет, который mainline
                      и как минимум секьюрити фьючерсет т.к. используем VPN
                  0
                  Спасибо. Пригодится
                    0
                    Не понимаю зачем маршрутизация от источника???

                    P.S> В базовом конфиге?
                      0
                      Если честно не помню… кажись без этого VPN не работал… Мой реальный шаблон более обширен, но полон специфических для моей сети вещей…
                      –3
                      Nice!
                      thank you, and God Bless
                        0
                        Можно еще более автоматизировать. Написать на bash небольшой скрипт, в котором, в качестве входных данных будут использоваться настройки сети для определенного филиала, исходным будет конфиг, который помещается в директорию tftp и собственно от куда сам маршрутизатор забирает готовый конфиг.
                          +2
                          Коллега, не хотелось бы огульно критиковать, но есть много «НО»…

                          Если бы вы тихонько использовали бы свои конфиги я бы об этом не узнал :) Но вывесив их на обозрение вы рискуете ввести в заблуждение.

                          1. Самое мне не понятно: зачем столько фаеволинга? Зачем делать INSPECT_IN? В вашем конфиге он абсолютно бессмысленен. Он будет нужен только если на внутреннем интерфейсе тоже есть ACL, а также анонсирован какой-нить сложный протокол типа ftp.

                          2. Категорически не согласен с ip source-routing: он то вам зачем? Его везде рекомендую выключать

                          3. Зачем telnet? Если есть возможность ssh. Впрочем, здесь на вкус и цвет

                          4. Далеко не обязательно делать DNS. Хотя удобно, спору нет

                          5. Зачем разрешать ssh,ntp,dns везде? Для внутреннего трафика отработает INSPECT_OUT, а для а для трафика рутера достаточно разрешить только ответы на адрес его интерфейса. Опять же, часто можно написать
                          ip inspect INSPECT_OUT router
                          и тогда трафик рутера тоже будет инспектироваться

                            0
                            Как раз я и ждал конструктивную критику :)
                            Я уверен что конфиг не самый оптимальный и ваши советы очень важны в его полировке…
                            1. INSPECT_IN я кажись писал для DMZ, в данном конфиге пожалуй ему не место…
                            2. выключим
                            3. телнет как я писал оставлен на всякий пожарный, снаружи он закрыт, а изнутри бывает надо с любой машины зайти подправить чтото по быстрому. По умолчанию конечно используется SSH
                            4. Вроде у цыски DNS кеширующий, т.ч. пусть будет
                            5. Про ip inspect INSPECT_OUT router не слыхал, читал что внутренний трафик не инспектируется… или так было на старых прошивках… Спасибо за подсказку
                              +1
                              Да, так было раньше. Теперь можно.

                              Еще разглядел:
                              если используете
                              aaa new-model
                              

                              то не нужно писать
                              login local
                              

                              Эта команда нужна для доступа без aaa new-model. А так по умолчанию стоит правило
                              aaa authentication default local
                              

                              Если надо поменять
                              line vty 0 4
                              login authen {AAARULE}
                              


                              Еще логично, если делаете пользователя 15 уровня привилегий, эти привилегии проверять:
                              aaa author exec default local
                              


                              и ещё не забыть дать в конце команду
                              wr
                              


                              :))
                                0
                                Когда то давно без строчки
                                aaa authentication login default local
                                на какойто цыске не хотело пускать по SSH, потому так сложилось исторически :)
                                Надо будет попробовать ее сделать опциональной…

                                Гм, а команды
                                aaa author exec default local
                                я не вижу в своих версиях IOS'а…

                                Команду
                                write
                                я надеюсь все знают когда применять, как и
                                conf t
                                в начале всего процесса конфигурирования ;)
                                  0
                                  Не, вот против этой команды
                                  aaa authentication login default local
                                  

                                  я ничего не имею.

                                  Я имел ввиду тут
                                  line vty 0 4
                                  login local
                                  

                                  последняя строчка не нужна

                                  А про авторизацию: вы не перепутали
                                  aaa authorization default local
                                    0
                                    а у меня и нету в конфиге строчек…
                                    line vty 0 4
                                     login local


                                    или вы имеете ввиду что надо сделать на всякий случай
                                    line vty 0 4
                                     no login local

                                    ??
                                      0
                                      Упс… Мой косяк: мне казалось, что я у вас углядел эту команду. Спать надо больше, сорри :)

                                      Я не люблю делать
                                      privilege 15
                                      на терминальных линиях. Т.к. в этом случае любой входящий сразу становится суперюзером.
                                      А если я хочу кому-то дать доступ к уровню 15, а кому-то обрезать?
                                        0
                                        Ну просто доступ с цыскам имею только я, а я себе доверяю полностью :)
                                        Хотя согласен дырка в безопасности еще та…
                              0
                              тогда для базовой настройки firewall достаточно:
                              ip access-list extended FIREWALL
                               permit tcp any any eq 22
                               deny any any
                              ip inspect name INSPECT_OUT router
                              ip inspect name INSPECT_OUT dns
                              ip inspect name INSPECT_OUT icmp
                              ip inspect name INSPECT_OUT ntp

                              ??
                                0
                                Да. Мало того, можно ещё сузить, указав (не во всех ИОСах)
                                permit tcp any int f0/0 eq 22
                                


                                deny нижний как вы понимаете писать не обязательно.
                                  0
                                  deny я для наглядности добавил

                                  но не совсем понимаю смысла
                                  permit tcp any int f0/0 eq 22
                                  access-list же и так висит на int f0/0 и только входящий трафик на этот интерфейс и фильтрует
                                    0
                                    А теперь представим, что мы в процессе настройки написали

                                    ip nat inside source static {LOC_IP} {GLOB_IP}

                                    и в тот же миг откроется доступ на хост LOC_IP по ssh
                                      0
                                      Ах вы в этом смысле…
                                      Я просто статическую трансляцию нигде не использую, потому не задумывался о такой возможности…
                                      Поправим в топике настройки файрвола тогда, спасибо за советы
                                    0
                                    пытаюсь настроить на Cisco 851 файрвол таким образом — не проходит трафик роутера с
                                    ip inspect name INSPECT_OUT router
                                    :(
                                    прошивка c850-advsecurityk9-mz.124-15.T12
                                      0
                                      Хм… Странно.

                                      А куда вешаете правило инспектирования?
                                        +1
                                        Разрешаю побить меня палками!

                                        Завел всех в заблуждение по беспамятству!

                                        Разрешить трафик рутера можно, но вот так:

                                        ip insp name FROMIN tcp router-traffic
                                        ip insp name FROMIN udp router-traffic

                                        Ещё раз прошу прощения.

                                        ЗЫ Ноги растут из ИОСа более ранних ерсий. Там достаточно было одного слова. Сейчас это ключевое слово есть, но означает оно «протоколы маршрутизации, запущенные на рутере»
                                  0
                                  Я в цисках новичек, хотелось бы узнать, для чего делается:
                                  service password-encryption, если затем
                                  username admin privilege 15 password 0 PASSWORD,
                                  где 0 — «Specifies an UNENCRYPTED password will follow».

                                  Или эти настройки не связаны?
                                    0
                                    Чтобы при последующем просмотре конфига посторонним человеком не показывались ключи и пароли в «чистом» виде.
                                      0
                                      0 — это когда вы сами вколачиваете пароль (можно 0 не вводить вовсе)

                                      а если вам надо в конфиг вколотить пароль, который зашифрован и вы его не знаете, но хотите перенести, то тогда пишете
                                      user USER pass 7 {шифр пароля}

                                      Впрочем, эта 7 настолько не стойкая, что считать её за защиту нельзя.
                                      Тогда уж лучше писать
                                      user USER secret {пароль}
                                      0
                                      Кое-что из моего общего шаблона:
                                      no service tcp-small-servers
                                      no service udp-small-servers
                                      service tcp-keepalives-in
                                      service tcp-keepalives-out
                                      no ip finger
                                      no service finger
                                      no ip http server
                                      no ip http secure-server
                                      no ip bootp server
                                      no boot host
                                      no boot network
                                      no service config
                                      no ip redirects
                                      no ip directed-broadcast
                                      no ip proxy-arp
                                      no ip source-route
                                      service timestamps debug datetime localtime
                                      service timestamps log datetime localtime
                                      service password-encryption
                                      service sequence-numbers
                                      no logging console
                                      clock timezone MSK 3
                                      clock summer-time MSD recurring last Sun Mar 2:00 last Sun Oct 3:00
                                      ip subnet-zero
                                      no ip domain-lookup
                                      ip icmp rate-limit unreachable 1000
                                      ip icmp rate-limit unreachable DF 1000

                                      Для Catalyst'ов:
                                      errdisable recovery cause bpduguard
                                      errdisable recovery interval 400

                                      На типичном «клиентском» порту коммутатора:
                                      interface range FastEthernet 0/1 — 24
                                      desc HOST
                                      switchport access vlan XXX
                                      switchport mode access
                                      switchport nonegotiate
                                      flowcontrol receive off
                                      spanning-tree bpduguard enable
                                      storm-control broadcast level 1.00
                                      storm-control multicast level 1.00
                                      storm-control unicast level 90.10
                                      storm-control action trap
                                      spanning-tree portfast
                                      no snmp trap link-status
                                        0
                                        В идеале ещеб расписать что какая команда включает/отключает чтоб понимать что делаешь
                                        Я б например некоторые у себя бы не применял ;)
                                          0
                                          Какие именно? Я вроде выбрал самые «безобидные» :)
                                            0
                                            не очень понимаю например зачем отключать
                                            no ip domain-lookup
                                            из соображений безопасности?
                                              +1
                                              Лично для меня, при работе с маршрутизаторами, трансляция адресов не нужна — все дебажится по IP. Но иногда ошибочно введя какую-нить команду неправильно, например png вместо ping, получаем Translating «png»...domain server, что отнимает время.
                                          0
                                          На маршрутизаторе это не совсем Ваш шаблон :)

                                          Это часть шаблона, которую делает команда
                                          autosecurity
                                          


                                          Это не говорит о том, что это плохие команды, просто хотел уточнить, откуда они :) Так циска рекомендует.
                                            0
                                            Никогда не пользовался командой «autosecurity» и не знал о ее существовании.
                                              0
                                              Верю. Но откуда-то вы эти команды взяли? От старших товарищей, с сайта циско.ком…

                                              А там тоже ничего нового не придумали :)

                                              Если интересно, задайте, скажем, в GNS эту команду и посмотрите, что она делает.

                                              Первые минимум 10 строк точно такие же как в Вашем шаблоне :)

                                              ЗЫ Я вовсе не наезжаю и не пытаюсь в чем-то обвинять
                                                0
                                                Часть команд из корп.стандарта по безопасности, часть из жизни и сайта циско.ком
                                                Могу немного из «простого» (без групп серверов и прочего) шаблона настройки такакса привести:
                                                tacacs-server host ххх.ххх.ххх.ххх
                                                tacacs-server key хххххххххххххх
                                                aaa new-model
                                                aaa authentication login default group tacacs+ enable
                                                aaa authentication enable default group tacacs+ enable
                                                aaa authorization exec default group tacacs+ if-authenticated

                                                После этого в line vty автоматически удаляются login local или password (если они там были) и для дальнейших действий надо уже перелогиниться на девайс с такаксной учеткой.

                                                aaa accounting exec default start-stop group tacacs+
                                                aaa authorization config-commands
                                                aaa authorization commands 1 default group tacacs+ if-authenticated
                                                aaa authorization commands 15 default group tacacs+ if-authenticated
                                                aaa accounting commands 1 default start-stop group tacacs+
                                                aaa accounting commands 15 default start-stop group tacacs+
                                                aaa accounting network default start-stop group tacacs+
                                                aaa accounting connection default start-stop group tacacs+
                                                aaa accounting system default start-stop group tacacs+

                                                Ну и напоследок:
                                                access-list 2666 permit tcp 192.168.0.0 0.0.255.255 any eq 22 log
                                                access-list 2666 deny ip any any log
                                                line con 0
                                                no password
                                                exec-timeout 10 0
                                                privilege level 0
                                                exit
                                                line vty 0 4
                                                exec-timeout 10 0
                                                access-class 2666 in
                                                transport input ssh
                                                exit
                                                line vty 5 15
                                                exec-timeout 10 0
                                                access-class 2666 in
                                                transport input ssh
                                                exit
                                          0
                                          еще добавьте, чтобы после настройки interface Vlan1 не забывали делать no shutdown
                                          так как по умолчанию интерфейс в shut'е

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое