• No results found

Systémové požadavky pro nasazení služby Nextcloud

In document Využití Cloud Computingu ve firmě (Page 64-122)

Platforma Možnosti

Operační systém Ubuntu 16.04/18.04 LTS (doporučené) Red Hat Enterprise Linux 7 (doporučené) Debian 8 (Jessie), 9 (Stretch)

SUSE Linux Enterprise Server 11 with SP3 & 12 openSUSE Leap 42.1+

CentOS 7

Databáze MySQL nebo MariaDB 5.5+ (doporučené) PostgreSQL 9/10

SQLite (pouze pro testování a malé instance) Webserver Apache 2.4 s mod_php nebo php-fpm (doporučené)

nginx with php-fpm Běhové prostředí PHP 7.0

7.1 7.2 Zdroj: Nextcloud dokumentace, 2018

Paměť

Požadavky na pamět jsou závislé na počtu uživatelů, aplikací, souborů a objem serverové kapacity. Nextcloud potřebuje minimálně 128 MB RAM. Doporučeno je 512 MB.

5.2 Pronajmutí výpočetních prostředků v cloudu

Následující kapitola uvede jednotlivé kroky, které jsou potřeba udělat pro pronajmutí výpočetních kapacit v cloudu. Uvede také popis nutné konfigurace pro správnou funkčnost k nasazení produktu Nextcloud.

Založení účtu na Amazon Web Services

Vytvoření nového účtu na AWS probíhá klasicky přes webový formulář na stránkách této služby. Vyplní se standardní údaje jako je jméno, e-mailová adresa a heslo. Následně se služba zeptá, zdali se účet zakládá jako firma nebo jako osobní účet. Dále je potřeba vyplnit svou adresu, telefonní číslo a bezpečnostní CAPTCHA kód. Pro založení účtu je nutné vlastnit debetní/kreditní kartu a při založení účtu uvést její číslo a bezpečnostní CVC kód.

Po úspěšném ověření karty je nutné účet ověřit přes automatický telefonní hovor. Na uvedené číslo zavolá automat a sdělí bezpečnostní kód, který je potřeba zadat do formuláře.

V dalším kroku je potřeba zvolit úroveň podpory pro uživatele. Na výběr jsou možnosti Basic, Developer a Business. Basic možnost je zdarma a ostatní volby s rozšířenou podporou jsou za dodatečný poplatek. Tím je registrace dokončena a uživatel se může přihlásit do svého účtu.

Vytvoření virtuální instance

Při vytváření nového virtuálního stroje je v prvním kroku potřeba vybrat Amazon Machine Image (zkráceně AMI). AMI je šablona obsahující softwarovou konfiguraci (operační systém, aplikační server a aplikace) potřebnou ke spuštění instance. Dostupné jsou AMI vytvořené přímo firmou Amazon, uživatelskou komunitou, AWS Obchodem nebo vlastní.

Vzhledem k doporučení Nextcloud na operační systém byla vybrána instance s operačním

Obrázek 18: Vybraný operační systém Zdroj: vlastní

V dalším kroku je potřeba zvolit typ instance. Každý typ instance je optimalizovaný pro různé účely. Instance jsou virtuální servery, na kterých je možné spouštět vlastní aplikace.

Nabízí různé kombinace CPU, paměti, úložného prostoru a kvalitu internetového připojení.

Nextcloud doporučuje minimálně 512 MB paměti. Bude tedy vybrána zdarma dostupná instance t2.micro. Ta je poskytována s 1 GB paměti, což tento požadavek splňuje.

Obrázek 19: Vybraná verze instance Zdroj: vlastní

Přiřazení úložiště

V rámci Free Tier je možné přiřadit až 30 GB SSD úložného prostoru. Je možné přiřazovat více disků nebo upravovat velikost jejich úložiště. Velikost úložiště může být dále modifikována po spuštění instance. Pro potřeby této práce je ponecháno defaultních 8 GB.

