
У нас есть пара кластеров, работающих на AWS (HAProxy/Solr, PGPool/PostgreSQL), и мы настроили скрипты, чтобы разрешить автоматическое включение новых подчиненных экземпляров в кластеры путем обновления их IP-адресов в файлах конфигурации, хранящихся на S3, а затем SSH-подключения к главному экземпляру, чтобы заставить их загрузить измененную конфигурацию и перезапустить службу. Все работает хорошо, но при тестировании мы используем наш главный pem для SSH, что означает, что его нужно хранить на экземпляре. Нехорошо.
Мне нужен пользователь без прав root, который может использовать пару ключей AWS и иметь доступ sudo для запуска скриптов загрузки-конфигурации-и-перезапуска, но ничего больше. rbash, похоже, является подходящим вариантом, но я понимаю, что это может быть небезопасно, если не настроить его правильно.
Итак, какие дыры в безопасности есть в этом подходе:
- Создана новая пара ключей AWS для user.pem (на самом деле не называемая «user»)
- Новый пользователь в экземплярах: пользователь
- Открытый ключ для пользователя находится в ~user/.ssh/authorized_keys (берется путем создания нового экземпляра с помощью user.pem и копирования его из /root/.ssh/authorized_keys)
- Закрытый ключ пользователя находится в ~user/.ssh/user.pem
- «пользователь» имеет оболочку входа /home/user/bin/rbash
- ~user/bin/ содержит символические ссылки на /bin/rbash и /usr/bin/sudo
- /etc/sudoers имеет запись "user ALL=(root) NOPASSWD: [путь к скриптам]
- ~user/.bashrc устанавливает PATH только для /home/user/bin/
- ~user/.inputrc имеет опцию «set disable-completion on», чтобы предотвратить двойное нажатие клавиши «tab» из «sudo /» для поиска путей.
- ~user/ -R принадлежит пользователю root с доступом только на чтение для пользователя, за исключением ~user/.ssh, который имеет права на запись для пользователя (для записи known_hosts), и ~user/bin/*, которые являются +x
- Для взаимодействия между экземплярами используется 'ssh -o StrictHostKeyChecking=no -i ~user/.ssh/user.pem user@[host] sudo [scriptname]'
Будем рады любым мыслям.
Отметка...
решение1
Хорошо, нет ответов, говорящих о том, что это каким-либо образом ужасно раскрыто, за исключением того факта, что если кто-то проникнет в логин пользователя, он получит ключ PEM пользователя. Что не должно позволить им проникнуть куда-либо еще*.
Работает по вышеуказанному подходу.
*Действуют обычные оговорки.