Адзін стары суразмоўца прымушае TLS 1.0: абмяжуйце выключэнне, а не хост
Адна прылада, якая затрымалася на TLS 1.0, або стары сертыфікат пастаўшчыка могуць прымусіць слабейшы парог. Абмяжуйце выключэнне, потым вымерайце, што сапраўды ўзгоднена.
З’яўляецца адна старая прылада, не можа падключыцца, і самае хуткае на выгляд рашэнне — паслабіць увесь хост, пакуль злучэнне не ўдасца. Гэты абмен незаўважны ў моманце і пастаянны на практыцы, бо ніхто не прыбірае парог, які ўрэшце працуе. Ціск ствараюць дзве вельмі розныя няспраўнасці, і толькі адна з іх наогул пра шыфры. Спачатку ўпарадкуйце няспраўнасць, потым змясціце выключэнне туды, дзе яно не можа распаўсюдзіцца.
Падзяліце збой на дзве часткі, перш чым правіць дырэктыву
Радок у журнале сервера пра адсутнасць агульнага шыфра або пра непадтрыманую версію пратакола паходзіць з кантрольнага канала: два бакі не змаглі дамовіцца, як абараняць само ўзгадненне. Радок кліента пра тое, што ні адзін спосаб праверкі сертыфіката сервера не ўключаны, паходзіць зусім з іншага месца, бо гэты кліент наогул не правярае, хто адказаў. Змена шыфра даных нічога не дае ў другім выпадку, а даданне праверкі ролі нічога не дае ў першым.
Бярыце самы ранні радок збою з кожнага боку, а не апошні радок перад адключэннем, бо апошні звычайна з’яўляецца следствам. Затым вызначце, які файл кліент сапраўды адкрыў: імпартаваны профіль часта існуе двойчы пад рознымі адлюстраванымі імёнамі, і рэдагаванне копіі, якую ніхто не чытае, дае пераканаўчую адсутнасць змен. Працэс, які выконваецца, захоўвае налады, з якімі ён запусціўся, таму захаваны файл — не загружаны файл. Каманды ніжэй паказваюць узгадненне кліента побач з бачаннем сервера той жа спробы.
openvpn --config <profile>.ovpn --verb 4 2>&1 | head -n 40
journalctl -u [email protected] --since '-10 min' | grep -iE 'cipher|tls|verify'
Другі слухач — гэта сумленнае месца для слабейшага парога
Калі прылада ўпіраецца ў TLS 1.0 з каналам даных да 2.5, сервер павінен прапанаваць ніжэйшы парог кантрольнага канала і шыфр даных, які стары кліент пазнае. Дырэктыва запаснога варыянту існуе менавіта для такога суразмоўцы, а спіс шыфраў трымае сучасных кліентаў на сучасных наборах. Абедзве дырэктывы належаць слухачу, а не карыстальніку ці злучэнню, і ніякая опцыя для асобнага кліента не звужае іх пасля. Таму адна старая прылада на галоўным порце — гэта рашэнне пра кожнага суразмоўцу, які яго дзеліць.
Дзе платформа дазваляе, запусціце стары слухач як асобны асобнік на асобным порце, дазвольце гэты порт толькі з адраса прылады і пакіньце асноўную службу ў спакоі. Запішыце, навошта існуе другі слухач, у файле, які нясе яго канфігурацыю, бо будучая чыстка інакш прачытае яго як пакінутае смецце. Падзел мае сэнс толькі тады, калі слабейшы парог сканчаецца там, дзе сканчаецца прылада.
tls-version-min 1.0
data-ciphers AES-128-GCM:AES-256-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
Што насамрэч ламае стары сертыфікат пастаўшчыка
Памылка праверкі — гэта адсутная прывязка ролі: без яе кліент прыме любы сертыфікат, які будуецца да даверанага CA, незалежна ад таго, ці выдадзены ён для сервера. Спачатку прывяжыце сертыфікат да ролі сервера і лічыце прывязку патрабаваннем, а не рэгулявальнай ручкай. Сапраўдная праблема з сертыфікатам ёсць толькі ў профіля, які ўсё яшчэ падае пасля гэтага кроку.
Стары сертыфікат пастаўшчыка, памер ключа або алгарытм подпісу якога больш не задавальняе стандартную палітыку OpenSSL, — гэта выпадак для абмежаванай змены ўзроўню бяспекі на кантрольным канале. Зніжэнне ўзроўню там не адключае праверку, і яго ніколі нельга спалучаць з пустым CA, адключанай наладай праверкі або неправераным імем хоста. Трымайце радок унутры таго аднаго профіля, якому ён патрэбны; глабальны экспарт паслабленай канфігурацыі OpenSSL перадаў бы тое ж паслабленне кожнай праграме на машыне.
remote-cert-tls server
tls-cipher "DEFAULT:@SECLEVEL=0"
Чытайце ўзгодненыя значэнні, а не банер
На ўзроўні падрабязнасці 4 абодва бакі друкуюць версію TLS і шыфр кантрольнага канала, на якіх яны спыніліся, і шыфр даных для сеанса. Чытайце гэтыя радкі, а не банер ініцыялізацыі, які паведамляе пра поспех, а не пра яго ўмовы. Затым падключыце сучасны кліент да галоўнага слухача і пераканайцеся, што ён па-ранейшаму трапляе на сучасны набор, бо выключэнне, якое прасачылася ў агульную канфігурацыю, паказвае сябе менавіта тут. Значэнні, якія вы скапіруеце, стануць базавай лініяй для наступнага агляду.
Праверце старую прыладу асобна: яна павінна падключыцца і быць адзіным сеансам у журналах, які паказвае слабейшыя параметры. Калі другі суразмоўца таксама ўзгадніць стары набор, выключэнне шырэйшае за задуманае і падзел слухача не адбыўся. Запішыце абодва назіранні, а не толькі выснову.
Кожнае выключэнне патрабуе ўладальніка і даты
Выключэнне без умовы выдалення ціха становіцца стандартам, таму пастаўце прыладу, уладальніка, прычыну і дату, калі яно знікне, побач з канфігурацыяй, якую яно апраўдвае. Без гэтага радка слабейшы парог перажыве абсталяванне, якому ён быў патрэбны.
Замена кліента або просьба да пастаўшчыка пра актуальны профіль — гэта мэта; выключэнне ж — затрымка, а не рашэнне. Калі прылада выходзіць з эксплуатацыі, выдаліце слухач і профіль адной зменай, каб ні адна палова не засталася працаваць. Нішто з гэтага не робіць старыя параметры бяспечнымі, яно толькі не дае мяжы адной прылады стаць базай для ўсіх.