Post by Paul van der VlisPost by Philip PaepsPost by Paul van der VlisPost by Fred Mobach<<beperkte inlogfunctie via ssh>>
Post by Paul van der VlisMaar wat ik vervelend vind is dat ze dan een login hebben op mijn
machine. Dat vind ik vooral vervelend bij mensen die ik helemaal niet
ken. Dus ik zou ze graag een shell geven waarin ze gewoon niks kunnen.
In de nieuwsgroep comp.security.ssh heb ik dit soort vragen vaker langs
zien komen, maar het aantal mogelijke beperkingen is vrij beperkt.
Voornamelijk omdat het aantal ontsnappingsmogelijkheden zo groot is.
Als er een shell toegewezen is, lijkt het me toch geen zaak meer van ssh.
Een shell maken die op elk commando "forbidden" antwoord, lijkt me zo in
eerste instantie niet heel moeilijk. Welke ontsnappingsmogelijkheden zie
je dan?
Dat heet /usr/sbin/nologin.
Voor zover ik weet krijg je geen tunnel zonder login.
Als wat jij "login" noemt een shell omvat, heb je het fout.
Tunnels liggen tussen ssh en sshd. Een shell wordt pas na het inloggen
geforkt. Je hoeft helemaal geen shell te forken om een ssh connectie in
leven te houden.
Post by Paul van der VlisPost by Philip PaepsPost by Paul van der VlisWeet je of SSH een shell nodig heeft om een tunnel op te kunnen bouwen?
Het lijkt me dat SSH dat zelf doet.
Kijk even naar de -N en -f vlaggen in de ssh(1) manual page.
Of probeer gewoon eens ssh -q -N -f -L ...
Het verbaast me echt dat je hier over gelezen hebt. Mijn Debian shipt wel
degelijk alle handleidingen bij ssh. Draai jij een distributie die dat
niet doet?
Wellicht stel ik wat gemakkelijk vragen, ik geef toe dat ik wat lui ben.
En nee, ik zou niet zo snel denken aan opties in de client om de server
te beschermen.
Waartegen wil je de server beschermen? Je wil niet dat clients willekeurige
commando's op je server kunnen draaien. Daarom zet je hun shell op "nologin".
Default gedrag van ssh is te proberen om een shell te forken op de server.
Lukt dat niet, breekt de connectie af. Je wil niet dat de connectie wordt
afgebroken want je hebt een tunnel nodig. Ergo: je hebt een client optie
nodig om de connectie niet af te breken omdat ze geen shell kunnen forken.
Post by Paul van der VlisMaar... blijkbaar kun je toch een tunnel krijgen zonder login!
Neen. Je kunt geen tunnel krijgen zonder login. Je kunt een tunnel krijgen
zonder shell. Een shell impliceert login. Een login impliceert niet
vanzelfsprekend een shell.
Post by Paul van der VlisDie -N optie doet het, dan kun je inderdaad kiezen voor
/usr/sbin/nologin op de server.
Bedankt, dit is inderdaad een uistekende oplossing.
Graag gedaan. :-)
Je zou NoHostAuthenticationForLocalhost kunnen gebruiken. Dat zet ik
doorgaans standaard op "yes" in mijn .ssh/config.
Post by Paul van der VlisDe user welkom heeft "/usr/bin/nologin" als shell, en kan er dus niet in.
Wel, hij kan er wel in, anders zou de tunnel niet werken. Hij heeft gewoon
geen functionele shell en kan dus niets op de machine uitvreten.
Als je public keys zou gebruiken in plaats van paswoorden, zou je command= in
je authorized_keys kunnen opnemen. Dan zou er zelfs geen shell geforkt worden
(ook nologin niet), en zouden hypothetische bugs in nologin ook geen probleem
zijn (die zijn er ooit geweest).
Post by Paul van der VlisNu misschien nog wat studeren op een paswoordloze login, het zou mooi zijn
als ik "permitemptypasswords" op "yes" zou kunnen zetten voor alleen deze
user o.i.d. Er lijken een boel haken en ogen aan te zitten.
Het lijkt me bijzonder onverstandig om een willekeurige user vanop een
willekeurige plaats zonder enige vorm van authenticatie te laten tunnelen
door jouw machine.
Ik zou in ieder geval ook een _uitgaande_ firewall op jouw machine zetten.
Tenzij je het leuk zou vinden moest een van je creatieve klanten (of een
aanvaller die het paswoord raadt) een SOCKS tunnel opzetten door jouw machine
en er de rest van het internet mee lastig zou vallen. Of tenzij je zin hebt
om een open proxy te worden voor allerlei ongein?
- Philip
--
Philip Paeps Please don't email any replies
***@paeps.cx I follow the newsgroup.