GNU/Linux >> Znalost Linux >  >> Linux

50 nejlepších bezpečnostních tipů pro posílení Linuxu:Komplexní kontrolní seznam

Linux pohání většinu webu a značné množství pracovních stanic po celém světě. Jedním z hlavních důvodů neustále rostoucí popularity systémů Linux a BSD je jejich pevná politika týkající se bezpečnosti. Linuxové systémy je ze své podstaty těžké prolomit kvůli jejich základním konstrukčním principům. Žádný systém však není nerozbitný, a pokud svou pracovní stanici nebo linuxový server nezpevníte na úroveň nejnovějších standardů, pravděpodobně se stanete obětí různých typů útoků a/nebo narušení dat. Proto jsme nastínili 50 tipů na posílení Linuxu, které vám pomohou zvýšit zabezpečení vašeho serveru na další úroveň.

Tipy zabezpečení Linuxu pro profesionály

Bezpečnost se stala nedílnou součástí světa výpočetní techniky. V důsledku toho je posílení vaší osobní pracovní stanice a zabezpečení serveru nutností. Pokračujte tedy ve čtení a co nejvíce začleňte níže uvedené tipy pro zvýšení zabezpečení vašeho počítače se systémem Linux.

1. Informace o hostiteli dokumentu

Dokumentování informací o hostiteli se může z dlouhodobého hlediska stát mimořádně přínosným. Pokud máte v úmyslu udržovat stejný systém v průběhu času, je pravděpodobné, že se věci v určitém okamžiku zamotají. Pokud však svou pracovní stanici nebo server zdokumentujete hned ode dne jejich instalace, budete mít solidní představu o celkové infrastruktuře systému a používaných zásadách.

Do dokumentace zahrňte níže uvedené informace o systému. Neváhejte a přidejte nějaké doplňky na základě vašich požadavků na server.

  • Název systému
  • Datum instalace
  • Číslo aktiv (hodnoty označující hostitele v obchodním prostředí)
  • IP adresa
  • Adresa MAC
  • Verze jádra
  • Jméno správce

2. Zabezpečte BIOS a zakažte spouštění z USB

Systém BIOS byste měli zabezpečit pomocí vhodného hesla, aby ostatní uživatelé neměli přístup k nastavením nebo je upravovali. Vzhledem k tomu, že přístup k nabídce BIOSu na moderních základních deskách je docela jednoduchý, koncoví uživatelé mohou přepsat stávající nastavení a manipulovat s citlivými konfiguracemi.

Uživatelé mohou navíc pro přístup k datům hostitele používat také zaváděcí systémy. To může také představovat hrozbu pro integritu vašeho serveru. Zařízení USB můžete zcela zakázat pomocí následujícího příkazu.

# echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf

USB bootování lze také vypnout z nabídky BIOS. Toto však není povinné, pokud provozujete osobní pracovní stanici, ke které nemají ostatní uživatelé přístup.

--

3. Šifrovat diskové úložiště

Šifrování diskového úložiště se může z dlouhodobého hlediska ukázat jako velmi výhodné. Zabrání úniku dat v případě krádeže nebo jakéhokoli vniknutí třetí strany. Naštěstí existuje široká škála linuxových šifrovacích nástrojů, díky kterým je to pro administrátory bezproblémové.

Moderní distribuce Linuxu navíc nabízejí správcům šifrování jejich souborového systému Linux během procesu instalace. Měli byste však vědět, že šifrování může ovlivnit propustnost výkonu a pravděpodobně ztíží obnovu dat.

4. Šifrovat datovou komunikaci

Vzhledem k tomu, že data přenášená po síti lze snadno zachytit a analyzovat pomocí nástrojů zabezpečení s otevřeným zdrojovým kódem, šifrování dat by mělo být vaší nejvyšší prioritou během procesu upevňování Linuxu. Mnoho starších nástrojů pro datovou komunikaci nepoužívá správné šifrování, a proto mohou vaše data zranit.

Pro vzdálený přenos dat byste měli vždy používat zabezpečené komunikační služby, jako je ssh, scp, rsync nebo sftp. Linux také umožňuje uživatelům připojit vzdálené souborové systémy pomocí speciálních nástrojů, jako je fuse nebo sshfs. Zkuste k šifrování a podepisování dat použít šifrování GPG. Mezi další nástroje Linuxu, které nabízejí služby šifrování dat, patří OpenVPN, Lighthttpd SSL, Apache SSL a Let’s Encrypt.

5. Vyhněte se starším komunikačním službám

Velké množství starších unixových programů neposkytuje zásadní zabezpečení během přenosu dat. Patří mezi ně FTP, Telnet, rlogin a rsh. Bez ohledu na to, zda zajišťujete svůj linuxový server nebo osobní systém, přestaňte tyto služby nadobro používat.

Pro tento typ úloh přenosu dat můžete použít jiné alternativy. Například služby jako OpenSSH, SFTP nebo FTPS zajišťují, že přenos dat probíhá přes zabezpečený kanál. Některé z nich využívají šifrování SSL nebo TLS pro zpevnění vaší datové komunikace. Pomocí níže uvedených příkazů můžete ze svého systému odebrat starší služby, jako jsou NIS, telnet a rsh.

