Ochrana servera Linux. Čo robiť ako prvé

Ochrana servera Linux. Čo robiť ako prvé
Habib M'henni/Wikimedia Commons, CC BY-SA

V dnešnej dobe je zdvihnutie servera na hosting otázkou pár minút a niekoľkých kliknutí myšou. Hneď po spustení sa ale ocitne v nepriateľskom prostredí, pretože je otvorený celému internetu ako nevinné dievča na rockerskej diskotéke. Skenery ho rýchlo nájdu a zistia tisíce automaticky naskriptovaných robotov, ktorí prehľadávajú sieť a hľadajú slabé miesta a nesprávne konfigurácie. Existuje niekoľko vecí, ktoré by ste mali urobiť hneď po spustení, aby ste zabezpečili základnú ochranu.

Obsah

Používateľ bez oprávnenia root

Prvým krokom je vytvoriť si používateľa iného typu než root. Ide o to, že používateľ root absolútne privilégiá v systéme a ak mu povolíte vzdialenú správu, tak polovicu práce urobíte za hackera a necháte mu platné používateľské meno.

Preto musíte vytvoriť ďalšieho používateľa a vypnúť vzdialenú správu cez SSH pre root.

Nový užívateľ sa spustí príkazom useradd:

useradd [options] <username>

Potom sa k nemu s príkazom pridá heslo passwd:

passwd <username>

Nakoniec je potrebné pridať tohto používateľa do skupiny, ktorá má právo vykonávať zvýšené príkazy sudo. V závislosti od distribúcie Linuxu to môžu byť rôzne skupiny. Napríklad v systémoch CentOS a Red Hat sa používateľ pridá do skupiny wheel:

usermod -aG wheel <username>

V Ubuntu je pridaný do skupiny sudo:

usermod -aG sudo <username>

Kľúče namiesto hesiel SSH

Hrubá sila alebo úniky hesiel sú štandardným vektorom útoku, preto je najlepšie zakázať autentifikáciu heslom v SSH (Secure Shell) a namiesto toho použiť autentifikáciu kľúčom.

Na implementáciu protokolu SSH existujú rôzne programy, ako napr lsh и dropbear, ale najobľúbenejší je OpenSSH. Inštalácia klienta OpenSSH na Ubuntu:

sudo apt install openssh-client

Inštalácia servera:

sudo apt install openssh-server

Spustenie démona SSH (sshd) na serveri Ubuntu:

sudo systemctl start sshd

Automaticky spustiť démona pri každom spustení:

sudo systemctl enable sshd

Je potrebné poznamenať, že serverová časť OpenSSH zahŕňa klientsku časť. Teda cez openssh-server môžete sa pripojiť k iným serverom. Okrem toho môžete zo svojho klientskeho počítača spustiť tunel SSH zo vzdialeného servera na hostiteľa tretej strany a hostiteľ tretej strany bude považovať vzdialený server za zdroj požiadaviek. Veľmi praktická funkcia na maskovanie vášho systému. Podrobnosti nájdete v článku "Praktické tipy, príklady a tunely SSH".

Na klientskom počítači zvyčajne nemá zmysel inštalovať plnohodnotný server, aby sa zabránilo možnosti vzdialeného pripojenia k počítaču (z bezpečnostných dôvodov).

Takže pre vášho nového používateľa musíte najskôr vygenerovať kľúče SSH na počítači, z ktorého budete pristupovať na server:

ssh-keygen -t rsa

Verejný kľúč je uložený v súbore .pub a vyzerá ako reťazec náhodných znakov, ktorý začína na ssh-rsa.

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

Potom pod rootom vytvorte adresár SSH na serveri v domovskom adresári používateľa a pridajte verejný kľúč SSH do súboru authorized_keyspomocou textového editora, ako je Vim:

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

vim /home/user_name/.ssh/authorized_keys

Nakoniec nastavte správne povolenia pre súbor:

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

a zmeniť vlastníctvo na tohto používateľa:

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

Na strane klienta musíte zadať umiestnenie tajného kľúča na overenie:

ssh-add DIR_PATH/keylocation

Teraz sa môžete prihlásiť na server pod užívateľským menom pomocou tohto kľúča:

ssh [username]@hostname

Po autorizácii môžete použiť príkaz scp na kopírovanie súborov, pomocný program sshfs vzdialene pripojiť súborový systém alebo adresáre.

Odporúča sa vytvoriť niekoľko záložných kópií súkromného kľúča, pretože ak zakážete autentifikáciu heslom a stratíte ho, nebudete sa mať vôbec ako prihlásiť na svoj vlastný server.

Ako je uvedené vyššie, v SSH musíte zakázať autentifikáciu pre root (to je dôvod, prečo sme založili nového používateľa).

Na CentOS/Red Hat nájdeme riadok PermitRootLogin yes v konfiguračnom súbore /etc/ssh/sshd_config a zmeňte to:

PermitRootLogin no

Na Ubuntu pridajte riadok PermitRootLogin no do konfiguračného súboru 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Po overení, či sa nový používateľ overuje pomocou svojho kľúča, môžete overenie hesla vypnúť, aby ste eliminovali riziko úniku hesla alebo hrubej sily. Teraz, aby sa útočník mohol dostať na server, bude musieť získať súkromný kľúč.

Na CentOS/Red Hat nájdeme riadok PasswordAuthentication yes v konfiguračnom súbore /etc/ssh/sshd_config a zmeňte to takto:

PasswordAuthentication no

