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.
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..