GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit uživatele SSH, aby povolil pouze tunelování SSH?

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á.


Linux
  1. Jak zakázat přihlášení uživatele root přes SSH

  2. Ssh – Omezení uživatele Ssh/scp/sftp na adresář?

  3. Omezit přihlášení SSH na konkrétní IP nebo hostitele

  1. Jak nastavit klíče SSH na Debianu

  2. Jak nastavit Chroot SFTP v Linuxu (povolit pouze SFTP, ne SSH)

  3. Jak omezit su přístup pouze uživateli pomocí PAM v Linuxu

  1. Jak povolit pouze konkrétním uživatelům bez oprávnění root používat crontab

  2. Jak nakonfigurovat SSH pro omezení uživatelů/skupin pomocí direktiv povolení a zakázání

  3. Jak ssh jako jiný uživatel