Zlepšenie bezpečnosti a ochrany servera Linux / CentOS na internete

V tomto článku sa budeme venovať základným pojmom a konkrétnym nastaveniam, ktoré pomôžu zvýšiť bezpečnosť vášho servera CentOS na internete. Použitie týchto prístupov zvýši ochranu servera pred hackermi a infekciami. Manuál je zväčša univerzálny a hlavné body sú vhodné na zvýšenie bezpečnosti ľubovoľného servera Linux.

obsah:

  • Možnosti rozdelenia a pripevnenia diskových jednotiek na izoláciu
  • Inštalácia a aktualizácia softvéru v systéme Linux (CentOS)
  • Ochrana SSH, autorizácia kľúčom
  • Heslo v systéme Linux sa pravidelne mení
  • Zvýšenie bezpečnosti servera pomocou SELinux
  • Konfigurovať Firewalld
  • Odinštalujte X Windows
  • Ochrana jadra systému Linux
  • Povolenia pre súbory v systéme Linux
  • Zabezpečenie webového servera
  • Fyzická ochrana servera
  • Zálohovanie servera Linux

Možnosti rozdelenia a pripevnenia diskových jednotiek na izoláciu

Pri inštalácii CentOS (a akejkoľvek distribúcie Linuxu) vo fáze rozdelenia disku nevytvárajte jeden oddiel, ale samostatný web-priestor z hlavnej oblasti, tiež vytvorte systémové oddiely:

  • / root
  • / boot
  • / var
  • / tmp
  • /

Pri izolovaní oddielov nebudú útočníci schopní vstať nad adresár web pri hackovaní stránok a zavádzaní škodlivých skriptov na ne.

Na bezpečné pripojenie niektorých oddielov použite špeciálne možnosti:

  • noexec - neumožňuje spúšťať binárne súbory (nemožno ich použiť v koreňovom adresári, pretože to vedie k nefunkčnosti systému);
  • nodevu - predpokladá, že súbory zariadenia sa nevytvoria v pripojenom systéme súborov / dev. Tiež sa nevzťahuje na koreňový adresár;
  • nosuid - zakáže operácie s suid a sgid bity.

Tieto parametre je možné nastaviť do adresára, iba ak existujú ako samostatná časť. Môžete prispôsobiť / etc / fstab podľa nasledujúcich odporúčaní, ak máte na disku nejaké oddiely:

  • / domov - pripojiť s možnosťami nodevu, nosuid, usrquota (zahrnutie kvót);
  • / boot - pripojiť s možnosťami nodevu, nosuid, noexes - táto sekcia je potrebná na zavedenie systému, zakazujeme v nej niečo meniť;
  • / var - nosuid - beh ako root nie je zakázaný;
  • / var / log - pripojiť s možnosťami nodev, nosuid, noexeс;
  • / var / www - pripojiť s možnosťami nodev, nosuid;
  • / tmp - pripojiť s možnosťami nodev, nosuid, noexe - táto časť je potrebná iba na ukladanie a zaznamenávanie dočasných súborov.
Všetky vyššie uvedené časti sú namontované s príslušenstvom rw (Schopnosť Recording).

Inštalácia a aktualizácia softvéru v systéme Linux (CentOS)

Pri inštalácii servera nikdy nepoužívajte distribúcie OS zostavené neznámymi osobami. Distribúcie sťahujte iba z oficiálnych zrkadiel a na inštaláciu nepoužívajte súbory kickstart iných ľudí. Ak nerozumiete kódu niekoho iného, ​​je lepšie tento podnik úplne zrušiť a všetko nainštalovať ručne alebo úplne analyzovať súbor kickstart, aby sa na váš server nenainštalovalo niečo škodlivé..

Nainštalujte iba minimálny požadovaný softvér. Inštalácia a nastavenie iba pre prípad a pomocou inštalatéra yum a DNF. Skontrolujte všetok nainštalovaný softvér a odstráňte nepotrebné balíčky:

Zoznam yum je nainštalovaný
yum list packageName
yum remove packageName

Používajte iba oficiálne a dôveryhodné archívy balíkov..

Nepoužívajte nešifrované FTP, Telnet, Rlogin, Rsh.

Ak na tomto serveri nevyhovuje odstránenie služby, nepoužívajte na vašom serveri nepoužité služby.

Ak chcete skontrolovať zoznam všetkých služieb, použite príkaz:

