Instalace, zabezpečení a správa Ubuntu Serveru

Server je počítačový program nebo zařízení poskytující služby nebo zdroje jiným počítačům nebo klientům (uživatelům) v síti. Obvykle jde o zařízení pracující nepřetržitě. Lze jej provozovat samostatně stejně jako si jej pronajmout ve formě služby.

Abstrakt

Počítačové servery lze provozovat ve třech režimech:

  • Moderní SAAS cloudový režim, nabízen firmami jako Amazon (Web Services - AWS), Microsoft (Azure), Google (cloud) a další. V tomto režimu se pracuje na pozadí s docker composerem, respektive uživatel interaguje s ready-to-use docky skrze UI rozhraní a k linuxovým příkazům a konfiguračním souborům se běžný uživatel jen ztěží dostane.
  • Server prostřednictvím hostingových služeb - je forma, kdy je server pronajímán nebo hostován ve specializovaném datacentru. Součástí mohou být služby Linuxového administrátora.
  • Lokální server - server provozovaný lokálně pro firemní a domácí účely - interní potřeby.

Vhodný typ provozu je odvislý od potřeb konkrétního uživatele. Lokální řešení je vhodné pro sběr a uchování dat, validaci datových toků, řídící systémy bez přístupu zvěnčí apod. Zkrátka aplikace se specifickým use-casem, kdy typicky v těchto případech je provoz vlastního serveru oproti cloudovým a hostovaným službám ekonomičtější variantou. Počítač, na němž server běží, si v takovém případě stavíte sami a tedy i každá jeho komponenta může být tou možná nejoptimálnější pro Váš účel. Právě tété variantě se věnuje tato publikace.

Postavení PC, instalace, zabezpečení i správa serveru

Tato publikace Vás provede úskalými výběru komponent, instalace Ubuntu Serveru, jeho zabezpečením, prací v něm i správou. V prvé řadě nejde o expertní publikaci, ale základní principiální vysvětlení OS Ubuntu Server jako takového a především jednoduchého průvodce nastavením prostřednictvím linuxových příkazů. I když se ovládání Ubuntu skrze příkazovou řádku zdá na první pohled komplikované, jde jen o to si na pro nás dnes již "neuživatelsky přívětivé rozhraní" příkazového řádku zvyknout.

Hostovaný (Cloud) vs Lokální server

Cloudový server je typicky server umístěný v datacentru napojeném na páteřní internetovou síť. Jeho hardware je spravován pracovníky serverovny datacentra a klient jej využívá jako vzdálený počítač pro své potřeby - typicky nepřetržitě běžící webové aplikace a příležitostně využívané výkonnostně náročné aplikace. Oproti tomu, lokální server máte umístěn ve své nemovitosti a stará se o jakékoli vaše interní potřeby v rámci lokální i internetové sítě.

S výběrem lokálního vs cloudového serveru Vám pomůže následující srovnání:

Cloudový server

  • Přístupný z jakéhokoli počítače v Internetu
  • Napojen na páteřní internetovou síť (rychlý tok dat)
  • Nízké nároky na správu a znalosti kolem serverů
  • Není potřeba se starat o hardware a OS, uživatel řeší pouze správu aplikací
  • Snadná škálovatelnost
  • Zabezpečení spravováno poskytovatelem služby
  • Data jsou uložena vždy v Cloudu, lze je šifrovat.
  • Omezené možnosti přizpůsobení

Lokální server

  • Přístup z počítačů v lokální síti. Po povolení i z internetu.
  • Rychlost toku dat z a na internet odvislá od internetového připojení
  • Uživatel se stará o hardware, OS i aplikace
  • Možnosti přizpůsobení - CPU, SDD, RAM, GPU - přesně dle potřeb
  • Škálovatelnost přes změny v hardwarové infrastruktuře a následné ručnní nakonfiguraci.
  • Data mohou být uložena pouze lokálně.
  • Zabezpečení plně v režii správce serveru

Jedním z nejdůležitějších parametrů je ovšem cena. Ta se v případě cloudu platí měsíčně, u lokálního serveru jde o jednorázový náklad za hardware a případně o náklady na pracovníka starající se o jeho správu. Tyto náklady jsou variabliní a mohou se značně lišit. Lokální server dává největší smysl tehdy, když potřebujete něco extra. Napříkald disk o nadstandardní velikosti a rychlosti. S ním v případě cloudu budete mít spojené výkonné CPU, které však nepotřebujete. Výsledkem bude, če cena měsíčního předplatného Cloudu vyjde na to samé, co pořízení lokálního serveru. Jeho nastavení poté může být jednorázovou záležitostí (den práce), posléze vyžadující drobnou údržbu (v průměru hodina měsíčně).


