OpenSSH administreerimine

Allikas: Kuutõrvaja
Redaktsioon seisuga 6. september 2009, kell 21:00 kasutajalt Imre (arutelu | kaastöö) (Sissejuhatus)

Sissejuhatus

OpenSSH http://www.openssh.org/ tarkvara võimaldab turvalist kaugligipääsu võrku ühendatud seadmetele, nt arvutitele ja ruuteritele. OpenSSH on üks OpenBSD projekti ettevõtmistest, mis on osutunud niivõrd populaarseks, et sellest on kujunenud praktiliselt kõigi 2009 aastal kasutuses olevate vabade operatsioonisüsteemide standardne kauguligipääsu korraldamise instrument. Lisaks on OpenSSH kasutuses ka mitmete mitte-vabade lahenduste juures, nt erinevate tootjate ruuterites.

Peale üle võrgu nö teise arvuti käsureale jõudmise sisaldab OpenSSH muu hulga selliseid võimalusi

  • andmete kopeerimine - sftp, scp
  • turvaline transport muudele programmidele - rsync, subversion, pppd, X Window System
  • portide edasisuunamine - võtmetega -L ja -R
  • L2 ja L3 tunnelite tegemine - direktiiviga Tunnel või pppd over ssh
  • SOCKS server
  • failisüsteemi külgeühendamine - sshfs (FUSE tehnoloogia abil)

OpenSSH kasutamist kirjeldatakse Kuutõrvajas kahes tekstis

  • käesolev tekst kirjeldab OpenSSH serveri haldamist ning keerulisemad kasutusvõimalusi
  • aadressil OpenSSH kasutamine asuv tekst on mõeldud nö süsteemi tavakasutajatele oluliste ülesannete lahendamiseks OpenSSH abil

OpenSSH paigaldamine

Debian Lenny paketihalduses on olemas OpenSSH tarkvara versioon 5.1, tarkvara paigaldamiseks öelda

 # apt-get install openssh-server

mille paigaldamise käigus paigaldatakse ka pakett openssh-client.

Erinevatel muudel Linuxi distributsioonidel (gentoo, suse jms) on see üldiselt juba vaikimisi paigaldatud. Ka FreeBSD sisaldab enda baasinstallatsioonis openssh serverit ning klienti ja seejuures on seal leiduvad rajad identsed linuxiliste omaga st /etc/ssh seadistusfailide asukohaks jms

OpenSSH seadistamine

OpenSSH serveri tööd kontrollib seadistusfail

 /etc/ssh/sshd_config

Süsteemis kasutatava OpenSSH kliendi tööd juhib globaalselst seadistusfail

 /etc/ssh/ssh_config

kusjuures lisaks kontrollivad klientide SSH kasutamist nende kodukataloogis asuva kataloog .ssh sees sisalduvad failid

 ...

Hosti võtmete genereerimine

TODO

SFTP serveri seadistamine

OpenSSH SFTP alamsüsteemi (ingl. k. subsystem) kasutamiseks peab OpenSSH serveri seadistusfailis olema rida

 Subsystem sftp /usr/lib/openssh/sftp-server

või

 Subsystem sftp internal-sftp

SFTP kliendi teenindamiseks käivitatakse vastavalt eraldi protsess või toimub teenindamine sshd sees sisalduvate sftp vahenditega.

OpenSSH kasutajate chrootimine

Debian Lenny sisaldab piisavalt uut OpenSSH tarkvara versiooni (OpenSSL 0.9.8g), mis võimaldab kasutada ChrootDirectory direktiivi kasutajate chrootimiseks

 $ ssh -V 
 OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 Oct 2007

Kasutamiseks tuleb

 # cat /etc/ssh/sshd_config
 ...
 Subsystem sftp internal-sftp
 ...
 Match User mart,priit 
   ChrootDirectory /home/%u
   AllowTCPForwarding no
   X11Forwarding no

kusjuures Match sektsioon peab esinema seadistusfaili lõpus, antud juhul on lisaks neil kasutajatel keelatud tcp ja x edasisuunamine.

  • kasutaja kodukataloogi ja sellest üles jäävate kataloogide omanik:grupp peab olema root:root ning neisse kataloogidesse ei tohi saada keegi peale juurkasutaja kirjutada

Tulemusena saab kasutaja süsteemi sisse logida ssh ja sftp kliendiga ning see kataloog, mis on süsteemi jaoks tema kodukataloog on tema jaoks tema juurkataloog. Oluline on seejuures, et tavaliseks ssh ligipääsuks ei ole tarvis chroot keskkonda tekitada mingeid seadmeid, ega pole vaja ühendada külge mingeid failisüsteeme (nt /proc, /dev/pty vms) - tähendab, kasutaja ei saa süsteemis liialt ringi uurida ka siis, kui ta omale ise nt netstat ja ps utiliidid kopeerib.

