Professional Documents
Culture Documents
1 SCS6aUNIX
1 SCS6aUNIX
оперативните системи
датотеката со лозинки
Почетни процеси за корисникот
се извршува датотеката специфицирана како login
во /etc/passwd
идентитетот се поставува со login
Информации за кориснички
сметки: /etc/passwd
Username: Password: User ID (UID): Group ID (GID): User ID
info: Home directory: login shell
1. Username: се користи кога корисникот се логира, има должина
од 1–32 знаци
2. Password: ’x’ индицира дека шифрираната лозинка е складирана
во /etc/shadow; најчесто до 8 знаци; празно поле или *
3. Group ID: примарната група на корисникот
4. Home directory: апсолутен пат до директориумот во кој ќе биде
корисникот по логирањето
5. login shell: апсолутен пат до шелот
root:x:0:0:root:/root:/bin/bash
dhcp:x:101:102::/nonexistent:/bin/false
syslog:x:102:103::/home/syslog:/bin/false
mileva:x:1000:1000:Aleksandra Mileva: /home/mileva:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Информации за кориснички
сметки
/etc/profile – активности преземени од системот
.profile – други посебни параметри за корисниците
/usr/adm/lastlog – чува последна најава на корисникот
и може да се прикаже на пример со наредбата finger
passwd(1) – наредба за промена на лозинките.
Ефектот на промената може да го потврдите со нова
најава или со su(1)
побезбедните верзии на Unix користат сол за
лозинките или ги чуваат лозинките во скриена
датотека за лозинки, како /.secure/etc/passwd
Датотека со сенка лозинки:
/etc/shadow
1. Username: корисничко име
2. Passwd: хеширана лозинка
3. Last: денови (од Jan 1, 1970) од последна промена на лозинката
4. May: денови пред лозинката да може да се промени, обично 0
5. Must: денови после кои лозинката мора да се промени, дефолт
99999
6. Warn: денови пред истекување на лозинката кога се опоменува
корисникот
7. Expire: денови на оневозможена корисничка сметка, после
истекувањето на лозинката, -1 е за бесконечност
8. Disable: денови (од Jan 1, 1970) на оневозможена корисничка
сметка
9. Reserved
root:!:14118:0:99999:7:::
ana:R,Jll.or6u1e7:10795:0:99999:7:-1:-1:134537220
dejan:Ep6mckrOLChF.:10063:0:99999:7:::
tea:$6$QR3drPrQ$JLolPKyiVuXvea1F2IpbPx9F9PEV0s/IGcNCpm6ZrBA6AFDvwHPQ
G7EsTQHuUqxfCvlsuKRb.O7w5RLPyj8nS/:15119:0:99999:7:::
Хеширање на лозинки во UNIX
Библиотечна функција crypt(3), која е вклучена и во
програмските јазици како PHP, Perl, Python, Ruby и др.
Се користи за хеширање на лозинката заедно со сол. Солта
може да започнува со $cifra$ и cifra го означува користениот
алгоритам.
За енкодирање на хеш резултатите се користи Modular Crypt
Format (MCF).
$<id>[$<param>=<value>(,<param>=<value>)*][$<salt>[$<hash>]]
id – идентификатор на шемата
param – value – параметри како број на рунди/итерации
salt –енкодирана сол
hash - енкодиран хеш резултат
Хеширање на лозинки во UNIX
Традиционална DES-базирана шема
запишаната вредност е долга 13 знаци
25 пати изменет DES алгоритам се применува на блок со почетна
вредност сите нули и лозинката како клуч
ги зема 7 најниски битови од првите 8 знаци како клуч за да се добие
56-битниот клуч на DES
се користи 12-битна сол за да се сменат некои состојби во
алгоритамот, за DES да не биде реверзибилен
резултантните 64 бита ги конвертира во 11 ASCII знаци со 6 бита за
знак (2 бита се падираат со нули), а пред нив се додаваат 2 знака за
солта
пример, Dyq4bCxAXJkbg (сол||хеш_резултат)
Хеширање на лозинки во UNIX
BSDi проширена DES-базирана шема
запишаната вредност е долга 20 знаци
24-битна сол, променлив број на рунди (до 224-1) и подолги лозинки
од подолгата лозинка се генерираат 8-те 7-битни врености за DES
клучот
избраниот број на рунди е енкодиран во складираниот хеш на
лозинката
овие хешови се познаваат по тоа што почнуваат со знакот “_” следен
со 4 бајти за бројот на рунди
пример, _EQ0.jzhSVeUyoSqLupI (_рунди||сол||хеш_резултат)
Хеширање на лозинки во UNIX
MD5 -базирана шема
нема граница за големината на лозинката и за солта
не мора да се користат само знаци од ASCII
најпрво лозинката и солта се хешираат заедно со MD5, а потоа се
конструира нов резултат од лозинката, солта и првиот хеш резултат
на сложен начин. Потоа ова минува низ 1000 итерации на
рехеширање со одредени разлики во рундите
се индицира со $1$ на почетокот на хеш резултатот
делот со хеш резултат е долг 22 знаци, ако солта е долга 48-бита, се
енкдира како 8 знака во записот
пример, $1$etNnh7FA$OlM7eljE/B7F1J4XYNnk81
($идентификатор$сол$||хеш_резултат)
Хеширање на лозинки во UNIX
SHA2 -базирана шема
се индицира со $5$ (SHA-256) и $6$ (SHA-512) на почетокот на
енкодираниот хеш резултатот
само хеш резултатот се енкодира со 43 знаци за SHA-256 и 86 знаци за
SHA-512
на пример,
$5$9ks3nNEqv31FX.F$gdEoLFsCRsn/WRN3wxUnzfeZLoooVlzeF4WjL
omTRFD или
$5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4Pmo
NKQUGWFXlVy9vu9
$6$qoE2letU$wWPRl.PVczjzeMVgjiA8LLy2nOyZbf7Amj3qLIL978o18
gbMySdKZ7uepq9tmMQXxyTIrS12Pln.2Q/6Xscao0 или
$6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRH
G0dhuaPBaOU/oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQ
pp1XKI6LLQ0.
($идентификатор$rounds=број$сол$||хеш_резултат)
Привилегии на root
Скоро и да нема безбедносни проверки:
сите механизми за контрола на пристап се исклучени
може да стане обичен корисник
може да го менува системскиот часовник
Има некои рестрикции, но можат да се надминат:
не може да запишува во системските датотеки поставени само
за читање, но може системот повторно да го монтира во
систем за пишување
не може да дешифрира лозинки, но може да ги ресетира
Секое корисничко име може да биде root!
root:x:0:1:root:/:/bin/sh
bilokoj:x:0:101:Nekoj korisnik:/home/bilokoj:/bin/sh