Následující kapitoly publikace se věnují operačnímu systému Ubuntu Server. Tento systém může běžet na jakémkliv počítači i serveru. Publikace je nicméně pro vás relevantní jen tehdy, spravujete li server ručně namísto automatizovaného rozhraní, které je součástí cloudových služeb, jakými jsou Amazon Web Services, Microsoft Azure apod.

Výběr HW komponent

Ubuntu Server je z pohledu náročnosti OS možné nainstalovat téměř na jakýkoli počítač disponující uložištěm alespoň 2GB (kdy uložištěm může být i flash disk), výběr HW komponent je tedy odvislý čistě od aplikací a zátěže, kterým Ubuntu Server plánujete vystavovat. Použít můžete počítač starý, stejně jako postavit zcela nový.

Server tedy nemusí být specializované zařízení prodávané jako "server", nýbrž libovolné zařízení určené pro serverové operace. Na server lze použít například prostorově i energeticky úsporné mikropočítače Intel NUC. Jeho stavba i zprovoznění je jednoduchá - koupená skříň s CPU a zdrojem se jen doplní o SSD + RAM a zapojí do zásuvky. S výběrem CPU, SSD a RAM nejen pro NUC pomohou podkapitoly níže.

Výběr disku

Disk na prvním místě, a to z jednoduchého důvodu - jde o nejkritičtější komponentu. Obsahuje nainstalovaný operační systém (OS) Ubuntu Server, veškeré konfigurace i data. Jde tedy o komponentu s časově nejnáročnější replikací a současně komponentu, která lze mezi počítačemi snadno fyzicky přenášet - ať jej zapojíte do jakéhokoliv počítače, operační systém se automaticky sám načte a bude běžet.

Výběr správného disku je nejdůležitější v momentě, kdy používáte jeden server pro vše (nevyužíváte propojení více nezávislých serverů (databázový, souborový, výpočetní...)). V takovém momentě je vhodné vybrat co největší a nejrychlejší disk v rámci určeného rozpočtu.

Nejlepší výkonové vlastnosti aktuálně nabízí SSD disky typu NVMe, konstrukce M.2. 2TB disk pořídíte v 2Q/2023 za ~3000 Kč, 4Tb pak za 9,000Kč. Důležitým parametrem takového disku je životnost (počet cyklu přepsání) a samotná rychlost čtení a zápisu. Zajímavou nabídkou mi přijde SSD disk Kingston SSD KC3000. Při osazování počítače SSD diskem nezapomeňte na chladící podložku pro odvod tepla.

Výše zmíněné disky se používají pro běh OS a aplikací s vysokými nároky na rychlost čtení a zápisu dat na disk. Pro ukládání běžných souborů lze použít standardnější typ SSD a HDD disků. Většina počítačů (včetně vyššího NUC) podporuje kombinovanou zástavbu SSD i HDD diskem. V případě výběru NUC, i když o HDD disku neuvažujete, vyšší varianta skříně vlivem lepšího proudění vzduchu zajišťuje lepší chlazení.

Výběr CPU

Intel NUC a alternativní zařízení stejného konceptu se prodávají v mnoha variantách lišících se použitým procesorem (CPU). Srovnání výkonu jednotlivých procesorů zjistíte jednoduše vložením do Googlu dotazu "procesor 1 vs procesor 2", např: "i5-1135g7 vs i7-1260p", kdy na Vás vyskočí řada stránek nabízející ucelené a přehledné srovnání.

Logicky, v momentě, kdy neznáte potřebné výkonnostní nároky plánované aplikace provozované na daném serveru, ať už z důvodu absence možnosti kvalifikovaného odhadu nebo znalosti "scalu" a škálování, principielné je vhodnější na začátku volit CPU výkonnější a až když nedostačuje, rozšiřovat server o další servery (tvorba struktury specializovaných dílčích samostatných serverů), kdy již máte představu o potřebném výkoně pro konkrétní specializace.

Výběr RAM

