Накладывание ограничений на идентификаторы SSH
Путем модификации файла .ssh/authorized_keys{2} можно наложить ограничения на принимаемые идентификаторы SSH. Просто вставьте перед строкой, содержащей публичный ключ, на который вы желаете повлиять, список ограничений. Наиболее полезные ограничения перечислены в Таблице 3.2.
Таблица 3.2 Полезные ограничения идентификаторов SSH
Ограничение | Описание |
from=”pattern-list” | Разделяемый запятыми список хостов, которым оказывается доверие. Если идентификатор приходит от другой машины, в соединении будет отказано. Допустимы символы * и ?, а также ! (для отрицания). |
command = “command” | Какую бы команду не пытался выполнить клиент, выполняется указанная команда. Это может быть скрипт shell , загружающий pppd с соответствующими аргументами приведенный ниже в этой главе. |
environment = “VARIABLE=value” | Создает переменную окружения VARIABLE со значением value , позже мы используем это ограничение для указания имени VPN , связанной с данным соединением. |
no-port-forwarding | Отключение маршрутизации портов через SSH . Для VPN это не требуется. |
no-X11-forwarding | Отключение маршрутизации X 11. Для VPN X 11не требуется. |
no-agent-forwarding | Отключить маршрутизацию агента. Для VPN не требуется. |
Данные опции можно объединить запятыми и поместить первым аргументом в строку authorized_keys{2} с идентификатором SSH. Пример может выглядеть так: from=”client.example.com”, command=”/usr/bin/sudo /usr/sbin/pppd noauth 192.168.254.254:192.168.254.253”, environment=”vpn_network=vpn1”, no-port-forwarding, no-X11-forwarding,no-agent-forwarding 1024 35 128494554020444581541671425906529809779416661821446...
В этом примере мы разрешаем поступление идентификатора только с машины client.example.com, принудительно будет выполняться команда sudo pppd, все ненужные маршруты SSH будут отключены, а переменная окружения vpn_network приобретет значение vpn1 (для дальнейшего использования).
Включение этих параметров будет создавать очень, очень длинные командные строки. Используйте только редакторы, поддерживающие такие строки. В частности, старые версии vi могут не позволить редактировать и правильно отображать их. Мы предлагаем использовать vim или Emacs.