Obrázek 20: Detaily o přiřazeném úložišti Zdroj: vlastní

Konfigurace bezpečnostních skupin

Bezpečnostní skupina je v podstatě virtuální firewall, který kontroluje přenos dat pro jednu nebo více instancí. Při zakládání instance je potřeba k této instanci přiřadit jednu nebo více bezpečnostních skupin. Každá bezpečnostní skupina má nastavená pravidla, která umožňuji přenášet data do a z instance. Pravidla pro bezpečnostní skupiny mohou být kdykoliv měněna a nová pravidla jsou automaticky po krátké době aplikována. Při požadavku na připojení k instanci jsou všechna pravidla v dané bezpečnostní skupině asociované k instanci zhodnocena a je určeno, zdali se daný klient může připojit či nikoliv.

Příchozí připojení na portu 22 pro SSH je povoleno defaultně. Jako zdroj je nicméně uveden localhost. To znamená, že by se teoreticky k této instanci mohl připojit kdokoliv na světě.

Vhodné je IP adresu změnit na adresu administrátora, který bude danou instanci spravovat.

Jelikož Nextcloud používá ke svému běhu protokol HTTP a HTTPS je potřeba přidat protokoly 80 a 443. Bez přidání těchto položek by nebylo možné se k Nextcloud serveru připojit z prohlížeče.

Obrázek 21: Editace bezpečnostní skupiny Zdroj: vlastní

Spuštění instance

V posledním kroku se zobrazí všechny zadané informace o spouštěné instanci. Je možné se ke každému kroku vrátit a případně některé položky upravit. Po stisknutí tlačítka Launch dojde k otevření dialogového okna, které slouží pro spárování bezpečnostního klíče s danou

instancí. Veřejný klíč má k dispozici Amazon a privátní klíč je potřeba si stáhnout k sobě na disk. V první kolonce je potřeba vybrat možnost Create a new key pair a do druhého pole se zadat název daného klíče. Po zadání jména klíče dojde volbou Download Key Pair ke stažení klíče na disk a zvolením možnosti Launch Instances ke spuštění instance.

Obrázek 22: Vygenerování privátního klíče Zdroj: vlastní

Po spuštění dojde k automatickým kontrolám instance, které identifikují hardwarové a softwarové problémy. Amazon provádí dva základní typy ověření statusu: systémové ověření a ověření instance.

Systémové ověření může selhat například z těchto důvodů:

• Ztráta připojení k síti

• Ztráta napájení systému

• Softwarové problémy na fyzické hostované stanici

• Hardwarové problémy na fyzické hostované stanici, které ovlivňují připojení k síti

Ověření instance může selhat například z těchto důvodů:

• Selhání systémového ověření

• Špatná konfigurace sítě nebo spuštění

• Nedostatečná paměť

• Poškozený souborový systém

• Nekompatibilní kernel (Amazon, 2018)

Pokud oba tyto testy projdou, status instance se změní na 2/2 checks passed, alarm status na OK a instance je připravená k použití.

Obrázek 23: Informace o založené instanci Zdroj: vlastní

Konfigurace elastické IP

Elastická IP je statická IPv4 adresa určená pro dynamický cloud computing. Elastická IP adresa je asociována s daným AWS účtem. Díky elastické IP je možné zakrýt selhání instance nebo softwaru pomocí rychlého přesměrování adresy na jinou instanci účtu.

Elastická IP je veřejná IPv4 adresa dostupná z internetu. Pokud instance nemá veřejnou IPv4 adresu, je možné s ní asociovat elastickou IP adresu a tím povolit komunikaci s internetem.

