Как затвердеть su с dpkg-statoverride?

Я читаю руководство по упрощению Ubuntu 14, и это одно из предложений:

Обычно кажется разумной идеей убедиться, что только пользователи из группы sudo могут запускать команду su для того, чтобы действовать как (или стать) root:

  dpkg-statoverride --update --add root sudo 4750
 / Бен / су 

Я просмотрел команду dpkg-statoverride но я до сих пор не могу понять, что делает команда выше.

Похоже, что Ubuntu 14 по умолчанию разрешает кому-то sudo. Чтобы протестировать, я создал нового пользователя, вошел в систему как этот пользователь, попытался sudo, и он не удался – что хорошо.

Итак, какова цель вышеупомянутого предложения?

3 Solutions collect form web for “Как затвердеть su с dpkg-statoverride?”

Цель состоит в том, чтобы запретить обычным пользователям запускать команду su (su похоже на sudo, причем разница в том, что sudo выполняет одну команду, su запускает новый сеанс как новый пользователь, который длится до тех пор, пока этот пользователь не выполнит exit)

Режим su по умолчанию – 4755 или rwsr-xr-x, «s» означает, что команда задана-UID (что означает, что она всегда выполняется как пользователь, который ее владеет, а не пользователь, который ее выполняет. В этом случае su принадлежит root, поэтому он всегда работает с привилегиями root)

su имеет свои собственные меры безопасности, чтобы гарантировать, что пользователь, который его выполняет, имеет право стать другим пользователем (обычно, запрашивая пароль другого пользователя), но вполне возможно, что в su будет уязвимость безопасности, которая позволит злоумышленнику как-то убедить его сделать что-то еще без власти.

Изменяя режим до 4750, он не позволяет обычным пользователям (пользователям, отличным от root и тем, кто в группе sudo) даже читать или выполнять его, в первую очередь, чтобы злоумышленник должен был либо изменить права собственности на этот файл, либо изменить режим файла или изменить собственный эффективный UID / GID, прежде чем они смогут даже попытаться использовать эту теоретическую уязвимость в su.

Команда dpkg-statoverride полезна в этом случае, потому что она направляет диспетчер пакетов использовать эти значения владельца / режима для этого файла, даже если он заменяется более новой версией (то есть с помощью apt upgrade). Другими словами, он делает его более постоянным, чем просто chown и chmod.

Вот тактика общего назначения, которую я рекомендую для этого экземпляра: всякий раз, когда я настраиваю конфигурацию su / sudo или любого компонента аутентификации на машине Linux / UNIX, я открою еще один сеанс ssh / putty на этом сервере и войду в систему пользователь root, и просто оставьте этот сеанс открытым в другом окне. Таким образом, если я что-то прикручу и закрою себя, у меня уже есть сеанс входа в систему, где я могу исправить все, что я сломал.

В зависимости от ваших пользователей это может быть хорошей или плохой идеей.

Команда su может использоваться обычными пользователями для входа в любой другой аккаунт, а не только для суперпользователя, если они знают пароль учетной записи.

Это полезно, например, когда два пользователя взаимодействуют в проекте, один из них (userA) входит в систему, и им необходимо прочитать файл, доступный только для другого пользователя (userB). Просто бег

 su -c 'cat /home/userB/file' userB >file 

может использоваться для копирования файла в домашний каталог пользователя, но это возможно только в том случае, если пользователюA разрешено запускать команду su .

На серверах баз данных PostgreSQL обычно администраторы баз данных могут переключаться на пользователя postgres для выполнения некоторых задач обслуживания, которые невозможны, пока сервер базы данных жив; для того, чтобы это работало, они должны иметь возможность запускать su - postgres .

