Sdílení souboru pomocí Network File System (NFS) sice v současnosti podporuje kryptografii, ale vždy tomu tak nebylo. Navíc je nutné si uvědomit, jakým způsobem je kryptografie implementována, co má za význam. Řeší ochranu důvěrnosti dat, jejich neměnnosti (integrity), nebo je v jádru autentizačních mechanismů? Zodpovědět tyto otázky není jednoduché. NFS je začal řešit až v pokročilých verzích okolo roku 2000. Z těchto důvodů je hlavními problémy ochrana celistvosti (integrity) a důvěrnosti (confidentiality). Uvedené problémy mají řešení, ale je nutné zbavit se starých verzí, které uvedenou funkcionalitu nepodporují.
Původní NFS vznikl okolo roku 1983 ve vývojovém oddělení společnosti SUN a měl zajišťovat sdílení souborů napříč různými systémy. Zlé jazyky tvrdí, že NFS je zkratka No File Security a u prvních verzí to tak rozhodně platilo.
S příchodem NFSv4 ale bezpečnost dostala vyšší prioritu. Přestože zpočátku nebyl k dispozici nový šifrovací standard, byl použit alespoň algoritmus DES, později došlo k přidání dalších algoritmů. Šifrování bylo navázáno na protokol Kerberos. NFS sice lehce ustoupilo z pozice majoritní platformy, ale stále se jedná o důležitý protokol. Je podporován na *NIX systémech, různých sdílených diskových úložištích, proto je důležité znát omezení a zajistit odpovídající nastavení. Níže je uveden přehled jednotlivých NFS verzí a jejich funkcionalit.
Verze | Rok | Protokol | Vlastnosti | Účty |
NFSv1 | 1994 | UDP | Basic file sharing 32-bit filesystem structure with files <2GB Basic authentization |
Local |
NFSv2 (RFC 1049) |
1989 | UDP | Basic file sharing 32-bit filesystem structure with files <2GB Basic authentization with: - UID and GID (transported over network) - NIS/YP Support for UDP transportFeatures |
Local NIS |
NFSv3 (RFC 1813 |
1995 | 2049/udp 2049/tcp |
64-bit filesystem structure with files >2GB Asynchronous operations Support for symbolic links Support for hardlinks Support for large block transport Filesystem metadata support Support for TCP transport Support for NULL authenticationBasic authentization with: - UID and GID (transported over network) - NIS/YP - NIS+ Support for local authentication mechanisms |
Local NIS/NIS+ LDAP |
WebNFS | 1996 | 2049/tcp | Extension of NFSv2/NFSv3 Support for TCP transport (WITHOUT TLS, REQUIRE VPN) |
Local NIS/NIS+ LDAP |
NFSv4 (RFC 3010) (RFC 3530) |
2000 | 2049/tcp | Full TCP support (without UDP) Statefull connection Support for file locking Supported ACL and rights delegation Chaining commands in single request Support Kerberos authentication Support encryption (based on Kerberos) |
Local NIS/NIS+ LDAP |
NFSv4.1 (RFC 5661) (RFC 8881) |
2010 | 2049/tcp | Parallel NFS (NFSp - access parallelization) Better scalling, load balancing and availability Better client and server management |
Local NIS/NIS+ LDAP |
NFSv4.2 (RFC 7862) |
2016 | 2049/tcp | Support for Server side copy Support for Sparse files Better data checksums Support NFS over TLS (NFSs) Support Integrity Measurement Architecture (IMA - metadata) |
Local NIS/NIS+ LDAP |
Zajištění šifrování a kontroly integrity používá algoritmus zvolený při vyjednávání pomocí Kerberos protokolu. NFS podporuje pro zajištění ochrany vyjednávání pouze tento způsob. Vyjednané mechanismy pak umožňují určit algoritmus pro šifrování dat a kryptografický kontrolní součet, kde podpora pro jednotlivé algoritmy je uvedena v následující tabulce.
Kód | Algoritmus | NFSv1 | NFSv2 | NFSv3 | NFSv4 | NFSv4.1 | NFSv4.2 |
0x01 | des-cbc-crc (slabé) | - | - | - | Yes | Yes | Yes |
0x02 | des-cbc-md4 (slabé) | - | - | - | Yes | Yes | Yes |
0x03 | des-cbc-md5 (slabé) | - | - | - | Yes | Yes | Yes |
0x04 | reserved (slabé) | - | - | - | - | - | - |
0x05 | des3-cbc-md5 (slabé) | - | - | - | - | - | - |
0x06 | reserved (slabé) | - | - | - | - | - | - |
0x07 | des3-cbc-sha1 (slabé) | - | - | - | Yes | Yes | Yes |
0x09 | DSAWithSHA1-CmsOID | - | - | - | - | - | - |
0x0a | MD5WithRSAEncryption-CmsOID | - | - | - | - | - | - |
0x0b | SHA1WithRSAEncryption-CmsOID | - | - | - | - | - | - |
0x0c | rc2-cbc-sha1 (slabé) | - | - | - | - | - | - |
0x0d | RSAEncryption-EnvOID | - | - | - | - | - | - |
0x0e | RSAES-OAEP-EnvOID | - | - | - | - | - | - |
0x0f | des-ede3-cbc (slabé) | - | - | - | - | - | - |
0x10 | des3-cbc-sha1-kd (slabé) | - | - | - | - | - | - |
0x11 | aes128-cts-hmac-sha1-96 (zastaralé) | - | - | - | - | Yes | Yes |
0x12 | aes256-cts-hmac-sha1-96 (zastaralé) | - | - | - | - | Yes | Yes |
0x13 | aes128-cts-hmac-sha256-128 | - | - | - | - | Yes | Yes |
0x14 | aes256-cts-hmac-sha384-192 | - | - | - | - | Yes | Yes |
0x17 | arcfour-hmac / rc4-hmac (slabé) | - | - | - | Yes | Yes | Yes |
0x18 | arcfour-hmac-ext / rc4-hmac-exp (40b key, slabé) | - | - | - | Yes | Yes | Yes |
0x19 | camellia128-cts-chmac | - | - | - | - | Yes | Yes |
0x20 | camellia256-cts-cmac | - | - | - | - | Yes | Yes |
0x41 | subkey-keymaterial | - | - | - | - | - | - |
Start NFS na straně serveru se zajištěnou ochranou vyžaduje fungující Kerberos, nejlépe navázaný na nějaký LDAP systému pro autentizaci. Protože v současnosti je nejpoužívanějším LDAP systémem Active Directory, je vhodné využít tento systém a zajistit centrální správu uživatelů.
Pro konfiguraci na straně serveru je nutné nahrát sadu instalačních balíčků, v tomto případě pro debian-based distribuce:
# apt install realmd krb5-user adcli sssd samba-common nfs-kernel-server gssproxy -y
Soubor /etc/krb5.conf musí obsahovat:
[libdefaults]
default_realm = NFS.Domain
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
allow_weak_crypto= false
default_tkt_enctypes = aes256-cts-hmac-sha1-96
[realms]
NFS.DOMAIN = {
kdc = ADServerName.NFS.Domain
admin_server = ADServerName.NFS.Domain
default_domain = nfs.domain
}
[domain_realm]
.NFS.Domain = NFS.Domain
NFS.Domain = NFS.Domain
Kde položka ADServerName je název Active Directory serveru a NFS.Domain je název domény ve které je NFS poskytováno. Díky NSS může být doménou např. DNS doména. V rámci konfigurace je možné definovat i typ požadovaného šifrování, kde AD v tuto chvíli podporuje pouze RC4 a AES-CTS s kontrolou integrity pomocí SHA1 (ještě ke všemu oříznutou ze 160 bitů na 96 bitů). Uvedení požadovaného šifrování ale může být v rozporu s definovanou politikou, v takovém případě nebude možné se připojit.
Soubor /etc/nfs.conf musí obsahovat:
[gssd]
use-gss-proxy=1
Soubor /etc/default/nfs-common musí obsahovat:
NEED_GSSD="yes"
Dále je potřeba z prostředí shellu zadat následující příkazy pro inicializaci prostřetí:
# kinit Administrator
# realm discover NFS.Domain
# realm join --user-principal=linuxnfsuser/ThisMachineFQDN@NFS.Domain NFS.Domain
Pro NFS server je nutno zadat
# realm join --user-principal=linuxnfsuser/kerberos-nfsserver.NFS.Domain@NFS.Domain NFS.Domain
Pro NFS klienta je nutno zadat
# realm join --user-principal=linuxnfsuser/kerberos-nfsclient.NFS.Domain@NFS.Domain NFS.Domain
Pro správnou funkčnost je nutné přidat odpovídající záznamy pro NFS server (kerberos-nfsserver) a pro NFS klienta (kerberos-nfsclient). V tomto případě jsou tyto záznamy na adresách 192.168.1.10 a 192.168.1.11, musí odkazovat do NS domény NFS.Domain.
# Add-DnsServerResourceRecordA -CreatePtr -Name kerberos-nfsserver -IPv4Address 192.168.1.10 -ZoneName NFS.Domain
# Add-DnsServerResourceRecordA -CreatePtr -Name kerberos-nfsclient -IPv4Address 192.168.1.11 -ZoneName NFS.Domain
Dále je potřeba nastavit Service Principal Name (servisního uživatele) pro NFS:
# setspn -S linuxnfsuser/ThisMachineFQDN kerberos-nfsserver
# setspn -S linuxnfsuser/ThisMachineFQDN kerberos-nfsclient
# setspn -L kerberos-nfsserver
# setspn -L kerberos-nfsclient
Tím je dokončena konfigurace DNS záznamů a SPN, dále je možné pokračovat s konfigurací NFS serveru a NFS klienta.
Protože máme spojený Linux s Active Directory pomocí Kerberos a vytvořené SPN, je možné začít konfigurovat vlastní NFS server pro poskytování sdílení.
Soubor /etc/exports musí obsahovat pro sdílení složky /nfsshare následující definice:
/nfsshare gss/krb5p(rw,sync)
Kde u nastavení kryptografické ochrany platí následující přenos šifrovacích sad z Kerberos ticketu:
- krb5: Autentizace
- krb5i: Autentizace a integrita
- krb5p: Autentizace, integrita a šifrování
Z příkazové řádky je následně nutné znovu spustit služby pro NFS:
# service rpc-gssd restart
# service gssproxy restart
# service nfs-kernel-server restart
# /etc/init.d/nfs-common restart
Po nastavení NFS serveru a poskytnutí sdílené složky je možné dovolit klientu připojení k NFS serveru. To vyžaduje následující sérii úprav:
# apt install nfs-common gssproxy -y
V souboru /etc/nfs.conf je potřeba nastavit:
use-gss-proxy=1
V souboru /etc/default/nfs-common je potřeba nastavit:
NEED_GSSD="yes"
V souboru /etc/gssproxy/99-nfs-client.conf je potřeba nastavit:
[service/nfs-server]
mechs = krb5
socket = /run/gssproxy.sock
cred_store = keytab:/etc/krb5.keytab
cred_store = ccache:FILE:/var/lib/gssproxy/clients/krb5cc_%U
cred_store = client_keytab:/var/lib/gssproxy/clients/%U.keytab
cred_usage = initiate
allow_any_uid = yes
trusted = yes
kernel_nfsd = yes
euid = 0
Následně je třeba restartovat služby spojené s poskytováním funkce NFS klienta:
# service rpc-gssd restart
# service gssproxy restart
# /etc/init.d/nfs-common restart
A konečně je možné připojit složku ze strany serveru:
# mount -t nfs4 -o sec=krb5p kerberos-nfsserver.nfs.domain:/nfsshare /mnt
Pokud je potřeba na straně uživatele zajistit automatizaci obnovy Kerberos tokenů, je možné v souboru .profile zadat příkaz, který uvedenou službu zajistí:
/usr/bin/kinit KRB-CLT$ -t /etc/krb5.keytab
1. Úvodní ustanovení
1.1. Tyto všeobecné obchodní podmínky jsou, není-li ve smlouvě písemně dohodnuto jinak, nedílnou součástí všech smluv týkajících školení, pořádaných nebo poskytovaných školitelem, Jan Dušátko, IČ 434 797 66, DIČ 7208253041, se sídlem Pod Harfou 938/58, Praha 9, zapsané u Úřadu městské části Praha 9 (dále jen „školitel“).2. Vznik smlouvy přihlášením ke kurzu
2.1. Přihláškou se rozumí jednostranný úkon objednatele adresovaný školiteli prostřednictvím datové schránky s identifikací euxesuf, e-mailu na adresu register@cryptosession.cz nebo register@cryptosession.info, internetových stránek cryptosession.cz, cryptosession.info nebo kontaktním telefonem +420 602 427 840.3. Zánik smlouvy zrušením přihlášky
3.1. Přihláška může být objednatelem zrušena pomocí e-mailu, nebo pomocí datové schránky.4. Cena a platební podmínky
4.1. Odesláním přihlášky objednatel akceptuje smluvní cenu (dále jen účastnický poplatek) uvedenou u daného kurzu.5. Podmínky školení
5.1. Školitel je povinnen informovat objednatele 14 dní dopředu o místě a času školení, včetně termínu zahájení a ukončení denního programu.6. Reklamace
6.1. Pokud je účastník hrubě nespokojen s průběhem kurzu, je školitel o této informaci vyrozuměn.7. Autorská práva k poskytnutým materiálům
7.1. Školicí materiály poskytnuté školitelem v rámci konání školení splňují znaky autorského díla dle zákona č. 121/2000 Sb.8. Zodpovědnost
8.1. Školitel nepřebírá odpovědnost za nedostatky ve službách kterékoliv třetí strany, kterou využívá při školeních.9. Platnost podmínek
9.1 Tyto všeobecné obchodní podmínky jsou platné a účinné od 1. října 2024.Informace o sběru a zpravování osobních údajů
Zpracovatel Jan Dušátko (dále jen „Správce“), dle nařízení Evropského parlamentu a Rady (EU) č. 2016/679 o ochraně fyzických osob v souvislosti se zpracováním osobních údajů a o volném pohybu těchto údajů a o zrušení směrnice 95/46/ES (obecné nařízení o ochraně osobních údajů, dále jen „Nařízení“) zpracovává osobní údaje. Dále jsou rozepsané jednotlivé osobní údaje, které jsou součástí zpracování při konkrétních aktivitách u této webové prezentace a v rámci obchodního styku.Informace o záznamech přístupu na webovou prezentaci
Tento web nesbírá žádné cookies. Stránka nepoužívá ani žádné analytické scripty třetích stran (sociální sítě, cloud provideři). Z těchto důvodů je také nabízena volba pro zobrazení mapy formou odkazu, kde primárním zdrojem je OpenStreet a alternativy pak často používané Mapy společnosti Seznam, a.s., případně Google Maps společnosti Google LLC Inc. Využití jakéhokoliv z těchto zdrojů je zcela na libovůli uživatelů těchto stránek. Správce nenese odpovědnost za sběr dat realizovaný těmito společnostmi, neposkytuje jim data o uživatelích a na sběru dat nespolupracuje.Informace o kontaktování provozovatele stránek
Formulář pro kontaktování provozovatele stránek (správce) obsahuje následující osobní údaje: jméno, příjmení, e-mail. Tyto údaje jsou určeny jen a pouze pro tuto komunikaci, odpovídající oslovení uživatele a jsou udržovány po dobu nezbytnou k naplnění účelu, maximálně pak po dobu jednoho roku, pokud si uživatel neurčí jinak.Informace o objednávkovém formuláři
Pro případ zájmu o objednávku formulář obsahuje více údajů, tj. jméno, příjmení, e-mail a kontaktní údaje na organizaci. Tyto údaje jsou určeny jen a pouze pro tuto komunikaci, odpovídající oslovení uživatele a jsou udržovány po dobu jednoho roku, pokud si uživatel neurčí jinak. V případě, kdy na základě této objednávky dojde k uzavření obchodního vztahu, budou nadále správcem udržovány pouze informace vyžadované českými zákony na základě obchodních vztahů (název a adresa společnosti, číslo bankovního účtu, typ kurzu a jeho cena).Informace o dokumentu o absolovování kurzu
V rámci kurzu je vydán zpracovatelem dokument o absolovování kurzu. Tento dokument obsahuje následující údaje: jméno a příjmení studenta, název a datum absolovování kurzu a jméno zaměstnavatele. Uvedené informace se následně používají pro tvorbu lineárního stromu hashí (nemodifikovatelný záznam). Tato databáze obsahuje pouze informace o poskytnutých jménech a názvech společností, které mohou a a nemusí odpovídat realitě a je udržován zpracovatelem pro případné opětovné vystavení nebo ověření vydání dokumentu.Práva subjektu osobních údajů
Zákazník nebo návštěvník tohoto webu má možnost požádat o informace o zpracování osobních údajů, právo požadovat přístup k osobním údajům, případně právo požádat o opravu nebo výmaz veškerých dat, které by o něm byly vedeny. V případě výmazu tento požadavek není možné splnit pouze pokud se nejedná o data nezbytně nutná v rámci obchodního styku. Zákazník nebo návštěvník webu má dále právo na vysvětlení týkající se zpracování jeho osobních údajů, pokud tento zjistí nebo se domnívá, že zpracování je prováděno v rozporu s ochranou jeho soukromého a osobního života nebo v rozporu s platnými právními předpisy a právo požadovat odstranění takto vzniklého stavu a zajištění nápravy.