scp klienti selliselt seadistatud serveriga kasutada ei saa, tundub, et scp eeldab paremat varustatust serveri poolelt, muuhulgas /dev/null seadet ja scp programmi). Praktiliselt ehk ei ole tingimata scp kasutamise võimalus ka väga oluline kuna nt WinSCP klient oskab sftp protokolli samuti kasutada.

Kui kasutajal on vajalik porti edasi suunata, siis tuleb asenda

 AllowTCPForwarding yes

ning sõltuvalt chroot keskkonna omadustest, st kas seal nimed lahenduvad öelda nt

 $ ssh mart@valis.loomaaed.tartu.ee -L 2000:localhost:3306

või

 $ ssh mart@valis.loomaaed.tartu.ee -L 2000:127.0.0.1:3306

PPP kasutamine üle SSH

Üle kahe arvuti vahelise ssh sessiooni PPP ühenduse tekitamiseks peab mõlemisse arvutisse olema paigaldatud lisaks OpenSSH tarkvarale ppp pakett, nt Debian Lenny keskkonnas öeldes

 # apt-get install ppp

Kasutamiseks sobivad vaikeseadistused ja PPP ühenduse tekitamiseks tuleb öelda ühes arvutis

 # pppd -detach noauth pty "ssh -t root@teine.arvuti pppd passive noauth" 10.100.0.1:10.100.0.2

kus

  • -detach - pppd protsess jääb nö esiplaanile (ingl. k. foreground) käima
  • noauth - ppp ei teosta autentimist
  • 10.100.0.1:10.100.0.2 - vastavalt ühe ja teise arvuti ppp0 seadme ip aadress

Tulemusena tekivad arvutitesse sarnased seadmed

 ppp0    Link encap:Point-to-Point Protocol  
         inet addr:10.100.0.2  P-t-P:10.100.0.1  Mask:255.255.255.255
         UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
         RX packets:7 errors:0 dropped:0 overruns:0 frame:0
         TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:3 
         RX bytes:240 (240.0 B)  TX bytes:246 (246.0 B)

Teise arvuti küljes olevate võrkude kasutamiseks tuleb

  • esimeses arvutis seadistada sobiv ruuting
  • teises arvutis lubada ip forwarding

SSH tunneli kasutamine

Ruuditud tunnel

Logida kliendist serverisse nt selliselt

 # ssh -o Tunnel=point-to-point -w any:any root@192.168.1.4

kus kasutatud võtmetel on selline tähendus

  • -w any:any - kasutada kummalgi pool järmist kasutamata tun seadet

Tulemusena tekivad mõlemas arvutis juurde tun nimelised seadmed

 tun0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
         POINTOPOINT NOARP MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:500 
         RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Seejärel tuleb need seadmed sobivalt seadistada, nt kliendis öelda

 # ifconfig tun1 10.100.0.10 pointopoint 10.100.0.11

ning serveris öelda

 # ifconfig tun1 10.100.0.11 pointopoint 10.100.0.10

Sillatud tunnel

Olgu eesmärgiks lülitada klientarvuti üle avaliku võrgu tulemüüri taga olevasse võrku, sedasi

                   Klient
                      ___
                     |   |  tap0, 10.0.5.200
                     |___|
                       |
                       ..
                   internet
                      ..
                       |
                       |
                      _|_  192.168.102.35, valis.loomaaed.tartu.ee
                     |   | tulemüür, OpenSSH server
                     |___|              
                       |    br0 = eth0, tap0
   ___                 |                 ___
  |   |----------------|----------------|   |
  |___|                                 |___|
 
 eth0, 10.0.5.25                       eth0, 10.0.5.26

Kliendi poolel tuleb öelda

 # ssh -o Tunnel=ethernet -w any:any root@192.168.1.4

ning seadistada tekkinud tap0 seadmele ip aadress kohtvorgust

 # ifconfig tap0 10.0.5.200 netmask 255.255.255.0

Serveri poolel tuleb moodustada sild br0

 # brctl addbr br0
 # brctl addif br0 tap0
 # brctl addif br0 eth0

Kusjuures serveri tap0 ja br0 seadmetel ei ole ip aadresse. Lisaks peab vajadusel br0 seadme üles tõstma

 # ifconfig br0 up

Tulemusena saab klientarvutist kasutada 10.0.5 võrgu teenuseid ning ka vastupidi, efektiivselt asub klient ja muud kontvõrgu arvutid samab subnetis.

Sellise lahenduse puhul on iseloomulik, et iga kliendiga seoses tekib OpenSSH serverisse juurde uus tap seade.

Kasulikud lisamaterjalid