Ram se vyrábí ve 2 velikostech - pro běžné skříně (provedeni DIMM) a pro notebooky (provedení SO-DIMM). Ty notebookové se používají rovněž v minipočítačích, jako je Intel NUC a jemu podobní, jejichž velikost zástavbu RAm v klasické velikosti neumožňuje.

Operační paměti RAM se prodávají v definovaných velikostech (4, 8, 16, 32, 64... GB) a obvykle je výkonostně optimálnější místo 1 větší osadit počítač 2-ma menšími (namísto 1x32Gb použít 2x 16GB).

Moderní DDR4 Ram paměti se dále liší frekvencí paměti [MHz] (vyšší je lepší) a časováním ram CL (nižší je lepší).

Bios nastavení

Jakýkoli počítač ihned po spuštění umožňuje vstup do nastavení a úpravy Bios. Bios je firmware používaný k poskytování runtime služeb pro operační systémy a programy a k provádění inicializace hardwaru během procesu spouštění. Z předchozí věty je zřejmé, že se spouští ještě před spuštěním Operačního systému, přičemž v tento moment je zobrazována úvodní obrazovka, která zobrazuje nápovědu funkčních kláves pro "bootovací zařízení" (obvykle F11), vstup do bios nastavení (obvykle F2) apod.

V Bios nastavení lze upravovat řadu vlastností počítače, a to pro stav jeho činnosti i nečinnosti. Jelikož se v této publikaci zabýváme konfigurací serveru, za zmíněná stojí následující:

  • Chování při výpadku proudu - U serveru je ovykle vyžadováno, aby byl vždy online a přístupný. Bios nastavení obsahuje v tomto směru užitečnou vlastnost After Power Failure, skrze níž se definuje chování po obnovení dodávky elektřiny (např. znovuobnovení po výpadku / zapojení počítače do elektřiny). Skrze možnost Power On lze definovat, že počítač se vždy při obnovení elektrického proudu sám automaticky spustí - tedy dokud jej nevypneme vlastním požadavkem, kdykoliv bude mít přísun elektřiny, bude se sám udržovat automaticky spuštěný.
  • Nastavení chlazení - Dle preferencí a potřeb lze upravovat výkonnostní profil ventilátorů od preference ticchosti po preferenci maximálního chlazení.

Instalace Ubuntu Serveru

OS Ubuntu Server je zdarma. Instalace se zpravidla provádí z flash disku (o velikosti alespoň 4GB) s instalačním ISO souborem. Ten snadno vytvoříte stažením instalačního souboru Ubuntu Server a jeho nahráním na zformátovaný flash disk (formát FAT32) prostřednictvím softwaru pro tvorbu bootovacích flash disků. Ubuntu desktop nabízí program Startup Disk Creator. Obdobné nástroje jsou i pro systém Windows.

Jakmile máte bootovací flash disk, vložte jej do USB portu počítače, na němž chcete OS Ubuntu server nainstalovat, počítač pusťte a při bootovací obrazovce stiskněte (a držte) klávesu F11. Naskočí obrazovka výběru disku, který se má při bootování použít. Zvolte váš flash disk.

Dále již postupujte dle instrukcí instalátoru.

Zabezpečení Ubuntu Serveru

Zabezpečení Ubuntu Serveru je esenciální záležitostí, jehož důležitost roste společně s citlivostí na něm uložených dat a běžících aplikací.

Zabezpečení přihlašování