Na Ubuntu pridajte riadok PasswordAuthentication no vyplniť 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Pokyny na povolenie dvojfaktorovej autentifikácie cez SSH nájdete v časti tu.

POŽARNE DVERE

Firewall zaisťuje, že na server pôjde iba prevádzka na portoch, ktoré priamo povolíte. To chráni pred zneužitím portov, ktoré sú náhodne povolené s inými službami, čo výrazne znižuje plochu útoku.

Pred inštaláciou brány firewall sa musíte uistiť, že SSH je zahrnuté v zozname vylúčení a nebude blokované. V opačnom prípade sa po spustení firewallu nebudeme môcť pripojiť k serveru.

Distribúcia Ubuntu prichádza s nekomplikovaným firewallom (ufw) a s CentOS/Red Hat - firewalld.

Povolenie SSH vo firewalle na Ubuntu:

sudo ufw allow ssh

Na CentOS/Red Hat použite príkaz firewall-cmd:

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

Po tomto postupe môžete spustiť bránu firewall.

Na CentOS/Red Hat spustite službu systemd pre firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Na Ubuntu používame nasledujúci príkaz:

sudo ufw enable

Fail2Ban

Služba Fail2Ban analyzuje protokoly na serveri a počíta počet pokusov o prístup z každej adresy IP. Nastavenia určujú pravidlá pre počet povolených pokusov o prístup v určitom intervale - po uplynutí ktorého je táto adresa IP zablokovaná na určitý čas. Povoľme napríklad 5 neúspešných pokusov o overenie SSH do 2 hodín, potom danú IP adresu zablokujme na 12 hodín.

Inštalácia Fail2Ban na CentOS a Red Hat:

sudo yum install fail2ban

Inštalácia na Ubuntu a Debian:

sudo apt install fail2ban

Spustenie:

systemctl start fail2ban
systemctl enable fail2ban

Program má dva konfiguračné súbory: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Obmedzenia zákazu sú špecifikované v druhom súbore.

Jail for SSH je štandardne povolený s predvolenými nastaveniami (5 pokusov, interval 10 minút, zákaz na 10 minút).

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

Okrem SSH môže Fail2Ban chrániť ďalšie služby na webovom serveri nginx alebo Apache.

Automatické aktualizácie zabezpečenia

Ako viete, vo všetkých programoch sa neustále nachádzajú nové zraniteľnosti. Po zverejnení informácií sa exploity pridajú k obľúbeným exploit packom, ktoré masívne využívajú hackeri a tínedžeri pri skenovaní všetkých serverov za sebou. Preto je veľmi dôležité inštalovať bezpečnostné aktualizácie hneď, ako sa objavia.

Na serveri Ubuntu sú automatické aktualizácie zabezpečenia predvolene povolené, takže nie je potrebná žiadna ďalšia akcia.

Na CentOS/Red Hat si musíte aplikáciu nainštalovať dnf-automatické a zapnite časovač:

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

Kontrola časovača:

sudo systemctl status dnf-automatic.timer

Zmena predvolených portov

SSH bol vyvinutý v roku 1995, aby nahradil telnet (port 23) a ftp (port 21), takže autor programu Tatu Iltonen predvolene vybratý port 22a bol schválený organizáciou IANA.

Prirodzene, všetci útočníci vedia, na ktorom porte SSH beží – a skenujú ho spolu so zvyškom štandardných portov, aby zistili verziu softvéru, skontrolovali štandardné heslá root atď.

Zmena štandardných portov – zahmlievanie – niekoľkonásobne znižuje množstvo odpadu, veľkosť protokolov a zaťaženie servera a tiež znižuje plochu útoku. Aj keď niektoré kritizovať túto metódu „ochrany cez nejasnosti“ (zabezpečenie cez temnotu). Dôvodom je, že táto technika je v protiklade k základnej architektonickej ochrany. Preto napríklad americký Národný inštitút pre štandardy a technológie v r "Sprievodca zabezpečením servera" naznačuje potrebu otvorenej serverovej architektúry: „Bezpečnosť systému by sa nemala spoliehať na utajenie implementácie jeho komponentov,“ píše sa v dokumente.

Teoreticky je zmena predvolených portov v rozpore s praxou otvorenej architektúry. V praxi sa však množstvo škodlivého prenosu skutočne znižuje, takže ide o jednoduché a efektívne opatrenie.

Číslo portu je možné nakonfigurovať zmenou smernice Port 22 v konfiguračnom súbore / Etc / ssh / sshd_config. Naznačuje to aj parameter -p <port> в sshd. SSH klient a programy sftp možnosť tiež podporovať -p <port>.

Parameter -p <port> možno použiť na zadanie čísla portu pri pripájaní pomocou príkazu ssh v linuxe. IN sftp и scp používa sa parameter -P <port> (veľké P). Inštrukcia príkazového riadka prepíše akúkoľvek hodnotu v konfiguračných súboroch.

Ak existuje veľa serverov, takmer všetky tieto akcie na ochranu servera Linux môžu byť automatizované v skripte. Ak však existuje iba jeden server, je lepšie proces ovládať manuálne.

O právach reklamy

Objednajte a začnite ihneď! Vytvorenie VDS akúkoľvek konfiguráciu as akýmkoľvek operačným systémom do minúty. Maximálna konfigurácia vám umožní vyraziť na maximum – 128 CPU jadier, 512 GB RAM, 4000 GB NVMe. Epické 🙂

Ochrana servera Linux. Čo robiť ako prvé

Zdroj: hab.com