Судери на один день на тиждень?


10

Мій бос мене зголосився стати системою управління нашим виробничим сервером redhat. Він попросив мене посилити охорону, щоб уникнути подібних випадків, rm -f *що трапилися недавно.

Наразі у нас 53 користувачі входять до машини, і це кошмар аудиту. Мені цікаво, чи можна дозволити користувачеві доступ лише в конкретні дні тижня.

Наприклад, чи можу я користувачеві "Джо" дозволити входити ТОЛЬКО у вівторок і четвер, а "Джейн" лише у неділю? Чи etc/sudoersможна налаштувати, щоб це дозволити?

Чи є кращий спосіб замість використання судорів?


10
Я рекомендую НЕ читати сторінку керівництва. Дивіться xkcd # 1343
user60684

3
Ні, я кажу йому, щоб він не читав посібник, оскільки неможливо прочитати ІМХО. ОП, ймовірно, знайде відповідь на сторінці людини, якби її було легше читати.
користувач60684

10
Ви можете це зробити, але майте на увазі, що користувачі можуть просто повернути собі доступ до судових апаратів у будь-який день, коли вони матимуть root.
Нік Маттео

2
@ Mark0978, якби ви знали назву компанії, ви, ймовірно, померли б, сміючись. Це ганьба, що це дозволено ... на виробничому сервері.
Кріс

3
Це здається дурним. Це просто означає, що Біллу доведеться чекати, коли запуститься його часовий проміжок в середу rm -rf /.
Майкл Хемптон

Відповіді:


21

sudo робить свою автентифікацію через PAM, як і майже все інше на коробці Linux.

Тому ви повинні мати можливість використовувати pam_time.soдля цього.

За замовчуванням на Debian принаймні цей модуль не ввімкнено. Вам потрібно додати рядок, який виглядає приблизно так:

account    requisite  pam_time.so

або /etc/pam.d/sudoввімкнути лише sudo, або щоб /etc/pam.d/common-account(після блоку оновлення pam-auth-оновлення) включити всі програми в системі.

Потім відредагуйте, /etc/security/time.confщоб встановити обмеження. Назва служби повинна бути sudo. Наприклад, щоб дозволити Фреду використовувати sudoлише між 15:00 та 17:00 у п'ятницю:

sudo;*;fred;Fr1500-1700

(ПРИМІТКА. Я цього не перевіряв.)

редагувати: Щоб було зрозуміло, я погоджуюся з іншою відповіддю та різними коментаторами, здається, у вас занадто багато людей, які виконують занадто багато команд як root, і вам дійсно потрібно це виправити. І звичайно, якщо вони можуть стати root, вони можуть редагувати пам-конфігурацію ...


PAM здається складним для впровадження, але також дозволяє більш чітко контролювати, хто робить що і коли. Прийнято і проголосувало. Дякую.
Кріс

2
Я не думаю, що заохочення до нього є правильною відповіддю, IMAO правильною відповіддю на це питання є "РАБОТИ ЗА ГОРИ !!!! 1! 1 !! 1! 1"
o0 '.

Це насправді працює? Я можу керувати різними механізмами входу, такими як "вхід", "ssh", "gdm", "su" за допомогою pam_time.so, але це не працює для sudo. Я хочу не допустити того, щоб хто-небудь звик будь-яким нормальним механізмом поза робочим часом. (Я усвідомлюю, що це не бронежилет, хтось може заздалегідь підготувати встановлену оболонку або бекдорд, але я не сподіваюсь, що це станеться у цій ситуації.)
Сем Уоткінс,

20

Я б запитав, чому 53 користувачам потрібно судо, щоб виконувати свою щоденну роботу - для більшості користувачів (навіть розробників) судо має бути рідкісним винятком, а не такою рутинною справою, що хтось випадково запускає sudo rm -rf *команду.

Чи можете ви використовувати групові дозволи (або навіть більш вдосконалені ACL), щоб надати людям доступ до необхідних файлів, щоб виконати свою роботу, можливо, за допомогою деяких налаштованих або sudo'ed сценаріїв або двійкових файлів, щоб вони могли робити такі дії, як перезавантаження послуг? (зауважте, що важко написати безпечний скрипт setuid / sudo, тому чеснішими людьми є більше).

Навіть якщо ви можете обмежити людей одним днем ​​на тиждень доступу до судо, це все ще 53 людини, які мають доступ до судо за тиждень, тож це не дуже допоможе з вашою основною проблемою.

З цього питання я б запитав, чи потрібно багатьом користувачам взагалі доступ до виробничого сервера - чи можете ви надсилати журнали або будь-які дані / файли, які їм потрібні, на невиробничу машину?


Або ви можете опублікувати якийсь доступ до файлів журналів, які вони можуть знадобитися, chroot в'язницю sftp налаштування.
boatcoder

@Johnny більшість робіт, виконаних на цьому хості, - це створення / редагування та запуск скриптів оболонки. Користувачів не можна допускати vi/cp/mv/rm. Тільки cdі more. Більш нічого.
Кріс

@Johnny Якщо я встановив ACL для каталогу, чи файли в цьому каталозі успадковують атрибути ACL за замовчуванням?
Кріс

@Chris Так, якщо встановити ACL за замовчуванням для каталогу.
Майкл Хемптон

Це має бути коментар, а не відповідь. Незалежно від того, чи є розумним сценарій роботи ОП, інші люди мають подібну потребу заблокувати "sudo" для деяких користувачів у певний час.
Сем Уоткінс

7

Найпростішим способом було б скористатися використанням 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 буде присутній, коли ви хочете, щоб Джо отримав доступ, і ви могли просто видалити файл, щоб забрати доступ.


1
У мене виникла проблема з файлами sudoers для користувача: 'sudoers.user1' і т. Д. Ви зауважуєте про '~' і '.' символи вирішили мою проблему. Я так радий, що ти прочитав посібник! Дякую.
Хан

0

Ви можете додати crontab, щоб розмістити користувачів у групі sudo, а потім другий crontab, щоб вивезти цього користувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.