Zlepšení zabezpečení a ochrany serveru Linux / CentOS na internetu

V tomto článku si probereme základní pojmy a konkrétní nastavení, které pomohou zvýšit zabezpečení vašeho serveru CentOS na internetu. Použití těchto přístupů zvýší ochranu serveru před hackery a infekcemi. Manuál je z velké části univerzální a hlavní body jsou vhodné pro zvýšení bezpečnosti jakéhokoli serveru Linux.

Obsah:

  • Možnosti rozdělení a připojení diskových jednotek k izolaci
  • Instalace a aktualizace softwaru v systému Linux (CentOS)
  • Ochrana SSH, autorizace klíče
  • Linuxové heslo se pravidelně mění
  • Zvýšení zabezpečení serveru pomocí SELinux
  • Konfigurovat Firewalld
  • Odinstalujte X Windows
  • Ochrana jádra systému Linux
  • Oprávnění k souborům v systému Linux
  • Zabezpečení webového serveru
  • Fyzická ochrana serveru
  • Zálohování serveru Linux

Možnosti rozdělení a připojení diskových jednotek k izolaci

Při instalaci CentOS (a jakékoli distribuce Linuxu) ve fázi rozdělení disku nevytvářejte jeden oddíl, ale oddělte jej web-místo z hlavního oddílu, také vytvořte systémové oddíly:

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

Při izolování oddílů se útočníci nebudou moci zvednout nad adresář web při hackování webu a zavádění škodlivých skriptů na něj.

K bezpečnému připojení některých oddílů použijte speciální možnosti:

  • noexec - neumožňuje spouštět binární soubory (nelze použít v kořenovém adresáři, protože to povede k nefunkčnosti systému);
  • nodev - předpokládá, že soubory zařízení nebudou vytvořeny v připojeném systému souborů / dev. Nelze použít také pro kořenový adresář;
  • nosuid - zakáže operace s suid a sgid kousky.

Tyto parametry lze nastavit do adresáře, pouze pokud existují jako samostatná sekce. Můžete přizpůsobit / etc / fstab podle následujících doporučení, pokud máte na disku nějaké oddíly:

  • / home - připojit s možnostmi nodev, nosuid, usrquota (zahrnutí kvót);
  • / boot - připojit s možnostmi nodev, nosuid, noexes - tato část je nutná pro zavedení systému, zakazujeme v něm cokoli měnit;
  • / var - nosuid - běh jako root není zakázán;
  • / var / log - připojit s možnostmi nodev, nosuid, noexeс;
  • / var / www - připojit s možnostmi nodev, nosuid;
  • / tmp - připojit s možnostmi nodev, nosuid, noexe - Tato část je potřebná pouze pro ukládání a záznam dočasných souborů.
Všechny výše uvedené oddíly jsou namontovány s doplňkem rw (nahrávatelné).

Instalace a aktualizace softwaru v systému Linux (CentOS)

Při instalaci serveru nikdy nepoužívejte distribuce OS sestavené neznámými osobami. Stahujte distribuce pouze z oficiálních zrcadel a nepoužívejte k instalaci soubory kickstart jiných lidí. Pokud nerozumíte kódu někoho jiného, ​​je lepší tento podnik úplně zrušit a vše nainstalovat ručně nebo analyzovat soubor kickstart úplně, aby se na váš server nenainstaloval něco škodlivého..

Nainstalujte pouze minimální požadovaný software. Instalace a nastavení pouze pro případ a za pomoci instalačního technika mňam a dnf. Zkontrolujte veškerý nainstalovaný software a odstraňte nepotřebné balíčky:

Seznam yum nainstalován
yum list packageName
yum remove packageName

Používejte pouze oficiální a důvěryhodné repozitáře balíčků..

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

Zakažte nevyužité služby na vašem serveru, pokud vám v tuto chvíli nevyhovuje odstranění služby.

Chcete-li zkontrolovat seznam všech služeb, použijte příkaz:

