SECLEVEL=0 lieči príznak, nie certifikát
Zníženie bezpečnostnej úrovne OpenSSL rozširuje, čo knižnica akceptuje. Zistite, ktorý vstup bol odmietnutý, skôr než zmeníte túto hranicu pre celý hostiteľ.
Pripojenie OpenVPN zlyhá, niekto nájde jednoriadkovú opravu, ktorá pridá SECLEVEL=0, a tunel naskočí. Nezmenil sa certifikát ani sada šifier; posunula sa prahová hodnota prijatia na úrovni celej knižnice a všetko, čo proces potom robí, dedí novú hranicu. Stojí za to to pochopiť skôr, než sa ten istý riadok skopíruje do každého profilu v prostredí.
Určite, ktorá knižnica a ktorá politika platia
SECLEVEL je pojem OpenSSL, takže prvá otázka je, či váš build vôbec používa OpenSSL. OpenVPN možno prepojiť s viac ako jednou kryptografickou knižnicou a nastavenie, ktoré platí pre jednu z nich, je pre ostatné bezvýznamné. Spýtajte sa binárky, s čím bola zostavená, a potom sa spýtajte knižnice, ktorú verziu a konfiguráciu načítala:
openvpn --version | head -3
openssl version -aČítajte výstup verzie pozorne, pretože distribúcie záplatujú predvolené hodnoty. Niektoré dodávajú systémovú konfiguráciu, ktorá zvyšuje minimálnu úroveň nad predvolenú hodnotu upstreamu, a preto sa ten istý profil správa inak na dvoch strojoch s rovnakými balíkmi OpenVPN. Účinná politika je tá, ktorú načítal bežiaci proces, nie tá z príručky upstreamu.
Potom oddeľte dve vrstvy, ktoré ľudia miešajú. OpenVPN má vlastné ovládanie TLS, vrátane nastavenia profilu certifikátu a explicitných zoznamov šifier, a tie stoja nad všetkým, čo knižnica vynucuje. Zníženie úrovne knižnice nemení, ktoré šifry váš konfiguračný súbor OpenVPN uvádza, a zúženie zoznamu OpenVPN nezvýši prahovú hodnotu knižnice. Vedieť, ktorá vrstva vás odmietla, je to, čo bráni tomu, aby oprava zostala hádankou.
Oddeľte tri veci, ktoré môžu byť odmietnuté
Prvým kandidátom je identitný materiál: certifikát, ktorého kľúč je príliš malý alebo ktorého podpisový algoritmus politika už neakceptuje. Druhým je parameter výmeny kľúčov, napríklad skupina, ktorú politika považuje za príliš slabú. Tretím je sada šifier, ktorú politika vylučuje. Všetky tri môžu spôsobiť zlyhanie handshake a rozlíši ich iba text chyby a fáza vyjednávania.
Žiadna z tých troch nie je šifra dátového kanála. OpenVPN vyjednáva šifrovanie tunela oddelene od TLS handshake, takže spojenie, ktoré po zmene bezpečnostnej úrovne uspeje, nič nehovorí o tom, ktorá šifra chráni vaše údaje. Ak sa otázka, ktorú skutočne kladiete, týka dôvernosti údajov, pozeráte sa na úplne nesprávny gombík.
Zníženie úrovne rozširuje prijatie všetkých troch vstupov naraz. To je časť, ktorú ľudia prehliadajú: oprava, ktorá pustí starý certifikát, pustí aj slabú skupinu a sadu, ktorú ste možno nechceli povoliť. Jedna chyba podnietila zmenu a zmena je širšia ako chyba. Táto asymetria je dôvod, prečo je obmedzená výnimka lepšia ako predvolená hodnota pre celé prostredie.
Zmeňte vstup, nie prahovú hodnotu
Zachovajte presnú chybu, skôr než sa dotknete konfigurácie, vrátane fázy, ktorá ju nahlásila, a objektu, ktorý pomenovala. Problém s certifikátom sa rieši nahradením certifikátu niečím, čo aktuálna politika akceptuje, čo zvyčajne znamená jeho opätovné vydanie u autority, a nie preinštalovanie toho istého súboru.
Ak odmietnutý vstup patrí peerovi, ktorého neovládate, rozhovor je s jeho vlastníkom o podporovanom náhradnom materiáli. Zníženie vlastného prahu, aby ste ubytovali systém, ktorý nikto neudržiava, presúva náklady z nich na všetkých, ktorí sa pripoja po nich.
Kde server vynucuje politiku, skontrolujte, či skutočnou príčinou nie je nastavenie na úrovni OpenVPN, skôr než obviníte knižnicu. Profil certifikátu, ktorý žiada prísnejšiu triedu, než nasadený certifikát dokáže splniť, zlyhá bez ohľadu na bezpečnostnú úroveň, a odstránenie tohto profilu je užšia zmena ako vypnutie kontrol knižnice.
Ak ho musíte znížiť, obmedzte ho a zdokumentujte
Niekedy je schválená výnimka pre kompatibilitu správnou odpoveďou, najmä pre starého peera s datovaným plánom vyradenia. Obmedzte ju na službu, ktorá ju potrebuje, nie na celý hostiteľ: konfiguračný súbor pre konkrétnu službu alebo vyhradená konfigurácia OpenSSL má menší dosah ako export v globálnom profile.
Zapíšte spolu s výnimkou štyri veci: presné nastavenie, vlastníka, ktorý ju schválil, ovplyvnených klientov a podmienku, za ktorej bude odstránená. Výnimka bez podmienky vyradenia je trvalé oslabenie s pripojeným dočasným odôvodnením.
Vrátenie späť by malo byť jediným krokom, ktorý ste už otestovali. Ponechajte predchádzajúcu konfiguráciu, aplikujte zmenu, potvrďte, že sa služba spustí, a presne vedzte, ktorý súbor obnoviť, ak sa nasledujúce pripojenie zachová inak, než očakávate.
Potom overte identitu a ochranu
Úspešné pripojenie dokazuje iba to, že ho revidované podmienky pustili. Potvrďte, že overovanie názvu hostiteľa a peera stále robí svoju prácu, že používaný certifikát je ten, ktorý ste chceli nasadiť, a že vyjednaný dátový kanál zodpovedá politike, o ktorej si myslíte, že ju máte.
openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20Referenčná dokumentácia OpenSSL k bezpečnostným úrovniam výslovne uvádza, že rámec uplatňuje limity na kľúče, podpisy, skupiny a sady spoločne a že nulová úroveň povoľuje všetko, čo kontroluje spätné volanie. To je rozsah toho, čo ste zmenili, a to je veta, ktorú citovať, keď sa niekto pýta, či bola oprava úzka.
Odovzdanie, ktoré prežije audit, hovorí, ktorá politika odmietla ktorý vstup, čo sa zmenilo a čo zostáva akceptované. „Funguje to so SECLEVEL=0“ je pozorovanie o jednom pripojení, nie bezpečnostné hodnotenie nasadenia.