Portál AbcLinuxu, 12. května 2025 22:08
Řešení dotazu:
To jsou porty, které nemusí být vždy otevřené.Takže všechny. Ale osobně bych sázel na tcp/443, akorát mi docela vadí to, že TCP VPN jsou zoufale neefektivní a zvlášť trpí na sebemenší problémy na síti. Nicméně jakákoli TCP VPN se dá provozovat na jakémkoli TCP portu a stejnětak jakákoli UDP VPN se dá provozovat na jakémkoli UDP portu. IPsec se dá provozovat přímo nad IP nebo přes UDP. I proto má Microsoft SSTP jako výchozí transport tcp/443. Nenarazil jsem na situaci, kdy by bylo potřeba namísto tcp/443 použít tcp/80, ale stát se to může. O ostatních silně pochybuju. Jinak největší záběr a ještě podstatně horší výkon mají DNS tunely, které fungují i za spoustou captive portálů. :D
je nastaveno aby pri spojeni se pustil sleep na hodne dlouho, povoleno jen presmerovani pozadovaneho portu a ruzne dalsi omezeni
cd /home/uzivatel_na_serveru/.ssh/ # pokud neni, tak vytvorit authorized_keys touch authorized_keys # nastavil bezpecne prava chmod 600 authorized_keys # do souboru vlozis publik klic od klienta a pred nej (na zacatek radku s klicem) vlozis: command="/bin/sleep 4294967201",no-agent-forwarding,no-pty,no-user-rc,no-X11-forwarding,permitopen="localhost:22201"na klientu: # skript co kontroluje spojeni a kdyz neni, tak ho nahodi, auto spousteni muzes pridat do cronu
#!/bin/sh sshcmd="ssh -f uzivatel_na_serveru@server -R 22201:localhost:22 sleep 3" if [ "$(ps aux|grep "${sshcmd}"|grep -v grep)" = "" ]; then # pokud ma spojeni aktivovat bezny uzivatel: su -c "${sshcmd}" jmeno_uzivatele_na_klientu # nebo pokud by mel spojeni aktivovat primo root: "${sshcmd}" fize serveru se pak pripojis pomoci (port je definovan na klientu i serveru, zmen oboje pokud chces jinej):
ssh -p 22201 localhostpokud by se spojeni kouslo, muzes na serveru vyvolat preruseni pomoci zabiti procesu sleep, jehoz cislo zjistis pres:
ps aux | grep 4294967201nebo naprasaka, pokud vis ze jinej sleep bezet nemuze, tak:
killall sleepa nasledne pockas nez klientuv cron nenahodi skriptem spojeni znovu...
Da se to nejak zaridit?
Ano, dá. Připoj se k tomu stroji přes IPv6. Pak nebude za NATem.
Jiná možnost: ssh -f -N -R 22222:[::1]:22 server.s.veřejně.dostupnou.ip
Pak stačí připojit se na SSH -p 22222 server.s.veřejně.dostupnou.ip
Všechny podrobnosti jsou v manuálových stránkách. Ale je lepší si tenhle voser ušetřit a použít prostě IPv6.
Pokud jde o automatický SSH tunel, unit file pro přesně takovou službu může na tom RPi vypadat takto:
[Unit] Description=SSH in SSH tunnel to Whoknowswhere After=network-online.target Requires=network.target [Service] Restart=always StartLimitInterval=0 Type=forking ExecStart=/usr/bin/ssh \ -i /root/.ssh/id_rsa.lojza -f -C -N \ -o ConnectTimeout=10 \ -o ServerAliveInterval=15 \ -o ServerAliveCountMax=2 \ -R [::1]:22222:[::1]:22 \ -R [2a01:xxxx:yyyy:zzzz::1]:22222:[::1]:22 \ -R [2a01:xxxx:yyyy:zzzz:1::1]:22222:[::1]:22 \ -R [2a01:xxxx:yyyy:zzzz:2::1]:22222:[::1]:22 \ lojza@server.blabla.ble [Install] WantedBy=multi-user.targetNevýhoda je, že v souboru
~root/.ssh/id_rsa.lojza
musí být nešifrovaný soukromý klíč uživatele lojza
přijímaný serverem server.blabla.ble
. Ale jinak to má jenom samé výhody. A lojza
může mít hooodně omezená práva; do toho účtu se beztak nikdy nikdo neloguje.
After=network-online.target
je samo o sobě špatně, patří k němu ještě Wants=network-online.target
, oproti tomu Requires=network.target
tam vůbec nepatří, to je target ve smyslu klasického runlevelu. Ale nepopírám, že to může na některém systému v některé konfiguraci fungovat, jen se pak lidi diví, když to fungovat přestane.
1) Zkusit si tvůj skript a využít SSH jako tunel. 2) Že je možné použít TOR jako jednoduchý tunel 3) Začít se zajímat o IPv6, které můj provider neposkytuje, takže nějaké tunelování...Všechno je to na pár hodin samostudia
Vychází mi z toho, že OpenSSH je pro většinu aplikací naprosto vyhovující. A pokud chce mít někdo jistotu, nechť to zpřístupní jen přes OpenVPN.IPsec. Ten kernelový. Tam by se v případě bugu v ESP, security policies a security associations alespoň nemuseli dohadovat, jestli se chyba počítá jako chyba v linuxu. :)
...OpenSSH je pro většinu aplikací naprosto vyhovující. A pokud chce mít někdo jistotu, nechť to zpřístupní jen přes OpenVPN.Kdysi jsem tady někomu psal, že to tak někde používám. A obdržel jsem víceméně dehonestující komentáře, že je to "security by obscurity" a že jsem tudíž lama, která si na něco hraje.
Je pravda, že docela často používám heslo 123456... což u dementa tvého kalibru nikoho nepřekvapí ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.