Можно ли открыть 2 порта на SSH с 2 разными схемами аутентификации?

My question is, when there are multiple bootloaders (.efi) reside in ESP, are they identical? since they are all grub2. Can all of them discover all the kernel in the system?

Если на диске есть несколько установок UEFI Linux, они обычно используют один и тот же системный раздел EFI (ESP ), но их соответствующие исполняемые файлы EFI находятся в разных подкаталогах ESP в форме EFI/bootloader-id. Исполняемые файлы EFI имеют такое же имя; для 64-битных установок это grubx64.efi. Таким образом, переменные EFI будут расположены по адресу EFI/bootloader-id/grubx64.efi

.

Эти исполняемые файлы устанавливаются grub-installв соответствующих системах, хотя вам, возможно, придется указать grub-installна этот раздел с помощью --efi-directory. И, возможно, вам также придется выбрать значение bootloader-idс --bootloader-id. Различные дистрибутивы Linux имеют разные значения по умолчанию для bootloader-id. Например, в Debian по умолчанию используется debian. Для получения дополнительной информации об опциях grub-installсм. man grub-install.

grub-installhard -связывает имя загрузочного/корневого устройства с этими исполняемыми файлами, используя UUID.

Эти исполняемые файлы EFI выполняются микропрограммой EFI на материнской плате. Поскольку исполняемый файл EFI знает загрузочные/корневые устройства для своей установки Linux и поскольку по определению grub.cfgимеет фиксированное расположение относительно загрузочных/корневых устройств, исполняемый файл EFI может выполнять /boot/grub/grub.cfg, соответствующий этой установке. И, конечно же, grub.cfgсодержит всю информацию, необходимую для загрузки, включая имена ядер, установленных в системе.

Страница Arch Wiki GRUB хорошо освещает эти вопросы. См. также страницу Debian Wiki UEFI .

16
07.10.2019, 14:14
2 ответа

Итак, оказалось, что ответ на самом деле был намного, намного проще, чем я думал.

Тем не менее, я должен поблагодарить '@jeff schaller' за его комментарии, если бы не он, я бы не стал изучать, как работает конфигурация SSH 'Match'.

В любом случае

Хитрость заключается в том, чтобы установить файл конфигурации /etc/ssh/sshd _по умолчанию, чтобы он был конфигурацией, которую вы хотели бы иметь для доступа, поступающего из внешнего интернет-соединения.

В моем случае это означало установку следующего

PermitRootLogin no
PasswordAuthentication no
UsePAM no

Сделав это,Я заставляю ВСЕ входы в систему, независимо от того, откуда они происходят, использовать входы на основе ключей с использованием ключа SSH.

Затем на компьютерах с Windows я использовал «PuttyGen» для создания пары открытого и закрытого ключей, которую я сохранил на диск, и соответствующей записи ssh для моего файла «авторизованные _хосты» в домашнем каталоге внешних пользователей.

Я вставил этот ключ ssh в правильное место в домашней папке моих пользователей, затем настроил шпатлевку на использование частного (ppk )файла, сгенерированного PuttyGen, для входа в систему и сохранил профиль.

Затем я сохранил профиль и отправил его и файл ключа ppk внешнему пользователю безопасным способом. (Зашифрованное электронное письмо с вложенным защищенным паролем zip-файлом)

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

Match Host server1,server1.internalnet.local,1.2.3.4
    PasswordAuthentication yes

В строке "Совпадение" я изменил имена серверов, чтобы защитить имена своих собственных серверов.

Обратите внимание, что каждый домен сервера отделяется запятой и БЕЗ ПРОБЕЛОВ, это важно. Если вы поместите в него какие-либо пробелы, это приведет к тому, что SSHD не загрузит конфигурацию и сообщит об ошибке, 3 совпадения, которые у меня есть, делают следующее:

server1-соответствует всем, кто использует только «server1» без домена для подключения EG :«fred@server1»

server1.internalnet.local-соответствует любому, кто использует полное внутреннее доменное имя, например :'fred@server1.internalinternet.local' (ПРИМЕЧАНИЕ :для этого вам понадобится внутренний DNS работать правильно)

1.2.3.4-соответствует определенному IP-адресу. адрес, назначенный серверу SSH EG :'fred@1.2.3.4' здесь можно использовать подстановочные знаки или даже лучше в формате cidr сети/маски EG :1.2. Однако *или 192.168.1.0/8, если вы используете подстановочные знаки, прочитайте ответ fchurca ниже для некоторых важных примечаний.

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

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

однако прочтите это:

https://man.openbsd.org/OpenBSD-current/man5/ssh_config.5

осторожно, поскольку не каждый параметр конфигурации разрешено использовать внутри блока соответствия, я обнаружил это, когда попытался «Использовать PAM да», чтобы снова включить аутентификацию PAM, только чтобы прямо сказать, что это не разрешено.

После внесения изменений введите

sshd -T

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

Помимо всего вышеперечисленного, мне очень помогли следующие две ссылки:

https://raymii.org/s/tutorials/Limit_access_to_openssh_features_with_the_Match_keyword.html

https://www.cyberciti.biz/faq/match-address-sshd_config-allow-root-loginfrom-one_ip_address-on-linux-unix/

29
27.01.2020, 19:48

Я думаю, вам следует обратить внимание на разделение конфигурации ssh. Например; настройте свой /etc/ssh/ssh _config, чтобы иметь глобальные переменные, которые вам нужны для всех пользователей по умолчанию (аутентификация по ключу ssh, переадресация портов и т. д. ).

Затем, если ваш пользователь (назовем его Боб )имеет локальный (или смонтированный через nfs )домашний каталог,закинуть конфиг именно для него в /home/bob/.ssh/. Эта конфигурация будет содержать ваше заявление о совпадении, а также, если вам нужно, чтобы он подключался с помощью пароля, а не сертификата, а также его собственные значения поддержания активности и т. Д....

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

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

1
27.01.2020, 19:48

Теги

Похожие вопросы