systemctl list-unit-files --type = service

Chcete-li zakázat a odebrat službu ze spuštění v CentOS, použijte systemctl:

systemctl stop service
systemctl zakázat službu

Například zakázat službu httpd použije se následující příkaz:

systemctl stop httpd.service
systemctl zakázat httpd.service

Nainstalujte si vždy nainstalovaný software na svůj server. Včasně aktualizovaný software vás ochrání před známými zranitelnostmi. Můžete nastavit automatické aktualizace systému, takže to nemusíte pokaždé dělat ručně.

yum update - aktualizace systému

Ochrana SSH, autorizace klíče

Pro zabezpečenou autorizaci na serveru použijte soukromý klíč. Vygenerujte klíč pomocí obslužného programu ssh-keygen:

# ssh-keygen

Generování párů veřejných a soukromých klíčů rsa. Zadejte soubor, do kterého chcete klíč uložit (/root/.ssh/id_rsa): Zadejte přístupové heslo (prázdné bez přístupového hesla): Zadejte stejné přístupové heslo znovu: Vaše identifikace byla uložena do souboru /root/.ssh/id_rsa. Váš veřejný klíč byl uložen do souboru /root/.ssh/id_rsa.pub. Otisk klíče je: SHA256: ffIDjWIfOgMZmOVbQmDWaOCADK4G3cYYy0dTIjqLkD8 [email protected] Náhodný obrázek klíče je: + --- [RSA 2048] ---- + | * + .B = + | | oO @oO. | | *. *. B +. | | = + o *. o | | + .E + S * o | | ... o + * | | +. o | | o. | | | + ---- [SHA256]-----+ 

Po vygenerování se můžete pomocí tohoto klíče připojit k serveru prostřednictvím ssh-klient.

Vytvořte dalšího uživatele a spusťte příkazy sudo.

sudo groupadd sudo - vytvořit skupinu sudo

správce webů - vytvořit uživatele

passwd webmaster - změnit heslo

usermod -aG sudo webmaster - přidat uživatele do skupiny sudo

V souboru / etc / sudoers přidat řádek:

% sudo ALL = (ALL: ALL) ALL

Zakázat v nastavení ssh-autorizace serveru prostřednictvím root a přihlašovací jméno / heslo:

nano / etc / ssh / sshd_config

A změňte hodnotu níže uvedených řádků na:

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

Změňte výchozí port pro ssh. Výchozí port pro ssh, bude náchylný k praskání na prvním místě.

Chcete-li změnit standardní port na ssh, v konfiguračním souboru / etc / ssh / sshd_config nahradit hodnotu v řádku:

Port 22

Linuxové heslo se pravidelně mění

Pokud stále používáte hesla pro autorizaci v systému Linux, nakonfigurujte heslo pro heslo pomocí obslužného programu chage.

Chcete-li zkontrolovat, kolik dní bude heslo platné pro každého uživatele, použijte příkaz:

chage -l root

Ve výchozím nastavení jsem měl nastaveno 99999 dní pro root:

# chage -l root

Poslední změna hesla: nikdy Platnost hesla: nikdy Heslo neaktivní: nikdy Platnost účtu: nikdy Minimální počet dní mezi změnou hesla: 0 Maximální počet dní mezi změnou hesla: 99999 Počet dní varování před vypršením platnosti hesla: 7 

Chcete-li změnit dobu platnosti hesla (například 9 dní), použijte příkaz:

chage -M 9 root

Při kontrole informací o vypršení platnosti hesla pro uživatele root se tyto informace změnily:

# chage -l root

Poslední změna hesla: nikdy Platnost hesla: nikdy Heslo neaktivní: nikdy Platnost účtu: nikdy Minimální počet dní mezi změnou hesla: 0 Maximální počet dní mezi změnou hesla: 9 Počet dní varování před vypršením platnosti hesla: 7 

Další nápovědu pro nástroj chage získáte z nápovědy:

