Сборочное окружение и доступ к нему

Представление. FrBrGeorge и ALT Linux Team (в частности FrBrGeorge и ALT Linux Team ☺)

О чём {X} не будет рассказано в лекциях, но что (./) необходимо тем не менее знать / уметь:

Использование SSH

Командная строка и эмулятор терминала.

Асимметричное шифрование: закрытый и открытый ключ

Проблема первоначального обмена ключами

Чтобы подключиться к удалённому компьютеру по SSH, необходимо зашифровать данные его (компьютера) открытым ключом, т. н. HostKey, а он (и только он!) их расшифрует. Однако HostKey у нас ещё нет…

  1. 100% надёжный канал для передачи HostKey

    • Посылаем запрос на HostKey

    • Получаем HostKey и верим ему

    • Шифруем данные с помощью HostKey

    • Удалённый компьютер дешифрует данные с помощью HostKeyPrivate

  2. Отпечаток ключа FingerPrint опубликован в надёжном месте (например, администратор прислал фото)

    • Посылаем запрос на HostKey

    • Получаем какой-то HostKey

    • Вычисляем отпечаток, сравниваем его с опубликованным FingerPrint (хоть вручную), и только тогда ему верим

    • Шифруем данные с помощью HostKey

    • Удалённый компьютер дешифрует данные с помощью HostKeyPrivate

  3. Канал скомпрометирован, но мы ему верим без сравнения отпечатков
    • Посылаем запрос на HostKey

    • Атакующий перехватывает запрос
    • Атакующий сам посылает запрос на HostKey

    • Атакующий получает HostKey

    • Атакующий в ответ на наш запрос возвращает нам свой HostKeyFAKE

    • Получаем HostKeyFAKE и верим ему

    • Шифруем данные с помощью HostKeyFAKE

    • Атакующий перехватывает данные, дешифрует их с помощью HostKeyFAKEPrivate (возможно, даже подменяет данные)

    • Атакующий шифрует данные с помощью HostKey

    • Удалённый компьютер дешифрует данные с помощью HostKeyPrivate

MITM-атака в российской классике

Secure Shell

Использование SSH:

Стадии разработки приложения

Приложение:

Значком (./) отмечены области, которые мы так или иначе затронем

Цикл разработки

(«Для самых маленьких»):

  1. Редактирование
  2. Сборка и подготовка к запуску
  3. Тестирование и запуск

Редактирование

Текстовый редактор для программирования — это:

Мы ограничимся только {*} , для остального будем использовать внешние инструменты

⇒ Сборочное окружение:

В классическом Linux-дистрибутиве эти инструменты не обязаны присутствовать «из коробки» — их надо устанавливать из т. н. пакетов.

(если успеем) GIT

Базовый сайт: Pro GIT

VCS:

DVCS:

Общие понятия (не все):

Цикл работы

  1. клонирование (git clone)

  2. (повторно и далее) Синхронизация (git pull = git fetch + git merge)

  3. Изменение
  4. Отметка файлов для коммита (git add)

  5. Коммит (git commit)

  6. Переход к 2. или 3.
  7. Публикация (git push)

Свойства GIT:

Доступ к сборочной среде

Варианты сборочного окружения:

Д/З

  1. Обеспечить (себе) доступ к Linux-системе, которую можно устанавливать произвольное ПО из репозитория (см. выше).
  2. Завести публичный git-репозиторий и зарегистрировать его в качестве комментария к этому issue

    • GIT заводится где угодно, лишь бы было опубликовано и мне можно было сделать git clone (GitHub, GitLab, факультетский GitLab для студентов, любой иной способ):

    • Скорее всего вам понадобится сгенерировать и зарегистрировать ssh-ключ

Отпечаток ключа linuxprac:

ED25519 key fingerprint is MD5:55:1e:6a:4c:32:99:1b:fb:fa:d3:15:b9:a5:6b:94:53.
+--[ED25519 256]--+
|        oo. o    |
|        += + .   |
|         += .  . |
|        oo    o E|
|        S.     B |
|          .   B  |
|         . . o o |
|        . . . o  |
|         ... .   |
+------[MD5]------+

LecturesCMC/LinuxApplicationDevelopment2023/00_SshBuildReq (последним исправлял пользователь FrBrGeorge 2024-09-07 13:26:35)