Булут чек арасында VPN кардарларынын IP дарегин сактоо же SNAT кылуу
Булакты сактоо ар бир журналда кардардын инсандыгын сактайт, SNAT маршруттоо таблицасын кичине кылат. Үч шарт колдонмого кайсы керек экенин айтат.
VPN кардардын дарегин колдонмого чейин сактоо ар бир журнал сабы жана уруксат тизмесиндеги ар бир жазуу бирдей маанини билдирет. Аны булуттун четине кайра жазуу маршруттоо таблицасын жөнөкөй, журналдарды пайдасыз кылат. Эки тандоонун эч бири өзүнөн өзү туура эмес эмес жана аны чечүүчү аргумент сейрек аткарууга байланыштуу болот. Үч шарт чечет: колдонмо кайсы адам туташканын билиши керекпи, булуттук кездеме жөнөтө турган булакты кабыл алабы жана кийин кайтуу маршрутунун жоопкерчилигин ким алат.
Үч шарт чечет
Колдонмонун талабынан баштаңыз, тармактык диаграммадан эмес. Эгер авторизация же аудит жеке кардар дарегине көз каранды болсо, аны сактоо функционалдык талап, ал эми которуу артка чегинүү. Эгер колдонмого трафиктин алыскы кирүү жолу менен келгенин билүү гана керек болсо, которулган дарек жетиштүү жана аны иштетүү алда канча арзан.
Экинчи шарт механикалык. Виртуалдык тармак жөнөтүүчү интерфейске ыйгарылбаган даректи билдирген пакетке автоматтык түрдө ишенбейт. Бултук кездемелердин көбү муну ар кандай жолдор менен жана ар кандай аттар менен талап кылат, ал эми муну этибарга албаган долбоор диаграммада туура көрүнүп, өндүрүштө унчукпай түшүп калат.
Үчүнчүсү уюштуруучулук. Булактарды сактоо колдонмонун кошумча тармагынын маршруттоо таблицасы кардар префикси үчүн шлюзге кайра көрсөтүшү керек жана кийин кошумча тармак кошкон ар бир команда бул маршрутту ырааттуу кармашы керек дегенди билдирет. Бул бир жолку кичине чыгым жана ондогон эсептер боюнча кайталанма чыгым. Бул жүрүм-турумду убада кылардан мурун аны ким төлөйт экенин чечиңиз.
Маршрут жасалмалоого уруксат эмес
Кайтуу маршрутун кошуу кошумча тармагыңызга жооптор кайда барышы керек экенин айтат. Ал кездемеге бул пакеттерди өткөрүп жөнөткөн инстанстын аларды чет өлкөлүк булак менен чыгарууга укугу бар экенин айтпайды. AWSте тиешелүү көзөмөл булак менен багытты текшерүү, ал ар бир инстанс үчүн көрүнөт:
aws ec2 describe-instances --instance-ids i-0a1b2c3d4e5f60718 \
--query "Reservations[].Instances[].SourceDestCheck"
aws ec2 modify-instance-attribute --instance-id i-0a1b2c3d4e5f60718 \
--no-source-dest-check
Аны документтелген иши өткөрүп жөнөтүү болгон инстанс үчүн гана өчүрүңүз, башка эч нерсе үчүн эмес. Текшерүүнү күйүк абалда калтырган ар бир колдонмо VM карызга алынган булак менен трафик чыгарууга пайдаланылышы мүмкүн болгон бир машина аз дегенди билдирет. Эгер платформаңыз AWS болбосо, жүрүм-турум өтөт деп болжолдоонун ордуна барабар каршы жасалмалоо же уруксат берилген дарек параметрин издеңиз.
Тез пакет кармоо суроону консолду окугандан тезирээк чечет. Эгер жооптор чыгып кетип, кардар аларды эч качан көрбөсө, колдонмо эмес, кездеме жасалма булакты таштап жатат.
Которуу эмнени сатып алат жана канча турат
Булакты шлюзде кайра жазуу кайтуу жолунун маселесин жок кылат. Колдонмо өзү кантип жетүүнү мурунтан билген бир даректи көрөт жана кардар префикси булуттун маршруттоо таблицасында эч качан көрүнбөшү керек. Linuxте эреже бир сап, эң кууш версиясын жазган жөн:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 172.20.8.0/24 -o ens5 -j SNAT --to-source 10.40.3.10
Колдонмонун азыр эмнени жазарына көңүл буруңуз: ар бир колдонуучу үчүн 10.40.3.10, ар бир туташууда, түбөлүккө. Ошол мааниге негизделген каалаган дарек уруксат тизмеси эми алыскы кирүүнүн бүткүл популяциясына жетүү берет жана ар кандай окуяны карап чыгуу бул ким болду деп жооп берүү үчүн шлюзге кайтууга тийиш.
Чечим которуудан баш тартуу эмес, даректи инсандык деп көрсөтүүнү токтотуу. Кардардын инсандыгын аутентификацияланган талаада алып жүрүңүз, аны шлюзде которулган кортеж менен бирге журналга жазыңыз жана колдонмо ага кошулушуна жол бериңиз. Кошулуу ачкычы жок болсо, которуу тармактык маселени туруктуу сот-медициналык маселеге айландырат.
Реле башка интерфейс
Колдонмонун алдындагы тескери прокси маршрутталган жол маселесин толугу менен айланып өтөт. Прокси өзүнүн backend туташуусун ачат, ошондуктан кардар префикси виртуалдык тармактын ичинде маршрутталуучу болушу милдеттүү эмес, ал эми колдонмо прокси орноткон аталышта инсандык ала алат.
Бул аталыш backend аны проксиден кабыл алып, башка эч нерседен кабыл албаганда гана ишенимдүү. nginx терминдеринде бул келгендин баарына ишенүүнүн ордуна ишенимдүү өнөктөштү ачык атоону билдирет:
set_real_ip_from 10.40.3.10;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
Backendке түз жете алган ар кандай кардар ошол эле аталышты жасалмалай алат, ошондуктан backend проксиден башка жол менен жеткиликсиз болушу керек. Бул firewall фактысы, конфигурация пикири эмес, жана үзүндүнү көчүргөндө адамдар ушул божомолду өткөрүп жиберет.
Реле ошондой эле эмнени сатып алып жатканыңызды өзгөртөт. Колдонмо деңгээлиндеги инсандык жана аны журналга жазуу үчүн табигый орун аласыз; жалпылыктан баш тартасыз, анткени ар бир жаңы протокол өзүнүн прокси колдоосун талап кылат. HTTP кызматтары үчүн бул алмашуу адатта жакшы, ал эми HTTP эмес нерсенин баары үчүн адатта таптакыр жеткиликсиз.
Ар бир чек ара эмнени көрөрүн жазыңыз
Эмнени тандасаңыз да, дизайн кароосу ар бир секирикте булак дарегин жана далилденүүчү инсандыкты атаган бир таблица менен аякташы керек. Ансыз биринчи окуя ар бири башка кардарды сүрөттөгөн үч команданы жаратат.
| Boundary | Source the next hop sees | What is actually proven |
|---|---|---|
| Client to gateway | 172.20.8.14 | A certificate or credential was presented |
| Gateway to app subnet, preserved | 172.20.8.14 | The same session, if the return route exists |
| Gateway to app subnet, translated | 10.40.3.10 | Only that traffic came through the gateway |
| Proxy to backend | 10.40.3.10 plus a header | The proxy asserted an identity it authenticated |
Анан тандаңыз. Колдонмонун авторизациясы чындап эле кардар дарегине көз каранды болсо жана маршрутту өз мойнуңузга ала алсаңыз, булакты сактаңыз. Андай болбосо жана инсандыкты тилкенин сыртында алып жүрө алсаңыз, которуңуз, ал эми платформага таандык жөнөтүү параметрлери үчүн AWSтин жөнөтүүчү инстанстар боюнча нускамасын колдонуңуз. Кызмат HTTPде сүйлөсө жана инсандык такыр дарек болбошун кааласаңыз, релеге кайрылыңыз.