Například je díky tomu možné připojení k instanci z lokálního počítače. Pro Nextcloud je velmi vhodné přiřadit instanci elastickou IP, jelikož při restartování instance se veřejná IPv4 adresa mění a Nextcloud při každém připojení z neznámé IP adresy ověřuje, zdali je adresa věrohodná. Bez ověření věrohodnosti není možné k Nextcloud přistoupit. Elastické IP jsou dostupné zdarma a ke každému AWS účtu je možné přiřadit až 5 elastických adres. Důležité je, že adresy musí být přiřazeny k instanci, jinak jsou zpoplatněné. (Amazon, 2018)

Obrázek 24: Informace o přidělené elastické IP adrese Zdroj: vlastní

5.3 Přístup k virtuální instanci

Existuje několik způsobů, jak se připojit k virtuální instanci. První možností je připojení skrze webový prohlížeč za použití platformy Java. Tento způsob je nicméně zastaralý a z důvodu bezpečnostních rizik nebude v této diplomové práci dále zmiňován. Možnost, která bude v tomto případě využita je připojení přes SSH klient PuTTY a WinSCP.

5.3.1 Připojení přes PuTTY a WinSCP

Pro úspěšné připojení k založené instanci je potřeba několik předpokladů:

• SSH klient

• ID instance

• Veřejný DNS název instance

• Umístění privátního klíče

• Defaultní uživatelského jméno pro danou AMI instanci

• Povolení příchozích SSH připojení z vlastní IP adresy směrem k instanci

SSH klient

Jako SSH klient bude použit program PuTTY, protože s ním má autor práce zkušenosti a je zároveň i doporučen společností Amazon. PuTTY je bezplatná implementace SSH a Telnet klienta pro operační systém Windows a Unixové platformy. Jejím autorem a hlavním vývojářem je Simon Tatham. Spouštěcí soubory a zdrojový kód tohoto programu je distribuován pod licencí MIT, která je podobná BSD licenci. Tato licence má certifikaci Open Source a řídí se pravidly pro Debian Free Software. Důležité je, že všichni (i organizace) mohou používat PuTTY bez jakýchkoliv omezení (i pro komerční účely).

Kromě nutnosti zmínit originální copyright a text licenci si může kdokoliv tento produkt přizpůsobit svým potřebám a implementovat jej do svých programů a produktů (i komerčních). Kromě toho PuTTY nenese odpovědnost za žádná poškození systému a uživatel tento produkt používá na vlastní nebezpečí.

PuTTY umožňuje díky protokolům SSH, SCP, Telnet a rlogin a dalším vzdálené síťové připojení z vlastního počítače. PuTTY implementuje klientskou část seance: část ve které je seance zobrazena a ne část, kde probíhá. Zjednodušeně řečeno lze program PuTTY spustit na zařízení s operačním systémem Windows nebo Unix a vzdáleně se připojit například k Unix zařízení. PuTTY otevře okno a cokoliv, co uživatel do tohoto okna zadá je odesláno na vzdálený Unix stroj a vše, co tento stroj pošle nazpátek je zobrazeno v tomto okně.

V zásadě je možné tento vzdálený stroj ovládat stejně, jako kdyby u něj uživatel fyzicky seděl. Ve skutečnosti ale může sedět na vzdáleném místě od tohoto koncového zařízení.

(Tatham, 2017) Pro připojení k AWS instanci se využije podpora SSH-2, autentizace veřejných klíčů (RSA a DSA) a také ukládání údajů pro přihlášení a nastavení.

ID instance

ID instance je možné získat z Amazon EC2 konzole. Jedná se o hodnotu ve sloupci Instance ID. Případně je možné použít tlačítko Copy to clipboard v popisu instance.

Obrázek 25: ID instance Zdroj: vlastní

Veřejný DNS název instance

Veřejný DNS název instance je možné získat z Amazon EC2 konzole. Jedná se o hodnotu ve sloupci Public DNS (IPv4). Případně je možné, stejně jako v předchozím případě, použít tlačítko Copy to clipboard v popisu instance.

Obrázek 26: Veřejný DNS název instance Zdroj: vlastní

Umístění privátního klíče

