Как отключить локальную пересылку портов SSH?

У меня есть сервер под управлением Ubuntu и демон OpenSSH. Назовем его S1.

Я использую этот сервер с клиентских компьютеров (позвоним один из них C1), чтобы сделать обратный туннель SSH, используя удаленную переадресацию портов, например:

ssh -R 1234:localhost:23 [email protected] 

На S1 я использую файл sshd_config по умолчанию. Из того, что я вижу, любой, имеющий правильные учетные данные {login, pwd} на S1, может войти в S1 и выполнить удаленное перенаправление портов и локальную переадресацию портов. Такие учетные данные могут быть сертификатом в будущем, поэтому, по моему мнению, любой, кто захватит сертификат, может войти в S1 из любого другого места (не обязательно C1) и, следовательно, создать локальные пересылки портов.

Для меня слишком много опасностей для локального перенаправления портов, поскольку он позволяет создать какой-то публичный прокси. Я ищу способ отключить только -L пересылки.

Я попробовал следующее, но это отключает как локальную, так и удаленную пересылку:

 AllowTcpForwarding No 

Я также пробовал следующее, это позволит только -L до SX: 1. Это лучше, чем ничего, но все же не то, что мне нужно, что является «ничем».

 PermitOpen SX:1 

Поэтому мне интересно, есть ли способ, чтобы я мог запретить всем локальным портам переписывать что-то вроде:

 PermitOpen none:none 

Является ли следующая идея хорошей?

 PermitOpen localhost:1 

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

 % /usr/sbin/sshd -d -f mysshd.config -p 12345 

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

(Кстати, флаг -D также является «прокси-проблематичным»)

Другим решением было бы только разрешить перенаправление портов конкретным пользователям:

Из SSH: окончательное руководство

Переадресация портов может быть включена или отключена глобально в sshd. Это делается с помощью ключевого слова конфигурации сервера AllowTcpForwarding в файле / etc / sshd_config. Ключевое слово может иметь значение yes (по умолчанию, включение пересылки) или нет (отключение пересылки):

 # SSH1, SSH2, OpenSSH AllowTcpForwarding no 

Кроме того, SSH2 имеет следующие возможности:

 # SSH2 only AllowTcpForwardingForUsers AllowTcpForwardingForGroups 

Синтаксис этих параметров аналогичен синтаксису параметров AllowUsers и AllowGroups. [Раздел 5.5.2.1, «Контроль доступа к учетной записи»] Они определяют список пользователей или групп, которым разрешено использовать переадресацию портов; Сервер отказывается выполнять запросы перенаправления портов для кого-либо еще. Обратите внимание, что они относятся к целевой учетной записи сеанса SSH, а не к имени пользователя клиента (что часто неизвестно).

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

Нет возможности разрешить только локальную / удаленную пересылку.

AllowTcpForwarding Указывает, разрешена ли пересылка TCP. Доступными параметрами являются «да» или «все», чтобы разрешить пересылку TCP «нет», чтобы предотвратить пересылку TCP, «локальный», чтобы разрешить локальную (с точки зрения ssh (1)) переадресацию или «удаленную», чтобы разрешить удаленный Только пересылка . Значение по умолчанию – «да». Обратите внимание, что отключение переадресации TCP не повышает безопасность, если пользователям также не разрешен доступ к оболочке, поскольку они всегда могут устанавливать свои собственные форвардеры.

Итак, как уже было сказано, вы должны также установить оболочку для nologin.

Моим решением этой проблемы было добавить: PermitOpen fo.local: 80 в главном разделе sshd_config.

Это просто отрицает любой запрос локального переадресации, кроме fo.local: 80.

  • Оставить скрипт bash на удаленном терминале, пока он не вошел в систему?
  • Закрыть соединение SSH
  • Как создать соединение ssh Terminal ярлык на Mac OS X 10.6.8 (Snow Leopard)?
  • Как я могу читать ввод с клавиатуры хоста при подключении через SSH?
  • Разрешить группе UNIX доступ только к одному файлу через SSH
  • Каков наилучший способ выполнения ежедневных / еженедельных / ежемесячных резервных копий?
  • Не удается ssh для моего iphone: ssh_exchange_identification: соединение закрыто удаленным хостом
  • SSH-соединение под UDP?
  • Как подключить домашние компьютеры (Linux) от офисного компьютера (windows) с помощью шпатлевки
  • Linux удаляет папки старше 1 года и более 3 файлов
  • SSH: сбой с закрытым ключом, работает с копией ключа, расположенного в другом месте
  • Interesting Posts

    Запросы, связанные с установочным носителем Windows 8 Upgrade

    связь между двумя приложениями

    Почему Хаскелл не выполняет эти действия?

    Короткое замыкание на | = и & = операторы присваивания в C #

    Отправка электронной почты с приложением через GMailSender?

    Регулярное выражение для пароля должно содержать не менее восьми символов, как минимум одно число и буквы нижнего и верхнего регистра и специальные символы

    Что объединяет повторяющиеся наборы информации о строках в новые объекты, вызываемые при нормализации базы данных?

    Как установить жирный шрифт и курсив на UILabel iPhone / iPad?

    onNewIntent () и зарегистрированные слушатели

    Вопросительный знак и двоеточие в JavaScript

    Лучший подход для синтаксического анализа XML на iPhone

    В какой области переменные модуля хранятся в node.js?

    Сообщение NLS: CANNOT_FIND_FACELET_TAGLIB

    Команда Spool: не выводить инструкцию SQL в файл

    Графическое среднее и стандартное отклонение

    Давайте будем гением компьютера.