# yum erase xinetd ypserv tftp-server telnet-server rsh-server
# apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

První příkaz použijte pro distribuce založené na RPM, jako je RHEL a Centos nebo jakýkoli systém, který používá správce balíčků yum. Druhý příkaz funguje na systémech založených na Debianu/Ubuntu.

6. Udržujte jádro a balíčky aktuální

Chcete-li zachovat zabezpečení serveru, měli byste vždy co nejdříve nainstalovat nejnovější aktualizace zabezpečení. To může snížit povrch útoku v případě, že se objeví nějaká zranitelnost ve starších balíčcích nebo modulech jádra. Naštěstí je aktualizace systému velmi snadná a lze ji provést poměrně rychle.

# yum update
# apt-get update && apt-get upgrade

Použijte příkaz yum k aktualizaci systémů RHEL/Centos a příkaz apt pro distribuce založené na Ubuntu/Debianu. Navíc] můžete tento proces automatizovat pomocí úlohy linuxového cron. Navštivte našeho průvodce na Linux crontab, kde se dozvíte více o úlohách cron.

7. Povolit SELinux

SELinux nebo Security Enhanced Linux je bezpečnostní mechanismus, který implementuje různé metody pro řízení přístupu na úrovni jádra. SELinux je vyvinutý společností Red Hat a byl přidán do mnoha moderních distribucí Linuxu. Můžete si to představit jako sadu úprav jádra a nástrojů v uživatelském prostoru. Můžete zkontrolovat, zda je SELinux ve vašem systému povolen nebo ne, pomocí příkazu níže.

# getenforce

Pokud vrátí vynucení, znamená to, že váš systém je chráněn SELinuxem. Pokud výsledek říká permisivní, znamená to, že váš systém má SELinux, ale není vynucován. U systémů, kde je SELinux zcela deaktivován, se vrátí vypnuto. SELinux můžete vynutit pomocí níže uvedeného příkazu.

# setenforce 1

8. Minimalizovat systémové balíčky

Minimalizace systémových balíčků může výrazně zvýšit celkovou bezpečnost vašeho systému. Vzhledem k tomu, že softwarové chyby jsou jednou z hlavních překážek zabezpečení, menší počet balíčků znamená, že povrch zranitelnosti se zmenšuje. Servery navíc obvykle dosáhnou značného zvýšení výkonu, když neobsahují zbytečný bloatware.

# yum list installed
# yum list <package>
# yum remove <package>

Pomocí výše uvedených příkazů yum v Linuxu můžete vypsat seznam nainstalovaného softwaru ve vašem systému a zbavit se toho, který ve skutečnosti nepotřebujete. Pokud používáte systém založený na Debianu/Ubuntu, použijte níže uvedené příkazy.

# dpkg --list
# dpkg --info <package>
# apt-get remove <package>

9. Služby rozdělené sítě

Pokud na svém serveru používáte tradiční monolitické síťové služby, útočník získá přístup k celé vaší infrastruktuře, jakmile zneužije jedinou službu. Řekněme například, že používáte zásobník LAMP, co se stane, když útočník zneužije chybu ve službě Apache? Nakonec eskaluje další služby a pravděpodobně získá plnou kontrolu nad systémem.

Pokud však rozdělíte své síťové služby a použijete jednu síť pro každou službu, bude útok méně úspěšný. Je to proto, že útočník bude muset využít každou síť, než bude moci získat úplný přístup k systému. Chcete-li rozdělit tradiční konfiguraci zásobníku LAMP, postupujte podle níže uvedených kroků.

  • Nakonfigurujte souborový server NFS
  • Nakonfigurujte databázový server MySQL
  • Nakonfigurujte server pro ukládání do mezipaměti Memcached
  • Nakonfigurujte webový server Apache+php5
  • Nakonfigurujte server Lighttpd pro statická data
  • Nakonfigurujte server Nginx pro reverzní proxy

10. Udržujte zásady uživatelských účtů a hesel

Unixové systémy mají obvykle více než jeden uživatelský účet. Váš systém je stejně bezpečný jako uživatelé, kteří jej provozují. Ujistěte se tedy, že konkrétní systém mohou provozovat pouze důvěryhodní lidé. Můžete použít useradd /usermod příkazy pro přidání a údržbu nových uživatelských účtů na vašem počítači.

Vždy vynucujte zásady silných hesel. Silné heslo by mělo mít více než osm znaků a kombinaci písmen, číslic a speciálních znaků. Uživatelé by však měli mít možnost zapamatovat si svá hesla. Kromě toho ověřte, že vaše heslo není náchylné k útokům ze slovníku. Můžete použít modul PAM pro Linux s názvem pam_cracklib.so za to.

11. Nastavte data vypršení platnosti hesla

Další běžnou metodou zpevnění systému Linux je povolení vypršení platnosti hesla pro všechny uživatelské účty. Data vypršení platnosti uživatelských hesel můžete snadno nastavit pomocí změny příkaz v Linuxu. Váš systém požádá uživatele, aby si nastavili nové heslo, jakmile jejich stávající heslo vyprší.