Je potřeba úplná cesta k umístění klíče .pem na pevném disku. Tento klíč byl vygenerován a stažen při spuštění instance.

Defaultní uživatelského jméno pro danou AMI instanci

Každý z operačních systémů na příslušných instancích má vlastní defaultní uživatelské jméno. Pro přehlednost je zde výčet jednotlivých systémů a jejich uživatelských jmen:

• Pro Amazon Linux 2 nebo Amazon Linux AMI, uživatelské jméno je ec2-user.

• Pro Centos AMI, uživatelské jméno je centos.

• Pro Debian AMI, uživatelské jméno je admin nebo root.

• Pro Fedora AMI, uživatelské jméno je ec2-user nebo fedora.

• Pro RHEL AMI, uživatelské jméno je ec2-user nebo root.

• Pro SUSE AMI, uživatelské jméno je ec2-user nebo root.

• Pro Ubuntu AMI, uživatelské jméno je ubuntu.

Jelikož vytvořená instance běží na operačním systému Ubuntu 16.04 LTS, defaultním uživatelským jménem je ubuntu.

Povolení příchozích SSH připojení z vlastní IP adresy směrem k instanci

Bezpečnostní skupina asociovaná s instancí musí mít povolené příchozí SSH data z dané IP adresy. Toto již bylo dříve nastaveno a rozepsáno v kapitole Konfigurace bezpečnostních skupin. (Amazon, 2018)

Konverze privátního klíče za pomocí PuTTYgen

První menší problém s programem PuTTY přichází při použití privátního klíče. PuTTY nativně nepodporuje privátní klíče ve formátu .pem vygenerované pomocí Amazon EC2.

PuTTY nicméně obsahuje utilitu s názvem PuTTYgen. Ta dokáže klíče ve formátu .pem konvertovat do formátu .ppk, se kterým již PuTTY dokáže pracovat. Před připojením k instanci pomocí PuTTY je potřeba zkonvertovat privátní klíč do formátu .ppk.

Kromě konverze je PuTTYgen i generátor klíčů. Generuje páry privátního a veřejného klíče pro použití v PuTTY a dalších programech. PuTTYgen generuje klíče ve formátu RSA, DSA, ECDSA a Ed25519.

Pro konverzi privátního klíče vygenerovaného službou AWS je potřeba otevřít program PuTTYgen a zvolit typ klíče – v tomto případě RSA. Pro načtení existujícího klíče slouží volba Load. Zvolením této možnosti se zobrazí adresářová struktura, která defaultně zobrazuje pouze klíče ve formátu .ppk. Pro nalezení vygenerovaného klíče je tedy potřeba zvolit možnost k zobrazení všech souborů. Potvrzením výběru klíče se zobrazí se dialogové okno s informací, že klíč byl úspěšně importován. Před uložením klíče ve formátu .ppk je ještě možné zvolit přístupovou frázi pro přidání další vrstvy protekce při přístupu ke klíči.

Pro uložení klíče slouží volba Save private key, která otevře adresářovou strukturu a zeptá se na název souboru. Bude zadáno stejné jméno jako v případě .pem klíče a uloženo na disk.

Klíč je nyní připraven pro použití v programu PuTTY a lze se pomocí něj připojit k instanci.

Obrázek 27: Oznámení o úspěšném importování cizího klíče Zdroj: vlastní

Obrázek 28: Program PuTTY s importovaným klíčem Zdroj: vlastní

Připojení k instanci přes PuTTY

Po spuštění programu PuTTY se zobrazí obrazovka s kolonkou Host Name, do které je potřeba zadat uživatelské jméno a veřejný DNS název dané instance ve tvaru uzivatelske_jmeno@verejny_dns_nazev. Connection type je defaultně navolen na SSH. Port by měl být nastaven na hodnotu 22.

