Linux hálózati adminisztráció Tantárgykód: MIN7K0IN-T Göcs László főiskolai tanársegéd Neumann János Egyetem GAMF Műszaki és Informatikai Kar Informatika Tanszék 4. 2017-18. tanév 1. félév
Kiselőadások megtartása 1. Költséges szoftverek helyettesítése ingyenes, Linux programokkal. 2. Hétköznapi eszközök Linux szoftverrel. 3. Tárhely szolgáltatás Linux alkalmazásokkal. 4. Tűzfal készítése Linux szerverrel. 5. OpenVPN Az október 25-i előadáson lehetőség van kiselőadás tartása. Az előadás értékelve lesz, maximálisan 6 pont kapható rá, mely az elméleti ZH-ba számít bele. A téma kiválasztását követően egyeztessenek az előadás tartalmát illetően. Jelentkezési határidő: 2017. október 11.
Szkriptek Valójában mindegyik egy szimbolikus link a /etc/init.d könyvtár egy szkriptjére A szimbolikus hivatkozás kezdete (K vagy S) alapján az upstart az /etc/init.dben meghívott szkript végére start-ot vagy stop-ot tesz
Démonok manuális kezelése A szkriptek az /etc/init.d/ könyvtárban vannak Feladatuk a démonok indítása, leállítása, újraindítása, stb. Használat: /etc/init.d/script parancs Parancs: start : szolgáltatás indítása stop : szolgáltatás leállítása restart : szolgáltatás újraindítása (stop, majd start)
try-restart v. condrestart : újraindítja, de csak akkor, ha már aktív force-reload : a folyamat újraolvassa a konfigurációs állományát - ha erre nem képes, akkor újraindul reload : a folyamat újraolvassa a konfigurációs állományát - ha erre nem képes, akkor nem csinál semmit status : a folyamat állapotát ellenőrzi. Eredmény: 0 : a démon fut 1 : a démon nem fut, de létezik a /var/run/xxx.pid állomány (itt tároljuk a démonhoz tartozó PID-t) 2 : a démon nem fut, de létezik a /var/lock/xxx.lock állomány 3 : a démon nem fut 4 : a démon állapota ismeretlen
probe : megvizsgálja az újraindítás szükségességét - amennyiben szükséges, kiírja az indító-szkriptet Nem minden szkript ismer minden parancsot Egyes szkriptek más parancsokat is elfogadnak Egyes szolgáltatásokat nem a fenti módon, hanem a service parancssal kell indítani. Pl. sudo service network-manager restart sudo service bind9 stop
A Linux fájlrendszer kezelés A VFS a rendszerhívásokat átalakítja az adott fájlredszerre nézve specifikus hívássá Kezelt fájlrendszerek: Second Extent (ext2) ext3, ext4, ReiserFS MSDOS: VFAT Minix AFF (Amiga Fast FS) ufs & s5fs (szokásos UNIX) HPFS (OS/2) NTFS (NT) proc
A proc fájlrendszer 1 állapot információkat szolgáltat a kernelről és a processzekről minden processzhez tartozik /proc/pid jegyzék ebben a "fájlok", a pid-ű processz státusát adják további "fájlok" (pl: loadavg, uptime, meminfo, kmsg, version, cpuinfo, mounts stb.) a kernel állapotról informálnak
A proc fájlrendszer 2 nem tartozik hozzá eszköz (nodev típus) készíthetünk róla (és aljegyzékeiről) az ls paranccsal listát fájljait kiírathatjuk
Név konvenció kis és nagy betű különböző elvben 128 karakter kerüljük a speciális karaktereket:,#,stb. "." a név előtt: rejtett állomány
Állománytípusok könyvtár (d) szimbolikus link (l) közönséges állomány (plain file "-"), speciális állomány blokk típusú (b) karakteres típusú (c) socket (s) gyakorlat: ls la parancs használata
Közönséges állományok byte-ok közvetlenül címezhető sorozata szöveges bináris
Speciális állományok fizikai berendezések az olvasási és írási kérések eredménye a megfelelő készülék aktivizálódása ls la /dev more
Könyvtárállomány... állománynév + i-csomópont (i-node, i-bög) címe alkönyvtárnév + i-csomópont címe szimbolikus keresztkapcsolat + elérési út hard keresztkapcsolat + i-csomópont címe
i-csomópont (i-node) fizikai elhelyezkedés méret tulajdonos védelmi kód módosítási/létrehozási idő
i-csomópont szerkezet 0 1 2 3 4 5 6 7 0 Type/perm.User (uid) File size 8 Access time Time of creation 16Time of modification Time of deletion 24Group (gidlink countnumber of blocks 32File attributes Reserved 40 12 direct blocks pointer 88One-stage indirect blotwo-stage indirect bl 96Three-stage indirect bfile version 104File ACL Directory ACL 112Fragment address 120
Az i-csomópont szerkezete file1 Könyvtár linkek száma gid fájl méret i-bög mode & védelem tulajdonos uid Adat blokk Utolsó hozzáférés Utolsó módosítás Készítési idő
Keresztkapcsolat (link) szimbolikus (szoft) különböző adathozdozók között is részletes listázásnál állománynév helyett név --> eredetihely/eredetinév ln s eredetihely/eredetinév újnév merev (hard) csak egy adathordozón belül részletes listázásnál mintha ténylegesen ott lenne + az eredeti helyen eggyel nő a számláló ln eredetihely/eredetinév újnév
/usr/joe/foo Hard link-soft link > ln /usr/joe/foo /usr/sue/bar /usr/joe foo 2 2. i-node > ln -s /usr/joe/foo /usr/sue/bar /usr/joe foo 2 2. i-bög 16. i-node link=2 /usr/sue /usr/sue bar 16 bar 2 hard link symbolic link
mkdir delelott cd delelott ln s../billkiosztas szimbolikus ls la cat szimbolikus more ls la../billkiosztas ln../billkiosztas merev ls la../billkiosztas ls la
rm../billkiosztas ls la rm merev ls la cat szimbolikus more mc
Könyvtárak megosztása a hálózaton
Könyvtárak megosztása a hálózaton NFS Samba WebDAV
NFSv3 Network File System Szerver-kliens modell Szerver exportál Kliens importál Egy gép mindkettő lehet
NFS szerver telepítése sudo apt-get install nfs-kernel-server portmap Szükséges eszközök. RPC portmapper (rpc.portmap) (apt-get install portmap) RPC mount-daemon (rpc.mountd) RPC NFS daemon (rpc.nfsd)
NFS szerver Exportált könyvtárak: /etc/exports Minden könyvtár új sorban, mely gépek (teljes név, * és? használható) milyen jogosultságokkal csatolhatják fel /home 192.168.1.0/255.255.255.0(rw) /segedlet belzebub(rw) pandora(ro) /ubuntu *(ro,sync,no_root_squash)) Az állomány megváltoztatása után: service nfs-kernel-server restart
Hozzáférés szabályozás ro read-only rw read-write root_squash a kliens rootja semmikép nem kaphat root jogokat erre a fájlrendszerre sync a szerver szinkron módon hajtja végre a változtatásokat (csak a végrehajtás után jelez vissza) link_absolute a szimbolikus hivatkozások változatlanok maradnak subtree_check a kérés beérkezése után a szerver leellenőrzi, hogy a cél a fájlrendszeren belül van-e illetve az exportált könyvtárstruktúrában található-e biztosági probléma: a kliens kap egy leírót és infót a fájlrendszerről, ezért csak ro könyvtárakra! no_subtree_check rw könyvtárakra
NFS kliens Célszerű telepíteni az nfs-common és a portmap csomagokat sudo apt-get install nfs-common portmap Könyvtárrendszer importálása parancssorból mount paranccsal csatolható fel: sudo mount szerver.valami.hu:/home/megosztas/segedlet /home/segedlet sudo mount t nfs bilbo:/home /home /etc/fstab-ba beépíthető automatikus felcsatolás szerver.valami.hu:/segedlet /home/segedlet nfs rw,hard,intr 0 0
Paraméterek hard merev befűzés, ilyenkor a kernel hívásból nincs visszatérés, amíg a kiszolgáló újra elérhetővé nem válik (kill) soft lágy befűzés, az NFS ügyfél jelzi a kliensnek a hibát és leáll hard,intr merev befűzés, de Ctrl+C-vel leállítható 0 0 az NFS nem használja ezeket a paramétereket
Samba v3 Server Message Block A Windows és az OS/2 használja az erőforrások megosztásánál Hasonlít az NFS-re Nagyobb hálózatokhoz továbbfejlesztett változata a CIFS (Common Internet File System)
Megosztás és szolgáltatás Megosztás: olyan erőforrás, amit egy számítógép az SMB-n keresztül a munkacsoport többi számítógépe számára elérhetővé tesz hivatkozás a szolgáltatásra: \\gépnév\megosztásnév \\belzebub\segedlet
Samba Samba: SMB/CIFS GNU GPL implementáció Fájl- és nyomtatómegosztás, integráció Windows tartományba, (NT) tartományvezérlő is lehet Samba kliens: feladata a Windowsos megosztások elérése Linuxos (Unixos) gépről Samba szerver: feladata Linuxos (Unixos) könyvtárak és nyomtatók megosztása Windowsos gépek számára
Windows megosztás elérése Linux alól 1 Samba kliens program karakteres felület ftp-re emlékeztető működés Egy adott gépen elérhető megosztások listája: smbclient L <a windowsos gép netbios neve> -N smbclient L tanterem -N -N jelszó nélküli lekérdezés
Windows megosztás elérése Linux alól 2 Csatlakozás egy megosztáshoz: smbclient //<netbiosnév>/<megosztásnév N ha a megosztáshoz mégis jelszó kell, akkor hibaüzenet -N-t elhagyva rákérdez a jelszóra -U felhasználónév
Windows megosztás elérése Linux alól 3 Windows megosztás felcsatolása sudo apt-get install smbfs sudo smbmount megosztás csatolási_pont o username=felhasználónév (rákérdez a jelszóra) Csatolás megszüntetése sudo smbumount csatolási pont
Windows megosztás elérése Linux alól 4 Automatikus felcsatolás a gép indulásakor az /etc/fstab állományba egy új sor: megosztás csatolásipont smbfs username=felhasználónév,password=jelszó,umask=000 0 0 //tanterem/9-labor$ /mnt/9-labor
Samba szerver GNU Public License könyvtárrendszer és nyomtatók közzététele Windowsos és Linuxos kliensek számára sudo apt-get install samba smbfs konfigurálás: /etc/samba/smb.conf swat program (http://localhost:901) SMB (CIFS) protokollt valósít meg TCP/IP felett sudo /etc/init.d/samba restart http://www.samba.org/
Samba szerver konfigurálása minden felhasználót be kell jegyezni csak a Linuxban (/etc/passwd) már bejegyzett felhasználókat lehet felvenni security=user unix password sync=yes [labor] comment=labor writeable=yes path=/mnt/9-labor public=yes read list= jcsaba, @adminok write list=jcsaba, @adminok Konfigurációs állomány tesztelése: testparm
Felhasználókezelés smbpasswd -a felhasználónév felhasználó felvétele + jelszóváltoztatás smbpasswd -x felhasználónév felhasználó törlése smbpasswd -d felhasználónév felhasználó tiltása smbpasswd -e felhasználónév felhasználó engedélyezése Felhasználói adatbázisok: /var/lib/samba
Samba 4 Általános jellemzők Windows hálózatok felhasználó és erőforrás menedzsmentjéhez készült nyílt forráskódú szoftver Teljes kompatibilitás az Active Directory-val AD Domain Controller-ként konfigurálható, WS 2012-vel is Samba.org aktuális verzió: 4.3 Ubuntu 14.04 tárolóban megvan Kliens oldalon SMB2/SMB3 támogatás Titkosított fájlátvitel (SMB3) Csoportházirend (GPO) támogatás FSMO szerepkörök támogatása
Flexible Single Master Operation (FSMO) roles Schema master Domain naming master RID master PDC emulator Infrastructure master Bármelyik DC-re átmozgatható szerepkörök
Samba szolgáltatások Szolgáltatások Belső DNS szerver LDAP Kerberos (Heimdal típusú, nem támogatja a MIT Kerberos-t) Megj.: A DNS és NetBIOS tartománynév nem változtatható OpenLDAP vagy más LDAP implementációk használata nem támogatott (Samba saját LDAP implementációt használ)
Előfeltételek Rögzített IP cím /etc/hosts-ban FQDN 127.0.0.1 localhost.localdomain localhost 192.168.5.13 DC.gyakorlat.kefo.huDC Korábbi típusú Samba nem lehet a gépen (még a kapcsolódó adatbázisok sem) A DC a tartomány elsődleges névszervere kell legyen /etc/network/interfaces /etc/resolv.conf dns-nameservers 192.168.5.13 dns-search gyakorlat.kefo.hu Ha ACL-t akarunk használni, akkor a Linux kernelnek és a használt fájlrendszernek támogatni kell a kiterjesztett attríbútumokat (attr és acl csomagok) Ext4 támogatja
Ajánlás A DC-t ne használjuk fájlszerverként A fájlszerver legyen külön tag szerver Már középvállalatnál is legyen egynél több DC Használjunk NTP-t (a Kerberos legfeljebb 5 perces időeltérést engedélyez a klienseknek, egyébként megtagadja a hitelesítést/hozzáférést), ACL-t, XATTRt, QUOTA-t A belső DNS helyett használható a BIND 9
Telepítés $ sudo apt-get install samba smbclient (smbclient a szerver teszteléséhez) A két automatikusan induló kliens leállítása $ sudo stop smbd $ sudo stop nmbd Az alap konfig állomány átnevezése (helyette újat fogunk létrehozni) $ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old Konfigurálás indítása provisioning $ sudo samba-tool domain provision --interactive --use-rfc2307 --use-xattr=yes --option="interfaces= lo eth0" --option="bind interfaces only=yes"
Konfogurálás folyt. --use-rfc2307: képessé teszi a Sambát arra, hogy UNIX felhasználói attribútumokat tároljon, így Linux felhasználó autentikálhatók Samba-val (UID, GID, shell, stb.) Identity management for UNIX --use-xattr=yes: ACL használatát teszi lehetővé --option="interfaces= lo eth0" --option="bind interfaces only=yes" ez csak akkor kell, ha több interfésze van a szervernek A domain-search-nél megadott tartománynevet fogja felajánlani (Realm: Kerberos realm/tart.) Server role: dc Alapértelmezésként a belső DNS szervert használja (SAMBA_INTERNAL) DNS forwarder: Administrator password: Szolgáltatás indítása: $ sudo start samba-ad-dc
Pontos idő szolgáltatás Network Time Protocol A Windows megköveteli az aláírt időbélyegek használatát (Windows Time Service) Megoldás: ntpd adja az időbélyeget + Samba az aláírást Telepítés: $ sudo apt-get install ntp Konfigurálás: /etc/ntp.conf ntpsigndsocket /var/lib/samba/ntp_signd/ Itt várja a Samba az aláírási kérelmeket (socket fájlok formájában) A könyvtár írható kell legyen az ntpd számára (ntp:ntp) $ sudo chgrp ntp /var/lib/samba/ntp_signd
Nyomtatás és nyomtatómegosztás
CUPS Common Unix Printing System Ezt használja a legtöbb GNU/Linux disztribúció Képes nyomtatási feladatok kezelésére Támogatja a hálózaton keresztül történő nyomtatást az Internet Printing Protocol (IPP) használatával Támogatja a hálózati nyomtatók automatikus felismerését Támogatja a Postscript Printer Description-t Rendelkezik webes felületű konfigurációs/adminisztrációs felülettel Nyomtat pdf-be ~/PDF könyvtárba
Telepítés Alapból feltelepül, de ha szükséges az újratelepítés: sudo apt-get install cupsys cupsys-client A kiszolgáló szoftver automatikusan indul telepítés után Nyomtatási szolgáltatás indítása sudo /etc/init.d/cupsys start
Konfigurálás 1 Webes felületen http://localhots:631 Asztali gépen Rendszer/Adminisztráció/Nyomtatás (system-config-printer) Szerveren parancssorból /etc/cups/cupsd.conf Hasonlít az Apache konfigurációs állományára ServerAdmin felh@gépnév Milyen portokon fogadjon kéréseket? Listen 127.0.0.1:631 #loopback Listen /var/run/cups/cups.sock #socket Listen IPcím:631 #hálózaton
CUPS konfigurálás Webes felületen
Konfigurálás grafikus felületen sudo /etc/init.d/cups restart
Védelem Alkalmazások - AppArmor
Tipikus hozzáférés szabályozási megoldások DAC Discretionary Access Control (tetszés szerinti) Minden objektumnak tulajdonosa van, aki szabályozhatja a hozzáférést Pl. állományok MAC Mandatory Access Control (kötelező) Hozzáférés-jogosultság kiosztása előre meghatározott módon
MAC implementáció Ubuntuban AppArmor (Application Armor) alapértelmezett SELinux (Security Enhanced Linux)
AppArmor Név alapú MAC-et megvalósító biztonsági modul Elsősorban hálózati alkalmazások védelmére: www, ftp, Samba, CUPS, dhcpkliens Szabályozás biztonsági házirendekkel Csomagok: apparmor, apparmor-utils, apparmor-profiles sudo apt-get install apparmor apparmor-utils apparmor-profiles Minden szabályozás alá tartozó alkalmazáshoz egy profil állomány (biztonsági házirend)
AppArmor Indítás: /etc/init.d/apparmor start stop restart Kiszolgáló (pl. Apache, Samba, SQUID, Postfix) telepítésekor települ a hozzá tartozó profil További profilok az apparmor-profiles csomagban Üzemmódok Enforce kikényszerítő Complain - figyelmeztető
apparmor-utils apparmor_status kiírja az üzemmódot és a betöltött profilok listáját
Profil Profil módosítása után újratöltés cat profil sudo apparmor_parser r Az összes profil újratöltése sudo /etc/init.d/apparmor reload Alkalmazási módok enforce kikényszerített complain - figyelmeztető
Kapcsolók enforce kikényszerített módba helyezi az apparmort aa_enforce alkalmazás csak egy profilt (alkalmazást) complain figyelmeztető módba helyezi az apparmort aa_complain alkalmazás csak egy profilt (alkalmazást) unconfined kilistázza azokat az alkalmazásokat, amelyeket nem szabályoz az apparmor autodep alkalmazás egy alap profilt készít egy alkalmazáshoz audit alkalmazás naplózza az alkalmazás tevékenységét
Konfigurálás Konfigurációs állományok /etc/apparmor Profilok /etc/apparmor.d A profilnév az alkalmazás teljes elérési útvonalát tartalmazza, /-k helyett pontokkal
Könyvtárak abstractions, tunables olyan profil szabályokat tartalmaz, amelyeket több profil közösen használ disable - az ide belinkelt profilok le vannak tiltva force-complain
Profil tartalma Útvonal milyen állományokhoz férhet hozzá az alkalmazás Ha az útvonal *-ban végződik, akkor az adott könyvtár összes állományára vonatkozik Jogosultságok r,w,x,l (link), stb. Pl. /var/log/samba/log.* w, - az alkalmazás írhatja a samba könyvtár összes log. kezdetű állományát Képesség (Capability) milyen privilégiumokat használhat a folyamat Pl. capability chown lecserélheti egy fájl felhasználói- és csoport tulajdonosát
include direktívával illesztik be a hivatkozásokat
Források A quick guide to AppArmor profile Language http://wiki.apparmor.net/index.php/quickprofilelanguage AppArmor https://wiki.ubuntu.com/apparmor Ubuntu Manual - AppArmor http://manpages.ubuntu.com/manpages/utopic/man5/apparmor.d.5.html
Kerberos
Szolgáltatások védelme Kerberos segítségével Kerberos Hádész háromfejű kutyája Hálózati autentikációs protokoll Ügyfél és kiszolgáló közötti kapcsolatok titkosított autentikációja Cél: Single Sign On rendszer megvalósításának támogatása Az ügyfél titkosított jelszóval igazolja magát, majd a további kommunikáció is titkosítva történik Védelem belső és külső támadások ellen Biztonságos változatok az rsh, rcp, telnet, ftp kliensek helyett
Fogalmak Résztvevő (Principal): minden felhasználó, számítógép és kiszolgálók által biztosított szolgáltatást Példány (Instance): szolgáltatás-résztvevők és speciális adminisztratív résztvevők megnevezése Tartomány (Realm): a Kerberos rendszer által biztosított egyedi felügyeleti tartomány - a DNS-tartomány nagybetűssé alakítva (KEFO.HU). Kulcsszolgáltató (KDC): a résztvevők adatbázisa + a hitelesítési kiszolgáló (AS) + jegymegadási kiszolgáló Jegybiztosító jegy (TGT): a hitelesítési kiszolgáló (AS) adja ki, evvel kérhet a felhasználó hozzáférést egy szolgáltatáshoz Jegykiadó szolgáltatás (TGS) szolgáltatásjegyeket ad ki a klienseknek Szolgáltatásjegy: segítségével férhet hozzá az ügyfél a szolgáltatáshoz. Igazolja a két résztvevő (ügyfél és szolgáltatás) identitását Kulcstáblafájlok: egy szolgáltatás vagy gép titkosítási kulcsát tartalmazzák
Forrás: http://en.wikipedia.org/wiki/kerberos_%28protocol%29
Autentikáció 1. Bejelentkezéskor automatikusan 2. A felhasználó kezdeményezi kinit-tel Ez utóbbi menete A Kerberos felhasználónevet elküldi az Authentication Server (AS)-hez Az AS visszaküld egy tikett kiutaló tikettet (Ticket Granting Ticket - TGT), amit a felhasználó nyilvános kulcsával titkosít A kinit bekéri a jelszót, dekódolja a TGT-t
Autentikáció menete A kliens program (pl. levelező ügyfél) elküldi a TGT-t a tikett kiadó szerverhez (Ticket Granting Server TGS) A TGS generál egy tikettet a levelező szerver szolgáltatás eléréséhez, és titkosítva elküldi az ügyfélhez Az ügyfél ezzel a tikettel igénybe veszi a szolgáltatást Ha a felhasználó egy másik szolgáltatást akar igénybe venni, akkor ugrás a dia első pontjához
Források https://help.ubuntu.com/lts/serverguide/kerberos.html http://sugo.ubuntu.hu/10.10/html/serverguide/hu/kerberos.html