V bodech níže nastavíme bezpečnostní strukturu, kdy ke vzdálenému přihlašování se bude používat SSH klíč spolu s 2FA (Google authenticator). K lokálnímu přihlašování bude postačovat stále jen heslo (pro případ ztráty SSH klíče a možnosti nahrání nového) společně s 2FA (Google authenticator).

  • Zabezpečení počítačů, z kterých se k serveru připojuje

    K serveru se zpravidla přistupuje vzdáleně, skrze SSH, a to prostřednictvím různých autentizačních metod. Dobrou praxí tedy je mít v bezpečnostním pořádku počítače, z nichž se k serveru připojuje tak, aby se předcházelo možnosti odcizení přihlašovacích údajů k serveru z těchto zařízení.

    Na systému Windows k přihlašování budeme používat klienta Putty staženého z oficiálního webu.

  • Nastavení vzdáleného připojování k serveru pomocí SSH klíče

    Výchozí způsob přihlašováni k Ubuntu serveru přes SSH je pomocí uživatelského jména a hesla. Nevýhodou je, že vaše heslo je obvykle něco poněkud „krátkého“ a náchylného k brute-force útokům. SSH klíč je oproti heslu exponenciálně těžší prolomit a tedy při správné práci s ním je bezpečnost přihlašování zásadně navýšena.

    1. Vygenerování ed25519 SSH klíčů

      Na počítači, na kterém nejste k serveru skrze SSH připojeni (pokud jste, odhlaste se), v příkazovém řádku nebo terminálu, zadejte příkaz ssh-keygen -t ed25519 -C "your_email_address@example.com, PC name", kde parametr -t definuje typ klíče ed25519, a dobrovolný parametr -C poznámku, k jakému uživateli a počítači je klíč vázán.

      Potvrďte / určete novou cestu a název souboru (aby jste je snadno rozpoznali), kde mají být klíče uloženy a v dalším kroku vymyslete, zadejte a opětovným zadáním potvrďte bezpečnostní frázi, která se stane samotný heslem privátního SSH klíče. Buďte si dále vědomi, že zadabou bezpečnostní frázi v případě zapomenutí nelze obnovit.

      Do zadané složky v kroku výše se vygenerovaly 2 SSH klíče.

    2. Zjištění veřejného klíče

      Veřejný SSH klíč je soubor s koncovkou ".pub". Obsah veřejného klíče zjistíme jeho otevřením skrze Příkazový řádek na Windows type %USERPROFILE%\.ssh\nazev_souboru.pub popř. terminálu na Linux / Mac OS cat ~/.ssh/nazev_souboru.pub. Veřejný klíč začíná typem "ssh-ed25519 AAAAC..."

    3. Vzdáleně se přihlásíme k serveru pomocí uživatelského jména a hesla
      1. Připojíme počítač (z kterého se vzdáleně připojujeme) a server do stejné lokální sítě (totožného routeru)
      2. Spustíme Putty klienta nainstalovaného v počítači, přejdeme na záložku "Sessions".
      3. Zadáme pole "Host" značící IP adresu serveru (zjistíme v routeru) a port, skrze nějž se k serveru připojujeme (výchozí je 22 - v dalších krocích jej zakážeme, nyní jej však použijte).
      4. V otevřeném okně příkazového řádku zadejte uživatelské jméno a heslo pro připojení k serveru (bylo definováno při instalaci serveru)
    4. Nahrání veřejného klíče na server
      1. Na serveru vytvoříme příkazem mkdir -p ~/.ssh složku pro uložení veřejných SSH klíčů
      2. Příkazem nano ~/.ssh/authorized_keys otevřeme soubor authorized_keys a vložíme do něj veřejný klíč zjištěný v kroku 1. (vkládáme celý řádek, začínající ssh-ed25519 ...)
      3. Soubor "authorized_keys" stisknutím kláves ctrl+x uložíme a zavřeme.
      4. příkazem exit připojení k serveru ukončíme
    5. Vzdálené přihlášení k serveru pomocí privátního SSH klíče

      Používáme-li OS Windows a Putty klienta, námi vygenerovaný formát privátního klíče v kroku 1 (soubor bez koncovky) není ve formátu podporovaném Putty klientem. Je tedy nezbytné si jej převést, a to následujícím způsobem:

      1. Příkazem type %USERPROFILE%\.ssh\nazev_souboru si zobrazíme privátní klíč a celý tak, jak je, včetně "-----BEGIN OPENSSH PRIVATE KEY-----" a "-----END OPENSSH PRIVATE KEY-----" zkopírujeme do .txt souboru, který si uložíme.
      2. Stáhneme program "puttygen.exe (a RSA and DSA key generation utility)" z oficiálního Putty webu.
      3. Otevřeme stažený program "PuTTY Key Generator", dole vybereme typ "EdDSA" → (Ed25519). V horní liště zvolíme možnost "File → Load private key". Přepneme na zobrazení "All FIles (*.*)" a vybereme .txt soubor, do nějž jsme privátní klíč v předchozím kroku uložili. Zadáme passphrase, kterou jsem definovali při tvorbě klíče. Jestliže vše prošlo, dostaneme upozornění "Successfully imported foreign key...".
      4. Stiskneme tlačítko "Save private key" a privátní SSH klíč v Putty podporovaném .ppk formátu uložíme opěd do složky .ssh. Je-li něco nejasné, postup se screenshoty naleznete zde.
      5. Otevřeme Putty klient, přejdeme do sekce "Connections → SSH → Auth → Credentials" a v poli "Private key file for authentization" zvolíme "Browse" a vybereme .ppk soubor uložený v předchozím kroce.
      6. Přejdeme do sekce "Session", zadáme pole "Host" a "Port", a po stisknutí tlačítka "Open", v nově otevřeném příkazovém okně zadáme uživatelské jméno (login as:), načež namísto požadavku na heslo bychom měli vidět identifikaci veřejného klíče, v rámci něhož se připojujeme s požadavkem na vložení passphrase.
      7. Zadáme passhprase a přihlásíme se.
    6. Zakázání vzdáleného přihlašování přes uživatelské jméno a heslo

      Zákaz přihlašování pomocí hesla se provádí zásahem do konfiguračního souboru. Samotnou změnou nedojde k automatickému odhlášení, přesto, z bezpečnostních důvodů je vhodné být k serveru připojen ve 2 instancích (2 oknech), aby jste v případě testovacího odhlášení se v jednom a nemožnosti se opětovného přihlášení měli stále možnost navrácení provedených změn z druhého okna.

      1. Příkazem sudo nano /etc/ssh/sshd_config otevřete konfiguraci SSH serveru. Jelikož používáme na začátku příkazu "sudo", otevíráme soubor se změnovými právy a tedy v případě nové session po nás bude vyžadováno uživatelské heslo (to heslo, s kterým jsme se dříve přihlašovali).
      2. Najdeme záznam #AuthorizedKeysFile a odkomentujeme jej odstraněním # z jeho začátku
      3. Najděte záznam KbdInteractiveAuthentication a nastavte jej na hodnotu no. Současně se ujistěte, že není zakomentován (nezačíná #)
      4. Majděte záznam PasswordAuthentication yes a změňte jej na hodnotu no. Ujistěte se, že není zakomentován (nezačíná #)
      5. Ujistěte se, že záznam PermitRootLogin má hodnotu prohibit-password (PermitRootLogin prohibit-password)
      6. Soubor ukončete příkazem ctrl+x a při ukončování uložte.
      7. Zadejte příkaz sudo sshd -T | grep -i passwordauthentication a ověřte, že jeho výpisem je záznam "passwordauthentication no".

        V tomto nastavení je možné k serveru přistupovat jak pomocí kombinace username + private key, tak i klasicky username + password. Chceme-li, aby byla možná varianta jen s použitím privatekey, na konci souboru je nutné definovat AuthenticationMethods publickey. (Poznámka - záznam AuthenticationMethods publickey mám otestovaný pouze v kombinace s 2FA (AuthenticationMethods publickey,keyboard-interactive:pam))

      8. Restartujte SSH server příkazem sudo systemctl restart sshd
      9. Odhlaste se příkazem logout.
      10. Při opětovném přihlášení bez public key by jste měli dostat po zadání uživatelského jména chybovou hlášku "No supported authentization methods available (server sent: publickey)". Při použití privatekey by přihlášení mělo být úspěšné.
      11. Poznámka: Přihlášení pomocí uživatelského jména a hesla je stále možné lokálně - pomocí klávesnice připojené k serveru
  • Změna defaultního SSH portu (22)

    Port 22 je používán v případě SSH připojení jako defaultní. Jinými slovy, jde o první port, který případný útočník testuje. Dobrou praxí je tedy tento port změnit, a to na hodnotu mezi 1024 a 49151. To se provede následujícím způsobem:

    sudo ss -tulpn | grep ':YourSSHPortNumber', např: sudo ss -tulpn | grep ':1234'.

    Jestliže je port již obsazen, dostaneme červeně upozornění. Pokud je volný, odpověď bude prázdná. V takovém případě jej můžeme nastavit v souboru sudo nano /etc/ssh/sshd_config skrze klíč Port.

    Změna nabyde v platnost restartem SSH serveru příkazem sudo systemctl restart ssh. Nyní při přihlašování používejte namísto portu 22 nově zvolený port.

  • Nastavení 2-faktorového ověření (2FA)

    2FA je po vložení přidání požadavku na dodatečný autentizační kód. Ten získáme z aplikace Google Authentizátor. Vygenerování a získání 2FA klíčů pro server a mobilní telefon získáme následujícím způsobem:

    1. Do mobilního telefonu si nainstalujte aplikaci "Google Authenticator" od vydavatele Google.
    2. Na serveru nainstalujeme příkazem sudo apt install -y libpam-google-authenticator balíček Google authentizátoru
    3. Jestliže chceme 2FA u lokálního přihlašování, záznam auth required pam_google_authenticator.so vložíme do sudo nano /etc/pam.d/common-auth. Přidaná část je vyznačena tučně. Jestliže jej vložíme na začátek, viz vyznačená část níže, 2FA kód bude vyžadován před heslem. Jestliže jej vložíme na konec souboru, 2FA bude vyžadováno až po zadání hesla.

      ...
      # pam-auth-update to manage selection of other modules.  See
      # pam-auth-update(8) for details.
      
      # Enable Google Authenticator
      auth required pam_google_authenticator.so
      
      # here are the per-package modules (the "Primary" block)
      ...
      
    4. Jestliže 2FA chceme jen u vzdáleného přihlašování, záznam auth required pam_google_authenticator.so vložíme do konfiguračního PAM (pluggable authentication modules) souboru sudo nano /etc/pam.d/sshd. V něm si povšimněme záznamu @include common-auth, který jsme možná aktualizovali v bodě výše - pokud ano, záznam auth required pam_google_authenticator.so je načítán již s tímto souborem - tedy v případě definovaného 2FA u lokálního přihlašování je 2FA automaticky definováno i u vzdáleného přihlašování. Pokud jsme do onoho soboru tento záznam nevkládali (nechceme 2FA u lokálního přihlašování), můžeme jej vložit přímo do tohoto souboru sudo nano /etc/pam.d/sshd, který poté bude vypadat následovně:

      # PAM configuration for the Secure Shell service
      
      # Standard Un*x authentication.
      @include common-auth
      
      # Enable Google Authenticator
      auth required pam_google_authenticator.so
      
      # Disallow non-root logins when /etc/nologin exists.
      account    required     pam_nologin.so
      

      Poznámka: Nechceme-li dále vyžadovat heslo při vzdáleném přihlašování, záznam @include common-auth můžeme zakomentovat (Pohlídejte si však, že záznam pro 2FA máte i v souboru sudo nano /etc/pam.d/sshd.

      Klávesovou zkrátkou ctrl+x soubor uložíme a opustíme

    5. Příkazem sudo nano /etc/ssh/sshd_config otevřeme konfigurační SSHD soubor a ujistíme se, že KbdInteractiveAuthentication je nastaven na možnost yes

      Dále, na konec onoho souboru vložíme záznam AuthenticationMethods publickey,keyboard-interactive:pam

      Klávesovou zkratkou ctrl+x soubor uložíme a ukončíme.

    6. Na serveru zavoláme příkaz google-authenticator a zvolíme možnost y pro "time based tokens".
    7. Otevřeme Google Authenticator aplikaci na mobilním telefonu a možností "+ (Přidat) → naskenovat QR kód" si vložíme do telefonu propojení se serverem.
    8. QR kód je difinován bezpečnostním klíčem (secret key), který je zobrazen pod daným QR kódem. Tento kód si opíšeme.
    9. Na základě vyzvání vložíme kód zobrazený v Google Authenticátor aplikace na server.
    10. Zobrazených zýchranných 5 kódů si spolu s secret key (2 body výše) pečlivě uschováme pro možnost použití v případě ztráty telefonu.
    11. na výzvu ohledně aktualizace souboru /*username*/.google_authenticator odpovězte y
    12. Na výzvu ohledně zákazu opětovného použití kódů odpovězte y
    13. Na výzvu ohledně časového posunu (time skew) odpovězte n
    14. Na výzvu ohledně rate-limitingu odpovězte y
    15. Příkazem sudo systemctl restart sshd se provede restart sshd.
    16. Příkazem sudo systemctl restart ssh se provede restart SSH.
    17. Nyní je aktivováno 2FA při přihlašování a sudo příkazech.

Nastavení Firewallu

Ubuntu servery mohou používat uncomplicated firewall (UFW) bránu k omezení příchozího provozu na server. Brána firewall tedy pomáhá zabránit nechtěným připojením k vašemu serveru. Nainstalovaná by měla být již ve výchozím stavu, příkazem sudo apt install ufw se o tom ujistíme.

Aplikování výchozího nastavení pro UFW

sudo ufw default deny incoming
sudo ufw default allow outgoing

V tomto stavu je veškerý příchozí traffic zakázán a odchozí povolen. Nutným krokem je povolení portu pro SSH přihlášení na TCP protokolu. Výchozím portem pro připojení je port 22, v rámci bezpečnosti však může být změněn. Používaný port zjistíte v souboru sudo nano /etc/ssh/sshd_config - hledejte parametr Port. Povolte příchozí traffic na něj příkazem sudo ufw allow YourSSHPortNumber/tcp, např. sudo ufw allow 1234/tcp

Nastavení UFW portů

Obsazenost jednotlivých portů lze zjistit příkazem sudo ss -tulpn | grep ':PortNumber', např: sudo ss -tulpn | grep ':1234'. Pokud je odpověď prázdná, port je volný.

Tok na jednotlivých portech se nastaví příkazem sudo ufw allow <PortNumber>, např.sudo ufw allow 3000. Pro zákaz toku je příkaz sudo ufw deny <PortNumber>, např. sudo ufw deny 3000. Za číslo portu lze specifikovat i protokol, např: sudo ufw allow 3000/tcp.

Aktuální nastavení portů zjistíte příkazem sudo ufw status numbered. Jestliže některé z pravidel potřebujete odstranit, použijte příkaz sudo ufw delete {rule-number-here} (např: sudo ufw delete 2).

Povolení UFW firewallu

UFW firewall se povoluje příkazem sudo ufw enable.

Další možnosti nastavení (např. pro IP restrikce a povolení [sudo ufw allow from XXX.XXX.XX.XXX to any port XX]) najdete v tutoriálu UFW Essentials: Common Firewall Rules and Commands.

Pravidelné aktualizace SW

Jako v každém operačním systému, i u Ubuntu Server se objevují nedostatky a zranitelnosti, na něž vývojáři vydávají průběžné záplaty. nejde přitom jen o samotný operační systém, ale i veškeré balíčky v něm nainstalované. Instalaci posledních aktualizací již nainstalovaných balíčků lze provádět příkazem sudo apt -y update && sudo apt -y upgrade. Příkazem sudo apt dist-upgrade && sudo apt autoremove lze poté provést hloubkovou aktualizaci balíčků zahrnující rovněž změny v nainstalovaných balíčcích a konfiguraci systému.

Výzva k instalaci aktuálních záplat je vždy zobrazena po přihlášení do systému. Jestliže chcete nastavit automatickou aktualizaci balíčků, lze použít nástroj unattended-upgrades.

Nastavení VPN

VPN, neboli Virtual Private Network, je zabezpečené a šifrované spojení mezi dvěma nebo více počítači, které umožňuje bezpečný přenos dat přes veřejné sítě, jako je internet.

Co mi VPN přinese?

VPN umožňuje serveru přistupovat k internetu z jiného umístění, díky čemuž umožňuje přístup k internetovým stránkám a službám, které by jinak byly nedostupné nebo jinak omezené z místní sítě.

VPN skrývá skutečnou IP adresu a lokaci zařízení, čímž chrání soukromí a zvyšuje bezpečnost při používání veřejné sítě (hrozby jako hackerské útoky, sledování internetového provozu nebo monitoring komunikace).

VPN je placená služba. Jestliže je pro váš případ žádoucí, zde je postup instalace a aktivace Mullvad VPN na vašem Ubuntu serveru:

Instalace a nastavení Mullvad VPN v 10 krocích
  1. Přejděte do výchozí složky účtu cd ~ a stáhněte poslední instalační soubor Mullvad VPN wget --content-disposition https://mullvad.net/download/app/deb/latest
  2. Příkazem ls si zobrazte soubory ve složce, najděte stažený MullvadVPN-XXXX.X_amd64.deb soubor a příkazem sudo apt install -y ./MullvadVPN-XXXX.X_amd64.deb jej nainstalujte.
  3. Příkazem mullvad version si ověřte, že Mullvad VPN máte nainstalováno
  4. Příkazem mullvad account login <číslo účtu> se přihlaste ke svému účtu, jehož číslo získáte po přihlášení / při registraci. Konečný příkaz může vypadat následujícím způsobem: mullvad account login 1234123412341234.
  5. Na stránce Mullvad Servers si můžete projít lokace (VPN servery), ke kterým je možné se připojit. Totožný seznam dostanete i příkazem mullvad relay list.
  6. Připojení k vybranému serveru definujete příkazem mullvad relay set location se mma, kdy "se" nahraďte zemí a "mma" městem. V případě České Republiky a Prahy příkaz vypadá následovně: mullvad relay set location cz prg.
  7. Příkazem mullvad lan set allow můžete povolit LAN přístup - tedy, i když budete skryti za VPN, stále budete mít přístup k ostatním zařízením v lokální síti.
  8. Samotné připojení k VPN se provede příkazem mullvad connect, případné odpojení příkazem mullvad disconnect
  9. Automatické připojování k VPN se nastaví příkazem mullvad auto-connect set on.
  10. Stav připojení lze zjistit příkazem mullvad status, log připojení příkazem journalctl -fu mullvad-daemon.

Upgrade Mullvad VPN klienta se provede zopakováním kroku 1 a 2. Veškeré Mullvad Cli příkazy najdete na stránce How to use Mullvad Cli.

Mullvad běží jako systémový servis. Jako takový, je možné jej ovládat systémovými příkazy:

  • sudo systemctl status mullvad-daemon - zobrazit stav služby
  • sudo systemctl stop mullvad-daemon - vypnout službu
  • sudo systemctl start mullvad-daemon - zapnout službu
  • sudo systemctl enable mullvad-daemon - povolit automatické spouštění služby při načtení OS
  • sudo systemctl disable mullvad-daemon - zakázat automatické spouštění služby při načtení OS

Poznámka: Aktivní VPN může komplikovat připojování se na server z vnější sítě. Řešením vzdáleného připojování se k lokálnímu serveru je prostřednictvím lokálního mezipočítače a softwaru pro vzdálené ovládání plochy (připojit se skrze lokální počítač běžící na stejné síti jako server).

Základní Operace v Ubuntu Server

Obecné:

  • Úvodní systémová obrazovka: landscape-sysinfo
  • Monitorování procesů a výkonu: htop, top, lscpu
  • Seznam uživatelů: less /etc/passwd
  • Vypmnutí serveru: sudo poweroff

Filesystem

  • Přejdi do složky: cd /cesta/do/slozky. Přejdi do domovské složky: cd ~. Přejdi do nadřazené složky: cd ...
  • Vytvoř složku: mkdir cesta/do/adresare/nazev_nove_slozky
  • Odstraň složku: rmdir /cesta/k/slozce pro prázdnou složku, rm -r /cesta/k/slozce pro složku včetně souborů.
  • Využití disku: df -h
  • Stav disku (na adrese /dev/nvme0): nvme smart-log /dev/nvme0
  • Velikost souborů: du -bsh /cesta/k/slozce, strukturovaně: du -chd 1 | sort -h
  • Kontrola obsahu a velikosti souborů ve složce: ls -lh /cesta/do/slozky
  • Zobrazení celého textového souboru: cat myfile.txt | less

Teplotní management

  • Hodnoty teplot ze senzorů: sensors

Network

  • ip r, ip.a

Připojení a odpojení USB flash disku

  • Připojení flash disku k Ubuntu serveru

    1. sudo fdisk -l = Zobraz seznam připojených (oddílů) disků včetně velikosti (-l) k počítači
    2. sudo mkdir /media/usb = Vytvoř novou složku, která bude sloužit jaké cílová složka připojeného flash disku:
    3. sudo mount -t vfat /dev/sda1 /media/usb -o uid=1000 = Připevni vsunutý flash disk (/dev/sda1 ve formátu typu vfat s nastavením vlastnických oprávnění k přístupu k souborům -o uid=1000) k cílové složce z bodu výše (/media/usb).
    4. ls /media = Zobraz soubory ve složce.

    Nyní lze přistupovat k souborům flash disku prostřednictvím odkazovaním na soubory ve složce /media/usb.

  • Vysunutí USB flash disku z Ubuntu Serveru

    Vysunutí USB flash disku se provede jedním z následujících příkazů:

    • sudo umount /dev/sda1
    • sudo umount /media/usb

    *Adresy jsou samozřejmě odvislé od adres použitých při připojení.

    Vytvořenou sloužku pro připojení USB flash disku lze nyní bezpečně smazat příkazem sudo rmdir /media/usb.

Poznámka: Kopírování souborů z USB flash disku: cp -r /cesta/slozky/co/chci/kopirovat /cesta/kam/chci/kopirovat. V rámci cesty, kam kopírovat, lze definovat i novou složku, která se tím automaticky vytvoří.

Potřebujete s něčím poradit?

Zjistěte, zda a jak vám můžeme pomoci.

Rezervovat schůzku