muž chage

Chcete-li zablokovat uživatele při zadávání nesprávného hesla, použijte obslužný program fail2ban (umožňuje implementovat analogové zásady skupiny pro uzamčení účtu ve Windows). Fail2ban chrání Linux server a služby před hádáním hesel.

Chcete-li nainstalovat fail2ban run:

yum install epel-release fail2ban -y

Konfigurační soubor fail2ban je umístěn v souboru /etc/fail2ban/jail.conf. Nastavení, kterých se dotkneme:

  • Bantime = 600 - doba zákazu blokování
  • maxretry = 3 - počet pokusů o zadání hesla nesprávně, po kterém bude uživatel zablokován
  • findtime = 600 - časové období, ve kterém se uživatel potřebuje přihlásit

Další nastavení se používá podle potřeby. Dále můžete nakonfigurovat odesílání přehledů na váš e-mail.

Vytvořte soubor /etc/fail2ban/jail.local a přidejte tam následující řádky:

Po změně konfiguračního souboru restartujte 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 

Poté soubor uložte a restartujte službu fail2ban:

systemctl restart fail2ban

Nastavili jsme tedy blokování uživatelů pro ssh:

Pokud je heslo zadáno nesprávně, byl jsem zablokován na 10 minut. Můžete nakonfigurovat fail2ban tak, aby pracoval s jakoukoli službou, která pracuje s uživateli, například:

  • proftpd
  • vyjít
  • postfix

Zvýšení zabezpečení serveru pomocí SELinux

Při nastavování serveru se obvykle vypnu SELinux, i když se to nedoporučuje. Ale nastavení SELinux velmi specifické a rozsáhlé. Konfigurace SELinuxu na serveru může trvat několik dní. Pokud máte čas na konfiguraci a ladění systému SELinux, použijte jej k zabezpečení serveru.

SELinux má 3 provozní režimy:

  • Prosazování
  • Přípustné
  • Zakázáno

V režimu vymáhání SELinux aplikuje svoji politiku na systém a sleduje neoprávněný přístup uživatelů. Všechny pokusy jsou zaznamenány.

V režimu tolerantní Zásada SELinux se neaplikuje, ale všechny informace se zaznamenávají do protokolů a poté je můžete analyzovat. Tento režim je užitečný při nastavování a ladění systému..

A zakázáno v důsledku toho zcela deaktivuje SELinux a jeho politika se vůbec neuplatňuje.

Konfigurační soubor SELinux - / etc / selinux / config

Pečlivé nastavení SELinux můžete napsat na několik článků, pokud potřebujete podrobné informace, můžete použít oficiální dokumentaci Redhat. Obvykle, když nastavuji server, všechno funguje plně, jsem na SELinux všiml si, že existují problémy s ftp-server a také nějaký placený software.

Kontrola stavu:
# sestatus

SELinux status: disabled

Pro pohodlnější studium protokolů SELinuxu doporučujeme použít nástroje aureport a sealer.

Konfigurovat Firewalld

Otevřete pouze minimální nezbytnou sadu portů na serveru, které jsou skutečně potřebné pro práci. Například do práce web-stačí otevřít servery 80 a 443. Pokud používáte mysql /mariadb, zakažte možnost připojení ze vzdálených serverů na port 3306 (pokud je vaše databáze používána pouze lokálně, není zahrnuta v clusteru Galera a není používána v replikačních skriptech).

Pokud je váš počítač / přístupová brána nastavena na statickou IP adresu, přidejte důvěryhodnou adresu k výjimkám brány firewall a připojte se k serveru z ní. Další informace o konfiguraci brány firewall na CentOS (pokud jste zvyklí na iptables, viz článek Konfigurace brány firewall systému Linux pomocí iptables).

Chcete-li zkontrolovat otevřené porty na serveru, použijte obslužný program netstat:

netstat-tulpn

Odinstalujte X Windows

