Все в Интернете советуют отключить root-вход через SSH, так как это плохая практика и дыра в безопасности системы, но никто не объясняет, почему это так.
Что такого опасного в том, чтобы включить root-вход (особенно при отключенном парольном входе)?
И в чем разница между именем пользователя X и паролем Y или корневым именем пользователя и паролем X + Y с точки зрения безопасности в случае, если разрешена аутентификация по паролю?
su -
илиsudo -i
около того, чтобы их фактический вход был зарегистрирован. Это значительно упрощает аннулирование любого доступа к пользователю, так что даже если у него есть пароль root, он ничего не сможет с ним сделать.Ответы:
Почему рут над SSH плох
Есть много ботов, которые пытаются войти в ваш компьютер через SSH. Эти боты работают следующим образом.
Они выполняют что-то вроде,
ssh root@$IP
а затем они пробуют стандартные пароли, такие как «root» или «password123». Они делают это так долго, как могут, пока не найдут правильный пароль. На всемирно доступном сервере вы можете увидеть множество записей в ваших файлах журналов. Я могу идти до 20 в минуту или больше.Когда злоумышленникам повезет (или хватит времени), и они найдут пароль, у них будет root-доступ, и это будет означать, что у вас проблемы.
Но когда вы не разрешаете root входить через SSH, бот должен сначала угадать имя пользователя, а затем соответствующий пароль. Допустим, список правдоподобных паролей содержит
N
записи, а список вероятных пользователей -M
большие записи. У бота есть наборN*M
записей для тестирования, так что это немного усложняет бот по сравнению с корневым случаем, когда он имеет только набор размеровN
.Некоторые люди скажут, что это дополнительное
M
не реальное повышение безопасности, и я согласен, что это лишь небольшое улучшение безопасности. Но я думаю об этом больше как об этих маленьких замках, которые сами по себе небезопасны, но они мешают многим людям легко получить доступ. Это, конечно, допустимо только в том случае, если на вашем компьютере нет других стандартных имен пользователей, таких как tor или apache.Лучшая причина запрета root - это то, что root может нанести гораздо больший урон машине, чем обычный пользователь. Таким образом, если по счастливой случайности они найдут ваш пароль, вся система будет потеряна, в то время как со стандартной учетной записью пользователя вы сможете манипулировать только файлами этого пользователя (что все еще очень плохо).
В комментариях было упомянуто, что обычный пользователь может иметь право на использование,
sudo
и если пароль этого пользователя будет угадан, система также полностью потеряна.В заключение я бы сказал, что не имеет значения, какой пароль пользователя получает злоумышленник. Когда они угадывают один пароль, вы больше не можете доверять системе. Злоумышленник может использовать права этого пользователя для выполнения команд
sudo
, злоумышленник также может использовать уязвимость в вашей системе и получить права root. Если у злоумышленника был доступ к вашей системе, вы больше не можете ему доверять.Здесь следует помнить, что каждый пользователь в вашей системе, которому разрешено входить через SSH, является дополнительным недостатком. Отключая root, вы устраняете одну очевидную слабость.
Почему пароли через SSH плохие
Причина отключения паролей действительно проста.
Вся идея пробовать пароли работает только тогда, когда пароли являются предположительными. Поэтому, когда у пользователя есть пароль «pw123», ваша система становится небезопасной. Другая проблема с паролями, выбранными людьми, состоит в том, что их пароли никогда не бывают действительно случайными, потому что тогда их будет трудно запомнить.
Кроме того, пользователи часто используют свои пароли для входа в Facebook или в свои учетные записи Gmail и на ваш сервер. Поэтому, когда хакер получает пароль учетной записи этого пользователя Facebook, он может попасть на ваш сервер. Пользователь может легко потерять его из-за фишинга, иначе сервер Facebook может быть взломан.
Но когда вы используете сертификат для входа в систему, пользователь не выбирает свой пароль. Сертификат основан на случайной строке, которая очень длинная от 1024 до 4096 бит (пароль ~ 128 - 512 символов). Кроме того, этот сертификат предназначен только для входа на ваш сервер и не используется никакими внешними сервисами.
связи
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
Эта статья взята из комментариев, и я хотел дать ей немного более заметную позицию, поскольку она немного глубже касается ботнетов, которые пытаются войти через SSH, как они это делают, как выглядят файлы журналов и что можно сделать, чтобы остановить их. Это было написано Питером Хэнстином.
источник
N*M > N
. Поскольку на большинстве хостов * nix естьroot
пользователь, если вы разрешите root входить напрямую с удаленного хоста, размер тестовой матрицы равен количеству паролей, которые нужно попробовать; Запрещение прямого входа в систему root, количество возможных комбинаций умножается на количество имен пользователей, которые вы хотите проверить (и все еще нет гарантии, что вы будете проверять действительные имена пользователей!).# of X length words
*# of Y length words
возможные комбинации, которые можно попробовать. Когда имя пользователя фиксированное (например, root), но пароль имеет длину X + Y символов,# of X+Y length words
возможны пароли. И# of X+Y length words
=# of X length words * # of Y length words
Это может быть одной из причин, по которой прямой вход в систему root запрещен.
Но это всего лишь СОВЕТ айсберга. Вам необходимо настроить другие ограничения и конфигурации, такие как:
источник
sudo
настройками по умолчанию . Настоящий убийца - это мультипликативный эффект, когда у вас нет одного имени пользователя, на которое вы можете рассчитывать, чтобы быть действительным на любом данном хосте.Вы правы в том, что имя пользователя root и пароль символа X + Y криптографически по крайней мере так же надежны, как имя пользователя X и пароль символа Y. На самом деле это еще более безопасно, потому что имена людей легко угадать (боты могут просто попробовать john, mike, bill и т. Д. И т. Д., И это то, что многие из них делают вместо того, чтобы пробовать root). И вам особенно не повезло, если это целенаправленная атака, потому что, если кто-то хочет взломать сервер компании, не составит труда узнать имя (ник) сисадмина.
И как только злоумышленник получает доступ к учетной записи, которую системный администратор использует для входа в систему по протоколу ssh (а затем использует
su
илиsudo
для выполнения своих задач), он может заразить сеанс этого пользователя программой, которая отправит пароль root атакующего, когда системный администратор введет следующую команду. время.Это любой тип корневых учетных записей, которые (или должны) считаться плохими с точки зрения безопасности. «Обычный» логин пользователя -> цепочка su / sudo добавляет контрольный журнал. На простом английском языке: это позволяет узнать, кто что сделал.
Особый случай может быть тот, где только один человек имеет root-доступ. В этом случае использование дополнительного «обычного» пользователя не принесет особой пользы (по крайней мере, я никогда не смогу увидеть это значение). Но в любом случае - вы все равно должны иметь простого пользователя в системе (для неадминистративных задач, запуска wget и т. Д .;)).
источник
Злоумышленнику (бот / ботнет / хакер) нужно только угадать пароль и получить полный контроль над вашей системой, если вы открыты для Интернета. Кроме того, ни одна из системных учетных записей (www-data, proxy и т. Д.) Не должна иметь возможность входить в систему по SSH по тем же причинам.
Если вы отключили вход по паролю (например, с использованием открытого ключа), учтите, что тот, кто получит закрытый ключ, получит полный контроль над вашей системой. Узнайте, почему использование открытого ключа с пользователем лучше ниже.
Дополнительное имя пользователя может добавить уровень безопасности, поскольку: а) злоумышленник должен знать и пару, имя пользователя и пароль; б) в случае, если злоумышленник проникнет в вашу систему, он не получит немедленного доступа к привилегированной учетной записи, добавив немного нюансов для злоумышленника.
В этом случае открытый ключ также является плюсом, поскольку:
источник
Это не совсем плохо, если вы принимаете меры предосторожности. Например, вы можете установить CSF (Configure Server Firewall) и указать количество разрешенных попыток сбоя, поэтому, если кто-то попытался, скажем, более 5 попыток сбоя?, Они автоматически блокируются. Так что вся первая часть лучшего ответа не будет проблемой вообще. Это случалось со мной много раз, и, к счастью, все участники были заблокированы навсегда. Я думаю, для сервера это не большая проблема, если вы единственный человек, который управляет сервером, но, конечно, если есть много системных администраторов, или если вы работаете в организации, то, очевидно, не используйте корень. Также для настольного ПК, я полагаю, лучше использовать другую учетную запись, поскольку существует угроза безопасности, поскольку вы используете много программного обеспечения, но на сервере вы не Если вы выбираете случайное программное обеспечение, которому вы не доверяете, вы должны поддерживать его как можно ниже. Итак, вывод таков: нет, это не очень вредно, если вы знаете, как правильно управлять сервером.
источник