Vyhledávání na webu

Počáteční nastavení serveru s Ubuntu 20.04/18.04 a 16.04


Tento tutoriál vás provede prvními základními kroky, které musíte nakonfigurovat na nově nainstalovaném serveru Ubuntu, abyste zvýšili zabezpečení a spolehlivost vašeho serveru.

Konfigurace vysvětlené v tomto tématu jsou téměř stejné pro všechny serverové systémy Ubuntu, pokud jde o základní platformu OS, ať už je Ubuntu nainstalováno na holém serveru, v soukromém virtuálním počítači nebo virtuálním počítači. se objevil ve veřejném cloudu VPS.

Požadavky

  • Instalace serveru Ubuntu 20.04
  • Instalace serveru Ubuntu 18.04
  • Instalace serveru Ubuntu 16.04

Aktualizujte a upgradujte systém Ubuntu

Prvním krokem, o který se musíte postarat v případě čerstvé instalace Ubuntu serveru nebo nově nasazeného Ubuntu VPS, je ujistit se, že systém a všechny systémové komponenty, jako např. jádro, správce balíčků apt a všechny ostatní nainstalované balíčky jsou aktuální s nejnovějšími vydanými verzemi a bezpečnostními záplatami.

Chcete-li aktualizovat server Ubuntu, přihlaste se ke konzole serveru pomocí účtu s právy root nebo přímo jako root a spusťte níže uvedené příkazy, abyste provedli proces aktualizace a upgradu.

sudo apt update 

Po spuštění příkazu update uvidíte počet dostupných balíčků pro proces aktualizace a příkaz použitý pro výpis aktualizací balíčků.

sudo apt list --upgradable

Poté, co si prohlédnete seznam balíčků dostupných pro aktualizaci, zadejte níže uvedený příkaz a zahajte proces aktualizace systému.

sudo apt upgrade

Chcete-li odstranit všechny lokálně stažené balíčky deb a všechny ostatní mezipaměti apt-get, spusťte níže uvedený příkaz.

sudo apt autoremove
sudo apt clean

Vytvořte nový účet v Ubuntu

Ve výchozím nastavení je jako bezpečnostní opatření účet root v Ubuntu zcela zakázán. Chcete-li vytvořit nový účet v systému, přihlaste se do systému pomocí účtu uživatele s právy root a vytvořte nový účet pomocí níže uvedeného příkazu.

Tomuto novému účtu budou udělena oprávnění root pomocí příkazu sudo a bude se používat k provádění administrativních úkolů v systému. Ujistěte se, že jste nastavili silné heslo k ochraně tohoto účtu. Podle výzvy adduser nastavte uživatelské údaje a heslo.

sudo adduser ubuntu_user

Pokud bude tento účet přiřazen jinému správci systému, můžete přinutit uživatele ke změně hesla při prvním pokusu o přihlášení zadáním následujícího příkazu.

sudo chage -d0 ubuntu_user

Nově přidaný uživatel zatím nemůže provádět administrativní úkoly pomocí nástroje sudo. Chcete-li tomuto novému uživatelskému účtu udělit administrátorská oprávnění, měli byste uživatele přidat do systémové skupiny „sudo“ zadáním níže uvedeného příkazu.

sudo usermod -a -G sudo ubuntu_user

Ve výchozím nastavení mohou všichni uživatelé patřící do skupiny „sudo“ spouštět příkazy s právy root prostřednictvím utility sudo. Příkaz Sudo musí být použit před napsáním příkazu potřebného k provedení, jak je znázorněno v příkladu níže.

sudo apt install package_name

Otestujte, zda má nový uživatel udělená oprávnění root, přihlášením do systému a spuštěním příkazu apt update s předponou sudo.

su - ubuntu_user
sudo apt update

Nakonfigurujte System Hostname v Ubuntu

Obvykle se název hostitele počítače nastavuje během procesu instalace systému nebo při vytváření VPS v cloudu. Měli byste však změnit název vašeho počítače, aby lépe odrážel cíl vašeho serveru nebo lépe popisoval jeho konečný účel.

Ve velké společnosti jsou stroje pojmenovány podle složitých schémat pojmenování, aby bylo možné stroj snadno identifikovat ve stojanech datového centra. Pokud například váš počítač Ubuntu bude provozovat poštovní server, název počítače by měl tuto skutečnost odrážet a můžete například nastavit název hostitele počítače jako mx01.mydomain.lan.

Chcete-li zobrazit podrobnosti o názvu hostitele vašeho počítače, spusťte následující příkaz.

hostnamectl

Chcete-li změnit název svého počítače, zadejte příkaz hostnamectl s novým názvem, který nakonfigurujete pro svůj počítač, jak je znázorněno na níže uvedeném úryvku.

sudo hostnamectl set-hostname tecmint

Ověřte nový název vašeho systému jedním z níže uvedených příkazů.

hostname
hostname -s
cat /etc/hostname 

Nastavte SSH s ověřováním veřejného klíče v Ubuntu

