MySecureShell - SecureFTP

From EIK wiki

Sissejuhatus - mis on MySecureShell ning milleks seda kasutada?

MySecureShell on SFTP serveri konsool, mis põhineb OpenSSH baasil, millele on lisatud lisa-võimalusi. Mõningad võimalused ning positiivsed küljed:

  • Kontroll sisse tuleva ning välja mineva liikluse maksimaalse hetkelise läbilaske üle.
  • Serveri haldus läbi graafilise liidese.
  • Integreeritud ning konfigureeritav logi.
  • Ligipääsukontroll vastavalt kasutajatele, IP aadressidele või gruppidele.
  • Kogu liiklus krüpteeritakse kasutades SSH protokolli.
  • Tarvis lubada vaid üks port (vaikimisi port 22), et ühendus toimiks.

Märkus/Eeldus

Antud labori ülesehitusel installeerin MySecureShell serveri Fedora 19 32bit Linux distributsiooni peale ning kliendina kasutan Ubuntu 12.04LTS 32bit distributsiooni.
Labor eeldab OpenSSH serveri olemasolu serveril ning selle töötamist.
Kõik käsud on käivitatud juurkasutaja õigustes!!!
MySecureShell versioon 1-31-1.

Paigaldamine

Automaatne paigaldus kasutades andmehoidlat

Soovitatud variant, ehk lisame MySecureShell andmehoidla Fedorale teadaolevate andmehoidlate nimistusse ning paigaldame programmi läbi paketihaldaja Yum.

  • Kõigepealt lisame MySecureShell andmehoidla Fedora serveri teadaolevasse nimistusse. Selleks lisame järgnevad read faili "/etc/yum.conf"
[mysecureshell]
name=MySecureShell
baseurl=http://mysecureshell.free.fr/repository/index.php/fedora/$basearch/
enabled=1
gpgcheck=0
  • Seejärel värskendame kohaliku informatsiooni andmehoidlates leiduvatest tarkvaradest ning paigaldame vastavad uuendused:
yum update
  • Ning paigaldame tarkvara MySecureShell
yum install mysecureshell.i386


Alternatiivne käsitsi paigaldamine

  • Laeme alla MySecureShell rpm paketi (näites x86 arhitektuurile)
cd ~
wget http://mysecureshell.free.fr/repository/index.php/fedora/i686/mysecureshell-1.32-1.i686.rpm
  • Paigaldame paketi
rpm -ivh mysecureshell_xxx.rpm


Graafilise liidese paigaldamine

Kuigi graafilist liidest võib paigaldada ka klient-arvutisse ning ühendada kaugühendusega serveri külge halduseks, on mõistlik siiski paigaldada see liides otse serveri arvuti külge, kuna sellisel juhul säilib programmi terviklik funktsionaalsus (vastasel juhul ei ole mõningad funktsioonid kättesaadavad). Graafilise liidese paigaldamiseks server arvutisse toimigem järgnevalt:

  • Veendume, et Java on paigaldatud
yum install java-1.8.0-openjdk.i686
  • Laeme alla MySecureShell graafilise liidese ning käivitame kasutades javat
wget http://sourceforge.net/projects/mysecureshell/files/MySecureShell%20Graphical%20Tools/v1.90/MSS_Frontend_v1.9.zip
unzip MSS_Frontend_v1.9.zip
java -jar sftp-mss.jar

Kuna labori näites kasutame OpenJava't ning mitte SUN'i enda ametlikku Java't, siis käivitusele järgneb teavitus selle kohta: (joonis 1. java)

joonis 1. java











Ning proovides ühendada kasutajat serveriga, saame teise veateate: (joonis 2. nullpointer)

joonis 2. nullpointer











Teisest veateatest saab lahti, kui vajutate "Disconnect" ning ühendate uuesti serveriga end. Seejärel töötab liides nagu ette nähtud.

Teenuse kasutaja loomine

Teenusele kasutaja loomine, määrates ära vaikimisi shell (konsool)

useradd -m -s /bin/MySecureShell kasutaja
passwd kasutaja

