Ротирање PSK-а на AWS VPN-у: који тунел пада и када
Промена једног унапред дељеног кључа тунела AWS VPN обара тај тунел док се обе стране не сложе. Прво докажите резервни пут, затим ротирајте тунеле један по један.
Тунел пада у тренутку када се два краја не слажу око унапред дељеног кључа и остаје доле док обе стране не понесу нову вредност. Тај део је очекиван: AWS третира промену као прекид изабраног тунела, а партнер неће завршити IKE док се кључеви разликују. Оно што људе изненади је друга половина. Други тунел не преузима саобраћај сам, осим ако нисте проверили да може да га носи. Ротирајте овим редом и прекид остаје унутар једног тунела.
Шта се заправо дешава када се кључ промени
ModifyVpnTunnelOptions преписује опције једног тунела, идентификованог по његовој спољној IP адреси. Тунел се руши и поново гради, па IKE и IPsec преговарају од нуле са новим кључем. AWS наводи да прекид може да траје неколико минута, што је довољно дуго да протокол рутирања то примети. Други тунел у истој вези позив не дира.
Постоји други ефекат који вреди знати пре него што било шта пошаљете. Операција измене узима цео скуп опција тунела, па поље које изоставите бива уписано назад са својом подразумеваном вредношћу. Ако сте подешавали трајања фазе 1 или фазе 2, или поставке откривања мртвог партнера, проследите тренутне вредности у истом захтеву или планирајте да их после вратите.
Прво прочитајте тренутне вредности, затим промените једно поље. Тај редослед је цела дисциплина овог задатка.
Прво ускладите AWS тунел са правим партнером
Конзола означава тунеле по редоследу, а ваш уређај не користи ту ознаку. Идентификујте тунел по његовој спољној IP адреси и ускладите га са одељком партнера на клијентском пролазу. Тунел 1 у локалној конфигурацији није доказ да уређујете тунел који AWS назива тунелом 1.
Почните од саме везе, која наводи оба тунела и кључ који сваки тренутно држи:
aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
--query "VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,PreSharedKey]"Враћени кључ је онај који се сада користи. Упоредите га са конфигурацијом партнера пре него што било шта промените, јер несагласност која већ постоји објашњава тунел који никада није био стабилан.
Прво дозволите другом тунелу да носи саобраћај
Два тунела у једној вези не доказују да је ваш уређај конфигурисао оба, да оба оглашавају префиксе који су вам потребни или да саобраћај иде између њих. Проверите преговарање алтернативног тунела, његове руте и стварни ток апликације у оба смера. Са BGP-ом је живо суседство користан доказ, али није исто што и потврда префикса. Са статичким рутирањем потврдите како пролаз бира пут и шта ради када жељени нестане.
Ако алтернатива не може да носи радно оптерећење, закажите прекид или поправите алтернативни тунел пре него што дотакнете кључ. Светло за статус на страници конзоле није обећање непрекидне услуге.
Ротирајте један тунел, затим проверите стварним саобраћајем
Када је алтернативни пут доказан, редослед је кратак. Запишите адресу тунела, његовог партнера и поставке које нису тајне, и одржавајте управљачки пут до пролаза који не зависи од тунела који ћете прекинути.
- Ажурирајте партнера клијентског пролаза за изабрану спољну адресу или припремите измену тако да ступи на снагу неколико секунди после позива API-ја.
- Пошаљите позив за измену са новим кључем плус тренутна трајања и вредности DPD-а.
- Сачекајте да се IKE и IPsec врате, затим потврдите руте и потребне префиксе.
- Пропустите репрезентативан ток апликације кроз тај тунел и посматрајте оба смера.
Тунел је неупотребљив док се стране не сложе и док AWS примењује измену, па ажурирање партнера мора да уследи одмах, а не после ручка. Тек када измењени тунел носи стварни саобраћај, поновите поступак на другом.
Зауставите се ако су опоравак или рутирање после првог тунела још несигурни. Два полуисправна тунела гора су од једног за који знате да ради.
Када се опоравак заглави, читајте IKE страну
Тунел који остане доле након што оба краја држе нови кључ обично је несагласност политике коју је ротација открила, а не створила. Предлози, идентитет који партнер шаље и селектори саобраћаја морају сви да се слажу са AWS страном, а вредност која је преживела успостављен тунел ипак може бити одбијена током новог преговарања. Прочитајте статус преговарања и поруку приложену уз њега пре него што други пут промените кључ.
aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
--query "VpnConnections[0].VgwTelemetry[].[OutsideIpAddress,Status,StatusMessage]"Ако измену треба поништити, не враћајте стари кључ само зато што је некада радио. Третирајте компромитован кључ као компромитован и уместо тога поправите преговарање. Завршите са проверена оба тунела и ажурираним пописом тајни, тако да сваки партнер бележи коју вредност држи, а документацију о опцијама тунела AWS држите поред runbook-а.