Secure Shell

**Secure Shell** jeb **SSH** ir tīkla protokols, kurš nodrošina drošu datu apmaiņu starp divām tīkla ierīcēm. Divas galvenās protokola versijas ir SSH1 jeb SSH-1 un SSH2 jeb SSH-2. Izmanto galvenokārt Linux un Unix balstītās sistēmās, lai piekļūtu shell profiliem. SSH tika izstrādāts, lai aizstātu Telnet un citus nedrošus tālvadības protokolus, kas nosūta informāciju, paroles tīrā tekstā nekodējot. Šifrēšana, ko izmanto SSH, ir paredzēta, lai nodrošinātu konfidencialitāti un datu aizsargāšanu nedrošos tīklos, kā piemēram – internetā.

SSH ir tīkla sesiju slāņa protokols, kas ļauj veikt operētājsistēmu attālu vadību un TCP savienojumu tunelēšanu (piem., lai pārsūtītu failus). SSH ir līdzīga funkcionalitāte kā Telnet un rlogin protokoliem, taču, atšķirībā no tiem, tas šifrē visu datplūsmu, tostarp arī pārsūtāmās paroles. SSH ļauj izvēlēties dažādus šifrēšanas algoritmus. SSH-klienti un SSH-serveri ir pieejami lielākajai daļai tīkla operētājsistēmu.

SSH ļauj droši pārraidīt nedrošā vidē gandrīz jebkuru tīkla protokolu. Tādā veidā var ne tikai attālināti strādāt ar datoru, izmantojot komandrindu, bet arī sūtīt pa šifrētu kanālu audio vai video plūsmas.

Lielākā daļa datu bāzu mitināšanas pakalpojumu sniedzēju par maksu nodrošina klientiem pieeju viņu mājas katalogam, izmantojot SSH. To var ērti izmantot gan darbā ar komandrindu, gan attālināti startējot lietojumprogrammas.

## Standarti un programmas īstenošana

Pirmā protokola versija, SSH-1, tika izstrādāta 1995. gadā. To izstrādāja pētnieks no Helsinku Tehnoloģiju universitātes, Somijā. SSH-1 tika rakstīts, lai sniegtu lielāku drošību un konfidencialitāti nekā protokoli rlogin, Telnet un RSH. 1996. gadā tika izstrādāta drošāka protokola versija, SSH-2, kura nav saderīga ar SSH-1 protokolu. Protokols kļuva arvien populārāks, un līdz 2000. gadam tam bija apmēram divi miljoni lietotāju. Pašlaik ar jēdzienu "SSH" parasti tiek apzīmēts tieši SSH-2 protokols, jo pirmā protokola versija saistībā ar būtiskām nepilnībām praktiski netiek izmantota.

2006. gadā protokols tika apstiprināts IETF kā interneta standarts.

Tomēr dažās valstīs (Francijā, Krievijā, Irākā un Pakistānā), joprojām ir nepieciešama speciāla atļauja no atbilstošām iestādēm, lai varētu izmantotu dažas šifrēšanas metodes, tostarp arī SSH.

Ir izplatītas divu veidu SSH implementācijas: komerciālā un bezmaksas.	Bezmaksas risinājums tiek saukts par OpenSSH. Uz 2006. gadu 80% interneta datoru izmantoja tieši OpenSSH. Komerciālo versiju izstrādāja SSH Inc, un tā ir bezmaksas tikai nekomerciālai lietošanai. Abas versijas satur gandrīz vienādu komandu kopu.

SSH-2 protokols, atšķirībā no protokola Telnet, aizsargā pret nesankcionētu piekļuvi datplūsmai, taču nav noturīgs pret uzbrukumiem "cilvēks pa vidu." Tāpat SSH-2 protokols ir noturīgs arī pret pievienošanos pa vidu - nevar pievienoties jau izveidotai sesijai, vai pārtvert to.

Atbalsts SSH tiek īstenotas visās UNIX veidīgajās sistēmas, un vairumā no tām starp standarta programmām ir pieejami arī SSH klients un SSH serveris. Pastāv arī daudzi SSH-klients risinājumi ne UNIX operētājsistēmām. Lielu popularitāti protokols ieguva pēc plašās datplūsmas analizatoru programmatūras attīstības, kā alternatīva nedrošajam Telnet protokolam.

Lai strādātu ar SSH, ir nepieciešams SSH serveris un SSH klients. Serveris noklausās pieslēgumus no klienta datora un pie savienojuma izveides autentificē klientu, pēc kā sāk klienta apkalpošanu. SSH klientu izmanto, lai izveidotu savienojumu ar attālināto datoru un izpildītu nepieciešamās komandas.

### SSH serveri

* BSD: OpenSSH
* Linux: dropbear, lsh-server, openssh-server, ssh 
* Windows: freeSSHd, copssh, WinSSHD, KpyM Telnet/SSH Server, MobaSSH, OpenSSH

### SSH klienti

* GNU/Linux, *BSD: kdessh, lsh-client, openssh-client, putty, ssh 
* MS Windows un Windows NT: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD, XShell 
* MS Windows Mobile: PocketPuTTy, mToken, sshCE, PocketTTY, OpenSSH, PocketConsole 
* Mac OS: NiftyTelnet SSH 
* Symbian OS: PuTTY 
* Java: MindTerm, AppGate Security Server 
* J2ME: MidpSSH 
* iPhone: i-SSH, ssh (kopā ar Terminal) 
* Android: connectBot 
* Blackberry: BBSSH 
* MAEMO 5: OpenSSH