Nepoužívejte systém na serveru X okna. Odstraňte veškerý software, který je spojen s tímto systémem, není třeba jej používat Linux server:

skupina yum odebrat "GNOME Desktop"
skupina yum odebrat "KDE Plasma Workspaces"
skupina yum odebrat "Server s GUI"
skupina yum odebrat "MATE Desktop"

Ochrana jádra systému Linux

Použijte nastavení v souboru /etc/sysctl.conf pro zvýšení bezpečnosti při bootování jádra Linuxu.

Zapněte execshield:

kernel.exec-shield = 1

Zakázat směrování IP (pokud váš server není používán jako brána pro přístup k Internetu z LAN):

net.ipv4.conf.all.accept_source_route = 0

Povolte ochranu před podvodem

net.ipv4.conf.all.rp_filter = 1

Povolit ignorování požadavků na vysílání

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

Povolit podezřelou registraci paketů

net.ipv4.conf.all.log_martians = 1

Oprávnění k souborům v systému Linux

Spusťte vyhledávání souborů bez uživatele a skupiny, takové soubory jsou potenciálně nebezpečné a mohou je používat kybernetičtí zločinci. Chcete-li takové soubory najít, použijte příkaz:

find / directory -xdev \ (-nouser -o -nogroup \) -print

Pokud jsou soubory nalezeny, změňte jejich vlastníka a skupinu.

Nastavit příznak chattr k potřebným souborům, které je chrání před změnami. Když je nastaven tento příznak, žádný uživatel nemůže soubor upravit. Například:

chattr + i /etc/mysript.sh

Nenastavujte příliš vysoká oprávnění pro adresáře a soubory, například standardní práva pro web:

  • 755 pro adresáře
  • 644 pro soubory

V některých případech mohou existovat výjimky, ale vždy se k tomuto problému přistupujte opatrně. Zakázat uživatelům nastavit oprávnění 777. Můžete najít tyto soubory:

find / home -type f -perm 777

Zabezpečení webového serveru

Pokud používáte server pod web, postarat se o nastavení webových služeb. Zavřete prohlížení obsahu adresáře pomocí Možnosti -Indexy, také přidat X-snímek.

Záhlaví vždy připojí X-Frame-Options SAMEORIGIN

Tento parametr zakáže otevření stránky v rámci, zabrání se tak vložení obsahu vašeho webu na jiné weby.

Zakázat zobrazování verze web-server. Pro apache do konfiguračního souboru napište:

serverSignature Off

Pro nginx v konfiguračním souboru v sekci http napsat:

server_tokens off;

Pokud používáte php, zakažte nebezpečné funkce prostřednictvím php.ini:

expose_php = Vypnuto

- zakázat zobrazování verze php

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

- zakazuje používání těchto funkcí

Také nakonfigurujte limity pro spouštění skriptů a jejich velikost, což vás ochrání před drobnými útoky.

Nainstalujte certifikát SSL na svůj web a poštu tak, aby bylo připojení v prohlížeči a při odesílání pošty šifrováno. Můžete použít bezplatný certifikát od Let's Encrypt nebo si můžete zakoupit levný placený certifikát.

Fyzická ochrana serveru

Pokud má váš server konzolu pro vzdálený přístup ILO/IPMI/ BMC, úzký přístup k němu z vnějšku, ponechejte pouze důvěryhodné IP, to se omezí na zbytečné problémy.

Pokud je váš fyzický server umístěn mimo kancelář / domov, zavřete jej BIOS / UEFI heslo.

A hlavně: umístěte své servery do důvěryhodných poskytovatelů.

Zálohování serveru Linux

Samozřejmě nezapomeňte zálohovat server. Můžete provádět zálohy celého serveru i jednotlivých souborů nebo adresářů (zálohy můžete nakonfigurovat na bezplatné skripty cloudového úložiště). V případě nehody budete mít vždy po ruce aktuální zálohu, ze které můžete nasadit server nebo nahradit konfigurační soubory..