systemctl list-unit-files --type = service

Ak chcete zakázať a odstrániť službu zo spustenia v CentOS, použite systemctl:

systemctl stop service
systemctl vypnúť službu

Napríklad na vypnutie služby httpd použije sa nasledujúci príkaz:

systemctl stop httpd.service
systemctl zakáže httpd.service

Nainštalujte si vždy nainštalovaný softvér na server. Včasne aktualizovaný softvér vás ochráni pred známymi zraniteľnými miestami. Môžete nastaviť automatické aktualizácie systému, aby ste ich nemuseli zakaždým robiť manuálne.

yum update - aktualizácia systému

Ochrana SSH, autorizácia kľúčom

Pre bezpečnú autorizáciu na serveri použite súkromný kľúč. Vygenerujte kľúč pomocou pomocného programu ssh-keygen:

# ssh-keygen

Generuje sa pár verejných a súkromných kľúčov rsa. Zadajte súbor, do ktorého chcete kľúč uložiť (/root/.ssh/id_rsa): Zadajte prístupové frázy (prázdne bez hesla): Znova zadajte rovnaké prístupové frázy: Vaša identifikácia bola uložená do súboru /root/.ssh/id_rsa. Váš verejný kľúč bol uložený v súbore /root/.ssh/id_rsa.pub. Odtlačok kľúča je: SHA256: ffIDjWIfOgMZmOVbQmDWaOCADK4G3cYYy0dTIjqLkD8 [email protected] Náhodný obrázok kľúča je: + --- [RSA 2048] ---- + | * + .B = + | | oO @oO. | | *. *. B +. | | = + o *. o | | + .E + S * o | | ... o + * | | +. o | | o. | | | + ---- [SHA256]-----+ 

Po vygenerovaní sa môžete pomocou tohto kľúča pripojiť k serveru prostredníctvom ssh-klient.

Vytvorte ďalšieho používateľa a vykonajte príkazy prostredníctvom sudo.

sudo groupadd sudo - vytvoriť skupinu sudo

webmaster správcu doplnku - vytvoriť používateľa

passwd webmaster - zmeniť heslo

usermod -aG sudo webmaster - pridať používateľa do skupiny sudo

V súbore / etc / sudoers pridať riadok:

% sudo ALL = (ALL: ALL) ALL

Zakázať v nastavení ssh-autorizácia servera prostredníctvom koreň a prihlasovacie meno / heslo:

nano / etc / ssh / sshd_config

A zmeňte hodnotu nasledujúcich riadkov na:

PermitRootLogin no PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no AuthenticationMethods publickey PubkeyAuthentication yes 

Zmeňte predvolený port pre ssh. Predvolený port pre ssh, bude náchylný k praskaniu v prvom rade.

Ak chcete zmeniť štandardný port na ssh, v konfiguračnom súbore / etc / ssh / sshd_config nahradiť hodnotu v riadku:

Port 22

Heslo v systéme Linux sa pravidelne mení

Ak stále používate heslá na autorizáciu v systéme Linux, nakonfigurujte heslo pre heslo pomocou obslužného programu chaga.

Ak chcete skontrolovať, koľko dní bude heslo platné pre ktoréhokoľvek používateľa, použite príkaz:

chage -l root

V predvolenom nastavení som mal nastavených 99999 dní pre root:

# chage -l root

Posledná zmena hesla: nikdy Platnosť hesla: nikdy Heslo neaktívne: nikdy Platnosť účtu: nikdy Minimálny počet dní medzi zmenou hesla: 0 Maximálny počet dní medzi zmenou hesla: 99999 Počet dní varovania pred uplynutím platnosti hesla: 7 

Ak chcete zmeniť dobu platnosti hesla (napríklad 9 dní), použite príkaz:

chage -M 9 root

Pri kontrole informácií o vypršaní platnosti hesla pre užívateľa root sa tieto informácie zmenili:

# chage -l root

Posledná zmena hesla: nikdy Platnosť hesla: nikdy Heslo neaktívne: nikdy Platnosť účtu: nikdy Minimálny počet dní medzi zmenou hesla: 0 Maximálny počet dní medzi zmenou hesla: 9 Počet dní varovania pred uplynutím platnosti hesla: 7 

Ďalšie pomocné programy pre pomôcku chage nájdete v pomocníkovi:

