23 Varnostni nasveti za utrjevanje strežnika CentOS - 2. del


V nadaljevanju prejšnje vadnice o Zaščiti in utrjevanju strežnika CentOS bomo v tem članku razpravljali o drugih varnostnih nasvetih, ki bodo predstavljeni na spodnjem kontrolnem seznamu.

  1. 20 nasvetov za varovanje strežnika CentOS - 1. del

21. Onemogočite neuporabne ukaze SUID in SGID

Če so bitovi setuid in setgid nastavljeni na binarne programe, lahko ti ukazi izvajajo naloge z drugimi pravicami uporabnikov ali skupin, kot so korenski privilegiji, ki lahko izpostavijo resne varnostne težave.

Pogosto lahko napadi prekoračitve medpomnilnika izkoristijo take izvršljive datoteke, da zaženejo nepooblaščeno kodo s pravicami uporabnika korenskega uporabnika.

# find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Če želite izključiti nastavitveni bit, izvedite spodnji ukaz:

# chmod u-s /path/to/binary_file

Če želite izključiti nastavljeni bit, zaženite spodnji ukaz:

# chmod g-s /path/to/binary_file

22. Preverite neznane datoteke in imenike

Datoteke ali imenike, ki niso v lasti veljavnega računa, je treba izbrisati ali dodeliti z dovoljenji uporabnika in skupine.

Izdajte spodnji ukaz find za seznam datotek ali imenikov brez uporabnika in skupine.

# find / -nouser -o -nogroup -exec ls -l {} \;

23. Seznam svetovnih datotek

Shranjevanje datoteke, ki jo je mogoče zapisovati v sistem, je lahko nevarno, ker jih lahko kdor koli spremeni. Izvedite spodnji ukaz, da prikažete datoteke, na katere je mogoče zapisati besede, razen povezav Symlinks, ki jih je vedno mogoče zapisati po vsem svetu.

# find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Ustvarite močna gesla

Ustvarite geslo z najmanj osmimi znaki. Geslo mora vsebovati številke, posebne znake in velike črke. Uporabite pwmake za generiranje gesla 128 bitov iz/dev/urandom datoteke.

# pwmake 128

25. Uporabite strogo politiko gesla

Prisilite sistem, da uporablja močna gesla, tako da v datoteko /etc/pam.d/passwd dodate spodnjo vrstico.

password required pam_pwquality.so retry=3

Če dodamo zgornjo vrstico, vneseno geslo ne sme vsebovati več kot 3 znakov v monotonem zaporedju, na primer abcd, in več kot 3 enake zaporedne znake, na primer 1111.

Če želite uporabnike prisiliti, da uporabljajo geslo z najmanj 8 znaki, vključno z vsemi razredi znakov, preverite moč za zaporedja znakov in zaporedne znake, dodajte v datoteko /etc/security/pwquality.conf naslednje vrstice.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Uporabite staranje gesel

Ukaz chage se lahko uporablja za staranje uporabniškega gesla. Če želite nastaviti, da uporabniško geslo poteče v 45 dneh, uporabite naslednji ukaz:

# chage -M 45 username

Če želite onemogočiti čas poteka gesla, uporabite ukaz:

# chage -M -1 username

Sproži takojšen potek gesla (uporabnik mora spremeniti geslo ob naslednji prijavi) z zagonom naslednjega ukaza:

# chage -d 0 username

27. Zakleni račune

Uporabniške račune lahko zaklenete z izvajanjem ukaza passwd ali usermod:

# passwd -l username
# usermod -L username

Za odklepanje računov uporabite možnost -u za ukaz passwd in možnost -U za usermod.

28. Preprečite dostop do lupine računov

Če želite sistemskemu računu (navadnemu računu ali računu storitve) preprečiti dostop do lupine bash, spremenite korensko lupino v/usr/sbin/nologin ali/bin/false v datoteki/etc/passwd tako, da izdate spodnji ukaz:

# usermod -s /bin/false username

Če želite spremeniti lupino pri ustvarjanju novega uporabniškega vprašanja, uporabite naslednji ukaz:

# useradd -s /usr/sbin/nologin username

29. Zakleni navidezno uporabniško konzolo z vlock

vlock je program, ki se uporablja za zaklepanje ene več sej na konzoli Linux. Namestite program in začnite zaklepati terminalsko sejo tako, da zaženete spodnje ukaze:

# yum install vlock
# vlock

30. Uporabite centraliziran sistem za upravljanje računov in preverjanje pristnosti

Uporaba centraliziranega sistema za preverjanje pristnosti lahko močno poenostavi upravljanje in nadzor računa. Storitve, ki lahko ponujajo to vrsto upravljanja računov, so IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS ali Winbind.

Nekatere od teh storitev so privzeto zelo zaščitene s kriptografskimi protokoli in kriptografijo s simetričnimi ključi, kot je Kerberos.

31. Prisilno namestitev USB medijev samo za branje

Z uporabo pripomočka blockdev lahko vsilite vse odstranljive medije, da jih lahko namestite samo za branje. Na primer, v imeniku /etc/udev/rules.d/ ustvarite novo konfiguracijsko datoteko udev z imenom 80-readonly-usb.rules z naslednjo vsebino:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Nato uporabite pravilo s spodnjim ukazom:

# udevadm control -reload

32. Onemogočanje root dostopa prek TTY

Če želite preprečiti, da bi korenski račun izvedel sistemsko prijavo prek vseh konzolnih naprav (TTY), izbrišite vsebino datoteke securetty, tako da kot root vnesete naslednji ukazni terminalski poziv.

# cp /etc/securetty /etc/securetty.bak
# cat /dev/null > /etc/securetty

Ne pozabite, da to pravilo ne velja za seje prijave SSH
Če želite preprečiti root prijavo prek SSH, uredite datoteko/etc/ssh/sshd_config in dodajte spodnjo vrstico:

PermitRootLogin no

33. Z ACL-ji POSIX razširite sistemska dovoljenja

Seznami nadzora dostopa lahko opredelijo pravice dostopa za več kot le enega uporabnika ali skupino in lahko določijo pravice za programe, procese, datoteke in imenike. Če v imeniku nastavite ACL, bodo njegovi potomci samodejno podedovali enake pravice.

Na primer,

# setfacl -m u:user:rw file
# getfacl file

34. SELinux nastavite v Enforce Mode

Izboljšava SELinux za jedro Linuxa izvaja politiko obveznega nadzora dostopa (MAC), ki uporabnikom omogoča določitev varnostne politike, ki zagotavlja natančna dovoljenja za vse uporabnike, programe, procese, datoteke in naprave.

Odločitve o nadzoru dostopa jedra temeljijo na celotnem varnostnem kontekstu in ne na overjeni identiteti uporabnika.

Če želite pridobiti status Selinuxa in uveljaviti pravilnik, zaženite spodnje ukaze:

# getenforce
# setenforce 1
# sestatus

35. Namestite dodatne pripomočke SELinux

Namestite paket policycoreutils-python, ki zagotavlja dodatne pripomočke Python za delovanje SELinux: audit2allow, audit2why, chcat in semanage.

Če želite prikazati vse logične vrednosti skupaj s kratkim opisom, uporabite naslednji ukaz:

# semanage boolean -l

Če želite na primer prikazati in nastaviti vrednost httpd_enable_ftp_server, zaženite spodnji ukaz:

# getsebool httpd_enable_ftp_server

Če želite, da vrednost logične vrednosti vztraja pri ponovnem zagonu, določite možnost -P za setsebool, kot je prikazano na naslednjem primeru:

# setsebool -P httpd_enable_ftp_server on

36. Uporabite centraliziran dnevniški strežnik

Konfigurirajte demon rsyslog za pošiljanje občutljivih dnevniških sporočil pripomočkov na centraliziran dnevniški strežnik. Dnevniške datoteke spremljajte tudi s pomočjo pripomočka logwatch.

Pošiljanje dnevniških sporočil na oddaljeni strežnik zagotavlja, da po ogrožanju sistema zlonamerni uporabniki ne morejo popolnoma skriti svoje dejavnosti in na oddaljenih dnevniških datotekah vedno pustijo sledi.