Chcete-li zvýšit stupeň zabezpečení systému serveru Ubuntu, měli byste nastavit ověřování pomocí veřejného klíče SSH pro místní účet. Chcete-li vygenerovat pár klíčů SSH, veřejný a soukromý klíč s délkou klíče, například 2048 bitů, spusťte na konzole serveru následující příkaz.

Ujistěte se, že jste přihlášeni do systému pomocí uživatele, kterému nastavujete klíč SSH.

su - ubuntu_user
ssh-keygen -t RSA -b 2048

Během generování klíče budete vyzváni k přidání přístupové fráze, aby byl klíč zabezpečen. Pokud chcete automatizovat úlohy přes SSH server, můžete zadat silnou přístupovou frázi nebo nechat heslo prázdné.

Po vygenerování klíče SSH můžete zkopírovat veřejný klíč na vzdálený server provedením níže uvedeného příkazu. Chcete-li nainstalovat veřejný klíč na vzdálený server SSH, budete potřebovat účet vzdáleného uživatele se správnými oprávněními a pověřeními pro přihlášení ke vzdálenému serveru.

ssh-copy-id remote_user@remote_server

Měli byste být schopni se automaticky přihlásit přes SSH ke vzdálenému serveru pomocí metody ověřování pomocí veřejného klíče. Při používání ověřování pomocí veřejného klíče SSH nebudete muset přidávat heslo vzdáleného uživatele.

Poté, co se přihlásíte ke vzdálenému serveru, můžete začít spouštět příkazy, jako je příkaz w pro zobrazení seznamu vzdáleně přihlášených uživatelů ssh, jak je znázorněno na níže uvedeném snímku obrazovky.

Chcete-li ukončit vzdálenou relaci SSH, zadejte do konzoly exit.

ssh remote_user@remote_server
w
exit

Chcete-li zobrazit obsah svého veřejného klíče SSH, abyste mohli klíč ručně nainstalovat na vzdálený server SSH, zadejte následující příkaz.

cat ~/.ssh/id_rsa.pub

Zabezpečený SSH server v Ubuntu

Chcete-li zabezpečit démona SSH, měli byste změnit výchozí číslo portu SSH z 22 na náhodný port vyšší než 1024 a zakázat vzdálený přístup SSH k účtu root prostřednictvím heslo nebo klíč, otevřete hlavní konfigurační soubor serveru SSH a proveďte následující změny.

sudo vi /etc/ssh/sshd_config

Nejprve prohledejte řádek s komentářem #Port22 a přidejte pod něj nový řádek (nahraďte odpovídajícím způsobem číslo portu naslouchání):

Port 2345

Nezavírejte soubor, přejděte dolů a vyhledejte řádek #PermitRootLogin yes, odkomentujte řádek odstraněním znaku # (hashtag) ze začátku řádku a upravte řádek tak, aby vypadal jako na níže uvedeném úryvku.

PermitRootLogin no

Poté restartujte server SSH, abyste použili nová nastavení, a otestujte konfiguraci pokusem o přihlášení ze vzdáleného počítače k tomuto serveru pomocí účtu root pomocí nového čísla portu. Přístup k účtu root přes SSH by měl být omezen.

sudo systemctl restart sshd

Také spusťte netstat nebo příkaz ss a filtrujte výstup pomocí příkazu grep, abyste zobrazili nové číslo naslouchacího portu pro SSH server.

sudo ss -tlpn| grep ssh
sudo netstat -tlpn| grep ssh

Existují situace, kdy můžete chtít automaticky odpojit všechna vzdálená připojení SSH navázaná na váš server po určité době nečinnosti.

Chcete-li tuto funkci povolit, spusťte níže uvedený příkaz, který přidá proměnnou bash TMOUT do vašeho účtu skrytého souboru .bashrc a vynutí každé připojení SSH vytvořené s názvem uživatel bude odpojen nebo vyřazen po 5 minutách nečinnosti.

echo 'TMOUT=300' >> .bashrc

Spusťte příkaz tail a zkontrolujte, zda byla proměnná správně přidána na konec souboru .bashrc. Všechna následující připojení SSH budou od této chvíle automaticky uzavřena po 5 minutách nečinnosti.

tail .bashrc

Na níže uvedeném snímku obrazovky byla vzdálená relace SSH z počítače drupal na server Ubuntu prostřednictvím účtu ubuntu_user vypršela a po 5 minutách došlo k automatickému odhlášení.

Nakonfigurujte Ubuntu Firewall UFW

Každý server potřebuje dobře nakonfigurovaný firewall, aby mohl zabezpečit systém na úrovni sítě. Server Ubuntu používá aplikaci UFW ke správě pravidel iptables na serveru.

Zkontrolujte stav aplikace brány firewall UFW v Ubuntu zadáním níže uvedených příkazů.

sudo systemctl status ufw
sudo ufw status

Démon brány firewall UFW je obvykle spuštěn a spuštěn na serveru Ubuntu, ale ve výchozím nastavení se pravidla nepoužívají. Před povolením zásad brány firewall UFW ve vašem systému byste měli nejprve přidat nové pravidlo, které umožní provozu SSH procházet přes bránu firewall přes změněný port SSH. Pravidlo lze přidat provedením níže uvedeného příkazu.

