Systémy jsou bezpečné jak jsou bezpečné jejich hesla. Je možné používat pro přihlašování kombinaci hesla a klíče, používat jednorázová hesla (OTP), ale základ bude vždy na úrovni alespoň základní síly klíčových hesel.
Pokud vyvstala potřeba vynutit technickými prostředky politiku hesel, je nutné začít ovlivněním chování při přihlašování. V souboru /etc/login.conf změnit nebo přidat tyto řádky:
:passwd_format=blf:\
:passwordtime=90d:\
:mixpasswordcase=true:\
:minpasswordlen=8:\
První řádek změní typ používaného hashovacího algoritmu na Blowfish, druhý nastaví maximální dobu životnosti hesla na 90 dní a třetí vyžaduje použití kombinace malých a velkých písmen. Nastavení je zde více, ale uvedené změny by měly znamenat základ. Po tomto nastavení je nutné spustit příkaz, synchronizující databázi a její textovou podobu. Až poté bude tato část politiky vynucena.
cap_mkdb /etc/login.conf
Další částí je vynucení pravidel při změnách hesel. Příkaz passwd využívá databázi /etc/pam.d/passwd, kde jsou uvedeny moduly používané při zadávání nového hesla:
password requisite pam_passwdqc.so min=disabled,16,12,10,8 max=64 enforce=everyone
password required pam_unix.so no_warn try_first_pass nullok
První modul zajišťuje kontrolu hesla na požadovanou sílu. V tomto případě v závislosti na použití jedné, dvou, tří nebo čtyř sad znaků (míní se tím malá a velká písmena, čísla a speciální znaky) se používá heslo o minimální velikosti 16-12-10-8 znaků a maximální velikosti 64 znaků.
Promněnné souboru /etc/login.conf
| Název | Typ | Popis |
| Omezení zdrojů | ||
| cputime | time | CPU usage limit. |
| filesize | size | Maximální velikost souboru. |
| datasize | size | Maximální velikost datového prostoru. |
| stacksize | size | Maximální velikost zásobníku. |
| vmemoryuse | size | Maximální velikost VM na proces. |
| coredumpsize | size | Maximální velikost coredump. |
| memoryuse | size | Maximální velikost použité paměti. |
| Memorylocked | size | Maximální velikost zamčené paměti. |
| maxproc | number | Maximální počet procesů. |
| openfiles | number | Maximální počet otevřených souborů. |
| sbsize | size | Maximální povolená velikost vyrovnávací paměti pro socket. |
| Prostředí | ||
| charset | string | Nastaví proměnnou prostředí $MM_CHARSET na požadovanou hodnotu. |
| hushlogin | bool (false) | To samé jako soubor ~/.hushlogin (soubor .husthlogin v domovském adresáři). |
| ftpchroot | bool (false) | Omezení přístupu FTP na adresář HOME. |
| ignorenologin | bool (false) | Přihlášení nebude zablokováno souborem nologin. |
| label | string | Standardní MAC policy. |
| lang | string | Nastaví proměnnou prostředí $LANG na požadovanou hodnotu. |
| manpath | path | Standardní cesta pro MAN. |
| nocheckmail | bool (false) | Zobrazí stav mailboxu po přihlášení. |
| nologin | file | Pokud tento soubor existuje, zobrazí se jeho obsah a uživatel bude automaticky odhlášen. |
| path | path (/bin /usr/bin) | Standardní cesty. |
| priority | number | Standardní priority procesů (nice level). |
| requirehome | bool (false) | Pro přihlášení vyžaduje existující domovský adresář. |
| setenv | list | Nastavení proměnných prostředí a jejich hodnot, oddělených středníkem. |
| shell | prog | Použití definovaného shellu, má přednost před shellem uvedeným v passwd souboru, ale proměnná SHELL bude mít hodnotu, kterou z passwd souboru převezme. |
| term | string | Standardní typ terminálu, pokud není nastaveno nebo není možné identifikovat. |
| timezone | string | Standardní hodnota proměnné timezone $TZ. |
| umask | number (022) | Standardní umask. Měla by mít vždy na začátku 0 (vyžadováno, aby došlo k reprezentaci v oktalové soustavě). |
| welcome | file (/etc/motd) | Soubor obsahující vstupní zprávu. |
| Autentizace | ||
| minpasswordlen | number (6) | Minimální délka hesla. |
| passwd_format | string (md5) | Formát šifrování hesla. Je možné použít md5″(MD5), „des“(DES-56) a „blf“(BlowFish). NIS klienti používající jiné než FreeBSD NIS servery by patrně meli používat „des“. |
| mixpasswordcase | bool (true) | Vyžaduje mixování malých a velkých písmen v heslech. |
| copyright | file | soubor obsahující další copyright informace |
| login_prompt | string | Login prompt, který zobrazí login |
| login-backoff | number 3 | Počet pokusů o přihlášení, než bude použita prodleva mezi každý další pokus. Prodleva je definována jako login-backoff násobený 5 vteřinami |
| login-retries | number 10 | Počet pokusů o přihlášení, než dojde k přerušení spojení. |
| passwd_prompt | string | Password prompt, který zobrazí login. |
| host.allow | list | Seznam vzdálených strojů, ze kterých je možné se přihlásit. |
| host.deny | list | Seznam vzdálených strojů, ze kterých je zablokovaný přístup. |
| times.allow | list | Seznam časových intervalů, kdy je možné se přihlásit. |
| times.deny | list | Seznam časových intervalů, kdy je zablokovaný přístup. |
| ttys.allow | list | Seznam tty a ttygroups, ze kterých je možné se přihlásit. |
| ttys.deny | list | Seznam tty a ttygroups, ze kterých je zablokovaný přístup. |
| warnexpire | time | Varování před vypršením platnosti účtu. |
| warnpassword | time | Varování před vypršením platnosti hesla. |
| Účtování | ||
| accounted | bool (false) | Povolí účtování pro tuto skupinu uživatelů. |
| autodelete | time | Za jak dlouho po expiraci bude ucet automaticky smazán. |
| bootfull | bool (false) | Enable „boot only if ttygroup is full“ strategy when terminating sessions. |
| daytime | time | Maximální doba přihlášení v průběhu dne. |
| expireperiod | time | Čas pro expiraci alokace. |
| graceexpire | time | Časová rezerva pro účty, u nichž vypršela platnost. |
| gracetime | time | Časová rezerva pro přihlášení. |
| host.accounted | list | Seznam strojů, ze kterých budou účtovány spojení. |
| host.exempt | list | Seznam strojů, ze kterých nebudou účtovány spojení. |
| idletime | time | Maximální doba nečinnosti před automatickým odhlášením. |
| monthtime | time | Maximální čas aktivity za měsíc. |
| passwordtime | time | Použito passwd(1) pro nastavení dalšího termínu expirace hesla. |
| refreshtime | time | Nová hodnota času pro zjištění limitů účtu. |
| refreshperiod | time | Jak často bude zjišťovány limity pro účet. |
| sessiontime | time | Maximální délka spojení. |
| sessionlimit | number | Maximální počet konkurenčních spojení. |
| ttys.accounted | list | Seznam terminálů, na které budou spojení účtována. |
| ttys.exempt | list | Seznam terminálů, na které nebudou spojení účtována. |
| warntime | time | Varování před vypršením času spojení. |
| weektime | time | Maximální čas aktivity v průběhu týdne. |
