Надійно обмежте доступ до приватного сховища Debian


9

Я шукав спосіб обмежити доступ до приватного сховища Debian і мати змогу аутентифікувати його неінтерактивно (тобто за допомогою сценарію)

Найбільш корисна стаття, яку я знайшов, якщо насправді одна з сайтів адміністрації Debian, але безпечний метод використовує ssh та відкриті / приватні ключі. Він чудово працює, але відкритий ключ кожного хоста повинен знаходитись у файлі віддалених дозволених ключів, щоб успішно пройти автентифікацію. Він нічого не говорить про надання пароля в ssh: //, але я вважаю, що це повинно бути можливим.

Ви пробували інші альтернативи (наприклад, ftps)?

Спасибі заздалегідь


Проблема, яку я маю в статті вище, полягає в тому, що вона не лише надає доступ до сховища APT - вона надає оболонку доступу до моєї машини сховища APT. Це неприйнятний ризик.
BobDoolittle

Відповіді:


5

Якщо ви завжди запускаєте apt-getна своїх серверах вручну (немає автоматичних apt-getкоманд, запущених кронами), ви можете розглянути можливість переадресації агента ssh . Це дозволяє уникнути необхідності керувати одним публічним / приватним ключем на сервері, яким ви керуєте, і це, мабуть, безпечніше, ніж залишати приватні ключі на кожному сервері.

Початкова конфігурація - підключіться до серверів, якими ви хочете керувати, і додайте щось подібне /etc/apt/sources.list(цей приклад передбачає, що ви хочете, щоб ваші сервери підключились до managerоблікового запису):

    deb ssh://manager@my.repository.org/path other stuff
  • створити пару приватних / відкритих ключів на своєму власному комп’ютері, наприклад, за допомогою свого логіна johndoe(за умови, що ваш комп'ютер працює на debian: якщо ні, ви можете зробити це з сервера debian, призначеного для управління):

    ssh-keygen
    
  • переконайтеся, що він захищений сильною ключовою фразою
  • скопіюйте ваш відкритий ключ на сервер сховища /home/manager/.ssh/authorized_keys:

    ssh-copy-id manager@my.repository.org
    

Раз на сеанс управління

  • запустіть ssh-агент на вашій машині, ввівши:

    eval `ssh-agent`
    
  • додайте ключ до агента (для цього знадобиться ваша парольна фраза):

    ssh-add
    

Керування сервером

  • підключитися до сервера, яким ви хочете керувати ssh -A( -Aактивує переадресацію агента):

    ssh -A some.server.org
    
  • перейти на root (якщо ви хочете використовувати, sudoвам потрібно налаштувати /etc/sudoersабо інакше sudoбуде порушено переадресацію агента, прочитайте це ):

    su
    
  • тепер ви зможете підключитися до облікового запису менеджера сховища за допомогою ssh, не вводячи свій пароль знову, завдяки переадресації агента. Тому apt-getмає працювати просто чудово:

    apt-get udate
    

Закінчення сеансу управління

  • Після того як ви закінчили керувати своїми серверами, вийміть ключі з агента:

    ssh-add -D
    

Переваги

  • Не потрібно багато початкової конфігурації
  • Потрібен лише один приватний ключ
  • Приватний ключ захищений сильною парольною фразою
  • Якщо хтось отримає кореневий доступ до одного з ваших серверів, він не матиме негайного доступу до вашого сервера сховища.
    • Зауважте, що якщо хакер терплячий і кваліфікований, він може чекати, поки ви підключитесь до сервера за допомогою переадресації агентів, і він може викрасти механізм переадресації, щоб отримати доступ до вашого сервера сховища.
    • Щоб запобігти цьому, ви можете скористатися ssh-ask, щоб прийняти / відмовитись від кожної спроби використання вашого ключа.
    • У будь-якому випадку хакер сам не отримає доступ до приватного ключа: він просто зможе захопити механізм переадресації для того, щоб використовувати ключ, і лише під час підключення до сервера.

Ще раз дякую MiniQuark. Насправді оновлення без нагляду, але це чудовий метод, який я міг би застосувати для тестування.
Хамбер

Моє задоволення! :) Радий, якщо це допоможе.
MiniQuark

4

Один із способів зробити це - просто дозволити певному набору IP-адрес отримати доступ до сховища. Це дуже добре працює для LAN та VPN.

Простий та ефективний.


1
Дякую Антуану :). Власне, сховище, яке я маю зараз, доступне за допомогою цього методу (http через з'єднання OpenVPN). Я обмежую IP-адреси, що належать до VPN. Недолік тут полягає в тому, що для доступу до РЕПО потрібно підключити кожного хоста до VPN, а це трохи дратує (керуйте кількома сертифікатами / ключами). Вибачте, що не вказали цього питання.
Хамбер

Правда, керувати OpenVPN досить неприємно, але це робить управління безпекою вашого сховища дуже простим. Крім того, користувачі не повинні турбуватися з обліковими даними один раз всередині VPN.
Антуан Бенкемун

2

Рішення SSH + державні / приватні ключ не що погано:

  • Логін як корінь на клієнтській машині
  • тип ssh-keygen, тоssh-copy-id your_login@your.repository.org
  • відредагуйте /etc/apt/sources.listта додайте щось на зразок:

    deb ssh://your_login@your.repository.org/path other stuff
    

Зрозуміло, він вимагає помістити відкритий ключ кожного сервера у ~/.ssh/authorized_keysфайл на сервері, але це не так вже й складно (див. Вище), і він дає вам контроль над тим, які сервери ви дозволяєте чи ні в будь-який момент (ви можете видалити ключ на будь-який час authorized_keys).


Спасибі MiniQuark. Так, це рішення не так вже й погано, але ssh-copy-id не працює, якщо автентифікацію пароля вимкнено на сервері openssh. Я думав про поширення одного і того ж файлу ключів на кожного клієнта за допомогою сховища, щоб мати можливість ним користуватися. Для більшої безпеки використовуються користувачі з мінімальними дозволами. Це майже те саме, що обмін обліковими записами. Зараз я тестую цей метод, щоб перевірити, як поводиться / працює.
Хамбер

1

Ви можете налаштувати https-доступ до вашого сховища, захищений логіном / паролем (основна автентифікація). Проблема полягає в тому, що вам потрібно ввести логін / пароль Cleartext /etc/apt/sources.list(зверніть увагу: є патч, який дозволяє /root/.netrcзамість цього ввести логін / пароль ).


Це, мабуть, найкраще рішення, також це не netrc, а /etc/apt/auth.conf. Документи тут: manpages.debian.org/testing/apt/apt_auth.conf.5.en.html
Ніколі

0

Посилання у вашому запитанні показує кілька методів. Ви хочете номер 2, https + базова аутентифікація.


Спасибі Джастін. Я думаю, що транспорт https з apt працює лише в тому випадку, якщо встановлено apt-transport-https. Це цікава альтернатива. Єдиний недолік - це облікові дані izvor.list
Хамбер

chmod 600 /etc/apt/sources.list
Джастін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.