Назад | Перейти на главную страницу

Надежно ограничить доступ к частному репозиторию Debian

Я искал способ ограничить доступ к частному репозиторию Debian и иметь возможность аутентифицироваться в нем неинтерактивно (т.е. используя скрипт)

Самая полезная статья, которую я нашел, если на самом деле одна из Сайт администрирования Debian но безопасный метод использует ssh и открытые / закрытые ключи. Он отлично работает, но для успешной аутентификации открытый ключ каждого хоста должен находиться внутри удаленного файла authorized_keys. В нем ничего не говорится о предоставлении пароля ssh: //, но я полагаю, что это должно быть возможно.

Вы пробовали другие альтернативы (например, ftps)?

заранее спасибо

Если ты всегда бежишь apt-get на ваших серверах вручную (без автоматического apt-get команды, запущенные crons), то вы можете рассмотреть возможность использования пересылка агента 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
    

Преимущества

  • Не требуется особой начальной настройки
  • Требуется только один закрытый ключ
  • Закрытый ключ защищен надежной парольной фразой
  • Если кто-то получит root-доступ к одному из ваших серверов, он не получит немедленного доступа к вашему серверу репозитория.
    • Обратите внимание, что если хакер терпелив и квалифицирован, он может подождать, пока вы подключитесь к серверу, используя пересылку агента, и он может захватить механизм пересылки, чтобы получить доступ к вашему серверу репозитория.
    • Чтобы предотвратить это, вы можете использовать ssh-ask чтобы принять / отклонить каждую попытку использовать ваш ключ.
    • В любом случае хакер не получить доступ к самому закрытому ключу: он просто сможет перехватить механизм пересылки, чтобы использовать ключ, и только в то время, когда вы подключены к серверу.

Один из способов сделать это - просто разрешить определенному набору IP-адресов доступ к репозиторию. Это очень хорошо работает для LAN и VPN.

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

Решение с открытыми / закрытыми ключами ssh + не который плохой:

  • войдите как root на клиентской машине
  • тип 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).

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

Ссылка в вашем вопросе показывает несколько методов. Вам нужен номер 2, https + базовая аутентификация.