1. Выполните импорт пользователей в домен au-team.irpo
Задание:
- В качестве файла источника выберите файл users.csv располагающийся в образе Additional.iso
- Пользователи должны быть импортированы со своими паролями и другими атрибутами
- Убедитесь, что импортированные пользователи могут войти на машину HQ-CLI
Вариант реализации:
BR-SRV:
- Выполнить монтирование Additional.iso в директорию /mnt:
mount /dev/sr0 /mnt/
- Файл в целом включает в себя 300 пользователей (1 строка под шапку):
vim import_user.sh
- скрипт может выглядеть следующим образом (один из вариантов, далеко не эталонный, но работоспособный):
- Выдать права на исполнение:
chmod +x import_user.sh
- Запустить скрипт:
./import_user.sh /mnt/Users.csv
- Результат запуска скрипта (1 полный скрин экрана noVNC):
Результат окончания работы скрипта (1 полный скрин экрана noVNC):
После запуска скрипта и ожидания завершения работы средствами samba-tool можно произвести проверку созданных OU и пользователей:созданные OU:
созданные пользователи в OU "IT":
созданные пользователи в OU "Overal":
созданные пользователи в OU "Manager":
созданные пользователи в OU "Supporter" (186 пользователей):
2. Выполните настройку центра сертификации на базе HQ-SRV
Задание:
- Необходимо использовать отечественные алгоритмы шифрования
- Сертификаты выдаются на 30 дней
- Обеспечьте доверие сертификату для HQ-CLI
- Выдайте сертификаты веб серверам
- Перенастройте ранее настроенный реверсивный прокси nginx на протокол https
- При обращении к веб серверам https://web.au-team.irpo и https://docker.au-team.irpo у браузера клиента не должно возникать предупреждений.
Вариант реализации:
HQ-SRV:
- Установите пакет с поддержкой ГОСТ:
apt-get install -y openssl-gost-engine
- Включите поддержку ГОСТ через control-скрипт:
control openssl-gost enabled
- Создаём закрытый ключ с алгоритмом ГОСТ-2012 (ca.key):
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out ca.key
- Создаём сертификат на 30 дней (ca.cer):
openssl req -new -x509 -md_gost12_256 -days 30 -key ca.key -out ca.cer
- Результат:
- Создаём закрытые ключи по алгоритму ГОСТ веб-серверов:для web.au-team.irpo:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out web.au-team.irpo.key
- для docker.au-team.irpo:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out docker.au-team.irpo.key
- Создаём запросы на подпись ранее созданном УЦ:
- для web.au-team.irpo:
openssl req -new -md_gost12_256 -key gost.example.com.key -out web.au-team.irpo.csr
- для docker.au-team.irpo:
openssl req -new -md_gost12_256 -key gost.example.com.key -out docker.au-team.irpo.csr
- Подписываем запрос в ранее созданном УЦ:
- для web.au-team.irpo:
openssl x509 -req -in web.au-team.irpo.csr -CA ca.cer -CAkey ca.key CAcreateserial -out web.au-team.irpo.cer -days 30
- для docker.au-team.irpo:
openssl x509 -req -in docker.au-team.irpo.csr -CA ca.cer -CAkey ca.key -CAcreateserial -out docker.au-team.irpo.cer -days 30
- Результат:
ISP:
- Разрешаем доступ по ssh для пользователя root, чтобы можно было передать необходимые файлы с HQ-SRV:
vim /etc/openssh/sshd_config
- приводим PermitRootLogin к следующему виду:
- Перезагружаем службу sshd для применения изменений:
systemctl restart sshd
HQ-SRV:
- Передаём необходимые файлы на ISP:
scp web.au-team.irpo.key root@172.16.1.1:~/
scp web.au-team.irpo.cer root@172.16.1.1:~/
scp docker.au-team.irpo.key root@172.16.1.1:~/
scp docker.au-team.irpo.cer root@172.16.1.1:~/
ISP:
- Проверить наличие файлов ключей и сертификатов:
- Создаём каталог /etc/nginx/ssl и копируем туда файлы ключей и сертификатов:
mkdir /etc/nginx/ssl
cp web.au-team.irpo.* /etc/nginx/ssl
cp docker.au-team.irpo.* /etc/nginx/ssl
- Перенастраиваем доступ по https для доступа к сайту web.au-team.irpo и docker.au-team.irpo в конфигурационном файле /etc/nginx/sites-available.d/default.conf:
vim /etc/nginx/sites-available.d/default.conf
- Проверить наличие ошибок в конфигурационных файлах:
nginx -t
- Результат:
- Чтобы устранить подобную ошибку и чтобы nginx в результате успешно перезапустил свою службу, необходимо установить пакет с поддержкой ГОСТ:
apt-get install -y openssl-gost-engine
- Включите поддержку ГОСТ через control-скрипт:
control openssl-gost enabled
- Перепроверить наличие ошибок в конфигурационных файлах:
- Перезапустить службу nginx:
systemctl restart nginx
HQ-SRV:
- Передаём на HQ-CLI корневой сертификат УЦ (ca.cer):
scp ca.cer user@192.168.200.2:~/
HQ-CLI:
- Проверить наличие переданного сертификата:
- Для установки корневых сертификатов необходимо поместить файлы сертификатов в /etc/pki/ca-trust/source/anchors/ и обновить общесистемный список доверенных CA (из-под суперпользователя root):
cp /home/user/ca.cer /etc/pki/ca-trust/source/anchors/ && update-ca-trust
- Проверить наличие сертификата в браузере:Яндекс:
- Из-под суперпользователя перейти в дирректорию с распакованным архивом:
cd /home/user/Загрузки/linux-amd64
- Установите пакет cryptopro-preinstall:
apt-get install -y cryptopro-preinstall
- Запустить скрипт установки:
./install_gui.sh
Можно запустить КриптоПРО SCP и проверить наличие нашего УЦ:
После чего проверить доступ до веб-ресурсов:https://web.au-team.irpo:
НО (проблемы в исходном коде приложения):
Описанное ниже - не является призывом к действию! Просто попытка дойти до истины (редактирование запущенного контейнера - никчему хорошему не приведёт!)
- для подключения https://docker.au-team.irpo - возникают проблемы со стилями (именно при подключению по HTTPS):
если перейти в режим отладки (F12), то можно увидеть что файл стилей не может быть загружен (проблема на стороне исходного кода веб-приложения):
- можем попытаться войти внутрь контейнера с нашим приложением на BR-SRV:
docker exec -it testapp ash
проблема кроется в файле app/site/site.html, а именно в строке:
если данную строку привести к следующему виду:
проблема с отсутствием стилей при доступе по HTTPS будет решена:
3. Перенастройте ip-туннель с базового до уровня туннеля, обеспечивающего шифрование трафика
Задание:
- Настройте защищенный туннель между HQ-RTR и BR-RTR
- Внесите необходимые изменения в конфигурацию динамической маршрутизации, протокол динамической маршрутизации должен возобновить работу после перенастройки туннеля
- Выбранное программное обеспечение, обоснование его выбора и его основные параметры, изменения в конфигурации динамической маршрутизации отметьте в отчёте.
Вариант реализации:
HQ-RTR:
- Включить протокол IKE:
hq-rtr(config)#crypto-ipsec ike enable
hq-rtr(config)#
- Настроить профили IPsec:для создания туннеля IPsec используется протокол IKE (Internet Key Exchange);
есть две фазы построения IPsec туннеля: IKE фаза 1 и IKE фаза 2;
hq-rtr(config)#crypto-ipsec profile CIPROFILE ike-v2
hq-rtr(config-ipsec-ikev2)#mode tunnel
hq-rtr(config-ipsec-ikev2)#
- IKE фаза 1:на IKE этапе 1 два узла договариваются о протоколах шифрования, аутентификации, хеширования и других протоколах, которые они хотят использовать, а также о некоторых других необходимых параметрах;
на этом этапе устанавливается сеанс ISAKMP (Internet Security Association and Key Management Protocol);
это также называется туннелем ISAKMP или туннелем первой фазы IKE;
туннель IKE фазы 1 используется только для управляющего трафика.
hq-rtr(config-ipsec-ikev2)#ike-phase1
hq-rtr(config-ipsec-ikev2-ph1)#proposal aes256-sha256-modp2048
hq-rtr(config-ipsec-ikev2-ph1)#auth pre-shared-key P@ssw0rd
hq-rtr(config-ipsec-ikev2-ph1)#exit
hq-rtr(config-ipsec-ikev2)#
- IKE фаза 2:этот туннель используется как безопасный метод для организации второго туннеля, называемого туннелем IKE фазы 2 или туннелем IPsec;
второй туннель предназначен уже для непосредственной передачи пользовательских данных а также для управляющих данных;
после завершения фазы 2 IKE появится туннель фазы 2 IKE (или туннель IPsec), который можно использовать для защиты пользовательских данных.
hq-rtr(config-ipsec-ikev2)#ike-phase2
hq-rtr(config-ipsec-ikev2-ph2)#protocol esp
hq-rtr(config-ipsec-ikev2-ph2)#proposal aes256-sha256
hq-rtr(config-ipsec-ikev2-ph2)#local-ts 172.16.1.2
hq-rtr(config-ipsec-ikev2-ph2)#remote-ts 172.16.2.2
hq-rtr(config-ipsec-ikev2-ph2)#exit
hq-rtr(config-ipsec-ikev2)#exit
hq-rtr(config)#
- Задать крипто-карту:необходимо указать, к какому пиру следует применять соответствующий профиль IPsec
hq-rtr(config)#crypto-map CMAP 10
hq-rtr(config-crypto-map)#match peer 172.16.2.2
hq-rtr(config-crypto-map)#set crypto-ipsec profile CIPROFILE
hq-rtr(config-crypto-map)#exit
hq-rtr(config)#
- Задать карты фильтрации:для каждого маршрутизатора необходимо вычленить исходящий трафик который нужно зашифровать и входящий, который нужно дешифровать;
исходящий (из локальной сети в туннель) трафик фильтруется по адресам локальной и удалённой подсети;
фильтруется любой тип трафика;
к фильтр-карте привязана криптографическая карта crypto-map, которая, в свою очередь, ссылается на профиль crypto-ipsec;
трафик шифруется в соответствии с параметрами указанными в профиле IPsec и отправляется в туннель.для туннеля используется одна карта фильтрации, которая последовательно обрабатывает исходящий и входящий трафик, и оканчивается разрешающим правилом для прочего трафика:
hq-rtr(config)#filter-map ipv4 FMAP 5
hq-rtr(config-filter-map-ipv4)#match gre host 172.16.1.2 host 172.16.2.2
hq-rtr(config-filter-map-ipv4)#set crypto-map CMAP peer 172.16.2.2
hq-rtr(config-filter-map-ipv4)#exit
hq-rtr(config)#
hq-rtr(config)#filter-map ipv4 FMAP 10
hq-rtr(config-filter-map-ipv4)#match udp host 172.16.2.2 eq 4500 host 172.16.1.2 eq 4500
hq-rtr(config-filter-map-ipv4)#set crypto-map CMAP peer 172.16.2.2
hq-rtr(config-filter-map-ipv4)#exit
hq-rtr(config)#
hq-rtr(config)#filter-map ipv4 FMAP 15
hq-rtr(config-filter-map-ipv4)#match any any any
hq-rtr(config-filter-map-ipv4)#set accept
hq-rtr(config-filter-map-ipv4)#exit
hq-rtr(config)#
- Применить фильтр-карты к необходимым L3-интерфейсам во входящем направлении:
hq-rtr(config)#interface isp
hq-rtr(config-if)#set filter-map in FMAP 10
hq-rtr(config-if)#exit
hq-rtr(config)#
hq-rtr(config)#interface tunnel.0
hq-rtr(config-if-tunnel)#set filter-map in FMAP 10
hq-rtr(config-if-tunnel)#exit
hq-rtr(config)#
hq-rtr(config)#write memory
Building configuration...
hq-rtr(config)#
P.S.
Для шифрования туннеля используется протокол IKEv2, для которого NAT traversal включён по умолчанию.
BR-RTR:
- Аналогично HQ-RTR, но зеркально:
br-rtr(config)#crypto-ipsec ike enable
br-rtr(config)#
br-rtr(config)#crypto-ipsec profile CIPROFILE ike-v2
br-rtr(config-ipsec-ikev2)#mode tunnel
br-rtr(config-ipsec-ikev2)#ike-phase1
br-rtr(config-ipsec-ikev2-ph1)#proposal aes256-sha256-modp2048
br-rtr(config-ipsec-ikev2-ph1)#auth pre-shared-key P@ssw0rd
br-rtr(config-ipsec-ikev2-ph1)#exit
br-rtr(config-ipsec-ikev2)#
br-rtr(config-ipsec-ikev2)#ike-phase2
br-rtr(config-ipsec-ikev2-ph2)#protocol esp
br-rtr(config-ipsec-ikev2-ph2)#proposal aes256-sha256
br-rtr(config-ipsec-ikev2-ph2)#local-ts 172.16.2.2
br-rtr(config-ipsec-ikev2-ph2)#remote-ts 172.16.1.2
br-rtr(config-ipsec-ikev2-ph2)#exit
br-rtr(config-ipsec-ikev2)#exit
br-rtr(config)#
br-rtr(config)#crypto-map CMAP 10
br-rtr(config-crypto-map)#match peer 172.16.1.2
br-rtr(config-crypto-map)#set crypto-ipsec profile CIPROFILE
br-rtr(config-crypto-map)#exit
br-rtr(config)#
br-rtr(config)#filter-map ipv4 FMAP 5
br-rtr(config-filter-map-ipv4)#match gre host 172.16.2.2 host 172.16.1.2
br-rtr(config-filter-map-ipv4)#set crypto-map CMAP peer 172.16.1.2
br-rtr(config-filter-map-ipv4)#exit
br-rtr(config)#
br-rtr(config)#filter-map ipv4 FMAP 10
br-rtr(config-filter-map-ipv4)#match udp host 172.16.1.2 eq 4500 host 172.16.2.2 eq 4500
br-rtr(config-filter-map-ipv4)#set crypto-map CMAP peer 172.16.1.2
br-rtr(config-filter-map-ipv4)#exit
br-rtr(config)#
br-rtr(config)#filter-map ipv4 FMAP 15
br-rtr(config-filter-map-ipv4)#match any any any
br-rtr(config-filter-map-ipv4)#set accept
br-rtr(config-filter-map-ipv4)#exit
br-rtr(config)#
br-rtr(config)#interface isp
br-rtr(config-if)#set filter-map in FMAP 10
br-rtr(config-if)#exit
br-rtr(config)#
br-rtr(config)#interface tunnel.0
br-rtr(config-if-tunnel)#set filter-map in FMAP 10
br-rtr(config-if-tunnel)#exit
br-rtr(config)#
br-rtr(config)#write memory
Building configuration...
br-rtr(config)#
Проверить:
- Проверьте настроены ли подключения IPsec:HQ-RTR:
С ВМ ISP, установив tcpdump запустить захват на интерфейсах в сторону HQ-RTR или BR-RTR:если конфигурация произведена верно, вы должны увидеть передачу зашифрованных пакетов ESP
5. Настройте принт-сервер cups на сервере HQ-SRV
Задание:
- Опубликуйте виртуальный pdf-принтер
- На клиенте HQ-CLI подключите виртуальный принтер как принтер по умолчанию.
Вариант реализации:
HQ-SRV:
- Установить необходимые пакеты:
apt-get update && apt-get install -y cups cups-pdf
- Включить и добавить в автозагрузку службу cups:
systemctl enable --now cups
Включить общий доступ к принтеру на сервере и разрешить печатать из любой сети:
cupsctl --share-printers --remote-any
- Проверить:
HQ-CLI:
Поскольку в домене SambaDC нет DNS записи ссылающейся на необходимое имя, а на HQ-CLI в качестве DNS-сервера задан адрес именно контроллера домена, поэтому необходимо добавить записи в файл /etc/hosts на виртуальной машине HQ-CLI:или же используя утилиту samba-tool добавить необходимые записи на DNS-сервере BR-SRV;