V dnešní době je zřízení serveru na hostingu otázkou několika minut a několika kliknutí myší. Hned po spuštění se ale ocitne v nepřátelském prostředí, protože je otevřený celému internetu jako nevinná dívka na rockerské diskotéce. Skenery jej rychle najdou a odhalí tisíce automaticky skriptovaných botů, kteří prohledávají síť a hledají zranitelnosti a nesprávné konfigurace. Existuje několik věcí, které byste měli udělat hned po spuštění, abyste zajistili základní ochranu.
Prvním krokem je vytvořit si pro sebe uživatele bez oprávnění root. Jde o to, že uživatel root absolutní práva v systému a pokud mu povolíte vzdálenou správu, tak polovinu práce uděláte za hackera a necháte mu platné uživatelské jméno.
Proto musíte vytvořit dalšího uživatele a zakázat vzdálenou správu přes SSH pro root.
Nový uživatel je spuštěn příkazem useradd:
useradd [options] <username>
Poté se k němu s příkazem přidá heslo passwd:
passwd <username>
Nakonec je potřeba tohoto uživatele přidat do skupiny, která má právo spouštět zvýšené příkazy sudo. V závislosti na distribuci Linuxu se může jednat o různé skupiny. Například v CentOS a Red Hat je uživatel přidán do skupiny wheel:
usermod -aG wheel <username>
V Ubuntu je přidán do skupiny sudo:
usermod -aG sudo <username>
Klíče místo hesel SSH
Hrubá síla nebo úniky hesel jsou standardním vektorem útoku, takže je nejlepší deaktivovat ověřování hesel v SSH (Secure Shell) a místo toho použít ověřování pomocí klíče.
Existují různé programy pro implementaci protokolu SSH, jako např lsh и dropbear, ale nejoblíbenější je OpenSSH. Instalace klienta OpenSSH na Ubuntu:
sudo apt install openssh-client
Instalace serveru:
sudo apt install openssh-server
Spuštění démona SSH (sshd) na serveru Ubuntu:
sudo systemctl start sshd
Automaticky spustit démona při každém spuštění:
sudo systemctl enable sshd
Je třeba poznamenat, že serverová část OpenSSH zahrnuje klientskou část. Tedy skrz openssh-server můžete se připojit k jiným serverům. Kromě toho můžete ze svého klientského počítače spustit tunel SSH ze vzdáleného serveru na hostitele třetí strany a hostitel třetí strany bude považovat vzdálený server za zdroj požadavků. Velmi šikovná funkce pro maskování vašeho systému. Podrobnosti viz článek "Praktické tipy, příklady a tunely SSH".
Na klientský počítač obvykle nemá smysl instalovat plnohodnotný server, aby se zabránilo možnosti vzdáleného připojení k počítači (z bezpečnostních důvodů).
Takže pro vašeho nového uživatele musíte nejprve vygenerovat klíče SSH na počítači, ze kterého budete přistupovat na server:
ssh-keygen -t rsa
Veřejný klíč je uložen v souboru .pub a vypadá jako řetězec náhodných znaků, který začíná na ssh-rsa.
Poté z kořenového adresáře vytvořte na serveru adresář SSH v domovském adresáři uživatele a přidejte do souboru veřejný klíč SSH authorized_keys, pomocí textového editoru, jako je Vim:
Na straně klienta musíte zadat umístění tajného klíče pro ověření:
ssh-add DIR_PATH/keylocation
Nyní se můžete přihlásit na server pod uživatelským jménem pomocí tohoto klíče:
ssh [username]@hostname
Po autorizaci můžete pomocí příkazu scp kopírovat soubory, obslužný program sshfs vzdáleně připojit souborový systém nebo adresáře.
Je vhodné vytvořit několik záložních kopií soukromého klíče, protože pokud deaktivujete ověřování heslem a ztratíte jej, nebudete mít vůbec žádný způsob, jak se přihlásit na svůj vlastní server.
Jak je uvedeno výše, v SSH musíte zakázat autentizaci pro root (to je důvod, proč jsme založili nového uživatele).
Na CentOS/Red Hat najdeme řádek PermitRootLogin yes v konfiguračním souboru /etc/ssh/sshd_config a změnit to:
PermitRootLogin no
Na Ubuntu přidejte řádek PermitRootLogin no do konfiguračního souboru 10-my-sshd-settings.conf:
Po ověření, že se nový uživatel ověřuje pomocí svého klíče, můžete ověřování heslem zakázat, abyste eliminovali riziko úniku hesla nebo hrubé síly. Nyní, aby se útočník mohl dostat na server, bude muset získat soukromý klíč.
Na CentOS/Red Hat najdeme řádek PasswordAuthentication yes v konfiguračním souboru /etc/ssh/sshd_config a změň to takto:
PasswordAuthentication no
Na Ubuntu přidejte řádek PasswordAuthentication no do souboru 10-my-sshd-settings.conf:
Pokyny pro povolení dvoufaktorové autentizace přes SSH naleznete v části zde.
Firewall
Firewall zajišťuje, že na server půjde pouze provoz na portech, které přímo povolíte. To chrání před zneužitím portů, které jsou náhodně povoleny s jinými službami, což výrazně snižuje plochu útoku.
Před instalací firewallu se musíte ujistit, že SSH je zahrnuto v seznamu výjimek a nebude blokováno. V opačném případě se po spuštění firewallu nebudeme moci připojit k serveru.
Distribuce Ubuntu přichází s nekomplikovaným firewallem (ufw) a s CentOS/Red Hat - firewalld.
Služba Fail2Ban analyzuje protokoly na serveru a počítá počet pokusů o přístup z každé IP adresy. Nastavení určuje pravidla pro počet povolených pokusů o přístup v určitém intervalu – po kterém je tato IP adresa na určitou dobu zablokována. Povolme například 5 neúspěšných pokusů o autentizaci SSH do 2 hodin, poté danou IP adresu zablokujeme na 12 hodin.
Kromě SSH může Fail2Ban chránit další služby na webovém serveru nginx nebo Apache.
Automatické aktualizace zabezpečení
Jak víte, ve všech programech se neustále nacházejí nová zranitelná místa. Po zveřejnění informací jsou exploity přidány do oblíbených exploit packů, které masivně využívají hackeři a teenageři při skenování všech serverů za sebou. Proto je velmi důležité instalovat bezpečnostní aktualizace, jakmile se objeví.
Na serveru Ubuntu jsou automatické aktualizace zabezpečení ve výchozím nastavení povoleny, takže není potřeba žádná další akce.
Na CentOS/Red Hat je potřeba nainstalovat aplikaci dnf-automatická a zapněte časovač:
SSH byl vyvinut v roce 1995, aby nahradil telnet (port 23) a ftp (port 21), takže autor programu Tatu Iltonen ve výchozím nastavení vybraný port 22a byl schválen IANA.
Všichni útočníci samozřejmě vědí, na kterém portu SSH běží – a skenují jej spolu se zbytkem standardních portů, aby zjistili verzi softwaru, zkontrolovali standardní hesla uživatele root a tak dále.
Několikanásobná změna standardních portů - zmatek - snižuje množství odpadního provozu, velikost protokolů a zatížení serveru a také snižuje plochu útoku. I když některé kritizovat tuto metodu „ochrany prostřednictvím nejasností“ (zabezpečení skrze temnotu). Důvodem je, že tato technika je v protikladu k základní architektonická ochrana. Proto například americký Národní institut pro standardy a technologie v "Příručka zabezpečení serveru" naznačuje potřebu otevřené serverové architektury: „Bezpečnost systému by se neměla spoléhat na utajení implementace jeho komponent,“ uvádí dokument.
Teoreticky je změna výchozích portů proti praxi otevřené architektury. V praxi se ale množství škodlivého provozu ve skutečnosti snižuje, takže jde o jednoduché a účinné opatření.
Číslo portu lze nakonfigurovat změnou direktivy Port 22 v konfiguračním souboru / etc / ssh / sshd_config. Je to také indikováno parametrem -p <port> в sshd. SSH klient a programy sftp možnost také podporovat -p <port>.
Parametr -p <port> lze použít k zadání čísla portu při připojování pomocí příkazu ssh v linuxu. V sftp и scp je použit parametr -P <port> (velké P). Instrukce příkazového řádku přepíše jakoukoli hodnotu v konfiguračních souborech.
Pokud existuje mnoho serverů, téměř všechny tyto akce k ochraně linuxového serveru lze automatizovat pomocí skriptu. Pokud však existuje pouze jeden server, je lepší proces řídit ručně.
Jako reklama
Objednejte a začněte hned! Vytvoření VDS libovolnou konfiguraci as jakýmkoli operačním systémem během minuty. Maximální konfigurace vám umožní vyrazit na maximum – 128 CPU jader, 512 GB RAM, 4000 GB NVMe. Epické 🙂