Почему права доступа к ssh-файлу строгие
За эти годы мне пришлось генерировать и использовать много ключей ssh. Некоторые из вещей, которые всегда должны быть выполнены: ~/.ssh должен быть 0700, а ~/.ssh / authorized_keys должен быть 0600, а затем закрытые ключи, используемые для входа на сервер, всегда должны быть 0600. Я знаю, что ssh обеспечивает соблюдение этих разрешений, но я хотел знать причину, по которой небезопасно иметь следующее (да, я звоню белым шляпам, черным шляпам и всем остальным, чтобы получить этот ответ).
- ~/.ssh / = 0755
- ~/.ssh / authorized_keys = 0644
- ~/.ssh / id_rsa = 644 (или любой закрытый ключ)
3 ответа
По соображениям безопасности.... для предотвращения несанкционированного доступа пользователей к любой информации, которая может помочь взломать вашу учетную запись.
Помните о принципах безопасности, предоставляйте только абсолютную минимальную информацию (если таковая имеется), необходимую внешней стороне для выполнения задачи. Разработанный набор разрешений делает это. И ssh разработан, чтобы быть надежным программным обеспечением безопасности.
Традиционно серверы Unix и Linux предназначены для многопользовательских систем. Из-за использования криптографии с открытым / закрытым ключом становится важным сохранять секретность закрытого ключа. Значения разрешений восьмеричного файла описаны @gregory в его ответе и более полно описаны на странице Википедии Unix Modes. Остальная часть моего ответа будет сосредоточена на том, что, как вам кажется, вас заинтересует, и каковы потенциальные последствия наличия слабых разрешений для вашего ~/.ssh
каталог и основные файлы.
Обоснование разрешений sshd
обеспечивает, когда StrictModes
находится на:
~/.ssh/
знак равно0700
:- Целиком
~/.ssh/
каталог содержит файлы, которые должны быть прочитаны пользователем, работающимssh
и написано в случае~/.ssh/config
, - Он также содержит файлы, которыми злоумышленник может злоупотреблять, имея возможность читать или писать. Слабые разрешения, которые вы упоминаете
0755
для этого каталога вместе с остальными (~/.ssh/id_rsa = 0644
,~/.ssh/authorized_keys = 0644
) потенциально может допустить много злоупотреблений. Например:- Злоумышленник может украсть
~/.ssh/id_rsa
или другие закрытые ключи в этом каталоге, позволяющие им входить на любой хост, на который целевой пользователь авторизован для SSH. Вот почему~/.ssh/id_rsa = 0644
это плохо, и это самый очевидный низко висящий фрукт, который атакующий будет искать первым. - Злоумышленник может добавить свой открытый ключ к
~/.ssh/authorized_keys
, который предоставил бы этому пользователю доступ к SSH на хост и маскировал под этого пользователя. Если целевой пользователь находится в/etc/sudoers
и с включенным sudo без пароля, то это становится атакой повышения привилегий.
Разрешения, которые вы упоминаете~/.ssh/authorized_keys = 0644
технически не допустит этого, но вот почемуsshd
"sStrictModes on
Настройка обеспечивает строгие разрешения для этого файла. Позволять другим пользователям писать в этот файл плохо, читать не так плохо, потому что технически открытый ключ не должен оставаться секретным. - Злоумышленник может изменить
~/.ssh/known_hosts
переопределить открытый ключ удаленного хоста тем, которым они владеют, а затем выполнить атаку с отравлением кэша DNS, чтобы перенаправить имя хоста на принадлежащий им IP-адрес. Это в основном человек в средней атаке, перенаправляющий пользователя на его вредоносный хост, когда пользователь входит в систему на этом хосте. - Злоумышленник может изменить настройки в
~/.ssh/config
выключитьStrictHostKeyChecking
чтобы облегчить вышеуказанную атаку MitM. - Злоумышленник может выполнить обе вышеуказанные атаки MitM, а затем установить
ForwardAgent yes
и взломать файл сокета SSH целевого пользователя. Когда целевой пользователь входит на хост MitM злоумышленника, злоумышленник изменяет права доступа к файлу сокета агента SSH, а затем использует агент SSH удаленного пользователя (содержащий его закрытые ключи) для входа на другие хосты, для которых целевой пользователь авторизован для SSH. в.
- Злоумышленник может украсть
- Если версия SSH старая, злоумышленник может прочитать открытый текст старого стиля
~/.ssh/known_hosts
, чтобы получить информацию о том, к каким хостам целевой пользователь имеет доступ. - Следовательно, биты разрешения
0700
обеспечить следующее: 7
Чтение, запись и выполнение битов, установленных для пользователя, позволяют:- Пользователь может создавать, переименовывать или удалять файлы в каталоге и изменять атрибуты каталога.
Таким образом, пользователь может создавать и записывать в свой конфигурационный файл SSH, управлять своими~/.ssh/authorized_keys
файл и т.д... - Бит чтения позволяет пользователю перечислять файлы в каталоге.
Очевидно, что пользователю, владеющему каталогом, это необходимо для управления файлами внутри. - Бит выполнения позволяет пользователю войти в каталог и получить доступ к файлам и каталогам внутри.
Опять же, это очевидно и необходимо для пользователя, чтобы управлять своими~/.ssh/
каталог.
- Пользователь может создавать, переименовывать или удалять файлы в каталоге и изменять атрибуты каталога.
0
: Нет разрешений для пользователей каталогаgroup
а такжеother
пользователи гарантируют, что ни один из вышеупомянутых переходов не разрешен, по крайней мере, на уровне каталога.
- Целиком
~/.ssh/authorized_keys
знак равно0600
:- Как уже упоминалось выше, важно, чтобы этот файл принадлежал истинному владельцу, и чтобы никакой другой пользователь не мог писать в этот файл.
- Злоумышленник может изменить этот файл, чтобы изменить параметры (да, в этом файле есть нечто большее, чем просто список открытых ключей), используемый для этого ключа, когда пользователь подключается к целевой системе.
- Злоумышленник может изменить этот файл, чтобы изменить
command
возможность запуска команды от имени пользователя при входе в систему. Это можно рассматривать как локальное повышение привилегий или локальное выполнение команды для маскировки под этого пользователя.
~/.ssh/id_rsa
знак равно0600
(или любой закрытый ключ)- Также упомянуто выше, важно, чтобы любые файлы с закрытым ключом принадлежали истинному владельцу, и чтобы никакой другой пользователь не мог читать или записывать их.
- Злоумышленник может вызвать DoS и помешать целевому пользователю войти в систему на серверах, если они могут перезаписать файлы закрытого ключа.
- Как упоминалось выше, злоумышленник может прочитать файлы с закрытым ключом для использования в качестве метода аутентификации для других хостов, к которым у целевого пользователя есть доступ.
Права доступа к файлам Linux могут быть выражены в виде трехзначного числа. Каждая из цифр представляет: Owner
, Group
, Others
,
Digit | Permissions
------------------------------
0 | None
1 | Execute
2 | Write
3 | Write and Execute
4 | Read
5 | Read and Execute
6 | Read and Write
7 | Read, Write and Execute
С 755
, вы бы дали всем права на чтение и выполнение. С 644
, вы бы дали разрешение на чтение для всех.
Клиенты и серверы SSH будут напоминать вам об использовании строгих разрешений, чтобы вы не случайно поделились своим личным ключом с каждым пользователем на сервере.