Portál AbcLinuxu, 1. června 2024 05:53

Reverzní SSH tunel

12.6.2015 19:34 | Přečteno: 2364× | Debian | Výběrový blog | poslední úprava: 13.6.2015 10:47

Návod jak vytvořit reverzní SSH tunel, s tím, že se uživateli, který tento tunel vytváří, zakáže vše ostatní. Může se hodit např. při administraci notebooků kamarádů, kteří chtějí vyřešit nějaký problém, ale nemají zrovna veřejnou IP.

Vytvoříme nového uživatele sshforward, kterému nedovolíme logování pomocí hesla a login shell nastavíme na nologin. Poté nastavíme jako vlastníka, jeho domovského adresáře, uživatele root.

server# adduser --shell /usr/sbin/nologin --disabled-password sshforward
server# chown root.root /home/sshforward

Promažeme domovský adresář.

server# cd /home/sshforward
server# find -mindepth 1 -delete

Vytvoříme adresář pro uložení veřejných klíčů a nakopírujeme do něj veřejný klíč pro uživatele sshforward. Do cílového souboru můžeme přidat větší množství veřejných klíčů, pokud chceme, aby reverzní tunel mohlo vytvářet více různých uživatelů.

server# mkdir /etc/ssh/authorized_keys
server# cp id_ed25519.pub /etc/ssh/authorized_keys/sshforward

Povolíme pouze přihlašování pomocí klíčů. Dále omezíme možnosti uživatele sshforward, který bude moci pouze vytvořit reverzní tunel na libovolném portu (když nepočítám ty privilegované <=1023), přesměrovat se na localhost:22 serveru (toto pravidlo omezuje i dynamické přesměrování portů). A zavřeme ho do chrootu.

server# vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Match Group sshforward
   AuthorizedKeysFile /etc/ssh/authorized_keys/%u
   ChrootDirectory %h
   ForceCommand /usr/sbin/nologin
   AllowTcpForwarding yes
   AllowAgentForwarding no
   PermitTunnel no
   PermitTTY no
   GatewayPorts no
   X11Forwarding no
   PermitOpen localhost:22

Restartujeme SSH server.

server# service ssh restart

Vytvoříme reverzní tunel na portu 5022.

notebook$ autossh -M 0 -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" -N -R 5022:localhost:22 sshforward@server

Zkusíme se připojit ze serveru na notebook.

server$ ssh -p 5022 username@localhost

Na serveru můžeme zahazovat všechny odchozí pakety uživatele sshforward, na reverzní tunel to nemá vliv a zařídíme tím ještě větší omezení možností uživatele sshforward.

server# iptables -I OUTPUT -m owner --uid-owner sshforward -j DROP

Otestujeme zda-li fungují naše omezení.

notebook$ ssh sshforward@server
PTY allocation request failed on channel 0
Could not chdir to home directory /home/sshforward: No such file or directory
/usr/sbin/nologin: No such file or directory
Connection to server closed.
notebook$ sftp sshforward@server
Couldn't read packet: Connection reset by peer
notebook$ ssh sshforward@server date
Could not chdir to home directory /home/sshforward: No such file or directory
/usr/sbin/nologin: No such file or directory
notebook$ ssh -N -D 8080 sshforward@server
channel 1: open failed: administratively prohibited: open failed
notebook$ curl -I --socks5 localhost:8080 http://mojeip.cz
curl: (7) Failed to receive SOCKS5 connect request ack.
notebook$ ssh -N -L 8080:mojeip.cz:80 sshforward@server
channel 1: open failed: administratively prohibited: open failed
notebook$ curl -I localhost:8080
curl: (52) Empty reply from server
notebook$ ssh -N -L 2222:localhost:22 sshforward@server
channel 1: open failed: administratively prohibited: open failed
notebook$ ssh -p 2222 localhost
ssh_exchange_identification: Connection closed by remote host

Budu rád za případné podnětné připomínky v diskuzi na toto téma.

Zdroje:

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

13.6.2015 09:17 pavele
Rozbalit Rozbalit vše Re: Reverzní SSH tunel
Odpovědět | Sbalit | Link | Blokovat | Admin
A nestačilo by na straně serveru neupravovat ssh-server a přidat do uživatele sshforward klíč:

no-agent-forwarding,no-X11-forwarding,no-user-rc,no-pty,command="read a; exit" ssh-rsa AAAB3N.....
Fuky avatar 13.6.2015 10:58 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Reverzní SSH tunel

Cíl byl, omezit uživatele sshforward, pokud možno co nejvíce, včetně uzavření do chrootu.

Jendа avatar 13.6.2015 13:30 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Reverzní SSH tunel
command="read a; exit"
SHELLSHOCK (takhle mi vyownovali server chvilku po publikaci, ještě než byl v repozitáři opravený bash)
17.4.2019 13:00 conor mcgregor
Rozbalit Rozbalit vše Re: Reverzní SSH tunel
Odpovědět | Sbalit | Link | Blokovat | Admin
i am already play this game,such a great and amazing simple puzzle game,now don't waste time,just click here Mahjong connect online no installing and charges required here,easily played on this visit.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.