Na straně serveru to můžete omezit nastavením jejich uživatelského prostředí na /bin/true
. To jim umožní autentizovat, ale ve skutečnosti nic nespouštět, protože nemají shell, ve kterém by to spustili. To znamená, že budou omezeni na jakoukoli podmnožinu věcí, které jim SSH dokáže nabídnout. Pokud nabízí přesměrování portů, budou to stále moci dělat.
Na straně klienta se pravděpodobně budete chtít připojit pomocí -N
. To zabrání klientovi, aby POŽADAL vzdálený příkaz, jako je shell, zastaví se pouze po dokončení autentizační části. Děkujeme komentátorům za upozornění.
Následující má tu výhodu, že X11 a SSH agent socket forwarding jsou také zakázány, což může být stále povoleno Calebovým způsobem. Další výhodou je, že pokud je uživatel schopen změnit svůj výchozí shell jakýmkoli jiným způsobem, stále to omezí jeho přístup SSH pouze na přesměrování TCP.
Do /etc/ssh/sshd_config
vložte následující :
Match User that-restricted-guy
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
povolit uživateli that-restricted-guy
pro předávání jakýchkoli TCP spojení přes váš počítač s povoleným SSH (připojení k tomuto počítači také na localhost
a dokonce i připojení z tohoto stroje k jiným strojům).
Pokud to chcete ještě více omezovat (což je dobrý nápad), můžete také provést následující:
Match User even-more-restricted-guy
PermitOpen 127.0.0.1:12345
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
To uživateli umožní even-more-restricted-guy
předávat připojení pouze na 127.0.0.1 TCP port 12345 (jak je vidět na vašem počítači s povoleným SSH).
Když se uživatel normálně připojí, bude nyní okamžitě odpojen, protože /bin/false
bude spuštěn příkaz, který nedělá nic jiného, než že se okamžitě ukončí s kódem 1. Pokud se tomu chcete vyhnout a ponechat své přesměrování otevřené, přidejte -N
příznak na ssh
příkaz. Toto se nepokusí provést žádný příkaz, ale stále umožňuje nastavit přesměrování TCP.
Příklad dopředného příkazu, který by měl fungovat v druhém nastavení:
ssh -L 12345:127.0.0.1:12345 -N [email protected]
Můžete ovládat, co mohou lidé dělat v ssh, spárováním skupin za předpokladu, že vaše verze ssh je dostatečně nová, aby ji podporovala (openssh 5.x+).
V zásadě s nimi zacházíme, jako by to byli uživatelé sftp, ale umožňujeme přesměrování tcp a volitelně specifikovat destinace, kam mohou přeposílat. Pokud jim dáte domovský adresář, ale nevytvoříte pod ním žádné adresáře, nebudou moci přenášet žádné soubory, protože k tomu nebudou mít oprávnění.
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
Tyto Match Group můžete zopakovat bloky pro každou skupinu, které chcete poskytnout jiné chování nebo omezení.
Pomocí iptables
můžete dále ovládat, kam může tato osoba v síti jít/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
To předpokládá, že GID skupiny "nicepeople" je 500.
Některé z výše uvedených možností ssh jsou dostupné ve starších verzích openssh, ale ne v sekci Match Group. Match Group je v OpenSSH 4.xa dřívějších velmi omezená.