PuTTY je také možné nakonfigurovat, aby po určitém intervalu posílal keepalive data, která udržují seanci aktivní. Může se to hodit v případě, že je seance delší dobu neaktivní a docházelo by k přerušení připojení. Ve sloupci Category, pod možností Connection je možné do pole Seconds between keepalives zadat hodnotu po které budou data posílána.

Jelikož je autentizace nastavena na SSH klíč, je potřeba ve sloupci Category rozbalit možnost Connection, dále rozbalit možnost SSH a pod volbou Auth nakonfigurovat privátní

klíč. Tlačítko Browse pod nápisem Private key file for authentication slouží pro otevření adresářové struktury a vybrání klíče ve formátu .ppk, který byl zkonvertován v minulém kroku. Do prázdného pole se automaticky doplní cesta ke klíči a tím je program PuTTY nakonfigurován pro připojení. Nastavení této seance je zároveň možné si uložit na defaultní stránce Session, aby nebylo nutné jej příště znovu konfigurovat.

Po stisknutí tlačítka Open dojde k otevření terminálového okna a při prvním spuštění dojde k zobrazení bezpečnostního dialogového okna. Toto okno vyžaduje potvrzení shody RSA klíče s klíčem, jenž byl vygenerován v předešlém kroku. Je nutné podotknout, že tuto výzvu není potřeba přijmout. Při zvolení No dojde k navázání připojení, nicméně RSA otisk nebude uložen do registrů. Při zvolení Yes dojde k uložení RSA otisku do následující cesty v registrech: HKCU\SOFTWARE\SimonTatham\PuTTY\SshHostKeys. Při příštím pokusu o připojení se již žádost neobjeví.

Obrázek 29: Přihlašovací údaje v programu PuTTY Zdroj: vlastní

Obrázek 30: Upozornění na přidání klíče do registrů Zdroj: vlastní

Obrázek 31: Stav terminálu po přihlášení k instanci Zdroj: vlastní

Přenášení souborů mezi místním počítačem a vzdálenou instancí

Pro přenášení souborů mezi místním počítačem a vzdálenou instancí je možné buď použít terminálové prostředí programu PuTTY nebo grafické uživatelské prostředí open source programu WinSCP.

Pomocí PuTTY

Pro přenášení souborů v programu PuTTY existuje vestavěný nástroj pro příkazový řádek nazvaný PuTTY Secury Copy klient (zkráceně PSCP). Ten umožňuje nahrávat soubory na vzdálený server a přijímat je z něj. Důležité je, že tento nástroj se musí použít z příkazového řádku místního počítače, a ne ze vzdálené PuTTY konzole.

Příklad zkopírování místního souboru na operačním systému Windows umístěného na ploše a nazvaného test.txt na vzdálený server do složky /ubuntu/home/:

$ pscp -i "D:\Desktop\nextcloud.ppk" "D:\Desktop\test.txt" ubuntu@ec2-34-219-128-225.us-west-2.compute.amazonaws.com:/home/ubuntu/test.txt

Pomocí WinSCP

WinSCP je open source souborový manažer s grafickým rozhraním pro operační systém Windows. Umožňuje nahrávat soubory na vzdálený počítač přes protokoly SFTP, SCP, FTP a FTPS. Tento program zároveň umožňuje přenášet soubory mezi Windows strojem a Linuxovou instancí stylem táhni a pusť nebo mezi nimi synchronizovat celé adresářové struktury.

Obrázek 32: Výzva programu WinSCP na přidání RSA klíče do registrů Zdroj: vlastní

Obrázek 33: Adresářová struktura v programu WinSCP Zdroj: vlastní

5.3.2 Připojení přes SSH terminál

Pro připojení přes SSH terminál je potřeba znát všechny parametry instance jako v předchozím případě (ID instance, veřejný DNS název instance, umístění privátního klíče a defaultní uživatelské jméno pro přístup k dané AMI). Kromě toho je potřeba, aby systém měl nainstalovaný SSH klient, jenž bývá defaultně zahrnut.