# chage -l mary
# chage -M 30 mary
# chage -E "2020-04-30"

První příkaz uvádí aktuální datum vypršení platnosti hesla pro uživatele mary. Druhý příkaz nastavuje datum expirace po 30 dnech. Toto datum můžete také nastavit ve formátu RRRR-MM-DD pomocí třetího příkazu.

12. Vynutit modul Linux PAM

Sílu hesla můžete zvýšit tím, že zajistíte, aby uživatelé nemohli nastavit nebo používat slabá hesla. Prolomení hesel je může snadno vynutit hrubou silou a získat neoprávněný přístup. Navíc omezte opětovné použití hesla připojením následujícího řádku k Ubuntu/Debian a RHEL/Centos, v tomto pořadí.

# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/common-password
# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/system-auth

Vaši uživatelé nyní nebudou moci znovu použít žádná hesla použitá za posledních 12 týdnů. Pomocí níže uvedených tipů také zcela zakážete slabé přístupové fráze.

# apt-get install libpam-cracklib       # install cracklib support on Ubuntu/Debian

Připojte řádek –

# echo 'password required pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

Nemusíte instalovat cracklib v RHEL/Centos. Jednoduše připojte následující řádek.

# echo 'password required /lib/security/pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

13. Zamknout pokusy o přihlášení po selhání

Správci by měli zajistit, aby se uživatelé nemohli přihlásit na jejich server po určitém počtu neúspěšných pokusů. To zvyšuje celkovou bezpečnost systému zmírněním útoků na hesla. K zobrazení neúspěšných pokusů o přihlášení můžete použít příkaz Linux faillog.

# faillog
# faillog -m 3
# faillog -l 1800

První příkaz zobrazí neúspěšné pokusy o přihlášení uživatelů z databáze /var/log/faillog. Druhý příkaz nastaví maximální počet povolených neúspěšných pokusů o přihlášení na 3. Třetí příkaz nastaví zámek na 1800 sekund nebo 30 minut po povoleném počtu neúspěšných pokusů o přihlášení.

# faillog -r -u <username>

Tento příkaz použijte k odemknutí uživatele, když je mu zakázáno se přihlásit. Maximální počet neúspěšných pokusů o přihlášení pro uživatele root by měl být vysoký, jinak vás útoky hrubou silou mohou zablokovat.

14. Zkontrolujte, zda nejsou prázdná hesla

Uživatelé jsou nejslabším článkem v celkové bezpečnosti systému. Správci se musí ujistit, že žádný uživatel v systému nemá prázdné přístupové fráze. Toto je povinný krok pro správné zpevnění Linuxu. K ověření použijte následující příkaz awk v Linuxu.

# awk -F: '($2 == "") {print}' /etc/shadow

Zobrazí se, pokud jsou na vašem serveru nějaké uživatelské účty, které mají prázdné heslo. Chcete-li zvýšit odolnost serveru Linux, uzamkněte všechny uživatele, kteří používají prázdné přístupové fráze. Můžete to provést pomocí níže uvedeného příkazu z terminálu Linux.

# passwd -l <username>

15. Zakázat přihlášení jako superuživatel

Správci by se neměli často přihlašovat jako root, aby byla zachována bezpečnost serveru. Místo toho můžete použít sudo spouštět příkazy terminálu Linux, které vyžadují oprávnění nízké úrovně. Níže uvedený příkaz ukazuje, jak vytvořit nového uživatele s právy sudo.

# adduser <username> sudo

Můžete také udělit oprávnění sudo stávajícím uživatelům pomocí příkazu níže.

# usermod -a -G sudo <username>

16. Nastavte e-mailová upozornění pro uživatele sudo

E-mailová upozornění můžete nastavit tak, že kdykoli uživatel použije sudo, administrátor serveru dostane upozornění prostřednictvím e-mailu. Upravte soubor /etc/sudoers a přidejte následující řádky pomocí svého oblíbeného textového editoru pro Linux.

# nano /etc/sudoers
mailto "[email protected]"
mail_always on

Nahraďte e-mail svou vlastní poštou nebo e-mailem auditorského personálu. Nyní, pokaždé, když někdo provede úkol na úrovni systému, budete informováni.

17. Secure GRUB Bootloader

Dnes je k dispozici několik zavaděčů Linuxu. GRUB však zůstává nejlepší volbou pro většinu správců díky své rozmanité sadě funkcí. Navíc je to výchozí zavaděč v mnoha moderních distribucích Linuxu. Správci, kteří berou své kroky k posílení Linuxu vážně, by měli pro nabídku GRUB nastavit silné heslo.

# grub-md5-crypt

Zadejte toto na svém terminálu a grub vás požádá o heslo. Zadejte heslo, které chcete nastavit, a pomocí vašeho hesla se vygeneruje zašifrovaný hash. Nyní budete muset tento hash vložit do konfigurační nabídky grub.

# nano /boot/grub/menu.lst
or
# nano /boot/grub/grub.conf

Přidejte vypočítaný hash přidáním níže uvedeného řádku mezi řádky, které nastavují časový limit a úvodní obrázek.