## Ieteikumi drošai SSH lietošanai

# Aizliegt attālināto root piekļuvi.
# Aizliegt iespēju pieslēgties bez paroles, un iespēju atspējot paroles pieprasīšanu, lai izveidotu savienojumu.
# Izvēlēties nestandarta portu SSH serverim.
# Izmantot garas SSH2 RSA atslēgas (2048 biti vai vairāk). Šifrēšana ar RSA ir droša tad, ja atslēgas garums ir vismaz 1024 biti.
# Ierobežot IP adrešu sarakstu, ar kurām ir atļauts piekļūt.
# Bloķēt piekļuvi noteiktām potenciāli bīstamām adresēm.
# Aizliegt iespēju izmantot kopīgus vai plaši izplatītus sistēmu pieteikšanās vārdus piekļuvei caur SSH.
# Regulāri pārskatīt kļūdu ziņojumus par autentifikāciju.
# Izmantot ielaušanās mēģinājumu atklāšanas sistēmas (IDS - Intrusion Detection System).
# Izmantot slazdus, kas veido viltus SSH servisus.

## SSH izmantošanas piemēri

Komanda, lai izveidotu savienojumu ar lokālo SSH-serveri no GNU / Linux komandrindas priekš lietotāja „pacify” (serveris klausās uz nestandarta portu 30000):

 $ ssh -p 30000 pacify@127.0.0.1

Atslēgu pāra ģenerēšana (uz UNIX veidīgajām OS) tiek veikta ar komandu:

 $ ssh-keygen

Lai izveidotu SSH-2 RSA atslēgu pāri ar 4096 bitu garumu programmā puttygen UNIX veidīgajās operētājsistēmās:

 $ puttygen -t rsa -b 4096 -o sample

Dažiem SSH klientiem, piemēram, PuTTY ir grafiskā lietotāja saskarne.

## SSH tunelēšana

SSH tunelis ir tunelis, kas tiek radīts ar SSH savienojuma palīdzību un tiek izmantots, lai šifrētu tunelētos datus. Tas tiek izmantots, lai padarītu drošāku datu pārraidi internetā (analoģiskas funkcijas veic IPsec). Nešifrētā kāda protokola datplūsma tiek šifrēta vienā SSH savienojuma galā un atšifrēta savienojuma otrā galā.

Praktiskā īstenošana var tikt veikta vairākos veidos:

* izveidot socks-proxy pielikumiem, kuri neprot izmantot SSH tuneli, bet prot izmantot socks -proxy.
* Izmantot pielikumus, kuri prot izmantot SSH tuneli.
* Izveidot VPN tuneli, piemērots gandrīz jebkuriem pielikumiem.
* Ja jūsu pielikums strādā tikai ar vienu konkrētu serveri, varat konfigurēt SSH klientā tā, ka viņš laiž caur SSH tuneli TCP savienojumus, kuri tiek saņemti uz noteiktu TCP portu datorā, kurā darbojas SSH klients. Piemēram, „Jabber” klienti pieslēdzas pēc noklusējuma uz 443 portu. Tad, lai izveidotu savienojumu ar serveri „Jabber” caur SSH tuneli, SSH klients tiek konfigurēts pārsūtīt savienojumus no jebkura lokālā datora porta (piemēram no porta 4430) uz attālināto serveri (piemēram, jabber.example.com uz portu 443):

 $ ssh -L 4430:jabber.example.com:443 somehost

Šajā gadījumā „Jabber” klients tiek konfigurēts, lai izveidotu savienojumu ar serveri „localhost” (ja ssh klients darbojas uz tā paša datora uz kura darbojas „Jabber” klients), uz portu 4430.

Lai izveidotu ssh tuneli, ir nepieciešams dators, uz kura darbojas ssh serveris un kuram ir piekļuve jabber.example.com. Šāda konfigurācija var tikt izmantota, ja lokālajam datoram piekļuve pie jabber.example.com ir slēgta ugunsmūrī, bet ir pieeja kādam ssh serverim, kuram nav ierobežojumu piekļūšanai interneta resursiem.

## Tehniskā informācija par protokolu

SSH ir sesijas slāņu protokols. SSH serveris parasti klausās pieslēgumus uz 22 TCP portu. SSH-2 protokola specifikācija ir ietverta 4251 RFC. Servera autentifikācijā tiek izmantots pušu autentifikācijas protokols, kurš balstīts uz digitālā paraksta RSA vai DSA algoritmu. Autentifikācijai, klients var izmantot arī RSA vai DSA parakstu, bet ir pieļauta arī autentifikācija izmantojot paroli, un pat IP adresi. Autentifikācija ar paroli ir visizplatītākā; tā ir droša, jo parole tiek pārraidīti šifrētā virtuālā kanālā. Autentifikācija, izmantojot IP adresi, nav droša un šī funkcija parasti tiek atslēgta. Lai izveidotu kopīgu slepenu (sesijas atslēgu), izmantojot Difī - Helmaņa (DH). Lai šifrētu pārsūtamos datus tiek izmantoti simetriskās šifrēšanas algoritms, AES algoritms, Blowfish algoritms, vai 3DES algoritms.

Lai saspiestu šifrētos datus, var tikt izmantots LempelZiv (LZ77) algoritms, kas nodrošina tādu pašu saspiešanas līmeni kā ZIP. SSH kompresija tiek iespējota tikai pēc lietotāja pieprasījuma, un praksē tiek izmantota reti.