sudo ufw allow 2345/tcp

Poté, co povolíte provoz SSH, můžete povolit a zkontrolovat aplikaci brány firewall UFW pomocí následujících příkazů.

sudo ufw enable
sudo ufw status

Chcete-li přidat nová pravidla brány firewall pro další síťové služby následně nainstalované na vašem serveru, jako je HTTP server, poštovní server nebo jiné síťové služby, použijte níže uvedené příklady příkazů brány firewall.

sudo ufw allow http  #allow http traffic
sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

Chcete-li zobrazit všechna pravidla brány firewall, spusťte níže uvedený příkaz.

sudo ufw status verbose

Nastavte čas serveru Ubuntu

Chcete-li ovládat nebo dotazovat hodiny serveru Ubuntu a další související nastavení času, spusťte příkaz timedatectl bez argumentu.

Chcete-li změnit nastavení časového pásma vašeho serveru, nejprve spusťte příkaz timedatectl s argumentem list-timezones, aby se zobrazila všechna dostupná časová pásma, a poté nastavte časové pásmo vašeho systému, jak je znázorněno na níže uvedeném úryvku.

sudo timedatectl 
sudo timedatectl list-timezones 
sudo timedatectl set-timezone Europe/Vienna

Nový systemd-timesyncd klient systemd daemon může být použit v Ubuntu, aby poskytoval přesný čas vašemu serveru v síti a synchronizoval čas s nadřazeným časovým serverem.

Chcete-li použít tuto novou funkci Systemd, upravte konfigurační soubor démona systemd-timesyncd a přidejte geograficky nejbližší servery NTP do řádku příkazu NTP, jak je znázorněno na níže uvedeném úryvku souboru:

sudo nano /etc/systemd/timesyncd.conf

Přidejte do souboru timesyncd.conf následující konfiguraci:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

Chcete-li přidat své nejbližší geograficky NTP servery, podívejte se na seznam serverů projektu fondu NTP na následující adrese: http://www.pool.ntp.org/en/

Poté restartujte démona Systemd timesync, aby se projevily změny, a zkontrolujte stav démona spuštěním níže uvedených příkazů. Po restartu začne démon synchronizovat čas s novým peerem ntp serveru.

sudo systemctl restart systemd-timesyncd.service 
sudo systemctl status systemd-timesyncd.service

Zakažte a odstraňte nepotřebné služby v Ubuntu

Chcete-li získat seznam všech síťových služeb TCP a UDP ve výchozím nastavení na vašem serveru Ubuntu, spusťte příkaz ss nebo netstat.

sudo netstat -tulpn
OR
sudo ss -tulpn

Počínaje verzí Ubuntu 16.10 je nyní výchozí překladač DNS řízen službou systemd-resolved, jak ukazuje výstup netstat nebo příkazy ss.

Měli byste také zkontrolovat stav služby systemd-resolved spuštěním následujícího příkazu.

sudo systemctl status systemd-resolved.service

Služba systemd-resolved se váže na všechna povolená síťová rozhraní a naslouchá na portech 53 a 5355 TCP a UDP.

Spuštění démona DNS pro ukládání do mezipaměti systémově vyřešeného na produkčním serveru může být nebezpečné kvůli velkému počtu útoků DDOS prováděných zákeřnými hackery proti nezabezpečeným serverům DNS.

Chcete-li tuto službu zastavit a deaktivovat, proveďte následující příkazy.

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Ověřte, zda byla služba zastavena a deaktivována zadáním příkazu ss nebo netstat. Naslouchací porty s rozlišením systemd, 53 a 5355 TCP a UDP, by neměly být uvedeny ve výstupu příkazu netstat nebo ss, jak je znázorněno níže.

Měli byste také restartovat počítač, abyste úplně zakázali všechny služby démona vyřešené systémem a obnovili výchozí soubor /etc/resolv.conf.

sudo ss -tulpn
sudo netstat -tulpn
sudo systemctl reboot

Přestože jste na serveru zakázali spouštění některých nežádoucích síťových služeb, jsou ve vašem systému nainstalovány a spuštěny také další služby, jako je proces lxc a služba snapd. Tyto služby lze snadno detekovat pomocí příkazů ps, top nebo pstree.

sudo ps aux
sudo top
sudo pstree

V případě, že na svém serveru nebudete používat virtualizaci kontejnerů LXC nebo nezačnete instalovat software zabalený prostřednictvím správce balíčků Snap, měli byste tyto služby zcela deaktivovat a odebrat pomocí níže uvedených příkazů.

sudo apt autoremove --purge lxc-common lxcfs
sudo apt autoremove --purge snapd

To je vše! Nyní je server Ubuntu připraven na instalaci dalšího softwaru potřebného pro vlastní síťové služby nebo aplikace, jako je instalace a konfigurace webového serveru, databázového serveru, služby sdílení souborů nebo jiných specifických aplikací.