Те же соображения применимы к команде sudo (которая отличается и более сложна, чем su – только конфигурация по умолчанию делает команду в первую очередь полезной для группы sudoers , потому что этой группе разрешено запускать любую команду с root . , если вы добавляете какие-либо пользовательские правила, например, позволяя любому пользователю запускать updatedb без аргументов, то пользователям за пределами группы sudoers необходимо выполнить разрешение на sudo .

Кроме того, существует не только su , это setuid – есть также

  • sg (позволяет временно присоединяться к группе, если есть групповой пароль)
  • passwd (позволяет сменить пароль)
  • chfn (позволяет изменять информацию пользователя)
  • chsh (позволяет изменять оболочку по умолчанию)

и несколько других. Эти инструменты содержат много кода с командой su , поэтому изменение режима /bin/su одиночку не будет покупать вас много, и изменение режима для всех из них, безусловно, будет раздражать ваших пользователей, особенно в случае passwd .

На упрощенном сервере вы хотите иметь несколько бинарных файлов setuid / setgid, особенно таких, которые могут выполняться учетной записью пользователя, которая не нуждается в конкретном инструменте, по возможности – по одной простой причине:

Вы не полностью доверяете этим инструментам полиции, что с ними кто-то делает. Ошибки в таких программах или их зависимости, которые позволяют пользователям обходить такую ​​полицейскую деятельность, часто обнаруживаются и активно ищутся исследователями безопасности и злоумышленниками. Неправильная конфигурация (поведение su зависит от конфигурации библиотеки PAM) может вызвать такую ​​же проблему. Таким образом, каждый двоичный файл setuid / setgid, который может выполнять указанная учетная запись (служба или пользователь), является потенциальным вектором для получения нежелательного корневого доступа.

Хотя известные проблемы в таком программном обеспечении обычно приводят к быстрому доступу к исправлениям / обновлению, принудительное их быстрое подключение может привести к сбою – и некоторые дыры могут быть неизвестны всем, включая поставщика.

Чтобы свести к минимуму вероятность решения неотложной проблемы, имеет смысл сделать что-то вроде https://stackoverflow.com/questions/2189976/find-suid-and-gid-files-under-root , а затем исследовать, какие из этих могут быть устранены (большинство из них, если вы используете специально созданный сервер и знаете, что вы делаете), предпочтительнее использовать такие методы, как dpkg-statoverride, которые поддерживаются вашими системами управления пакетами для постоянного сохранения таких изменений.

Существует еще одна причина ограничить доступ к «su» в конкретных установках со старой школьной NFS – по политическим причинам вы можете ограничить учетную запись root (что некоторые пользователи могут получить, опять же, политические причины. Тем не менее, плохая практика) от использования но тривиально, поскольку он обходит флаг root_squash монтирования NFS.

  • Rake - «bundle exec» - как я могу избежать `bundle exec` с моей` rake spec`
  • Fritz WLAN USB-накопитель - пакеты Xlib / Xfree86 dev для установки Wine
  • Каково расположение журналов регистрации пользователей?
  • Ошибка времени выполнения Awk: недостаточно аргументов
  • Синхронизация файлов NFS на жестком диске
  • Кто приостанавливает мои программы, когда я переключаюсь на другую сессию X?
  • Почему 64-разрядный Ubuntu работает медленнее?
  • Клиент Web ssh / telnet
  • Проблемы с Xubuntu и gtk
  • рекурсивно удалять все файлы, пустые каталоги и каталоги с файлами из нескольких имен в текущем каталоге, включая текущий каталог
  • Не удалось войти в систему из-за неправильного разрешения экрана
  • Interesting Posts

    Различать ошибку и «успех» в scanimage-batch

    Как распределена оперативная память между несколькими ОС при приостановке?

    Приложение Gentoo по умолчанию для открытия файлов

    Установите беспроводной сетевой адаптер на Centos 7

    Проверить, если $ 1 ИЛИ $ 2 равны нулю с "-z" – BASH

    открытие нескольких URL-адресов из текстового файла в виде разных вкладок в Firefox / Chrome?

    Могу ли я обновить yum до конкретной версии CentOS?

    Подключение к SSH – взаимодействие с текущим процессом

    Исходный IP-адрес отпавших пакетов

    Настройка тестовой среды драйверов устройств Linux

    недокументированное изменение поведения «локального», встроенного в bash 4.3?

    Какой порядок поиска используется для печати

    Как перезагрузить контейнеры докеров (в определенном порядке) автоматически при каждой перезагрузке в Ubuntu 14.04

    печать блока текста, соответствующего шаблону

    всегда подключаемое VPN-соединение, которое не протекает?

    Linux и Unix - лучшая ОС в мире.