password –md5 <calculated-hash>

18. Ověřte UID uživatelů bez oprávnění root

UID nebo User-ID je nezáporné číslo přidělené uživatelům systému jádrem. UID 0 je UID superuživatele nebo roota. Je důležité zajistit, aby tuto hodnotu UID neměl žádný jiný uživatel než root. Jinak mohou celý systém maskovat jako root.

# awk -F: '($3 == "0") {print}' /etc/passwd

Spuštěním tohoto programu awk můžete zjistit, kteří uživatelé mají tuto hodnotu UID. Výstup by měl obsahovat pouze jeden záznam, který odpovídá rootovi.

19. Zakažte nepotřebné služby

Mnoho služeb a démonů se spouští během zavádění systému. Zakázání těch, které nejsou povinné, může pomoci při upevňování Linuxu a zkrátit dobu spouštění. Protože většina moderních distribucí používá systemd namísto init skriptů, můžete pro vyhledání těchto služeb použít systemctl.

# systemctl list-unit-files --type=service
# systemctl list-dependencies graphical.target

Tyto příkazy zobrazí takovou službu a démony. Konkrétní službu můžete zakázat pomocí níže uvedeného příkazu.

# systemctl disable service
# systemctl disable httpd.service

20. Odeberte X Window Systems (x11)

X Window Systems neboli x11 je de-facto grafické rozhraní pro systémy Linux. Pokud používáte Linux pro napájení vašeho serveru místo vašeho osobního systému, můžete to úplně odstranit. Pomůže zvýšit zabezpečení vašeho serveru odstraněním mnoha nepotřebných balíčků.

# yum groupremove "X Window System"

Tento příkaz yum odstraní x11 ze systémů RHEL nebo Centos. Pokud místo toho používáte Debian/Ubuntu, použijte následující příkaz.

# apt-get remove xserver-xorg-core

21. Zakažte X Window Systems (x11)

Pokud nechcete x11 trvale smazat, můžete tuto službu místo toho zakázat. Tímto způsobem se váš systém zavede do textového režimu namísto GUI. Upravte soubor /etc/default/grub pomocí svého oblíbeného textového editoru pro Linux.

# nano /etc/default/grub

Najděte níže uvedený řádek –

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Nyní jej změňte na –

GRUB_CMDLINE_LINUX_DEFAULT="text"

Nakonec aktualizujte soubor GRUB pomocí –

# update-grub

Posledním krokem je říci systemd, aby nenačítal systém GUI. Můžete to udělat spuštěním níže uvedených příkazů.

# systemctl enable multi-user.target --force
# systemctl set-default multi-user.target

22. Ověřte porty pro naslouchání

Síťové útoky jsou na serverech velmi běžné. Pokud chcete udržovat zabezpečený server, měli byste jednou za čas ověřit naslouchající síťové porty. To vám poskytne základní informace o vaší síti.

# netstat -tulpn
# ss -tulpn
# nmap -sT -O localhost
# nmap -sT -O server.example.com

Pomocí kteréhokoli z výše uvedených příkazů můžete zjistit, které porty naslouchají příchozím požadavkům. Máme staršího průvodce, který poskytuje podrobnou diskusi o základních příkazech nmap v Linuxu.

23. Prozkoumejte IP adresy

Pokud ve své síti najdete nějakou podezřelou IP adresu, můžete ji prozkoumat pomocí standardních příkazů Linuxu. Níže uvedený příkaz používá netstat a awk k zobrazení souhrnu běžících protokolů.

# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

Pomocí níže uvedeného příkazu naleznete další informace o konkrétní IP.

# netstat -nat |grep <IP_ADDR> | awk '{print $6}' | sort | uniq -c | sort -n

Chcete-li zobrazit všechny jedinečné adresy IP, použijte následující příkaz.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq

Odesláním výše uvedeného příkazu do wc získáte celkový počet jedinečných IP adres.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc -l

Pokud se chcete hlouběji ponořit do zabezpečení sítě, navštivte našeho průvodce různými síťovými příkazy Linuxu.

24. Nakonfigurujte IPtables a firewally

Linux nabízí vynikající vestavěnou ochranu proti nechtěným síťovým požadavkům ve formě iptables. Je to rozhraní k mechanismu Netfilter poskytovaného linuxovým jádrem. Pomocí iptables můžete snadno zablokovat konkrétní IP adresy nebo jejich rozsah.

# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Výše uvedený příkaz můžete použít k blokování všech síťových požadavků pro danou IP adresu. Další informace o tomto nástroji naleznete v naší příručce k Linux iptables. Můžete nainstalovat a používat i další výkonné brány firewall.

25. Konfigurace parametrů jádra

Linuxové jádro má spoustu runtime parametrů. Některé z nich můžete snadno vyladit a zlepšit tak zpevnění Linuxu. Příkaz sysctl umožňuje administrátorům konfigurovat tyto parametry jádra. Můžete také upravit soubor /etc/sysctl.conf pro ladění jádra a zvýšení bezpečnosti.