Pro připojení přes SSH je potřeba se přemístit do umístění s privátním klíčem a z důvodu bezpečnosti změnit jeho přístupová oprávnění, aby ho mohl používat pouze administrátor.

To se provede použitím příkazu chmod a nastavením oprávnění na hodnotu 400:

$ chmod 400 /path/my-key-pair.pem

Použitím příkazu ssh dojde k připojení k instanci. Parametr -i slouží ke specifikování cesty k privátnímu klíči:

$ ssh -i /cesta/nextcloud.pem ubuntu@ec2-34-209-85-237.us-west-2.compute.amazonaws.com

Zobrazí se výzva na přidání RSA klíče do registrů a dojde k připojení:

The authenticity of host 'ec2-34-210-64-56.us…' can't be established.

ECDSA key fingerprint is SHA256:KisBqfJ1v0712…

Are you sure you want to continue connecting (yes/no)? yes

Permanently added 'ec2-34-210-64-56.us… to the list of known hosts.

5.4 Zabezpečení SSH serveru

Při vytváření EC2 instance dochází ke generaci nebo vybrání předem vygenerovaného klíče pro přístup přes SSH k dané instanci. Tento klíč je stažen a uložen na místním počítači.

Riziko nastává v případě, že k tomuto počítači dostane přístup neoprávněná osoba. V tomto případě každá osoba, která má přístup k tomuto klíči a zná přihlašovací jméno, získá přístup k dané instanci. Pro lepší zabezpečení přístupu k instanci a zamezení neoprávněného přihlášení je vhodné implementovat dodatečná bezpečnostní opatření. Jeden z doporučených a vyzkoušených nástrojů je využití dvoufázového ověření.

Pro zabezpečení SSH serveru pomocí dvoufázového ověření bude použit software od společnosti Google. který generuje jednorázové časové kódy (anglicky Time-based One-Time Password, zkráceně TOTP). K implementaci 2FA pomocí Google autentikátoru je potřeba volně dostupný Google Authenticator PAM modul (anglicky Pluggable Authentication Module, zkráceně PAM). Tento modul slouží pro zavedení několika druhů autentizace do unixového systému.

Pro instalaci balíku se zadá následující příkaz:

$ sudo apt-get install libpam-google-authenticator

Tím byl PAM modul nainstalován na systém a nyní je potřeba vytvořit ověřovací klíč. Ten se vygeneruje následujícím příkazem:

$ google-authenticator

Po zadání tohoto příkazu systém vyzve k odpovědi na několik základních otázek:

Do you want authentication tokens to be time-based (y/n) y

Chcete, aby ověřovací tokeny byly závislé na čase?

Při povolení se tokeny budou měnit každých 30 sekund. Jinak dojde ke změně tokenu jen při každém jeho použití. První volba je bezpečnější a je zvolena.

https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://to

tp/ubuntu@ip-172-31-43-174%3Fsecret%3DWRMODHOC6D6T42TW4IMTGBBWDY%26issuer%3Dip-172-31-43-174

Your new secret key is: WRMODHOC6D6T42TW4IMTGBBWDY Your verification code is 130943

Your emergency scratch codes are:

32026954 85846831 46755653 25142296 43077536

Došlo k vygenerování URL adresy s čárovým kód.

Obrázek 34: Vygenerovaný čárový kód Zdroj: vlastní

Zároveň došlo k vygenerování bezpečnostního klíče, což je ekvivalent čárového kódu. Bylo vygenerováno i pět záložních kódů. Ty je možné použít v případě, že dojde ke ztrátě zařízení s nainstalovanou aplikací na generování kódů. Tyto kódy jsou jednorázové a lze je použít namísto vygenerovaného tokenu.

Do you want me to update your "/home/janwatzke/.google_authenticator"

Do you want me to update your "/home/janwatzke/.google_authenticator"

In document Využití Cloud Computingu ve firmě (Page 64-122)