37. Omogočite računovodstvo procesov

Omogočite računovodstvo procesov z namestitvijo pripomočka psacct in z ukazom lastcomm prikažite informacije o predhodno izvedenih ukazih, kot so zabeleženi v sistemski računovodski datoteki, in sa za povzemanje informacij o predhodno izvedenih ukazih, kot so zabeleženi v sistemski računovodski datoteki.

38. Utrjevanje /etc/sysctl.conf

Za zaščito sistema uporabite naslednja pravila parametrov jedra:

net.ipv4.conf.all.accept_source_route=0
ipv4.conf.all.forwarding=0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Onemogočite sprejemanje in pošiljanje preusmerjenih paketov ICMP, razen če je to izrecno potrebno.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.rp_filter=2

Prezri vse zahteve za odmev ICMP (za omogočanje nastavljeno na 1)

net.ipv4.icmp_echo_ignore_all = 0

39. Uporabite storitve VPN za dostop do svojih prostorov prek nezaščitenih javnih omrežij

Vedno uporabljajte storitve VPN za operaterje za oddaljeni dostop do prostorov LAN prek interneta. Takšne vrste storitev je mogoče konfigurirati z brezplačno odprtokodno rešitvijo, kot je Epel Repositories).

40. Opravite zunanje skeniranje sistema

Ocenite varnost sistema zaradi ranljivosti, tako da sistem pregledate z oddaljenih točk prek vašega LAN-a z uporabo posebnih orodij, kot so:

  1. Nmap - omrežni pregledovalnik 29 Primeri ukaza Nmap
  2. Nessus - varnostni skener
  3. OpenVAS - uporablja se za iskanje ranljivosti in za celovito upravljanje ranljivosti.
  4. Nikto - odličen skener za skeniranje spletnih ranljivosti v Linuxu s skupnim vmesnikom za prehod (CGI)

41. Notranji sistem zaščitite

Uporabite notranjo sistemsko zaščito pred virusi, rootkiti, zlonamerno programsko opremo in kot dobro prakso namestite sisteme za odkrivanje vdorov, ki lahko zaznajo nedovoljeno dejavnost (napadi DDOS, skeniranje vrat), kot so:

  1. AIDE - Napredno okolje za odkrivanje vdorov - http://aide.sourceforge.net/
  2. ClamAV - Antivirusni skener https://www.clamav.net
  3. Rkhunter - Rootkit Scanner
  4. Lynis - orodje za nadzor in pregledovanje varnosti za Linux
  5. Tripwire - varnost in celovitost podatkov http://www.tripwire.com/
  6. Fail2Ban - preprečevanje vdorov v omrežje
  7. OSSEC - (HIDS) Sistem za zaznavanje vdorov na osnovi gostitelja http://ossec.github.io/
  8. Mod_Security - zaščitite napade Brute Force ali DDoS

42. Spreminjanje spremenljivk uporabniškega okolja

Dodajte obliko datuma in ure za shranjevanje izvrševanja ukazov tako, da izdate spodnji ukaz:

# echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Prisilite takoj zapisati HISTFILE vsakič, ko vnesete ukaz (namesto odjave):

# echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Omejite časovno omejitev prijave. Samodejno ruši lupino, kadar v času mirovanja ne izvaja nobene dejavnosti. Zelo koristno za samodejno prekinitev sej SSH.

# echo ‘TMOUT=120’ >> .bashrc

Uporabite vsa pravila tako, da izvedete:

# source .bashrc

43. Varnostne kopije podatkov

Uporabite posnetke LVM itd., Če želite shraniti kopijo sistema, po možnosti zunaj mesta, v primeru okvare sistema.

Če pride do ogrožanja sistema, lahko obnovite podatke iz prejšnjih varnostnih kopij.

Nenazadnje ne pozabite, da ne glede na to, koliko varnostnih ukrepov in protiukrepov sprejmete, da bi zaščitili svoj sistem, ne boste nikoli 100% popolnoma varni, če je vaša naprava priključena in vklopljena.