Назад | Перейти на главную страницу

Как ограничить доступ к закрытому ключу ssh с помощью политик SELinux?

Я использую дистрибутив Fedora - с предустановленными политиками SELinux. Я хочу ограничить незащищенный доступ к своим закрытым ключам в ~/.ssh папка - для предотвращения утечки возможного вредоносного ПО, которое может работать под моей учетной записью. Рут-киты исключены.


Обновление №1: Я хочу решить корпоративную проблему с новичками в Fedora - без USB-токенов и т. Д. Они могут использовать очень слабую парольную фразу. Все будет хорошо, если только root пользовательские и клиентские программы ssh будут иметь доступ к закрытым ключам. Фактическому пользователю-человеку нет необходимости видеть закрытый ключ - я не знаю, зачем кому-либо смотреть закрытый ключ хотя бы один раз.


Как я могу это сделать? Предлагаю использовать SELinux.

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

Закрытые ключи имеют встроенные механизмы безопасности, которые работают вместе очень надежно. Ключи должны быть доступны для чтения только их владельцу. Если вы добавите надежную парольную фразу, беспокоиться не о чем.

Подходящий способ скрыть закрытые ключи от тех, кому разрешено их использовать, - это аппаратный модуль безопасности (смарт-карта или что-то еще хорошо работает). Вы можете сделать это с некоторыми усилиями для ключей SSH (появляется поиск в Google этот учебник об этом с некоторым неуклюжим оборудованием и GPG).

Однако, если вас беспокоит что-то, кроме оболочки, от ее получения, учитывая, что множество эксплойтов дает вам оболочку, AppArmour может таким образом ограничить разрешения файловой системы, хотя я считаю, что делать это внутри домашних каталогов немного сложнее управлять для многопользовательских систем.

SELinux тоже может это делать; вы помещаете метку безопасности на файлы и разрешаете только ssh читать их.

Имейте в виду, что пользователь, как правило, может создавать свои собственные ключи SSH и обычно является их владельцем, что означает, что он может настраивать любые добавленные метки и разрешения. Это предположение, которое существует.

Если вы собираетесь запускать вирусы, вы можете следовать некоторым правилам, которые сделают вас в большей безопасности, чем любое из этих:

  • Машины, на которых намеренно запускаются вирусы, должны быть изолированы. В частности, они не должны выступать в роли прыжковой коробки для чего-либо. У них должен быть ограниченный доступ к сети (в их собственной VLAN) вплоть до необходимого минимума. У них никогда не должно быть учетных данных, таких как закрытые ключи X.509 или закрытые ключи SSH, которые позволят им аутентифицироваться в чем-либо.
  • Вам необходимо сохранить возможность быстро восстанавливать эти машины в автономном режиме. Это делает виртуальные машины со снэпшотами очень привлекательными для такого рода исследований.
  • Все, что вас интересует, не должно храниться на машинах, используемых для запуска вирусов.
  • Если вирусы созданы вами или их действие находится под вашим контролем, по возможности делайте их инертными. Адреса C&C должны быть черными дырами (192.0.2.1, IP-адрес, зарезервированный для тестирования и документации, является хорошим; 0.0.0.0 также может быть подходящим; blackhole.iana.org хорошее DNS-имя). Если они должны быть реальными адресами, вы можете разместить для них специальный тестовый C&C в ограниченной сети.
  • Будьте очень осторожны, если вы используете чужой C&C и вирус, который вы не контролируете. Если вы это делаете, лучше всего, если вы делаете это на локальной консоли через отдельное интернет-соединение, никак не связанное с вашей локальной сетью.

Если вы беспокоитесь о случайном запуске вируса, selinux может вам помочь, хотя реальное решение этой проблемы - здравый смысл и должная осторожность.

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