Як обмежити користувачеві SSH дозволити лише тунелювання SSH?


31

Як я можу обмежити користувача на сервері SSH, щоб дозволити їм лише привілеї для SSH TUNNELING ? тобто вони не можуть запускати команди, навіть якщо вони входять через SSH.

Моїми серверами Linux є Ubuntu 11.04 та OpenWrt.

Відповіді:


35

На стороні сервера ви можете обмежити це, встановивши їх оболонку користувача на /bin/true. Це дозволить їм засвідчити автентифікацію, але насправді нічого не запустити, оскільки вони не отримують оболонки для запуску. Це означає, що вони обмежуватимуться будь-яким набором речей, які SSH може запропонувати їм. Якщо він пропонує переадресацію портів, вони все одно зможуть це зробити.

На стороні клієнта, ви, ймовірно, захочете з'єднатися з -N. Це зупиняє клієнта від ВИПУСКУ для віддаленої команди, наприклад оболонки, вона просто зупиняється після того, як буде виконана частина аутентифікації. Дякуємо коментаторам за те, що вияснили це.


Я спробую це: P thx!
LanceBaynes

2
Щоб додати відповідь Калеба, вам може знадобитися також сказати клієнту, щоб він не виконував оболонку. З командним рядком openssh це робиться за допомогою прапора -N. У PuTTY є подібний варіант, але точної назви я не пам'ятаю.
Білл В

хм, це в основному безпека клієнта, ні? Я шукаю налаштування безпеки на сервері, але дякую!
LanceBaynes

2
Вибачте, мені не було зрозуміло - я мав на увазі поєднання з налаштуваннями сервера. Мій досвід минулого був, що якщо ви встановите оболонку на щось, що не оболонка, ви не можете підключитися взагалі, тому що вона намагається відкрити оболонку, але не може. Таким чином, захист застосовується на стороні сервера (використовуючи метод Калеба), але якщо у вас виникли проблеми з підключенням після цього, можливо, вам доведеться встановити комутатор на стороні клієнта.
Білл B

3
Ви створюєте такого користувача за допомогою useradd sshtunnel -m -d /home/sshtunnel -s /bin/true.
fracz

14

Наступне має перевагу в тому, що переадресація розеток агента X11 та SSH також заборонена, що все ще може бути дозволено способом Calebs. Ще одна перевага полягає в тому, що якщо користувач зможе змінити стандартну оболонку за замовчуванням будь-яким іншим способом, це все одно обмежить його доступ до SSH лише пересиланнями TCP.

Покладіть наступне у своє /etc/ssh/sshd_config :

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

щоб дозволити користувачеві that-restricted-guyпересилати будь-які TCP-з'єднання через вашу машину з підтримкою SSH (підключення до цієї машини, а також localhostрівне підключення з цієї машини до інших машин).

Якщо ви хочете зробити це ще більш обмежуючим (що є хорошою ідеєю), ви також можете зробити наступне:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Це дозволить користувачеві even-more-restricted-guyзавжди переадресовувати з'єднання до 127.0.0.1 TCP-порту 12345 (як це видно на вашій машині з підтримкою SSH).

Коли користувач зазвичай підключається, він зараз буде негайно відключений, тому що /bin/falseбуде запущена команда, яка не робить нічого, окрім миттєвого виходу з кодом 1. Якщо ви хочете цього уникнути і тримати відкрите з'єднання відкритим, додайте-N прапор до sshкоманди. Це не намагатиметься виконати жодну команду, але все ж дозволяє налаштувати переадресацію TCP.

Приклад команди переадресації, яка повинна працювати в останніх налаштуваннях:

ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine

1
Я перефразував відповідь як покращене рішення щодо відповіді Калебса.
aef

Звичайно. Я теж прибирав. Приємно бачити непорозуміння вирішеним. Надобраніч.
Jakuje

1

Ви можете керувати тим, що можуть робити люди в ssh, дотримуючись груп, припускаючи, що ваша версія ssh є достатньо новою для її підтримки (openssh 5.x +).

В основному, ми ставимось до них як до користувачів sftp, але дозволяємо переадресовувати tcp та необов'язково вказувати пункти призначення, на які вони можуть переслати. Якщо ви надасте їм домашній каталог, але не створюєте під ним жодних каталогів, вони не можуть перенести жодні файли, оскільки вони не матимуть дозволу на це.

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

Ви можете повторити ці групи матчів блоків для кожної групи , які ви хочете , щоб забезпечити різну поведінку або обмеження.

Ви можете додатково контролювати, куди ця людина може перейти в мережу за допомогою iptables

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Це передбачає, що GID групи "nicepeople" становить 500.

Деякі з наведених вище варіантів ssh доступні в старих версіях openssh, але не в розділі Match Group. Match Group дуже обмежена у OpenSSH 4.x та новіших версіях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.