man chage

Ak chcete zablokovať používateľov pri zadávaní nesprávneho hesla, použite obslužný program fail2ban (umožňuje vám implementovať analógové skupinové pravidlá pre blokovanie účtov v systéme Windows). Fail2ban chráni Linux server a služby pred hádaním hesiel.

Inštalácia fail2ban run:

yum install epel-release fail2ban -y

Konfiguračný súbor fail2ban sa nachádza v súbore /etc/fail2ban/jail.conf. Nastavenia, ktorých sa dotkneme:

  • bantime = 600 - čas zablokovania pri blokovaní
  • maxretry = 3 - počet pokusov o nesprávne zadanie hesla, po ktorých bude užívateľ zablokovaný
  • findtime = 600 - časové obdobie, v ktorom sa užívateľ musí prihlásiť

Ďalšie nastavenia sa používajú podľa potreby. Okrem toho môžete nakonfigurovať odosielanie prehľadov do e-mailu.

Vytvorte súbor /etc/fail2ban/jail.local a tam pridajte nasledujúce riadky:

Po zmene konfiguračného súboru reštartujte službu.

[DEFAULT] ignoreip = 127.0.0.1/24 [ssh-iptables] enabled = true port = ssh filter = sshd action = iptables [name = sshd, port = ssh, protokol = tcp] logpath = / var / log / secure 

Potom uložte súbor a reštartujte službu fail2ban:

systemctl restart fail2ban

Preto sme nastavili blokovanie používateľov pre ssh:

Ak je heslo zadané nesprávne, bol som zablokovaný na 10 minút. Môžete nakonfigurovať fail2ban tak, aby pracoval s ľubovoľnou službou, ktorá pracuje s používateľmi, napríklad:

  • proftpd
  • Exim
  • postfix

Zvýšenie bezpečnosti servera pomocou SELinux

Pri nastavovaní servera sa zvyčajne vypnem SELinux, aj keď sa to neodporúča. Ale nastavenie SELinux veľmi špecifický a rozsiahly. Konfigurácia SELinuxu na serveri môže trvať niekoľko dní. Ak máte čas na konfiguráciu a ladenie vášho systému SELinux, použite ho na zabezpečenie servera.

SELinux má 3 prevádzkové režimy:

  • presadzovanie
  • liberálne
  • invalidný

V režime enforsing SELinux uplatňuje svoju politiku na systém a monitoruje neoprávnený prístup používateľov. Všetky pokusy sa zaznamenávajú.

V režime liberálne Zásada SELinux sa neuplatňuje, ale všetky informácie sa zaznamenávajú do protokolov, po ktorých ich môžete analyzovať. Tento režim je užitočný pri nastavovaní a ladení systému..

a invalidný preto úplne deaktivuje SELinux a jeho politika sa vôbec neuplatňuje.

Konfiguračný súbor SELinux - / etc / selinux / config

Presné nastavenie SELinux môžete napísať niekoľko článkov, ak potrebujete podrobné informácie, môžete použiť oficiálnu dokumentáciu RedHat. Pri nastavovaní servera zvyčajne všetko funguje úplne dobre SELinux zistil, že existujú problémy s ftp-server, ako aj nejaký platený softvér.

Kontrola stavu:
# sestatus

Stav SELinux: deaktivovaný

Pre pohodlnejšiu štúdiu protokolov SELinux odporúčam používať pomôcky aureport a sealer.

Konfigurovať Firewalld

Otvorte na serveri iba minimálnu potrebnú množinu portov, ktoré sú skutočne potrebné pre prácu. Napríklad do práce web-stačí otvoriť servery 80 a 443. Ak používate mysql /mariadb, vypnite možnosť pripojenia zo vzdialených serverov na port 3306 (ak sa vaša databáza používa iba lokálne, nie je súčasťou klastra Galera a nie je použitá v replikačných skriptoch).

Ak je váš počítač / prístupová brána nastavená na statickú IP adresu, pridajte svoju dôveryhodnú adresu do výnimiek brány firewall a pripojte sa k serveru z nej. Prečítajte si viac informácií o konfigurácii brány firewall na serveri CentOS (ak ste zvyknutí na iptables, prečítajte si článok Konfigurácia brány firewall systému Linux pomocou iptables).

Ak chcete skontrolovať otvorené porty na serveri, použite obslužný program netstat:

netstat-tulpn

Odinštalujte X Windows

Nepoužívajte systém na serveri X okná. Odstráňte všetok softvér, ktorý je priradený k tomuto systému, nie je potrebné ho používať linux server:

skupina yum odstrániť „GNOME Desktop“
skupina yum odstrániť „plazmové pracovné priestory KDE“
skupina yum odstrániť "Server s GUI"
skupina yum odstrániť "MATE Desktop"

Ochrana jadra systému Linux

Použite nastavenia v súbore /etc/sysctl.conf pre vyššiu bezpečnosť pri zavádzaní systému Linux.

Zapnite execshield:

kernel.exec-shield = 1

Vypnite smerovanie IP (ak váš server nie je používaný ako brána prístupu na internet z LAN):

net.ipv4.conf.all.accept_source_route = 0

Povoliť ochranu proti podvodom

net.ipv4.conf.all.rp_filter = 1

Povoliť ignorovanie žiadostí o vysielanie

net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_messages = 1

Povoliť podozrivú registráciu paketov

net.ipv4.conf.all.log_martians = 1

Povolenia pre súbory v systéme Linux

Spustite vyhľadávanie súborov bez používateľa a skupiny. Takéto súbory sú potenciálne nebezpečné a môžu ich využívať kybernetickí zločinci. Ak chcete nájsť takéto súbory, použite príkaz:

nájsť / adresár -xdev \ (-nouser -o -nogroup \) -print

Ak sa súbory nájdu, zmeňte vlastníka a skupinu.

Nastaviť príznak chattr do súborov potrebných na ich ochranu pred úpravami. Keď je nastavený tento príznak, súbor nemôže upravovať žiadny používateľ. Napríklad:

chattr + i /etc/mysript.sh

Nenastavujte príliš vysoké povolenia pre adresáre a súbory, napríklad štandardné práva pre web:

  • 755 pre adresáre
  • 644 pre súbory

V niektorých prípadoch môžu existovať výnimky, ale vždy sa k tejto záležitosti pristupujte opatrne. Zakážte používateľom nastaviť povolenie 777. Nájdete tieto súbory:

find / home -type f -perm 777

Zabezpečenie webového servera

Ak používate server pod web, postarať sa o zriadenie webových služieb. Zatvorte prezeranie obsahu adresára pomocou Možnosti -Indexy, tiež pridať X-frame.

Hlavička vždy pripája X-Frame-Options SAMEORIGIN

Tento parameter zakáže otvorenie stránky v rámci, zabráni sa tak vloženiu obsahu vašich stránok na iné weby.

Zakázať zobrazovanie verzie web-serverov. pre apache do konfiguračného súboru napíšte:

serverSignature Off

pre Nginx v konfiguračnom súbore v časti http zapíšte:

server_tokens off;

Ak používate php, vypnite prostredníctvom neho nebezpečné funkcie php.ini:

expose_php = Off

- zakázať zobrazovanie verzie php

disable_functions = exec, passthru, shell_exec, system, proc_open, popen

- zakazuje používanie týchto funkcií

Tiež nakonfigurujte limity na vykonávanie skriptov a ich veľkosť, čo vás ochráni pred menšími útokmi.

Nainštalujte certifikát SSL na svoju webovú stránku a poštu, aby bolo pripojenie v prehliadači a pri odosielaní pošty šifrované. Môžete použiť bezplatný certifikát od Poďme šifrovať, alebo si môžete kúpiť lacný platený certifikát.

Fyzická ochrana servera

Ak má váš server konzolu na vzdialený prístup ILO/IPMI/ BMC, blízky prístup k nemu zvonka, nechajte len dôveryhodných IP, tým sa obmedzíte na zbytočné problémy.

Ak sa váš fyzický server nachádza mimo kancelárie / domácnosti, zatvorte ho BIOS / UEFI heslo.

A hlavné je, že umiestnite svoje servery medzi dôveryhodných poskytovateľov.

Zálohovanie servera Linux

Nezabudnite samozrejme na zálohovanie servera. Môžete vykonávať zálohy celého servera, ako aj jednotlivých súborov alebo adresárov (zálohu môžete nakonfigurovať na bezplatné skripty cloudového úložiska). V prípade nehody budete mať vždy k dispozícii aktuálnu zálohu, z ktorej môžete nasadiť server alebo nahradiť konfiguračné súbory..