Kui teil on kasutaja juba eelnevalt loodud, siis vaikimisi konsooli kasutajale saab määrata järgneva käsuga:

usermod -s /bin/MySecureShell kasutaja


Paroolita usaldusväärne kaugelt sisse logimine

Kui on soov logida SFTP serverisse sisse, serveris defineeritud kasutajaga, ilma, et sisestaksite parooli, on võimalik luua võtmepaariga usaldatud logimine. Tegemist on SSH autentimisega, kuid kuna MSS SFTP töötab just SSH protokollil, siis töötab see moodus korrektselt.
Antud näites olen logitud sisse klient-masinasse kasutajaga kalle, küll aga soovin luua SFTP ühenduse serverisse kasutajaga root (juurkasutaja). Praktilises elus soovitan soojalt mitte kunagi teha võtmepaare juurkasutajale! See on küll mugav, kuid sisaldab endas turvariski, kui unustate arvuti lahti.

  • Klient arvutis genereerin avaliku ning privaatse RSA võtmepaari:
ssh-keygen -t rsa
  • Fedora SFTP serveris veendun, et kaust ning fail /root/.ssh/authorized_keys oleks loodud.
  • Saadan avaliku võtme klient arvutist (mille genereerisime eelnevalt ~/.ssh/id_rsa.pub) Fedora SFTP serverisse juurkasutaja usaldatud võtmete kausta:
cat /home/kalle/.ssh/id_rsa.pub | ssh root@192.168.56.101 'cat >> .ssh/authorized_keys'
  • Järgnevalt võime kasutaja kalle alt (klient arvuti) logida SFTP'ga otse Fedora serverisse, kuna usaldus on võtmepaariga loodud:
sftp root@192.168.56.101

Testimine

Peale kasutaja loomist võite proovida ligipääsu kliendi arvutist SFTP serveri poole:

  • Käsurealt
sftp kasutaja@192.168.56.101

Väljund:

The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.
ECDSA key fingerprint is 64:46:28:c1:9b:90:c6:3f:68:ed:cc:ca:81:60:35:a1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.101' (ECDSA) to the list of known hosts.
kasutaja@192.168.56.101's password: 
Connected to 192.168.56.101.
sftp>
  • FileZilla FTP kliendiga sisselogimine. (joonis 3. filezilla)
joonis 3. filezilla











Konfigureerimine

Ennem kui hakkate konfiguratsiooni muutma (eriti läbi graafilise liidese), on äärmiselt tähtis luua algsest konfiguratsiooni failist varukoopia.

cp /etc/ssh/sftp_config /root/copyof_sftp_config

MySecureShell võimaldab väga paindlikku konfiguratsiooni. Järgnevalt toon välja mõningad võimalused, mida saate muuta modifitseerides faili /etc/ssh/sftp_config.
Eelpool tõin välja, et on võimalik ühendada end SFTP serveriga kasutades FileZilla FTP programmi. Kui olete kaasa teinud siiani juhendit, võisite märgata, et kuigi ühendus on võimalik serveriga saavutada, ei ole aga hetkel võimalik midagi serverisse üles laadida. See tuleneb sellest, et konfiguratsiooni failis on määratletud maksimaalseks ühenduste arvuks 1. Kui olete serveriga ühenduses, on see maksimaalne väärtus täidetud ning rohkem ühendusi luua ei ole võimalik (faili laadimiseks on vajalik luua uus ühendus andme-liikluse jaoks). Selleks, et üheaegne ühendus ning andmete üleslaadimine oleks võimalik, muudame konfiguratsioonis järgneva parameetri, mis kuulub <Default> teekide vahele:

LimitConnectionByUser 2

Selle abil määrame ära kõikidele kasutajatele vaikimisi lubatud ühenduste arvuks 2. Tasub meeles pidada, et <Default> teekide vahel tehtud muudatused kehtivad kõigile vaikimisi, kui ei ole parameetrit välja toodud eraldi kasutaja või grupi teekide vahel. Siinkohal toon näite, kuidas olen määranud kasutaja "kasutaja" administraatoriks:

<user kasutaja>
IsAdmin true
</user>

Samuti saab kõiki ülejäänud parameetreid (Üles/allalaadimise kiirus jne) määrata kasutaja kohta või grupi kohta. Järgnevalt toongi välja mõningad parameetrid, mida võiks modifitseerida vastavalt vajadusele ning mida pean tähtsaks.

GlobalDownload 50k #määratleb serverist allalaadimise kiiruse piirangu kõikidele klientidele kokku. Võimalik kasutada vormingut 50 (50 bitti), 50k (50 kilobaiti), 50m (50 megabaiti). Number 50 on vaid näide.
GlobalUpload 0 #määratleb serverist üleslaadimise kiiruse piirangu kõikidele klientidele kokku. 0 - piirangut ei eksisteeri.
Download 5k #määratleb allalaadimise kiiruse piirangu ühe kliendi kohta.
Upload 0 #määratleb üleslaadimise kiiruse piirangu ühe kliendi kohta.
StayAtHome true/false #määratleb, kas kasutaja on piiratud vaid enda kodukataloogis olema.
LimitConnection 10 #määratleb maksimaalse ühenduste arvu serveri jaoks.
LimitConnectionByUser 2 #määratleb maksimaalse ühenduste arvu kasutaja kohta.
LimitConnectionByIP 2 #määratleb maksimaalse ühenduste arvu lähte-IP-aadressi kohta.
Home /home/$USER #sisse logiva kasutaja kodukataloogi asukoht ($USER muutuja muudab ligipääsu erinevatele kasutajatele dünaamiliseks).
IdleTimeOut 5m #aeg, mille järel ühendus termineeritakse, kui kasutaja ei ole aktiivne.
ResolveIP true/false #serveri IP lahendamine DNS kirjete abil. Keelates selle, saab serverile ligi vaid serveri vastava liidese IP abil.
HideNoAccess true/false #peidab ühendatud kasutaja eest kataloogipuu/kataloogid, kuhu kasutajal õigusi ei ole.
DefaultRights 0640 0750 #määrab uutele/serverisse laetavatele failidele ning kataloogidele vaikimisi õigused.
ShowLinksAsLinks true/false #võimaldab näidata kasutajale seoseid, kui seose sihtpunkti.
LogFile [asukoht] #määrab kuhu logifail kirjutatakse SFTP liiklusega seoses, vaikimisi /var/log/sftp-server_ftp.log
DisableAccount true/false #võimaldab termineerida ajutiselt kasutaja konto.
Include [asukoht] #võimaldab lugeda sisse lisa-konfiguratsiooni faili. Kasulik, kui hoiate kasutajate ning gruppide konfiguratsiooni faile eraldi.

Lisakäsklused

Järgnevad käsklused paigaldatakse koos MySecureShell paketiga ning on võimalik käivitada otse terminalist. Eesmärgiks hõlpsustada serverihaldust.

sftp-kill [kasutajanimi] #termineerib SFTP kasutaja sessiooni
sftp-state #väljund serveri hetkelise seisundi kohta
sftp-user [parameeter] [kasutajanimi] #võimaldab luua/kustutada/väljastada nimekirja SFTP kasutajatest. Võimalikud parameetrid: <b>create</b>, <b>delete</b>, <b>list</b> (viimase puhul ei määrata kasutajanime).
sftp-verif #kontrollib SFTP failide olemasolu, õigusi ning õigsust.
sftp-who #väljastab nimekirja hetkel serveriga ühenduses olevatest kasutajatest ning info nende sessioonidest.

Kokkuvõte

MySecureShell võimaldab vähese vaevaga üles seada SFTP serveri, mis baseerub OPEN-SSH protokollil ning on suuresti kohandatav vastavalt vajadustele. Käesolevas töös käsitlesime MSS'i paigaldamist, kasutajate loomist, seadistamist ning mõningaid lisavõimalusi.
Kirjatöö on tehtud ITK õppeaine Linuxi Administreerimine Labor 2 raames.

Allikad

Unixmen MSS
MySecureShell