Там, где я сейчас работаю, я вынужден использовать учетную запись root, как и все остальные. Других пользователей нет. Даже в БД. Старшие объяснили мне, что это сделано для удобства.
Я действительно знаю, что это неправильно, но мне бы очень хотелось иметь пример из реальной жизни или очень убедительный теоретический пример, чтобы я мог доказать им, насколько это неправильно. Не для возмездия или чего-то подобного, но, возможно, поможет им лучше понять риск и повысить нашу безопасность.
На самом деле работать с root-правами - это действительно непросто. В моей домашней сети (а это большая домашняя виртуальная сеть) я даже не решаюсь войти в систему как root ..
Они знают об угрозе случайного стирания или изменения важных файлов и папок. Об угрозе случайного изменения разрешений.
Они настаивают на том, что мы должны дважды проверить наши программы и наше поведение, прежде чем нажимать кнопку «Enter».
Что еще могло пойти не так?
Я подозреваю внешнюю атаку (с точки зрения Apache). Тоже мошенническая программа. Может ли мошенническая программа взять под контроль неверные разрешения apache?
Что еще возможно? Спасибо!
Давайте просто удалим несколько старых журналов с веб-сервера. Не нужно входить в систему под учетной записью, мы получили root.
rm -rf / var/www/logs/2010.log
Ой! Не должен был быть root.
Хм .. Я много плохого сделал под root. Однажды я написал сценарий, который должен был (среди прочего) периодически очищать каталог с именем /foo
. Итак, скрипт выполнялся как root и делал что-то вроде этого:
cd /foo
rm -rf *
Однажды /foo
каталог не существует из-за некоторых проблем с нашей SAN. Результат: катастрофа.
Конечно, это просто плохо написанный сценарий; это должно было быть:
cd /foo && rm -rf *
но он показывает вам, как легко сделать что-то серьезно плохое, если у вас слишком много привилегий.
Другая проблема, с которой вы сталкиваетесь, когда все входят в систему как root, заключается в том, что вы теряете всю возможность отслеживания / аудита. Кто знает, кто что сделал? Это действительно приемлемо?
Вопрос, который следует задать себе (и своему работодателю): что вам нужно сделать, чтобы получить root-права?
В этой конкретной теме я действительно предпочитаю Solaris Linux. (пожалуйста, не пламеньте, я говорю только о теме рут пользователя). Я считаю, что даже если вы не используете Solaris, можно кое-чему научиться из того, как Solaris это делает. Вы можете имитировать некоторые из них в Linux.
Solaris (более поздние версии) по умолчанию вообще не позволяет входить извне как root. Действительно, root стал скорее ролью, чем обычным пользователем. Если у вас есть достаточные привилегии и вы знаете пароль root, вы, конечно, можете войти в систему как root, но только после того, как войдете на хост сначала как вы, а затем su в root. Таким образом, вы всегда можете увидеть, кто использовал учетную запись root.
Кроме того, у вас есть все тонкие настройки привилегий на Solaris, например, вы можете назначить привилегию для привязки к сокету <1024 определенной службе. В Linux такой процесс должен запускаться под root. Во-вторых, у вас есть RBAC и делегирование полномочий SMF (право запускать, останавливать или администрировать данную службу). При этом редко требуется что-нибудь действительно сделать как root.
Solaris действительно - кстати, он настроен «из коробки», а также предлагает функции, которые он предлагает - отговаривает вас от использования root и упрощает использование root-аккаунта. Я надеюсь однажды увидеть такие же достижения в Linux.
Контраргумент вашего босса ко всему этому заключается в том, что на определение и настройку потребуется время. Это правда, но ваш сайт кажется довольно большим. Итак, ключевое слово стандартизация. Определите эти роли раз и навсегда, используя функции, которые предоставляет вам ваша ОС. Затем стандартизируйте все свои серверы. Еще одно ключевое слово, которое я хотел бы добавить к таблице, - это принцип наименьших привилегий. У вас никогда не должно быть больше привилегий, чем требует ваша работа. К сожалению, вы зависите от того, насколько детализирована модель привилегий и модель делегирования вашей ОС, но прочтите об этом, и вы, вероятно, увидите, что ваша ОС добилась больших успехов в этой области за последние 10-15 лет, так что, возможно, больше нет Вам необходимо войти в систему как root?
Apache httpd не должен запускаться от имени пользователя root. Период! Если ваш веб-сервер взломан, злоумышленник внезапно получает привилегии root. Ваша ОС может заставить вас запустить ее от имени пользователя root, но в apache httpd есть функция для немедленного переключения на другого пользователя. Смотреть в User
и Group
настройки в файле конфигурации для Apache httpd.
Дурь несусветная! это просто напрашивается на неприятности. Думаю, пожилых надо увольнять ради удобства.
Помимо того, что вы случайно сделали что-то не так (например, rm -rf /
что имело бы ограниченный эффект, если бы вы не были root), если кого-то уволили из-за глупой ошибки, которая убила критически важный сервер. Они могут просто рассердиться и войти в систему удаленно и отключить сеть, или изменить пароль root, чтобы никто не мог войти в систему и зашифровать корневой раздел или иным образом действительно испортить вашу сеть! Угадай, что? Никто и понятия не имел, кто это сделал, потому что они использовали учетную запись root, пароль к которой известен всем, включая всех бывших сотрудников.
Я настоятельно рекомендую вам создать какие-то учетные записи пользователей и только для тех, кому нужен такой доступ. Если требуется root-доступ, используйте sudo. Вы также можете ограничить для каждого пользователя или группы, что они могут делать с sudo, какие программы можно запускать и т. Д.
Теперь, если сотрудник увольняется, вы можете удалить пользователя, просто удалив учетную запись.
Это настолько идиотично, что трудно объяснить, почему это так плохо.
Вы просили привести примеры того, что может пойти не так. Вот один:
И, просто говоря, может быть, пароль root ОС и пароль root базы данных совпадают?