Як я можу обмежити користувача на сервері SSH, щоб дозволити їм лише привілеї для SSH TUNNELING ? тобто вони не можуть запускати команди, навіть якщо вони входять через SSH.
Моїми серверами Linux є Ubuntu 11.04 та OpenWrt.
Як я можу обмежити користувача на сервері SSH, щоб дозволити їм лише привілеї для SSH TUNNELING ? тобто вони не можуть запускати команди, навіть якщо вони входять через SSH.
Моїми серверами Linux є Ubuntu 11.04 та OpenWrt.
Відповіді:
На стороні сервера ви можете обмежити це, встановивши їх оболонку користувача на /bin/true
. Це дозволить їм засвідчити автентифікацію, але насправді нічого не запустити, оскільки вони не отримують оболонки для запуску. Це означає, що вони обмежуватимуться будь-яким набором речей, які SSH може запропонувати їм. Якщо він пропонує переадресацію портів, вони все одно зможуть це зробити.
На стороні клієнта, ви, ймовірно, захочете з'єднатися з -N
. Це зупиняє клієнта від ВИПУСКУ для віддаленої команди, наприклад оболонки, вона просто зупиняється після того, як буде виконана частина аутентифікації. Дякуємо коментаторам за те, що вияснили це.
useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
.
Наступне має перевагу в тому, що переадресація розеток агента 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
Ви можете керувати тим, що можуть робити люди в 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 та новіших версіях.