Цель данной лабораторной работы - научиться конфигурировать доступ к оборудованию Juniper по протоколам Telnet и SSH. В процессе выполнения работы я также покажу метод подключения эмулируемых устройств среды GNS3 к внешнему миру или вашей локальной сети. Для этого необходимо будет установить несколько пакетов на хостовую машину (напомню, что все действия выполняются на Ubuntu Linux) и соответствующим образом настроить среду GNS3.
Настройка хостовой машины
Для начала необходимо установить пакет для работы с интерфейсами tap и tun:
sudo apt-get install uml-utilities
Далее с помощью утилиты tunctl создаем интерфейс tap0 (к нему будут подключаться устройства из среды GNS3) и сбрасываем настройки нашего физического интерфейса (у меня это eth0). Важно указать ключ -u <user-name> это позволит работать с интерфейсом не запуская GNS3 из под root.
sudo tunctl -t tap0 -u velp sudo ifconfig tap0 0.0.0.0 promisc up sudo ifconfig eth0 0.0.0.0 promisc up
Создаем мостр для соединения нашего физического интерфейса eth0 и виртуального tap0, добавляем в него наши интерфейсы, включаем его и получаем ip адрес по dhcp (у меня в сети настроен сервер dhcp):
sudo brctl addbr gns3-br0 sudo brctl addif gns3-br0 tap0 sudo brctl addif gns3-br0 eth0 sudo ifconfig gns3-br0 up sudo dhclient gns3-br0
После этих не хитрых действий подключение на хостовой машине должно работать через наш мост gns3-br0 (проверить можно командой: ping ya.ru -I gns3-br0).
Настройка среды GNS3
В рабочей области строим топологию сети, добавляем один свитч, одно облако (Cloud), одно устройство Juniper.
Для подключения к локальной сети или интернету конфигурируем элемент Cloud, на вкладке NIO TAP добавляем интерфейс tap0. Конфигурирование Juniper
Делаем базовую настройку роутераroot# set system host-name Juniper root# set system root-authentication plain-text-password root# set system login user velp authentication plain-text-password root# set interfaces em0 unit 0 family inet address 192.168.14.41/24Проверим внесенные нами изменения
root# show | compare [edit system] + host-name Juniper; + root-authentication { + encrypted-password "$1$CUW1v$mVB8gr6TG8ox4/TbkGS9h7xV8."; ## SECRET-DATA + } + login { + user velp { + class super-user; + authentication { + encrypted-password "$1$CUW1v$m8ox4/TbkGS9h7xV8."; ## SECRET-DATA + } + } + } + services { + ssh { + protocol-version v2; + } + } + interfaces { + em0 { + unit 0 { + family inet { + address 192.168.14.41/24; + } + } + } + }Сохраняем наши изменения
root@# commitпинг до нашего шлюза (у меня это 192.168.14.1) уже должен появится
root@Juniper# run ping 192.168.14.1 count 5 PING 192.168.14.1 (192.168.14.1): 56 data bytes 64 bytes from 192.168.14.1: icmp_seq=0 ttl=64 time=4.866 ms 64 bytes from 192.168.14.1: icmp_seq=1 ttl=64 time=4.624 ms 64 bytes from 192.168.14.1: icmp_seq=2 ttl=64 time=5.213 ms 64 bytes from 192.168.14.1: icmp_seq=3 ttl=64 time=3.305 ms 64 bytes from 192.168.14.1: icmp_seq=4 ttl=64 time=6.236 ms --- 192.168.14.1 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 3.305/4.849/6.236/0.948 msПо-умолчанию на Juniper все порты закрыты, в этом можно убедиться сканировав порты утилитой nmap с хостовой машины
nmap -PN 192.168.14.41 Starting Nmap 5.21 ( http://nmap.org ) at 2013-02-05 17:26 MSK Nmap scan report for 192.168.14.41 Host is up (0.011s latency). All 1000 scanned ports on 192.168.14.41 are closed Nmap done: 1 IP address (1 host up) scanned in 1.38 secondsНастраиваем протокол SSH. Указываем какую использовать версию протокола
root@Juniper# set system services ssh root@Juniper# set system services ssh protocol-version v2запрещаем подключаться по ssh с лгином root
root@Juniper# set system services ssh root-login denyограничиваем количество одновременных подключений (в примере 10)
root@Juniper# set system services ssh connection-limit 10ограничиваем число попыток ввода пароля за одну минуту (в примере не более 5 попыток в минуту)
root@Juniper# set system services ssh rate-limit 5Настраиваем протокол telnet. Ограничиваем количество одновременных подключений (в примере 10)
root@Juniper# set system services telnet connection-limit 10ограничиваем число попыток ввода пароля за одну минуту (в примере не более 5 попыток в минуту)
root@Juniper# set system services telnet rate-limit 5Посмотрим все изменения внесенные нами в конфигурацию
root# show | compare [edit system] + services { + ssh { + root-login deny; + protocol-version v2; + connection-limit 10; + rate-limit 5; + } + telnet { + connection-limit 10; + rate-limit 5; + } + }Сохраняем наши изменения
root@# commitПроверим порты
nmap -PN 192.168.14.41 Starting Nmap 5.21 ( http://nmap.org ) at 2013-02-05 19:25 MSK Nmap scan report for 192.168.14.41 Host is up (0.0078s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 23/tcp open telnet Nmap done: 1 IP address (1 host up) scanned in 1.30 seconds
Подключение к устройству
Попробуем подключиться к устройствуssh velp@192.168.14.41 velp@192.168.14.41's password: --- JUNOS 12.1R1.9 built 2012-03-24 12:52:33 UTC velp@Juniper>подключение по SSH работает. Проверим подключение Telnet
telnet 192.168.14.41 Trying 192.168.14.41... Connected to 192.168.14.41. Escape character is '^]'. Juniper (ttyp0) login: velp Password: --- JUNOS 12.1R1.9 built 2012-03-24 12:52:33 UTC velp@Juniper>
Расширенные настройки
JunOS позволяет осуществлять подключение к устройству по протоколу SSH с использование ключей. Для настройки авторизации по ключам, из опрерационного режима запускаем shell режимroot@Juniper> start shellСоздаем директорию для хранения файлов ключей
root@Juniper% mkdir /root/.sshсоздаем файл для хранения публичной части ключа утилитой vi (встроенная утилита Unix) и копируем публичную часть ключа в файл (в моем примере файл называется velp.pub)
root@Juniper% vi /root/.ssh/velp.pubдалее переходим в конфигурационный режим
root@Juniper% cli root@Juniper> edit root@Juniper# set system login user velp authentication load-key-file /root/.ssh/velp.pubв конфигурации появятся следующие строки (содержимое файла будет вставлено в конфигурацию)
root@Juniper# show | compare [edit system] + login { + user velp { + uid 2000; + class super-user; + authentication { + ssh-rsa "ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...nS5h++XerOr velp@velp-siemens"; ## SECRET-DATA + } + } + }Не забываем сохранить изменения (commit) и пробуем подключиться к устройству
ssh velp@192.168.14.41 -i ~/.ssh/velp --- JUNOS 12.1R1.9 built 2012-03-24 12:52:33 UTC velp@Juniper>пользователь успешно прошел авторизацию по ключу, JunOS не запрашивал пароль Добавим проверку (фильтр) адреса источника подключения по протоколу SSH для защиты доступа к нашему устройству. Для фильтрации трафика используются firewall filter JunOS о которых речь будет идти в следующих лабораторных работах, поэтому здесь я только укажу ряд команд для настройки и не буду подробно разъяснять принцип их работы. В примере мы разрешаем подключение к устройству по SSH только из сети 192.168.1.0/24 (это заведомо не верная настройки для демонстрации функционала).
root@Juniper# set interfaces em0 unit 0 family inet filter input SSH root@Juniper# set firewall family inet filter SSH term SSH-accept from source-address 192.168.1.0/24 root@Juniper# set firewall family inet filter SSH term SSH-accept from protocol tcp root@Juniper# set firewall family inet filter SSH term SSH-accept from destination-port ssh root@Juniper# set firewall family inet filter SSH term SSH-accept then accept root@Juniper# set firewall family inet filter SSH term SSH-deny from destination-port ssh root@Juniper# set firewall family inet filter SSH term SSH-deny then count Discard-SSH-Packets root@Juniper# set firewall family inet filter SSH term SSH-deny then discardизменения в конфигурации
root@Juniper# show | compare [edit interfaces em0 unit 0 family inet] + filter { + input SSH; + } [edit] + firewall { + family inet { + filter SSH { + term SSH-accept { + from { + source-address { + 192.168.1.0/24; + } + protocol tcp; + destination-port ssh; + } + then accept; + } + term SSH-deny { + from { + destination-port ssh; + } + then { + count Discard-SSH-Packets; + discard; + } + } + } + } + }после применения настроек пробуем подключиться к устройству
ssh velp@192.168.14.41 -i ~/.ssh/velp ssh: connect to host 192.168.14.41 port 22: Connection timed outи получаем сообщение об ошибке (так как наша сеть не добавлена в список разрешенных), пакеты отбрасываются:
root@Juniper# run show firewall filter SSH Filter: SSH Counters: Name Bytes Packets Discard-SSH-Packets 2160 36Исправим это добавив нашу подсеть в фильтр
root@Juniper# set firewall family inet filter SSH term SSH-accept from source-address 192.168.14.0/24доступ к устройству восстановился
ssh velp@192.168.14.41 -i ~/.ssh/velp --- JUNOS 12.1R1.9 built 2012-03-24 12:52:33 UTC velp@Juniper>
Комментариев нет:
Отправить комментарий