Například přidejte níže uvedený řádek na konec konfigurace sysctl, abyste umožnili restartování systému po 10 sekundách jaderné paniky.

# vim /etc/sysctl.conf
kernel.panic=10

Přidejte níže uvedený řádek k náhodnému uspořádání adres pro stránky mmap báze, haldy, zásobníku a VDSO.

kernel.randomize_va_space=2

Další řádek způsobí, že jádro bude ignorovat chyby ICMP.

net.ipv4.icmp_ignore_bogus_error_responses=1

Můžete přidat spoustu takových pravidel a přizpůsobit je tak, aby vyhovovala vašim požadavkům jádra.

26. Zakázat oprávnění SUID a SGID

SUID a SGID jsou speciální typy oprávnění k souborům v systému souborů Linux. Oprávnění SUID umožňuje ostatním uživatelům spouštět spustitelné soubory, jako by byli vlastníky těchto souborů. Podobně oprávnění SGID uděluje adresářová práva podobná vlastníkovi, ale také dává vlastnictví všech podřízených souborů v adresáři.

To jsou špatné, protože nechcete, aby jiní uživatelé kromě vás měli tato oprávnění na zabezpečeném serveru. Měli byste najít jakýkoli soubor, který má povoleno SUID a SGID, a zakázat je. Následující příkazy zobrazí seznam všech souborů, které mají povoleno oprávnění SUID a SGID.

# find / -perm /4000
# find / -perm /2000

Prozkoumejte tyto soubory řádně a zjistěte, zda jsou tato oprávnění povinná nebo ne. Pokud ne, odeberte oprávnění SUID/SGID. Níže uvedené příkazy odstraní SUID/SGID v tomto pořadí.

# chmod 0755 /path/to/file
# chmod 0664 /path/to/dir

27. Rozdělit diskové oddíly

Souborový systém Linux rozděluje vše do několika částí na základě jejich případu použití. Můžete rozdělit kritické části souborového systému do různých oddílů vašeho diskového úložiště. Například následující souborové systémy by měly být rozděleny do různých oddílů.

  • /usr
  • /home
  • /var &/var/tmp
  • /tmp

Měli byste také vytvořit samostatné oddíly pro různé služby, jako je kořenový server Apache a FTP. To pomáhá izolovat citlivé části vašeho systému. I když uživatel se zlými úmysly získá přístup k některé části systému, nemůže se volně pohybovat celým systémem.

28. Zabezpečené systémové oddíly

Při provádění úloh zpevňování linuxového serveru by správci měli věnovat zvláštní pozornost základním systémovým oddílům. Uživatelé se zlými úmysly mohou využívat oddíly jako /tmp, /var/tmp a /dev/shm k ukládání a spouštění nežádoucích programů. Naštěstí můžete implementovat kroky k zabezpečení vašich oddílů přidáním některých parametrů do souboru /etc/fstab. Otevřete tento soubor pomocí textového editoru Linux.

# vim /etc/fstab

Najděte řádek, který obsahuje umístění /tmp. Nyní přidejte parametry nosuid, nodev, noexec a ro jako seznam oddělený čárkami za výchozími hodnotami.

Nabízejí následující funkce –

  • nosuid – zakázat oprávnění SUID v tomto oddílu
  • nodev -zakázat speciální zařízení na tomto oddílu
  • noexec – zakáže oprávnění ke spuštění pro binární soubory na tomto oddílu
  • ro – pouze pro čtení

29. Povolit diskové kvóty

Diskové kvóty jsou jednoduše limity nastavené správcem systému, které omezují používání souborového systému Linux pro ostatní uživatele. Pokud posilujete zabezpečení Linuxu, je implementace diskových kvót pro váš server povinná.

# vim /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2

Přidejte výše uvedený řádek do /etc/fstab pro povolení diskové kvóty pro souborový systém /home. Pokud již máte řádek /home, upravte jej podle toho.

# quotacheck -avug

Tento příkaz zobrazí všechny informace o kvótě a vytvoří soubory aquota.user a aquota.group v /home.

# edquota <user>

Tento příkaz otevře nastavení kvóty v editoru, kde můžete přiřadit limity kvóty. Můžete nastavit měkký i pevný limit pro velikost diskové kvóty a také počet inodů. Pomocí níže uvedeného příkazu zobrazíte zprávu o využití diskové kvóty.

# repquota /home

30. Zakázat připojení IPv6

IPv6 nebo Internet Protocol verze 6 je nejnovější verze protokolu TCP/IP. Dodává se s rozšířeným seznamem funkcí a mnoha výhodami použitelnosti. IPv4 je však stále preferovaným obchodem pro většinu serverů. Je tedy pravděpodobné, že IPv6 vůbec nepoužíváte. V takových případech byste to měli úplně vypnout.

Odstraněním zbytečného síťového připojení bude zabezpečení vašeho serveru pevnější. Vypnutí IPv6 tedy nabízí rozumné efekty posílení Linuxu. Přidejte níže uvedené řádky do /etc/sysctl.conf pro zakázání připojení IPv6 na úrovni jádra.

# vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Nakonec spusťte níže uvedený příkaz a načtěte změny na vašem serveru.

# sysctl -p

31. Udržujte soubory zapisovatelné slovem

Soubory zapisovatelné slovem jsou soubory, do kterých může zapisovat kdokoli. To může být velmi nebezpečné, protože efektivně umožňuje uživatelům spouštět spustitelné soubory. Navíc vaše linuxové zpevnění není spolehlivé, pokud nenastavíte vhodné lepivé bity. Sticky bit je jeden bit, který, když je nastaven, zabraňuje uživatelům smazat adresáře někoho jiného.

Pokud tedy máte celosvětově zapisovatelné soubory, které mají nastavené lepivé bity, kdokoli může tyto soubory smazat, i když je nevlastní. Toto je další vážný problém a často způsobí zmatek v zabezpečení serveru. Naštěstí můžete všechny takové soubory najít pomocí níže uvedeného příkazu.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Nahraďte argument cesty adresáři, které mohou takové soubory obsahovat. Můžete také začít z kořenového adresáře „/“ vašeho souborového systému, ale jeho spuštění bude trvat dlouho. Jakmile jsou uvedeny, soubory důkladně prozkoumejte a podle potřeby změňte jejich oprávnění.

32. Udržovat soubory Noowner

Soubory Noowner jsou soubory, ke kterým není přidružen žádný vlastník ani skupina. Ty mohou představovat řadu nechtěných bezpečnostních hrozeb. Správci by tedy měli přijmout nezbytná opatření k jejich identifikaci. Mohou je buď přiřadit příslušným uživatelům, nebo je mohou zcela smazat.

Následující příkaz find můžete použít k zobrazení seznamu souborů noowner přítomných v adresáři. V této příručce se dozvíte více o příkazu find v Linuxu.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Důkladně zkontrolujte výsledky, abyste se ujistili, že na vašem serveru nejsou žádné nežádoucí soubory noowner.

33. Ověřte protokoly serveru

Většina unixových systémů používá standard Syslog k protokolování užitečných informací týkajících se jádra, sítě, systémových chyb a mnoha dalších. Tyto protokoly naleznete v umístění /var/log. Lze je zobrazit pomocí několika příkazů terminálového serveru v Linuxu. Například níže uvedený příkaz zobrazí poslední záznamy protokolu o jádře.

# tail /var/log/kern.log

Podobně se můžete podívat na /var/log/auth.log pro informace o ověření.

# less /var/log/auth.log

Soubor /var/log/boot.log poskytuje informace o procesu zavádění systému.

# less /var/log/boot.log

Informace o hardwaru a zařízení můžete také zkontrolovat z /var/log/dmesg.

# less /var/log/dmesg

Soubor /var/log/syslog obsahuje informace protokolu o všem ve vašem systému kromě protokolů ověřování. Měli byste si jej prohlédnout, abyste získali široký přehled o vašem serveru.

# less /var/log/syslog

Nakonec můžete použít journalctl ke kontrole žurnálu systemd. Poskytne spoustu užitečných protokolů.

34. Použijte logrotate Package

Linuxové systémy shromažďují protokoly a ukládají je pro správce. Postupem času se tyto protokoly zvětší a mohou dokonce způsobit značný nedostatek místa na disku. Balíček logrotate je v tomto případě mimořádně užitečný, protože může otáčet, komprimovat a odesílat systémové protokoly. Ačkoli můžete pochybovat o jeho roli, pokud jde o posílení Linuxu, nabízí nesporné výhody.

Konfigurační soubory logrotate specifické pro službu najdete v adresáři /etc/logrotate.d. Globální konfigurace logrotate se provádí pomocí /etc/logrotate.conf. Zde můžete nastavit různé parametry, jako je počet dní pro uchování protokolů, zda je komprimovat nebo ne a tak dále.

35. Nainstalujte Logwatch / Logcheck

Soubory protokolů obvykle obsahují mnoho informací, z nichž mnohé jsou z hlediska posilování Linuxu irelevantní. Naštěstí mohou administrátoři používat balíčky jako Logwatch a Logcheck ke snadnému sledování podezřelých protokolů. Filtrují běžné položky, které se ve vašich protokolech očekávají, a pouze upozorní na neobvyklé položky.

Logwatch je extrémně výkonný analyzátor protokolů, který může správu protokolů mnohem zjednodušit. Je vhodný pro administrátory, kteří hledají all-in-one řešení, protože poskytuje jednotnou zprávu o veškeré aktivitě na jejich serverech.

# sudo apt-get install logwatch
# yum install -y logwatch

Výše uvedené příkazy můžete použít k instalaci na systémy Ubuntu/Debian a RHEL/Centos. Logcheck je ve srovnání s logwatch podstatně jednodušší. Jakmile se objeví nějaké podezřelé protokoly, pošle e-maily administrátorům. Můžete jej nainstalovat do –

# sudo apt-get install logcheck
# yum install -y logcheck

36. Nainstalujte řešení IDS

Jednou z nejlepších metod zpevnění Linuxu pro servery je použití softwaru IDS (Intrusion Detection Software). Naši redaktoři pro tento účel důrazně doporučují prostředí AIDE (Advanced Intrusion Detection Environment). Jedná se o hostitelský IDS, který nabízí mnoho robustních funkcí, včetně několika algoritmů pro zpracování zpráv, atributů souborů, podpory regulárních výrazů, podpory komprese a tak dále.

# apt-get install aide
# yum install -y aide

Můžete nainstalovat na Ubuntu/Debian a RHEL/Centos pomocí výše uvedených příkazů. Navíc byste si měli také nainstalovat rootkit checkers, pokud chcete zachovat zabezpečení Linuxu. RootKits jsou škodlivé programy navržené k převzetí kontroly nad systémem. Některé oblíbené nástroje pro detekci rootkitů jsou Chkrootkit a rkhunter.

37. Zakázat zařízení Firewire/Thunderbolt

Vždy je dobré zakázat co nejvíce periferií. Díky tomu je váš server zabezpečený proti útočníkům, kteří získali přímý přístup k infrastruktuře. Dříve jsme si ukázali, jak deaktivovat zařízení USB. Uživatelé se zlými úmysly však mohou stále připojit moduly firewire nebo thunderbolt.

Firewire je obecný název hardwarového rozhraní IEEE 1394. Používá se pro připojení digitálních zařízení, jako jsou videokamery. Vypněte jej pomocí následujícího příkazu.

# echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf

Podobně rozhraní thunderbolt poskytuje spojení mezi vaším systémem a vysokorychlostními periferiemi, jako jsou úložiště pevných disků, pole RAID, síťová rozhraní a tak dále. Můžete jej deaktivovat pomocí níže uvedeného příkazu.

# echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf

38. Nainstalujte řešení IPS

Software IPS neboli Intrusion Prevention Software chrání síťové servery před útoky hrubou silou. Vzhledem k tomu, že se značný počet uživatelů se zlými úmysly a robotů pokouší získat přístup k vašemu vzdálenému serveru, nastavení správného IPS vám z dlouhodobého hlediska pomůže.

Fail2Ban je jedním z nejoblíbenějších IPS řešení pro systémy podobné Unixu. Je napsán pomocí Pythonu a je dostupný na všech platformách kompatibilních s POSIX. Po celou dobu bude hledat obtěžující síťové požadavky a co nejdříve je zablokuje. Nainstalujte Fail2Ban pomocí níže uvedeného příkazu.

# apt-get install -y fail2ban
# yum install -y fail2ban

DenyHosts je další oblíbené IPS řešení pro zpevnění Linuxu. Ochrání vaše ssh servery před dotěrnými pokusy o hrubou sílu. K instalaci na servery Debian nebo Centos použijte následující příkazy.

# apt-get install -y denyhosts
# yum install -y denyhosts

39. Upevněte OpenSSH Server

OpenSSH je softwarový balík sestávající ze síťových nástrojů, které zajišťují bezpečnou komunikaci přes veřejné sítě. The OpenSSH server has become the de-facto application for facilitating ssh connections. However, the bad guys also know this and they frequently target OpenSSH implementations. So, hardening this application should be a top concern for all Linux sysadmin.

For example- always use keys over password when initiating a new session, disable superuser login, disable empty passwords, limit user access, set up firewalls on port 22, set idle timeouts, use TCP wrappers, limit incoming requests, disable host-based authentication, and so on. You may also employ advanced Linux hardening methods like chrooting OpenSSH.

40. Utilize Kerberos

Kerberos is a computer network authentication protocol that allows access to computerized infrastructures based on tickets. It uses very hard to break cryptographic logic which makes systems supported by Kerberos very secure. Admins can protect their system from eavesdropping attacks and similar passive networking attacks very easily if they use the Kerberos protocol.

Kerberos is being developed by MIT and provides several stable releases. You can download the application from their website. Consult the documentation to see how it works and how you can set it up for your usage.

41. Harden Host Network

Admins should employ strong network policies in order to protect their secure servers against malicious hackers. We have already outlined the necessity of using intrusion detection systems and intrusion prevention systems. However, you can harden your host network further by doing the following tasks.

# vim /etc/sysctl.conf
net.ipv4.ip_forward=0
# disbale IP forwarding

net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
# disable send packet redirects

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
# disable ICMP redirects

net.ipv4.icmp_ignore_bogus_error_responses
# enable bad error message protection

We’ve added comments using the hash symbol to outline the purpose of these network parameters.

42. Utilize AppArmor

AppArmor is a Mandatory Access Control (MAC) mechanism that makes it possible to restrict the usage of system resources based on programs. It allows admins to mandate policies on a program-level rather than users. You can simply create profiles that control the access to network, sockets, file permissions, and so on for your host applications.

Recent Debian/Ubuntu systems come with AppArmor pre-installed. The pre-existing AppArmor profiles are stored in the /etc/apparmor.d directory. You can modify these policies or even add your own policies during the Linux hardening process. Use the below command to view the AppArmor status in your system.

# apparmor_status

43. Secure Web Server

Linux servers are widely used for powering web applications. If you’re using your server for this purpose, you need to harden your server components appropriately. Some of these the PHP runtime, Apache HTTP server, and the Nginx reverse proxy server. Secure your Apache server by adding the below lines in the configuration file.

