Distribuce SuSE Linux detailněji - 3. část

Supportní databáze (pjanik_permissions)
Platí pro

SuSE Linux: Od verze 7.0

Úvod

Ve třetí části našeho seriálu o distribuci SuSE Linux si ukážeme mechanismus, který používá tato distribuce k ochraně přístupových práv jednotlivých souborů.

Distribuce SuSE Linux je stejně jako většina moderních distribucí založena na systému RPM, což umožňuje jednoduchou správu souborů patřících k jednotlivým balíčkům. Každý RPM balík může definovat, jaká přístupová práva budou mít soubory v něm obsažené. Tento mechanismus byl shledán jako ne zcela dostačující, a proto společnost SuSE resp. její vývojáři navrhli nový systém (resp. nadstavbu systému současného), který odlišuje několik úrovní zabezpečení a dokonce umožňuje systémovému administrátorovi nadefinovat další úrovně zabezpečení.

Konfigurujeme přístupová práva

Jak je již u distribuce SuSE Linux zvykem, je možné vše konfigurovat v centrálním konfiguračním souboru /etc/rc.config. Ohledně přístupových práv zde můžeme nalézt dvě proměnné:
#
# SuSEconfig can call chkstat to check permissions and ownerships for
# files and directories (using /etc/permissions).
# Setting to "set" will correct it, "warn" produces warnings, if
# something strange is found. Disable this feature with "no".
#
CHECK_PERMISSIONS="set"
#
# SuSE Linux contains two different configurations for
# chkstat. The differences can be found in /etc/permissions.secure
# and /etc/permissions.easy. If you create your own configuration
# (e.g. permissions.foo), you can enter the extension here as well.
#
# (easy/secure local foo whateveryouwant).
#
PERMISSION_SECURITY="easy local"
Proměnná PERMISSION_SECURITY uvádí seznam úrovní zabezpečení, které se mají aplikovat na systém. O definici každé úrovně si můžeme něco přečíst níže v odstavci Bezpečnostní úrovně.

Druhá proměnná (CHECK_PERMISSIONS) definuje chování v případě, že skript kontrolující přístupová práva narazí na nějaké nesrovnalosti. Hodnotou zde může být set (skript nastaví správná přístupová práva), warn (skript pouze varuje) nebo cokoli jiného, čímž bude kontrola přístupovách práv úplně vypnuta.

Skript chkstat

Veškeré činnosti spojené s kontrolou přístupových práv zajišťuje skript chkstat, který je volán ze skriptu SuSEconfig:
...
  for PERMFILE in $PERMISSIONS_FILES ; do
      if test "$CHECK_PERMISSIONS" = "set" ; then
      /usr/bin/chkstat -set $PERMFILE
      elif test "$CHECK_PERMISSIONS" = "warn" ; then
      /usr/bin/chkstat $PERMFILE
      fi
  done
...
Proměnná PERMISSIONS_FILES obsahuje seznam souborů z adresáře /etc/permissions.d/, z nichž každý obsahuje seznam souborů a uživatelských práv (včetně vlastníka a skupiny). Příkladem může být soubor /etc/permissions.d/postfix, který obsahuje pouze jediný řádek:
/usr/sbin/sendmail                    root.root       0555
Program sendmail tedy podle autora balíčku má mít následující přístupová práva:
-r-xr-xr-x   1 root     root        91201 Aug  6 08:18 /usr/sbin/sendmail
Pokud systémový administrátor nastavil proměnnou CHECK_PERMISSIONS na hodnotu set, bude při každém spuštění skriptu SuSEconfig nastavení těchto přístupových práv obnoveno:
...
Executing /sbin/conf.d/SuSEconfig.xfntscl2...
Executing /sbin/conf.d/SuSEconfig.ypclient...
Processing index files of all manpages...
Checking permissions and ownerships - using /etc/permissions.d/postfix...
setting /usr/sbin/sendmail to root.root 0555.
Finished.
Pokud nastavil tuto proměnnou pouze na hodnotu warn, bude administrátor na případnou změnu přístupových práv pouze upozorněn:
...
Executing /sbin/conf.d/SuSEconfig.xfntscl2...
Executing /sbin/conf.d/SuSEconfig.ypclient...
Creating /usr/share/info/dir...
Processing index files of all manpages...
Checking permissions and ownerships - using /etc/permissions.d/postfix...
/usr/sbin/sendmail should be root.root 0555.
Finished.

Bezpečnostní úrovně

SuSE Linux 7.0 má standardně nadefinovány tři bezpečnostní úrovně: easy, secure a paranoid. Definice těchto úrovní je uložena v souborech /etc/permissions.úroveň.

Bezpečnostní úroveň easy je vhodné použít především tam, kde na bezpečnosti příliš nezáleží, kdy počítač např. není připojen do sítě. Tato úroveň poskytuje pouze základní ochranu a je poměrně benevolentní. Např. mají všichni uživatelé povolený zápis na disketu apod.

Úroveň secure je určena pro systémy, kde záleží na bezpečnosti a administrátor systému dodržuje politiku "zakaž vše a teprve potom povol, co je nutné". V této bezpečnostní úrovni je výrazně omezen počet programů, které mají nastaven suid bit. Např. program zgv, který slouží k prohlížení obrázků pod knihovnou svgalib, tento bit nebude mít nastaven.

Paranoikům je určena bezpečnostní úroveň paranoid, jejíž definice je obsažena v souboru /etc/permissions.paranoid. Pokud systémový administrátor nastaví tuto bezpečnostní úroveň, nevěří nikomu. Jenom uživatelé ve skupině xok budou moci spustit X Window System apod.

Administrátor si navíc může samozřejmě nadefinovat další bezpečnostní úrovně jednoduchým vytvořením definice této úrovně (viz /etc/permissions.local).

Doporučení

Jakou bezpečnostní úroveň tedy nastavit? Obecné doporučení samozřejmě neexistuje. Pokud provozujete server na Internetu, je lépe zvážit nastavení jiné bezpečnostní úrovně než implicitní easy. Samozřejmě pokud máte na svém domácím počítači SuSE Linux a věříte ostatním uživatelům, kteří mají k počítači přístup, není důvod, proč měnit bezpečnostní úroveň například na paranoid :-) Pro lokální programy doporučuji spíše upravit bezpečnostní úroveň local a použít některou ze standardních bezpečnostních úrovní.

Závěr

V třetím díle seriálu o distribuci SuSE Linux jsme si ukázali bezpečnostní mechanismy týkající se přístupových práv.

V příští části se budeme věnovat tzv. hardening skriptu harden_suse. Pokud se chcete dozvědět, co to je, vraťte se k nám na další díl tohoto seriálu.


Viz také:
o Distribuce SuSE Linux detailněji - 2. část
o Distribuce SuSE Linux detailněji - 1. část

Klíčová slova: PRáVA, PERMISSIONS, RPM, BEZPEčNOST, SECURITY, CHKSTAT

Kategorie: Dokumentace

SDB-pjanik_permissions, Copyright SuSE Linux AG, Nürnberg, Germany - Verze: 05. Jan 2001
SuSE Linux AG - Poslední změnu: 26. Jan 2001 provedl pjanik (sdb_gen 1.40.0)