HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Biztonságos jelszó politika és beállítások

2015.11.26. 12:05 bagoj ur

Egy kis gyors feladatot kaptam, miszerint be kell állítanom Linux szervereket egy biztonságos konfigurációs sablon alapján. (Angolul kedvelőknek secure baseline config template :-)). És ha már beállítom, akkor előtte dolgozzam is ki ezt a bizonyos template-et. :-D

Jó, hogy meg sem lepődtem a feladaton, mert IT berkekben ez a találj-ki-jobb-megoldást-és-rögtön-meg-is-valósíthatod módszer a főnökök kedvence. A vicc, hogy a jó munkavégzők nem csak hogy mindig beszívják, de úgy vettem észre, egyenesen igénylik ezt a fajta bánásmódot. :-) Node a Bagoj türelmes állat, mint tudjuk.

Arra gondoltam viszont, hogy miért ne adnám közre az elvégzett munkát, hiszen más is kerülhet olyan helyzetbe, hogy hirtelen ki kell dolgoznia egy szerver jelszópolitikát. Naszóval.

Jelszó politika

Ezt a jelszó politikát érvényesíteni kell minden <X> szerveren. Amennyiben ez nem lehetséges, a jelszó generálás, -csere, -visszavonás folyamatát kell kidolgozni olyan módon, hogy megfeleljen jelen jelszópolitikának.

Az adminisztrátor és technikai felhasználókat szükséges megkülönböztetni. Az előbbiek személyhez / névhez kötöttek, napi munkavégzéshez, a rendszerek konfigurálásához interaktívan használtak. Minden ilyen tevékenységet végző számára saját, megszemélyesített felhasználó szükséges, hogy a tevékenysége nyomon követhető legyen. A technikai felhasználókat rendszerek pl. egymás közötti adatcsere miatt, azonosításhoz illetve titkosításhoz használják. A két felhasználó típust jelszóhossz, komplexitás, jelszócsere, korábban használt jelszavak ellenőrzése szempontjából ajánlatos megkülönböztetni.

Központi jelszókezelés
A központosított jelszókezelő rendszerek (Microsoft AD/Radius/Tacacs) preferáltak, a helyi (lokális) felhasználók létrehozása csak akkor indokolt, ha nincsen egyéb megoldás. Ez alól kivételt képeznek az ún. "last resort" felhasználók, amelyeket a központi jelszókezelő rendszer elérhetetlensége esetén lehet használni. Ezek a felhasználók technikai felhasználónak minősülnek, a jelszavukat borítékos, vagy ezzel egyező módszerrel kell tárolni.

Jelszó történet
Adminisztartív és technikai felhasználó nem használhatja a legutóbbi 10 beállított jelszavát.

Jelszó öregbítés
Adminisztratív felhasználók legalább 60 naponként kötelesek jelszót cserélni, ezt a rendszer vagy a folyamat lehetőség szerint kikényszeríti. Technikai felhasználókra nincs ilyen megkötés.

Minimális jelszóhossz
Adminisztratív felhasználók legalább 8 karakteres, technikai felhasználók legalább 15 karakteres jelszót kell használjanak, ahol erre mód van.

Jelszó komplexitás
Adminisztratív felhasználók legalább egy nagybetűt, legalább két kisbetűt és egy számot kötelesek használni. Technikai felhasználók legalább két nagybetűt, legalább 3 számot és különleges karaktert kötelesek használni.

Egyéb
- Nem titkosított menedzsment protokoll (Telnet, HTTP) nem támogatott
- SSH esetén csak az SSHv2 támogatott
- Szükséges a rendszerekben időtúllépés (timeout) beállítása, a szabadon hagyott konzolok automatikus kiléptetése miatt
- Figyelmeztető üzenet (login banner) beállítása szükséges, ahol lehtséges

Szerintem elég logikusak a fentiek, de hogyan lehet ezeket elérni?

Induljunk ki először abból, hogy nem lehetséges a központi jelszókezelés, helyileg kell megoldanunk a dolgot. Sajnos a Linuxon nem lehet kétféle felhasználó típust kezelni, ezért legjobb, ha a gyengébb követelményt kikényszerítjük, az erősebbet pedig adminisztratív úton betartjuk.

 Jelszó történet

Debian és származékai esetén:

# vi /etc/pam.d/common-password
password     [success=1 default=ignore]    pam_unix.so obscure sha512 remember=10

Redhat és származékai esetén:

# vi /etc/pam.d/system-auth
password   sufficient   pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=10

Jelszó öregbítés

Ha mindenki számára egyszerre szeretnénk beállítani:

 # vi /etc/login.defs
PASS_MAX_DAYS   60
PASS_MIN_DAYS   0
PASS_WARN_AGE   7

Ha mondjuk a root felhasználót nem szeretnénk macerálni, akkor felhasználónként is lehet állítani a chage nevű paranccsal. Ez kis aranyos, pl. ki tudjuk kényszeríteni egy felhasználó jelszócseréjét akár azonnal is:

# chage -E 11/26/2015 bagojur

A mai napon cserélnem kell a jelszómat. A jelszópolitika érvényesítése:

# chage -M 60 -I 14 -W 7 bagojur

Tehát a -M azt állítja be, hogy 60 naponként kell cserélni. A -l megmondja, hogy a jelszócsere határidejének lejárta után még hány napig tud bejelentkezni, mielőtt letiltásra kerül. A -W pedig azt, hogy 7 nappal a lejárat előtt a rendszer elkelzdi minden belépéskor figyelmeztetni, hogy le kell majd cserélnie a jelszavát.

Minimális jelszóhossz

Debian származékoknál szintén a common-password fájlt írjuk:

password   requisite    pam_cracklib.so retry=3 minlen=8 difok=3

Redhatéknál pedig szintén a system-auth-ot:

password   requisite   pam_cracklib.so retry=3 difok=3 minlen=8

Fontos megjegyzés, hogy ezt a jelszóhosszt befolyásolják a komplexitásra adott értékek (ez az összefüggés mindjárt világos lesz, mivel ugyanezeket a sorokat kell majd írni a komplexitáshoz is, lásd lejjebb). Ez úgy történik, hogy a beállított minimális jelszóhossz annyival csökken, mint ahány megkötést megadunk a jelszó komplexitásra. Tehát, ha megadjuk hogy hány nagybetű legyen, akkor a fenti minimum jelszóhossz már csak 7. Ha meghatározzuk azt is, hogy legyen benne szám, akkor már csak 6 stb. Ezt is figyelembe kell vennünk, ezért változtatom meg lentebb a minlen paramétert.

Jelszó komplexitás

Először ismét nézzük a Debiant, aki az előző bekezdést elolvasta, annak nem lehet probléma kitalálni, hogy melyik fájlban találja a következő sort :-):

password   requisite    pam_cracklib.so retry=3 minlen=11 difok=3 ucredit=-1 lcredit=-2 dcredit=-1

(Azoknak, akik mindenképpen be akarnak állítani különleges karaktert is, a paraméter az ocredit=-x, ahol x a darabszám, ahány különleges karaktert szeretnénk látni a jelszóban.)

Redhatnál ismét a system-auth fájlt írjuk, és a sor hajszálpontosan megegyezik a Debianossal.

És a többi apró

Csak a timeout-tal, a bannerrel és az SSHv2-vel foglalkozom, a nem titkosított szolgáltatások letiltása nyilvánvaló. A https self-signed tanúsítvánnyal még mindig biztonságosabb, mint titkosítatlanul adatokat küldeni a hálózaton.

# vi /etc/ssh/sshd_config (Debianon /etc/ssh/ssh_config):

Protocol 2
ClientAliveInterval 300
ClientAliveCountMax 3
Banner /etc/issue.net

A fentiek 15 perces timeoutot (300 sec = 5 perc, és ez háromszor) követelnek meg. A /etc/issue.net-be bármit írhatunk, a felhasználó név begépelése után fog megjelenni. Ja és mivel a frissítések előszeretettel írják felül, én rá szoktam dobni egy chattr-ot:

# chattr +i /etc/issue.net

Hát, ennyi. :-)

2 komment

Címkék: linux politika biztonság jelszó debian policy ubuntu password security mint fedora centos redhat

A bejegyzés trackback címe:

http://bagojur.blog.hu/api/trackback/id/tr28116226

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

junkri 2015.11.26. 16:25:45

ejha, ezelőtti bejegyzés: 2014.04.11.

bagoj ur 2015.12.08. 22:48:05

Eddig nem jutott eszembe semmi... :-D