Hoi Geert,
Op 27-03-2023 om 23:22 schreef Geert Stappers:
On Mon, Mar 27, 2023 at 12:07:38AM +0200, Paul van der Vlis wrote:
Op 26-03-2023 om 23:51 schreef Paul van der Vlis:
Hoi Geert en anderen,
Op 26-03-2023 om 12:50 schreef Geert Stappers:
Hoi,
Uit `man 1 ssh`
-N Do not execute a remote command.
This is useful for just forward ports.
Nu is `ssh -N` een client kant ding.
Hoe aan server kant borgen dat alleen maar port forwarding gebeurd?
Ik had gedacht om het dicht te timmeren door aan authorized_keys
op de server wat toe te voegen aan de regel met de pubkey voor
het account dat de `ssh -N` moet gaan doen.
Er is "no-port-forwarding"
https://www.ssh.com/academy/ssh/authorized-keys-openssh#no-port-forwarding
maar niet iets als "only-port-forwarding"
https://www.ssh.com/academy/ssh/authorized-keys-openssh
Wat zien jullie zoal aan mogelijkheden om aan server kant
er voor te zorgen dat SSH client alleen maar een verbinding
voor de portforward maakt, dat shell access niet kan?
Wat ik doe aan de server-kant is /usr/sbin/nologin als shell gebruiken.
Oh, en ik zie dat ik ook dit nog doe in sshd_config:
-----
UsePAM no
Match User een,twee
AllowTcpForwarding remote
AllowStreamLocalForwarding no
X11Forwarding no
PermitTTY no
PermitEmptyPasswords yes
PasswordAuthentication yes
-----
Kritiek is welkom ;-)
Stukje zelfkritiek:
er voor te zorgen dat SSH client alleen maar een verbinding
voor de portforward maakt, dat shell access niet kan?
had
er voor te zorgen dat SSH client alleen maar een verbinding
voor de portforward maakt.
zullen zijn.
Dat aandacht op "alleen maar een verbinding voor portforward" blijft.
Oorspronkelijke vraag heb ik kunnen oplossen door
command="echo Don\'t do that"
voor de pubkey in ~/.ssh/authorized_keys te zetten. Dat is aan server
kant.
Als ik `ssh -N -R 2222:127.0.0.1:22 server` doe, krijg ik de gewenste
portforward. Als ik iets zonder `-N` doe, komt er "Don't do that" terug.
Waarom geen shell die alles weigert?
Ik heb trouwens nog een kleine extra beveiliging in de firewall, mensen
moeten zich eerst ergens aanmelden, dan pas krijgt hun IP toegang.
Met behulp van from="hun IP" voor de pubkey in authorized_keys?
Ze moeten eerst ergens naar een webpagina gaan, die triggert een script
wat de firewall openzet voor hun IP voor een dag. Normaal staat die
firewall dicht.
Ze kunnen "inloggen" zonder key en zonder paswoord, maar krijgen dus
"nologin" als prompt. Het is alleen bedoeld voor portforward, via die
portforward kan ik op hun machine komen voor support.
Groet,
Paul
--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl/