Апавяшчэнні пра ўваход у VPN — гэта не апавяшчэнні пра ўзлом: назірайце за сесіяй
Нестандартны ўваход — гэта падстава для праверкі, а не прысуд. Звяжыце запіс аўтэнтыфікацыі з сесіяй, а затым з тым, чаго яна дакранулася, перш чым назваць гэта ўзломам.
Апавяшчэнне VPN, якое спрацоўвае на новую краіну, здаецца канчатковым, і звычайна яно такім не з'яўляецца. Аўтэнтыфікацыя кажа, што спроба была прынята; сесія кажа, якое злучэнне яе перанесла; запісы рэсурсаў кажуць, што адбылося ўнутры гэтага злучэння. Кожны з іх адказвае на іншае пытанне. Правіла, якое злівае ўсе тры, дае трыццаць заявак у панядзелак і прапускае сапраўдны выпадак у пятніцу.
Замежны адрас — гэта пытанне, а не адказ
Падарожжы, мабільныя аператары, якія выходзяць у іншай краіне, карпаратыўны вэб-праксі і пераразмеркаваны пул carrier-grade NAT — усё гэта зрушвае бачную крыніцу, не зрушваючы нападніка. Запіс уваходу адлюстроўвае, адкуль злучэнне ўвайшло ў сетку, а не хто трымаў прыладу.
Зваротная памылка горш, бо яна ціхая. Выкрадзены пароль, выкарыстаны з горада самога карыстальніка, дае ўваход, які супадае з усімі папярэднімі ўваходамі па праверцы геаграфіі.
Стаўленне да геаграфіі як да прысуду мае вымерны кошт. Вандроўныя ноўтбукі ствараюць пастаянны паток праверак, правяральнікі вучацца зачыняць іх не чытаючы, і звычка жыве, пакуль сапраўдны выпадак не трапіць у тую ж чаргу.
Тры тыпы запісаў адказваюць на тры розныя пытанні
Пачынайце з таго, што выпускаюць разгорнутыя прадукты, а не з таго, што праспект прадукту кажа, што яны маглі б выпускаць. Рашэнне аўтэнтыфікацыі называе заяўленую асобу, метад і вынік. Жыццёвы цыкл сесіі называе злучэнне, шлюз і прызначаны адрас, ад пачатку да прыпынку.
| Record | Question it answers | What it cannot prove |
|---|---|---|
| Authentication decision | Which identity was accepted or rejected, by which method, at what time | That the person operating the device was the account owner |
| Session lifecycle | Which connection, gateway and assigned address were active, and for how long | What the session did with that access |
| Resource event | Which read, write or denied operation a service observed | Which human behind the session triggered it |
| Policy change | Whether an administrator altered the rule that governs the access | Whether the change was reviewed or intended |
Пустая ячэйка — гэта прагал у зборы, а не апраўданне. Калі падзеі рэсурсаў ніколі не прыходзяць, адсутнасць падазронага чытання азначае, што канвееру няма чаго паведамляць, і ціхая панэль апісвае канвеер, а не сетку. Запішыце, якія запісы разгортванне фактычна стварае, перш чым абяцаць правіла, якое ад іх залежыць, і назвіце ўладальніка кожнага адсутнага патоку.
Уліковыя дэталі — гэта месца, дзе сесіі становяцца правяральнымі. Улік RADIUS, апісаны ў RFC 2866, нясе запуск, прыпынак і прамежкавыя абнаўленні, прывязаныя да ідэнтыфікатара сесіі, таму сесія з пачаткам і без прыпынку — гэта прагал, які вы можаце назваць, а не загадка.
Звязвайце па сесіі, а не па імені карыстальніка
Адзін уліковы запіс законна трымае некалькі сесій адначасова: ноўтбук, тэлефон, лабараторная машына, пакінутая падключанай на ноч. Звязванне кожнай падзеі для гэтага імя карыстальніка злівае тры прылады ў адну гісторыю і затым чытае спалучэнне як кампраметацыю. Прызначаныя адрасы таксама перапампоўваюцца, таму звязванне, якое працягвае супадаць з адрасам пасля заканчэння сесіі, цягне прыладу мінулага месяца ў сённяшні інцыдэнт. Захоўвайце ключ сесіі побач з адрасам і абмяжуйце супадзенне часавым акном, якое сесія фактычна пакрывала.
Там, дзе пераклад здымае арыгінальную крыніцу, перш чым служба яе ўбачыць, выкарыстоўвайце асобу, якая застаецца на гэтай мяжы, напрыклад суб'ект узаемнага TLS або сцвярджэнне адзінага ўваходу. Выдумванне ўзаемаадназначнай адпаведнасці паміж адрасам і чалавекам — гэта тая ж памылка з лішнімі крокамі.
Апавяшчэнне без уладальніка — гэта панэль
Кожнае правіла патрабуе ўмовы, бясшкодных тлумачэнняў, якія яго ствараюць, доказаў, якія трэба выцягнуць, і чалавека, які дзейнічае. Паўторная адхіленая адміністрацыйная аперацыя, усплёск няўдалых пароляў і маўклівы зборшчык — гэта тры розныя інцыдэнты з трыма рознымі гадзіннікамі.
Апавяшчэнне — гэта не стрымліванне, а спіс рассылкі нічога не абмяжоўвае. Змена жывой сесіі патрабуе кампанента, які можа гэта зрабіць, ці то шлюз, які скідае злучэнне, ці пастаўшчык ідэнтычнасці, які адклікае сесію. Састарэлыя патокі і адсутныя запісы прыпынку таксама належаць да тэксту правіла, бо зборшчык, які за суткі нічога не даслаў, выглядае з панэлі ў дакладнасці як ціхая сетка. Розніца бачная толькі ў самім канвееры.
Праверце шлях збору, перш чым давяраць ціхаму тыдню
Дакажыце канвеер ад пачатку да канца, перш чым наладжваць адно правіла. Каманды ніжэй пацвярджаюць, што слухачы аўтэнтыфікацыі і ўліку ўключаны, што тэставыя ўліковыя дадзеныя адхіляюцца па правільнай прычыне і што падзеі сесій усё яшчэ прыходзяць:
ss -uanp | grep -E ':(1812|1813)\b' radtest alice 'not-the-password' 127.0.0.1 0 testing123 journalctl -u openvpn-server@server --since '-30 min' | grep -c 'Peer Connection Initiated' timedatectl | grep -E 'System clock|synchronized'
Адмова ў доступе з тэсту даказвае, што запыт дасягнуў сервера і агульны сакрэт супаў, і менавіта гэтую частку людзі прапускаюць. Тайм-аўт замест гэтага паказвае на сакрэт, слухач або фільтр перад ім, і кожнае апавяшчэнне ніжэй немагчыма праверыць, пакуль гэта не выпраўлена.
Стан гадзінніка важны, бо вокны карэляцыі мяркуюць згоду. Шлюз, які адхіляецца на хвіліны, робіць чыстае звязванне сесіі немагчымым на выгляд, і правяральнікі кампенсуюць, пашыраючы акно, пакуль звязванне не перастане адрозніваць. Праверце зрух перад рэдагаваннем правіла.
Затым прагоньце адно правіла пад бясшкодным тэстам: стварыце ўваход з нечаканага адраса, пацвердзіце, што апавяшчэнне спрацоўвае, пацвердзіце, што рэагавальнік можа выцягнуць сесію і яе падзеі рэсурсаў, і пацвердзіце, што заяўка нясе ідэнтыфікатар сесіі. Правіла, якое стварае звязную гісторыю, праходзіць. Правіла, якое стварае кучу радкоў журнала, усё яшчэ панэль. Запішыце вынік насупраць правіла, каб наступная праверка пачыналася з доказаў, а не з інтуіцыі.