Мой начальник вызвался быть моим системным администратором на нашем рабочем сервере RedHat. Он попросил меня усилить меры безопасности, чтобы избежать подобных rm -f *
ошибок не так давно.
Сейчас у нас 53 пользователя, которые занимаются этим, и это кошмар аудита. Мне интересно, можно ли разрешить доступ пользователям только в определенные дни недели.
Например, можно ли разрешить пользователю «Джо» входить в систему ТОЛЬКО по вторникам и четвергам, а «Джейн» - только по воскресеньям? Может etc/sudoers
быть настроен, чтобы позволить это?
Есть ли лучший способ вместо использования sudoers?
permissions
security
sudo
Крис
источник
источник
rm -rf /
.Ответы:
sudo
выполняет аутентификацию через PAM, как и почти все остальное на Linux.Таким образом, вы должны быть в состоянии использовать
pam_time.so
для этого.По крайней мере, по умолчанию в Debian этот модуль не включен. Вам нужно добавить строку, которая выглядит следующим образом:
либо
/etc/pam.d/sudo
включить только для sudo, либо/etc/pam.d/common-account
(после блока pam-auth-update) включить для всех программ в системе.Затем отредактируйте,
/etc/security/time.conf
чтобы установить свои ограничения. Название сервиса должно бытьsudo
. Например, чтобы разрешить Фреду использоватьsudo
только с 15:00 до 17:00 в пятницу:(ПРИМЕЧАНИЕ: я не проверял это.)
редактировать: для ясности, я согласен с другим ответом и различными комментариями, у вас слишком много людей, выполняющих слишком много команд от имени пользователя root, и вам действительно нужно это исправить. И, конечно, если они могут стать root, они могут редактировать конфигурацию pam ...
источник
Я бы задал вопрос, зачем 53 пользователям нужен sudo для выполнения своей повседневной работы - для большинства пользователей (даже разработчиков) sudo должно быть редким исключением, а не такой обычной вещью, когда кто-то случайно запускает
sudo rm -rf *
команду.Можете ли вы использовать групповые разрешения (или даже более продвинутые списки ACL), чтобы дать людям доступ к файлам, которые им необходимы для выполнения своей работы, возможно, с помощью некоторых сценариев setuid или sudo или двоичных файлов, позволяющих им выполнять такие действия, как перезапуск служб? (обратите внимание, что сложно написать безопасный сценарий setuid / sudo, поэтому лучше сохранять честность честных людей).
Даже если вы можете ограничить доступ пользователей sudo одним днем в неделю, это все равно 53 человека с доступом sudo за неделю, так что это не поможет решить вашу основную проблему.
В связи с этим я бы спросил, нужно ли вообще многим пользователям доступ к производственному серверу - можете ли вы отправлять журналы или любые другие данные / файлы, которые им нужны, на непроизводственную машину?
источник
vi/cp/mv/rm
. Толькоcd
иmore
. Ничего больше.Самый простой способ - использовать suders.d (через inludedir) для вашей конфигурации. Тогда вы могли бы иметь задания cron, которые могли бы помещать правила для каждого пользователя в этот каталог в любое время.
Директива #includedir может использоваться в / etc / sudoers для создания каталога sudo.d, в который вы можете добавить правила sudoers как часть ваших правил. Например, с учетом:
#includedir /etc/sudoers.d
sudo будет читать каждый файл в /etc/sudoers.d, пропуская имена файлов, заканчивающиеся на '~' или содержащие '.' символ, чтобы избежать проблем с менеджером пакетов или редактором временных / резервных файлов. Файлы анализируются в отсортированном лексическом порядке. То есть /etc/sudoers.d/01_first будет проанализирован до /etc/sudoers.d/10_second. Помните, что поскольку сортировка является лексической, а не числовой, /etc/sudoers.d/1_whoops будет загружен после /etc/sudoers.d/10_second. Использование одинакового количества лидирующих нулей в именах файлов может быть использовано, чтобы избежать таких проблем.
Обратите внимание, что в отличие от файлов, включаемых через #include, visudo не будет редактировать файлы в каталоге #includedir, если один из них не содержит синтаксическую ошибку. Все еще возможно запустить visudo с флагом ‑f для непосредственного редактирования файлов.
/etc/sudoers.d/joe будет присутствовать, когда вы хотите, чтобы у joe был доступ, и вы могли бы просто удалить файл, чтобы лишить его доступа.
источник
Вы можете добавить crontab, чтобы поместить пользователей в группу sudo, а затем второй crontab, чтобы убрать этого пользователя.
источник