Ochrana serveru Linux. Co udělat jako první

Ochrana serveru Linux. Co udělat jako první
Habib M'henni/Wikimedia Commons, CC BY-SA

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.

Obsah

Uživatel bez oprávnění root

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.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

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:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Nakonec nastavte správná oprávnění pro soubor:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

a změnit vlastnictví na tohoto uživatele:

chown -R username:username /home/username/.ssh

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:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/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:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/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.

Povolení SSH ve firewallu na Ubuntu:

sudo ufw allow ssh

Na CentOS/Red Hat použijte příkaz firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Po tomto postupu můžete firewall spustit.

Na CentOS/Red Hat spusťte službu systemd pro firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Na Ubuntu používáme následující příkaz:

sudo ufw enable

Fail2Ban

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.

Instalace Fail2Ban na CentOS a Red Hat:

sudo yum install fail2ban

Instalace na Ubuntu a Debian:

sudo apt install fail2ban

Zahájení:

systemctl start fail2ban
systemctl enable fail2ban

Program má dva konfigurační soubory: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Omezení zákazu jsou specifikována ve druhém souboru.

Jail for SSH je standardně povolen s výchozím nastavením (5 pokusů, interval 10 minut, zákaz na 10 minut).

[VÝCHOZÍ] ignorecommand=bantime=10m findtime=10m maxretry=5

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č:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Kontrola časovače:

sudo systemctl status dnf-automatic.timer

Změna výchozích portů

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é 🙂

Ochrana serveru Linux. Co udělat jako první

Zdroj: www.habr.com