
, CC BY-SA
V dnešní době je spuštění serveru na hostingu záležitostí několika minut a pár kliknutí. Hned po spuštění se však dostává do nepřátelského prostředí, protože je otevřený pro celý internet, jako nevinná dívka na rockovém večírku. Rychle ho vyhledají skenery a zjistí miliony automatických skriptových botů, které procházejí sítí a hledají zranitelnosti a nesprávné konfigurace. Existuje několik věcí, které byste měli udělat hned po spuštění, aby byla zajištěna základní ochrana.
Obsah
Neroot uživatel
Nejdříve je třeba vytvořit si neroot uživatele. Od toho, že uživatel root má absolutní privilegium v systému, pokud mu povolíte vzdálenou administraci, uděláte polovinu práce hackerovi, když mu zanecháte platný uživatelský jméno.
Proto byste měli vytvořit jiného uživatele a pro roota zakázat vzdálenou administraci přes SSH.
Nový uživatel se vytváří příkazem useradd:
useradd [options] Poté pro něj přidejte heslo příkazem passwd:
passwd Nakonec je třeba tohoto uživatele přidat do skupiny, která má právo vykonávat příkazy s zvýšenými privilegii sudo. V závislosti na distribuci Linuxu to mohou být různé skupiny. Například v CentOS a Red Hat se uživatel přidává do skupiny wheel:
usermod -aG wheel V Ubuntu je přidán do skupiny sudo:
usermod -aG sudo
Klíče místo hesel pro SSH
Brute force nebo únik hesel je standardní vektor útoku, takže je lepší vypnout autentizaci pomocí hesel na SSH (Secure Shell) a místo toho použít autentizaci pomocí klíčů.
Existuje několik programů pro realizaci protokolu SSH, jako například a , ale nejoblíbenějším je OpenSSH. Instalace klienta OpenSSH na Ubuntu:
sudo apt install openssh-clientInstalace na serveru:
sudo apt install openssh-serverSpuštění démona SSH (sshd) na serveru pod Ubuntu:
sudo systemctl start sshdAutomatické spuštění démona při každém spuštění:
sudo systemctl enable sshd Je třeba poznamenat, že serverová část OpenSSH zahrnuje i klientskou. To znamená, že přes openssh-server můžete se připojit k dalším serverům. Navíc, ze svého klientského stroje můžete spustit SSH tunel ze vzdáleného serveru na externí hostitele a ten pak bude považovat vzdálený server za zdroj požadavků. Velmi užitečná funkce pro maskování vašeho systému. Více informací najdete v článku .
Na klientském stroji obvykle není smyslem instalovat plnohodnotný server, aby se předešlo možnosti vzdáleného připojení k počítači (z důvodu bezpečnosti).
Takže pro nového uživatele je potřeba nejprve vygenerovat SSH klíče na počítači, ze kterého se budete připojovat na server:
ssh-keygen -t rsa Veřejný klíč se uchovává v souboru .pub a vypadá jako řetězec náhodných znaků, který začíná textem ssh-rsa.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname
Poté je třeba z administrátorského účtu vytvořit na serveru adresář SSH v domovském adresáři uživatele a přidat veřejný klíč SSH do souboru authorized_keys, pomocí textového editoru jako je Vim:
mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keysvim /home/user_name/.ssh/authorized_keysNakonec je třeba nastavit správná oprávnění pro soubor:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysa změnit vlastníka na tohoto uživatele:
chown -R username:username /home/username/.sshNa straně klienta je potřeba zadat umístění soukromého klíče pro autentizaci:
ssh-add DIR_PATH/keylocationNyní jste se mohli přihlásit na server pod jménem uživatele pomocí tohoto klíče:
ssh [username]@hostnamePo autorizaci můžete použít příkaz scp pro kopírování souborů, utilitu pro vzdálené připojení souborového systému nebo adresářů.
Doporučuje se vytvořit několik záloh soukromého klíče, protože pokud vypnete autentizaci pomocí hesla a ztratíte ho, nebudete mít vůbec žádnou možnost se na svůj server dostat.
Jak bylo zmíněno výše, v SSH je třeba zakázat autentizaci pro root (proto jsme vytvářeli nového uživatele).
Na CentOS/Red Hat nalezneme řádek PermitRootLogin yes v konfiguračním souboru /etc/ssh/sshd_config a změníme ho na:
PermitRootLogin no Na Ubuntu přidáme řá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.confPo ověření, že nový uživatel se autentizuje pomocí svého klíče, lze vypnout autentizaci pomocí hesla, aby se vyloučilo riziko jeho úniku nebo útoků hrubou silou. Nyní bude muset útočník k přístupu na server získat soukromý klíč.
Na CentOS/Red Hat nalezneme řádek PasswordAuthentication yes v konfiguračním souboru /etc/ssh/sshd_config a změníme ji následujícím způsobem:
PasswordAuthentication no Na Ubuntu přidáme řádek PasswordAuthentication no do souboru 10-my-sshd-settings.conf:
sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.confPokyny k připojení dvoufaktorové autentizace přes SSH viz. .
Firewall
Firewall zaručuje, že na server půjde pouze ten provoz na těch portech, které jste přímo povolili. Tímto se chrání před využitím portů, které se náhodně otevřely s jinými službami, což výrazně snižuje útočnou plochu.
Před instalací firewallu je třeba zajistit, že SSH je na seznamu výjimek a nebude blokováno. Jinak se po spuštění firewallu nebudeme moci připojit k serveru.
S distribucí Ubuntu přichází Uncomplicated Firewall (), a s CentOS/Red Hat — .
Povolení SSH v firewallu na Ubuntu:
sudo ufw allow ssh Na CentOS/Red Hat použijeme příkaz firewall-cmd:
sudo firewall-cmd --zone=public --add-service=ssh --permanentPo tomto postupu lze spustit firewall.
Na CentOS/Red Hat spouštíme službu systemd pro firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalldNa Ubuntu použijeme tento příkaz:
sudo ufw enable
Fail2Ban
SA-Frontend analyzuje logy na serveru a počítá počet pokusů o přístup z každé IP adresy. V nastavení jsou uvedena pravidla, kolik pokusů o přístup je povoleno během určitého intervalu — poté je tato IP adresa zablokována na určenou dobu. Například povolíme 5 neúspěšných pokusů o autentizaci přes SSH během období 2 hodin, po čemž tuto IP adresu zablokujeme na 12 hodin.
Instalace Fail2Ban na CentOS a Red Hat:
sudo yum install fail2banInstalace na Ubuntu a Debian:
sudo apt install fail2banSpuštění:
systemctl start fail2ban
systemctl enable fail2ban Program má dva konfigurační soubory: /etc/fail2ban/fail2ban.conf a /etc/fail2ban/jail.conf. Omezení pro zákaz jsou uvedena ve druhém souboru.
Jail pro SSH je zapnutý ve výchozím nastavení s výchozími nastaveními (5 pokusů, interval 10 minut, zákaz na 10 minut).
[DEFAULT] ignorecommand = bantime = 10m findtime = 10m maxretry = 5
Kromě SSH může Fail2Ban chránit i další služby na webovém serveru nginx nebo Apache.
Automatické aktualizace zabezpečení
Jak je známo, ve všech programech se neustále objevují nové zranitelnosti. Po zveřejnění informací jsou exploity přidávány do populárních exploitačních balíků, které jsou masově používány hackery a mladistvými při skenování všech serverů. Proto je velmi důležité instalovat bezpečnostní aktualizace, jakmile se objeví.
Na serveru Ubuntu jsou ve výchozí konfiguraci povolena automatická bezpečnostní aktualizace, takže nejsou zapotřebí žádné další akce.
Na CentOS/Red Hat je třeba nainstalovat aplikaci a povolit časovač:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerKontrola časovače:
sudo systemctl status dnf-automatic.timer
Změna výchozích portů
SSH byl vyvinut v roce 1995 jako náhrada za telnet (port 23) a ftp (port 21), proto autor programu Tatu Ylönen , a ten byl potvrzen v IANA.
Přirozeně, všichni útočníci vědí, na jakém portu SSH běží — a skenují ho spolu s ostatními standardními porty, aby zjistili verzi softwaru, pro kontrolu standardních uživatelských hesel a tak dále.
Změna standardních portů — obfuskační technika — několikrát zkracuje objem nežádoucího provozu, velikost logů a zátěž na server, a také zmenšuje útočnou plochu. I když někteří (security through obscurity). Důvodem je, že tato technika je v rozporu s fundamentální . Proto například Národní institut standardů a technologií USA v uvádí potřebu otevřené serverové architektury: "Bezpečnost systému se nesmí spoléhat na utajení implementace jeho komponent," uvádí se v dokumentu.
Teoreticky změna výchozích portů odporuje praxi otevřené architektury. Ale v praxi se objem škodlivého provozu skutečně snižuje, takže to je jednoduché a účinné opatření.
Číslo portu lze nakonfigurovat změnou direktivy Port 22 v konfiguračním souboru. Je také uvedeno jako parametr -p v Klient SSH a programy také podporují parametr -p.
Parameter -p který lze použít k určení čísla portu při připojení pomocí příkazu ssh v Linuxu. V a scp se používá parametr -P (hlavní P). Příkaz příkazové řádky přepíše jakoukoli hodnotu v konfiguračních souborech.
Pokud je serverů hodně, většinu těchto akcí pro zabezpečení Linuxového serveru lze automatizovat ve skriptu. Ale pokud je server jen jeden, je lepší proces sledovat ručně.
Na základě reklamy
Objednejte a začněte pracovat okamžitě! jakékoli konfigurace a s jakýmkoli operačním systémem během minuty. Maximální konfigurace umožní využít naplno — 128 jader CPU, 512 GB RAM, 4000 GB NVMe. Epické 🙂
Zdroj: habr.com
