2

За эти годы мне пришлось генерировать и использовать много ключей SSH. Некоторые из вещей, которые всегда должны быть выполнены: ~/.ssh должен быть 0700, а ~/.ssh/authorized_keys должен быть 0600, а затем закрытые ключи, используемые для входа на сервер, всегда должны быть 0600. Я знаю, что ssh применяет эти разрешения, но я хотел узнать причину, по которой небезопасно иметь следующее (да, я звоню белым шляпам, черным шляпам и всем остальным, чтобы получить этот ответ).

  • ~/ .ssh/ = 0755
  • ~/ .ssh/ authorized_keys = 0644
  • ~/ .ssh/ id_rsa = 644 (или любой закрытый ключ)

3 ответа3

1

Права доступа к файлам 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 будут напоминать вам об использовании строгих разрешений, чтобы вы не случайно поделились своим закрытым ключом с каждым пользователем на сервере.

1

По соображениям безопасности .... для предотвращения несанкционированного доступа пользователей к любой информации, которая может помочь взломать вашу учетную запись.

Помните о ваших принципах безопасности, предоставьте только абсолютную минимальную информацию (если таковая имеется), необходимую внешней стороне для выполнения задачи. Разработанный набор разрешений делает это. И ssh разработан, чтобы быть надежным программным обеспечением безопасности.

0

Традиционно серверы 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 StrictModes 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 и помешать целевому пользователю войти в систему на серверах, если они могут перезаписать файлы закрытого ключа.
    • Как упоминалось выше, злоумышленник может прочитать файлы с закрытым ключом для использования в качестве метода аутентификации для других хостов, к которым у целевого пользователя есть доступ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .