Selinux приводит к сбою sshd при использовании AuthorizedKeysCommand

Selinux приводит к сбою sshd при использовании AuthorizedKeysCommand

Я следовал руководству Gitlab, чтобы включить быстрый поиск авторизованных ключей SSH. Руководство предписывает использовать AuthorizedKeysCommand. Авторизованная команда вызывает локальный сервер https. Эта цепочка команд приводит к нарушению политики SELinux.

Я получаю следующую ошибку:

type=AVC msg=audit(1559126095.648:64173782): avc:  denied  { name_connect } for  pid=13839 comm="gitlab-shell-au" dest=8081 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:transproxy_port_t:s0 tclass=tcp_socket permissive=0

Если я не ошибаюсь, мне нужна пользовательская политика SELinux. Однако все руководства, которые я смог найти, слишком сложны. Написание файла политики, который разрешает это исключение, должно быть тривиальной задачей.

Есть идеи, как должен выглядеть файл политики (.te), позволяющий процессу с sshd_t использовать transproxy_port_t?

Редактировать. Gitlab настраивает требуемую политику при запуске unicorn на стандартном порту (8080)

решение1

Вы можете сделать это:

# generate the policy .te file
echo "type=AVC msg=audit(1559126095.648:64173782): avc:  denied  { name_connect } for  pid=13839 comm="gitlab-shell-au" dest=8081 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:transproxy_port_t:s0 tclass=tcp_socket permissive=0" | audit2allow -m gitlabfix1 > gitlabfix1.te

# create a module from the .te file
checkmodule -M -m -o gitlabfix1.mod gitlabfix1.te

# package it
semodule_package -o gitlabfix1.pp -m gitlabfix1.mod

# install it
semodule -i gitlabfix1.pp

Есть более короткий путь, но он не создаст промежуточный файл .te. Файл .te удобен для архивации и понимания :-).

Более короткий путь выглядит так:

# generate the policy module package in one go
echo "type=AVC msg=audit(1559126095.648:64173782): avc:  denied  { name_connect } for  pid=13839 comm="gitlab-shell-au" dest=8081 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:transproxy_port_t:s0 tclass=tcp_socket permissive=0" | audit2allow -M gitlabfix2

# and load it
semodule -i gitlabfix2.pp

В образовательных целях файл .te выглядит следующим образом:

module gitlabfix1 1.0;

require {
        type transproxy_port_t;
        type sshd_t;
        class tcp_socket name_connect;
}

#============= sshd_t ==============
allow sshd_t transproxy_port_t:tcp_socket name_connect;

Связанный контент