CAP_NET_ADMIN эквивалент для * BSD - PullRequest
0 голосов
/ 21 января 2020

Я участвую в демоне маршрутизации и изучаю меры безопасности. При запуске демон общается с ядром и устанавливает маршруты. На Linux, как хорошая практика, если демон запускается как root (и правильно настроен), он быстро отбросит привилегии и переключится на непривилегированного пользователя / группу, но сохранит возможность CAP_NET_ADMIN .

Я ищу аналогичный механизм для использования на популярных BSD (FreeBSD, OpenBSD, macOS).

Кажется, что Обязательный контроль доступа хотя бы на FreeBSD может быть подходящим способом; но я не уверен. Буду признателен за указатели на код или документацию.

Спасибо!

1 Ответ

1 голос
/ 25 февраля 2020

В NetBSD (по умолчанию), а также, я полагаю, и в OpenBSD, процесс, отправляющий через сокет маршрутизации запрос на добавление или удаление маршрута из таблиц (или таблиц) маршрутизации (или, в действительности, на что угодно, кроме получения маршрута). должен иметь эффективный идентификатор пользователя, равный нулю (т. е. быть "root"). Т.е. процесс не может отбросить привилегии после открытия сокета маршрутизации и все же изменить таблицу (таблицы) маршрутизации - привилегии проверяются во время обработки сообщения запроса маршрутизации, а не во время первого открытия сокета маршрутизации.

В NetBSD можно было бы установить новую модель безопасности в ядре, которая могла бы изменить это правило, но я не знаю ни одной, предназначенной для этого специально для таблиц маршрутизации. (OpenBSD не использует подсистему NetBSD kauth.)

...