# vim /etc/httpd/conf/httpd.conf
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Options all -Indexes
Header always unset X-Powered-By
# systemctl restart httpd.service

We’ve prepared a standalone guide on the Nginx server a while ago. Follow the suggestions in that guide to secure your Nginx server. Head over to this documentation for learning the best PHP security practices.

44. Configure TCP Wrappers

TCP wrappers are a host-based network filtering system that allows or denies access to your host services based on pre-set policies. However, for it to work, your host service must be compiled against the libwrap.a library. Some common TCP wrapperd Unix daemons include sshd, vsftpd, and xinetd.

# ldd /sbin/sshd | grep libwrap

This command will notify if a service is supported by TCP wrappers or not. The TCP wrappers system enforces access control using two configuration files, the /etc/hosts.allow and /etc/hosts.deny. For example, add the following lines to /etc/hosts.allow for allowing all incoming requests to the ssh daemon.

# vi /etc/hosts.allow
sshd : ALL

Add the following to /etc/hosts.deny for rejecting all incoming requests to the FTP daemon.

# vi /etc/hosts.deny
vsftpd : ALL

To see more information about the configuration options, consult the tcpd man page, or visit this documentation from FreeBSD.

45. Maintain Cron Access

Linux provides robust automation support by means of cron jobs. In short, you can specify routine tasks using the cron scheduler. Visit our earlier guide on cron and crontab to learn how cron works. Nevertheless, admins must make sure that ordinary users are unable to access or put entries in the crontab. Simply put their usernames in the /etc/cron.deny file to do this.

# echo ALL >>/etc/cron.deny

This command will disable cron for all users in your server except root. To allow access for a specific user, add his username to the /etc/cron.allow file.

46. Disable Ctrl+Alt+Delete

The Ctrl+Alt+Delete key combinations allow users to force reboot many Linux distributions. This can be particularly problematic if you’re managing a secure server. Admins should disable this hotkey in order to maintain proper Linux hardening. You can run the following command to disable this in systemd-based systems.

# systemctl mask ctrl-alt-del.target

If you’re on legacy systems that use init V instead of systemd, edit the /etc/inittab file and comment out the following line by appending a hash before it.

# vim /etc/inittab
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

47. Enable NIC Bonding

NIC or Network Interface Card bonding is a form of link aggregation in Linux. Multiple network interfaces are joined in this method for gaining better resource availability and throughput. If you’re maintaining busy Linux servers, you can use this method for reducing the workload on a single interface and distribute them across multiple interfaces.

The whole process of NIC bonding differs between Debian and RHEL/Centos systems. We will cover them in a standalone guide soon. For now, simply remember that you can achieve better reliability by enabling network bonding.

48. Restrict Core Dumps

Core dumps are memory snapshots that contain crash information of executables. These are created when binaries stop working or crash in simple terms. They contain too much sensitive information about the host system and may threaten your Linux security if fallen into the wrong hands. Thus, it is always a good idea to restrict core dumps on production servers.

# echo 'hard core 0' >> /etc/security/limits.conf
# echo 'fs.suid_dumpable = 0' >> /etc/sysctl.conf
# sysctl -p
# echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile

Run the above commands to restrict cor dumps on your server and increase Linux hardening.

49. Enable Exec Shield

The Exec Shield project was developed by Red Hat for protecting Linux systems against automated remote attacks. It performs particularly well against various buffer overflow-based exploits. You can enable exec shield for your Linux server by running the below commands.

# echo 'kernel.exec-shield = 1' >> /etc/sysctl.conf
# echo 'kernel.randomize_va_space = 1' >> /etc/sysctl.conf

This method will work on both Debian and RHEL systems.

50. Create Regular Backups

No matter how many Linux hardening methods you apply, you need to be always prepared for unforeseen problems. Backing up your workstation or server can prove extremely beneficial in the long run. Thankfully, a large number of backup utility for Linux exists to make system backups easier.

Moreover, you must automate the backup process and store your system data safely. Employing disaster management and recovery solutions can be also useful when it comes to data management.

Konec myšlenek

Although Linux is much more secure when compared to home operating systems, admins still need to maintain a set of Linux hardening policies. We have compiled this guide with many of the best practices used by Linux security experts. You should try to employ as many of them as possible. However, do not apply these without understanding their effect on your system. You need to have a foolproof plan as well as a good understanding of server security to keep your system safe from malicious users. Hopefully, we provided you the essential tips you were looking for.


Linux
  1. 8 tipů pro příkazový řádek Linuxu

  2. Jaké je nejlepší VPS:Windows nebo Linux?

  3. Osvědčené postupy zabezpečení Wordpress v systému Linux

  1. 10 nejlepších aplikací pro rychlé zasílání zpráv pro Linux

  2. Hyper – Nejlepší terminálová aplikace pro Linux

  3. Nejlepší webové linuxové servery

  1. Tipy pro použití příkazu top v Linuxu

  2. Jaká je nejlepší linuxová distribuce v Data Science?

  3. Linux nebo Windows – bezpečnostní problém