Double VPN.
Сегодня я объясню вам для чего нужен VPN и как правильно его настраивать. Прочитав мой пост до конца, вы научитесь устанавливать свой собственный двойной VPN.
Начну я с того, чтобы определиться какие требования есть для VPN и что из себя представляет данная технология. Многие из вас ей пользуются, но не понимают что это вообще такое и как работает.
Обычно, когда люди говорят о VPN, то он подаётся как средство для анонимности и обхода блокировок. Но изначально технология VPN была разработана для того, чтобы защищать корпоративные сети от прослушивания трафика. Представьте, что существует компания и неё есть несколько офисов. Если эти офисы в соседних зданиях, то между ними можно провести провода и тогда можно можно будет объединить эти офисы в единую компьютерную сеть. Это позволит иметь общий доступ сотрудникам ко всем принтерам, сканерам, серверам и другим рабочим машинам. Но если один из этих офисов находится в одном городе, а другие в других городах или даже странах, то тут уже возникает проблема. Провод не протянуть, нужно пользоваться общедоступными сетями, то есть интернетом, чтобы маршрутизировать данные. Если просто передавать данные по интернету используя общедоступные маршруты, то каждый желающий может их прослушать и вмешаться. Ещё до появления https и шифрование трафика на транспортном уровне, возникла такая технология, как VPN. Расшифровывается VPN как Virtual Private Network и переводится это как Виртуальная Частная (приватная) Сеть. Виртуальная она, потому что не создаётся физической инфраструктуры, это просто сеть на уровне софтового и транспортного стека OSI. Частная (приватная), потому что в ней используется шифрование, которое позволяет пускать в эту сеть только тех, кому выдан доступ. Если мы говорим про компанию, которая поднимает VPN, чтобы защитить свой собственный трафик, то в этом случае только сотрудники этой компании смогут получать доступ, потому что у них будут ключи шифрования или логины с паролями. Авторизация по логину и пароль бывает очень редко, обычно на практике никто это не использует, предпочитая ssh ключи.
Смысл здесь такой. Где-то поднимается VPN сервер. Сервер занимается тем, что он обеспечивает для участников доступ к этой самой сети. Внутри этой сети создаётся своя собственная топология. Устройства, которые к этой сети подключаются, могут друг друга видеть в этой сети даже если они находятся при этом на расстоянии много тысяч километров друг от друга. Они могут друг к другу обращаться, посылать данные, при этом для провайдера или любой другой заинтересованной стороны, которая захочет послушать соединения, все данные, которые передаются между этими точками, будут для наблюдателя непонятной шифрованной абракадаброй. Соответственно, в силу того, что VPN создавался именно как технология для связи различных компаний, то его полноценно не станет никто запрещать, потому что тогда просто вся инфраструктура экономики сломается. Ведь огромное количество компаний, в том числе и в государственном секторе, нуждаются в использовании VPN как технологии. Использовать же её, для того, чтобы анонимизировать своё интернет соединение, то есть спрятать свой IP адрес и шифровать все передаваемые данные, все начали после того, как увидели как эта технология в целом работает и что при этом происходит.
Разберу, что при этом происходит на техническом уровне. Есть некий клиент, то есть некий компьютер, который обращается к серверу. И как вообще получается так, что скрывается IP адрес и что работают заблокированные сайты и почему это всё так работает? Я могу привести очень простой и жизненный пример. Представим, что VPN это некий 18-летний человек. У него есть младший брат, 16-летный, который хочет купить себе пиво в магазине, но ему не продают, потому что нет 18-ти. Тогда он обращается к своему брату и говорит: "Давай я дам тебе 100 рублей, а ты пойдёшь и купишь мне бутылку пива". Тот отвечает: "Хорошо." Идёт в магазин, покупает пиво, все думают что он его купил, а на самом деле оно для 16-летнего. Работа VPN выглядит примерно также. То есть, пакеты с вашего устройства отправляются на VPN сервер по зашифрованному каналу, который работает с помощью протокола UDP, либо TCP. Но по факту это просто поток зашифрованных данных, который провайдеру непонятен и на этом уровне никаких обращений ни к каким сайтам нет.
Сервер получает данные с вашего устройства, а дальше он используя технологию NAT, отправляет эти данные дальше в интернет представляясь собственным IP адресом и говорит интернету: "Ответы присылай мне." Получается, что если этот VPN сервер находится например в Германии, то сайт, на который он обращается, думает что его запрашивает клиент из Германии. Блокировки же, которые происходят на уровне клиента, они происходят на уровне провайдера, который предоставляет вам интернет. Интернет провайдер будет блокирован DNS запросы, а DNS запрос, если вы используете VPN, пойдёт на VPN сервер по зашифрованному туннелю, а потом уже дальше пойдёт в интернет. А в Германии эти сайты уже будут не заблокированы.
Если вы используете VPN соединение, то весь ваш трафик, включая DNS запросы, пойдёт мимо провайдера и его DNS, тем самым провайдер не видит ничего из этого трафика, он знает только, что вы отправляете запросы на некий VPN сервер. Знает он это потому, что если вы весь свой трафик пускаете на один IP адрес, то не трудно догадаться, что это VPN, потому что весь трафик завернулся в шифрование и отправляется куда-то дальше. Если пользователь сидит без VPN, то видно что его запросы идут к куче разных IP адресов. Даже при посещение одной веб страницы у вас будут идти запросы к разным IP адресам, потому что там будут скрипты аналитики и рекламные системы, в общем всё то, что на разных серверах стоит и будет много запросов, а тут все запросы идут на один сервер. Если кто не понял, хотя трафик и зашифрован, но провайдер видит IP адрес вашего VPN, видит кто с какого IP и когда на него подключался. Поэтому, если вы поставили одиночный VPN, зашли например в vk и кого-то обманули на пирожок с капустой, думая что вы защищены, то это не так. Один запрос от полиции в vk и там выдадут IP адрес вашего VPN с которого вы там сидели. Далее от полиции идёт запрос к вашему провайдеру о том, кто подключался к данному IP адресу, и провайдер отправит им ответ, с какого IP адреса подключались к этому VPN, в какое время, имя и фамилию на кого зарегистрирован интернет подключаемого человека, а также физический адрес проживания. Если дело серьёзное, то это займёт буквально 30 минут, а если нет, то пару дней пока запросы обработают. Как видите, полиции даже не нужно подавать запрос владельцу сервера, куда вы подключаетесь.
Если же к вам до сих пор ещё не пришли, то это не значит, что вы умный, это просто значит что вы Неуловимый Джо.
- Это проскакал неуловимый Джо.
- А потому что никому он не нужен.
Поэтому запомните, что САМЫЙ МИНИМАЛЬНЫЙ уровень анонимности это двойной VPN. То есть, вы подключаетесь сначала к первому VPN, затем ко второму. На выходе в интернет у вас будет IP адрес второго VPN. В таком случае, если полиция подаст запрос провайдеру и спросит кто подключался к этому IP, то провайдер видит подключение только к первому VPN, а ко второму нет. В этом случае он ответит, что никто к нему не подключался.
Тут ещё стоит отменить, что если у вас стоит один VPN, а не два, и от провайдера полиция узнала, кто к нему подключался, то теоретически они будут знать что это вы, но так как у них нет логов, то и доказательств ваших действий, им в любом случае нужны будут логи от VPN сервера и подавать запрос также туда, потому для суда один факт подключения - это мало доказательств, также им нужно будет распутать всю финансовую цепочку переводов и доказать, что именно вы были конечным получателем денег. К вам конечно же могут придти, попугать, но если вы будете всё отрицать и молчать на допросе, а не совершать ошибки как это делают новички от испуга рассказывая всё что знают, то они позлятся, поорут, попугают, может быть дадут пару затрещен, но вы не сядете, а после допроса уйдёте домой. Почему в этом мало доказательств? Теоретически, какой-то хакер мог взломать ваш компьютер и использовать его в качестве proxy сервера с последующим подключение к VPN серверу творя далее разную ерунду, а вы даже об этом не догадывались. Такое действительно очень часто бывает.
Есть ещё такая проблема как утечка DNS. Вы подключаетесь к VPN, но запросы почему-то всё равно идут к провайдерским DNS, хоть ваш IP и меняется на IP VPN'а. Бывает это по ряду причин. Это может быть либо неправильно сконфигурированный VPN клиент, если вы используете малоизвестный коммерческий VPN, либо же если вы пользуетесь Windows. Разработчики из Microsoft решили ускорить интернет соединение и они не придумали ничего лучше, как сделать дополнительный алгоритм, который будет не дожидаясь ответов и игнорируя маршруты, которые в системе прописаны руками, отправлять запрос DNS на все доступные сети, чтобы как можно быстрее получить ответ. Из-за этого DNS запрос может утекать провайдеру. При этом не будет происходить блокировки вашего трафика, потому что браузеры и другие программы всё равно пошлют интернет запрос на DNS, который указан на VPN сервере и ответ вернётся. Утечка DNS опасна только тем, что вы спалите провайдеру какие сайты вы посещаете.
VPN полезен также тем, что позволяет защититься от атаки посредника (MITM атаки). Данная атака осуществляется следующим образом. Есть хакер, у которого есть физический доступ к сети. Есть MAC адрес вашего роутера и есть MAC адрес провайдерского оборудования. Они знают MAC адреса друг друга и обращаются друг к другу по этим адресам. Но MAC адрес можно легко подменить. Следовательно, хакер может залезть на крышу, врезаться в проводку, подключить её к собственному ноутбуку, у которого две сетевые карты и этим сетевым картам вручную задать MAC адреса. То есть он задаст сетевой карте, которые соединяется с вашим роутером, MAC адрес провайдера, а провайдеру задаст MAC адрес его оборудования. В итоге ваше устройство и оборудование провайдера будет думать, что они общаются друг с другом напрямую, а на самом деле весь трафик будет идти через ноутбук хакера и он сможет видеть всё что вы делаете, модифицировать ваш трафик создавая собственные запросы, собирать логины и пароли. Вообще сейчас это не очень актуально, поскольку с внедрением технологии https и ssl пиннинга, то есть технологии, которая позволяет привязывать и хорошо проверять ssl сертификаты.
Сейчас заставить ресурс открываться без https стало очень сложно и смысла в этом особо нет, если вы не слишком богатая цель. Но если вы используете VPN, то такого рода атака становится абсолютно бессмысленной по причине того, что весь трафик зашифрован и расшифровать его не имя супер квантового компьютера возможности не представляется. Вообще технология RSA (ассинхронное шифрование на базе случайных чисел) подвержена атакам с использованием квантового компьютера, но это пока что экспериментальная технология и никто её не будет использовать, если вы не террорист мирового масштаба. Но даже если она в скором времени и попадёт в свободный доступ, то с этого же оборудования начнут также делать и шифрование. Так что если кто-то переживает за то, что в какой-то момент квантовые компьютеры захватят мир в том плане, что всё шифрование превратится в тыкву, то переживать не стоит, потому что это вечное противостояние щита и меча. И в том, что касается шифрования, то щит всегда побеждает.
Если рассматривать VPN как защитный инструмент в модели безопасности, то угрозы, от которой он позволяет спастись в первую очередь, то это интернет цензура. Он защищает и приватность и свободу доступа к информации, не даёт провайдеру смотреть адреса посещаемых ресурсов и позволяет вам их открывать. Он позволяет защититься от утечки вашего IP адреса и он защищает вашу анонимность, в ограниченных пределах, от владельцев сайтов и различных трекеров.
Чтобы нельзя было взять данные на уровне провайдера и сайта, и сверить их, то есть, если используется обычный одинарный VPN, то провайдер знает IP адрес VPN сервера, а также посещаемые сайты знают его IP адрес. Если эти ниточки так или иначе соединить, то можно вычислить что за человек там сидит, кто им пользуется. Для этого и поднимается двойной VPN, где точка входа и точка выхода разделены между собой. То есть, на один IP адрес вы обращается, а другой IP адрес показываете сайтам в интернете.
VPN также позволяет защититься от атак на внутреннюю сеть или на роутер из внешних сетей, если это атака прослушать ваши данные. Зная статический IP адрес пользователя, можно совершать сетевые атаки на его оборудование, то есть на роутер, и взломав его роутер, можно взломать дальнейшие устройства, которые к нему подключаются, слушать его трафик, подменять DNS сервер, модифицировать трафик и массу всяких гадостей сделать. Поэтому если у вас статический IP адрес, то использование VPN я вам настоятельно рекомендую на постоянной основе. Также VPN позволяет защититься в раскрытии, как от провайдеров, так и сайтов, того, что вы используете Tor. У Tor'а есть ряд недостатков. Я в РФ не живу, но насколько знаю, то там постоянные проблемы у людей, чтобы заходить в Tor, часть его нод блокируется интернет провайдерами, толи блокируется, толи ещё что-то, в общем непонятная ситуация. Но если вы используете VPN, то тогда ваш трафик сначала идёт до VPN сервера, а потом уже идёт на входную ноду Tor'а и провайдер не в курсе, что вы пользуетесь Tor'ом. Также VPN уже, после Tor'а, позволяет вам защититься от атаки посредника на выходной ноде. Если Tor дополнительно на выходе не защищён VPN'ом, не рекомендую скачивать файлы, даже если они проверенные, потому что выходная нода может вмешиваться в ваш интернет трафик и подменять файлы заражённой версией. Понятно, что никто не будет запариваться и вообще все возможные файлы модифицировать. Но например, можно скачать какой-нибудь криптокошелёк с официального сайта, сделать модифицированные экзешник в котором есть какой-нибудь руткит или бэкдор, или просто какой-то вирус зашит в него, и если нода видит, что пользователь качает именно его, то тогда она берёт и пользователю налету подсовывает вместо настоящей версии поддельную в которой есть какой-то сюрприз. Если говорить о том, какие бывают VPN, они тоже бывают разные. Есть условно 3 типа, которые я рассмотрю.
Первое это Корпоративный VPN. Он настраивается и регистрируется сотрудниками той организации для целей которых он поднят и он служит для доступа к ресурсам компании.
Дело в том, что корпоративные VPN как правило не нацелены на то, чтобы маскировать ресурсы и трафик пользователей. Они служат как шлюзы доступа для корпоративных ресурсов. То есть, только если подключиться к корпоративной VPN сети, то вы можете зайти на те или иные IP адреса или сайты, а если попытается кто-то просто без него зайти, то у него ничего не откроется. И собственно весь трафик через такую VPN сеть не пускается. Поэтому корпоративные VPN служат не для анонимизации, не для приватности, а просто для разграничения доступа.
Второе. Есть VPN как услуга. Понятно, что есть бесплатные VPN, которые не имеет смысла даже рассматривать в данном случае. Потому что кто заказывает музыку, тот и танцует. Если VPN предоставляется бесплатно, то это повод задуматься. Такой VPN в 99% будет продавать ваши данные, будет за вами шпионить и найдёт в общем массу способов монетизировать ваши данные.
Есть также коммерческие VPN (платные). Здесь уже более-менее встречаются нормальные экземпляры, но тем не менее находятся любители заработать вдвойне. Есть VPN, которые даже могут кричать громко и заявлять, что вот мы такие хорошие, мы ваши данные не сливаем, у нас там всё зашифровано, мы логов не ведём, особенно про логи смешно, а там в общем пользуйтесь нашими услугами. По факту же вы платите деньги и всё равно есть вероятность того, что этот VPN так или иначе ваши данные сольёт.
Чтобы развеять все сомнения насчёт того, кто ведёт, а кто не ведёт, представьте себе компанию, которая предоставляет услуги VPN для пользователей, она в первую очередь является бизнесом, а задача бизнеса это зарабатывать деньги и защищать свои инвестиции. До тех пор, пока пользователи просто шарятся по обычным ресурсам, даже по запрещенным в их странах, то это VPN'у неинтересно вообще как компании, ну ползают они там и ползают. Человек из компаний, который будет элементарно просчитывать риски, он может задать вопрос: "А что если какой-нибудь из наших пользователей поднимет сервер и будет раздавать детское порно? А что если пользователь будет совершать через наш VPN сервис DDoS атаки? Что если пользователь будет кого-нибудь взламывать и распространять вирусы?"
В таком случае люди в погонах придут в компанию VPN, которая предоставляет эти услуги, потому что с их IP адреса всё шло. И естественно они потребуют, чтобы они предоставили им IP адрес виновника всех этих проблем, потому что в противном случае отвечать придётся этой компании, потому что на них след оборвётся. Тут такая же фигня как с распространением наркотиков, кто последний в цепочке оказался, то есть кладмен, тот по башке и получит за это. И естественно VPN сервис не хочет закрыться из-за того, что один какой-то пользователь злоупотребляет их сервисом. Поэтому абсолютно все коммерческие VPN сервисы ведут логи.
Существует ещё приватный VPN. Это чей-то личный VPN сервер, его можно поднять на сервере, домашнем ПК, да хоть на телефоне, в общем-то на любой вычислительной машине у которой есть достаточно ресурсов чтобы обрабатывать сетевые соединения и где может стоять операционная система с выходом в интернет. Логи и являются, что в следствии чего может задеанонить. Когда мы с вами будем ставить собственный VPN, то логирование отключим, логи вестись не будут. Когда я перейду к выбору технологии виртуализации, я объясню почему мы можем быть уверены в том, что провайдер VPS услуг (сервера) не сможет заглянуть к нам на сервер и посмотреть что вообще у нас там происходит. Приватный VPN при правильном подходе, если мы хорошо выбрали хостинг провайдера, технологию виртуализации, операционную систему и технологию VPN сервера, может давать хороший уровень защиты и анонимности. При определённых обстоятельствах мы, с точки зрения того какую анонимность мы себе обеспечиваем используя цепочки из VPN серверов определённым образом их подобрав, можем добиться того, что на практике задеанонить нас будет нереально. Свой VPN должен быть защищён от провайдера и от взлома, то есть должна быть произведена базовая настройка сервера, чтобы его нельзя было хакнуть. Ну и естественно, VPN должен быть защищён от утечек из-за кривой настройки чего-либо. Собственно всё это мы можем так или иначе реализовать и именно этим мы и будем заниматься.
Расскажу как выбрать провайдера и как поднимается VPN сервер.
Желательно искать для поднятия VPN абузоустойчивый сервер. Найти его очень сложно, но возможно. То есть, владелец которого будет всячески уклоняться от исполнения законных требования о том, чтобы заблокировать пользователя или выдать его информацию. Есть определённые нормы, в течении какого времени организация должна ответить на официальный запрос. И опять же, если организация обязана ответить в течении 30 дней, то она может ответить сразу, а может прямо в 30 день, чтобы не докопаться было и максимально тянуть время. Абузоустойчивые сервера, в зависимости от владельцев, у которых вы их покупаете, те, кто их обслуживает и хостит, они могут либо вообще забивать на некоторые запросы, либо они могут вам прислать письмо на почту: " Тут запрос поступил, мы должны через 30 дней ответить. Через 30 дней мы ответим, а ты за это время поищи себе новое место или подними новый сервер, короче что-нибудь придумай". Это будет не тоже самое, как когда вы в обычном хостинге взяли какую-то VPSку. Какая-то жалоба или ещё что-то поступила и сразу же из них посыпались полиции ваши данные.
В зависимости от разных юрисдикций подбираются разные сервера.
Есть два принципиально разных типа создания виртуальных серверов. Есть VPS и VDS. Новички их очень часто путают, не знают и не видят разницы между этими технологиями.
VPS это Virtual Private Server.
VDS это Virtual Dedicated Server (виртуальный выделенный сервер - дедик).
Изначально VPS называлось решение на базе виртуализации внутри операционной системы, то есть контейнеризации. И работает эта штука на технологии, которая называется OpenVZ. Иронично как раз таки то, что VPS не является приватным в плане вашей защищённости от посторонних действий и от провайдера в том числе. Потому что в случае с контейнеризацией, провайдер на уровне машины, хост системы, может заглянуть в ваши файлы, логи и посмотреть чем вы там вообще занимаетесь у себя на своей VPS'ке.
Ну, а также OpenVZ это технология, которая плохо масштабируется, плохо обновляется, там древнее ядро Linux'а, поэтому этой технологии нужно избегать. VDS в свою очередь построен на аппаратной виртуализации, которая опознаётся по технологиям XEN или KVM, есть ещё hyper-v, но это тема от компании Microsoft, она не является открытой, это проприетарная технология в которой введён модуль чтобы производить криминалистический анализ и разделять сессии, короче чтобы тех, кто занимается каким-то шалостями на сервере можно было быстрее найти и опознать, у VMWare кстати всё устроено точно также.
Зачем вообще используется технология контейнеризации? В чём её плюс? Плюс в том, что можно продать больше виртуальных серверов в рамках одного физического сервера. Если сравнивать это с концертом, то можно либо посчитать количество мест в зале и продать ровно столько билетов, сколько там есть мест, и это как раз такие VDS. А можно продать кучу входных билетов с расчётом на то, что кто-то всё равно не придёт и в итоге кому-то может даже не хватить мест. То есть, в случае с контейнеризацией, ресурсы между машинами выделены динамически и они могут перераспределяться. Как думает владелец сервера: "Ваша VPS'ка сейчас не использует все выделенные ей ресурсы и поэтому мы у неё эти ресурсы заберём и отдадим их тому, у кого сейчас нагрузка выше."
Когда же это аппаратная виртуализация, то там такой номер не пройдёт. Там чётко выделяются определённые ресурсы, они резервируются под данную систему и используются они или нет, это уже как говорится дело десятое, они выделены и не могут быть отданы никому другому пока сервер в аренде. И плюс ещё в том, что внутрь вашей машины просто так хостеру не залезть, потому что прямого доступа к памяти и процессам внутри вашей виртуальной системы в таком случае у него нет. И поэтому нужно использовать XEN, либо KVM, чтобы поднять себе VPN сервер, и избегать OpenVZ, VMWare и Hyper-V.
Теперь по поводу географии и юрисдикции где покупать сервер. По международному законодательству данные находятся в юрисдикции той страны, где они физически лежат. То есть, если ваш физический сервер находится в Нидерландах, то значит, что вы по закону Нидерландов должны отвечать за то, что на этом сервере происходит.
А другие страны могут попросить владельца вашего сервера предоставить данные, но он не обязан им отвечать. Проще говоря, если российское мвд или налоговая пошлёт запрос к компании, которая не имеет представительства в РФ, а находится где-нибудь в Нидерландах, то эта компания может сама решить, отвечать им или не отвечать, они могут проигнорировать эти события, а могут ответить. В тоже время если мвд пошлёт этот запрос по имени интерпола, то он пройдёт через интерпол, а дальше будет отправлен через правоохранительные органы тех же самых Нидерландов, а на такой запрос они уже обязаны будут ответить. Но вам нужно учитывать то, что далеко не все страны признают легитимными запросы из России, тем более после того, как Россия начала войну. Поэтому если вы хотите чтобы хостер игнорировал наглухо запросы со стороны российских правоохранительных органов, то я рекомендую брать сервера в Украине, как понимаете там никому из РФ не ответят 100% и пошлют их туда же, куда послали российский военный корабль.
Разные типы деятельности могут по разному восприниматься в разных странах и на них по разному будут реагировать. Например, для торрентных операций очень плохо размещаться в странах типа США, Германии, Швейцарии, Австрии, то есть тех, где суровое законодательство в отношении авторских прав. Существует Альянс 14 глаз. Это страны, которые между собой договорились об упрощённой модели обмена разведовательными данными, в том числе в отношении киберугроз. Проще говоря, у них помимо обычных стандартных методов взаимодействия, есть сотрудничество на уровне разведки и спецслужб, в рамках которого всё происходит быстро и легко. У Сингапура также, хоть он и не входит в альянс 14 глаз, очень жёсткая политика в отношении киберпреступлений и достаточно сильная киберполиция.
Теперь поговори по поводу стека технологий и того, что мы будем использовать для VPN. Операционная система у нас будет использоваться Ubuntu 20.04, а из софта я буду использовать старое доброе проверенное решение - это OpenVPN, он очень хорошо поддерживаемый и в целом работает очень хорошо. Для подключения к серверу я рекомендую использовать Linux. Я сама из под Linux'а это делаю, потому что операции на сервере будут выполняться с помощью терминала. Для Windows конечно есть PuTTY, но это отдельная пляска с бубном и если честно, лучше сразу приучаться к хорошему и пользоваться Linux системой.
Приступлю к настройке двойного VPN и покажу как это сделать.
Изначально вам нужно будет приобрести 2 сервера Ubuntu 20.04 с виртуализацией KVM. Советую брать по 1 серверу в разных местах. Я их уже купила.
Перед тем как начнём, расскажу один важный момент. В Linux вместо Ctrl + C и Ctrl + V используется Ctrl + Shift + C и Ctrl + Shift + V.
Открываю терминал и подключаюсь к первому серверу с помощью ssh:
sudo ssh root@ip_адрес_сервера
Сервер спросит, хочу ли я продолжить подключение, отвечаю yes и жму клавишу Enter:
Первым делом мне нужно обновить репозитории и пакеты установленные в системе:
apt update && apt upgrade -y
Команда apt update скачает информацию по репозиториям, то есть какие версии пакетов доступны.
&& - это and (и), позволяет несколько команд объеденить в одну.
apt upgrade обновит все установленные пакеты в системе, которые будут подгружены командой apt update.
Опция -y означает, что я заранее отвечаю Yes на все вопросы, которые будут заданы при исполнении команды.
Дальше я использую вот такую вот команду:
useradd -G sudo -m vpn -s /bin/bash
useradd - означает добавить пользователя.
-G sudo - означает, что пользователь после добавления сразу же должен быть добавлен в группу sudo, sudo означает, что этот пользователь имеет право используя команду sudo выполнять команды с привилегиями супер администратора.
После флага -m, идёт имя пользователя, которое я для простоты назову vpn.
После флага -s, идёт оболочка командной строки, которая должна по умолчанию использоваться у данного пользователя когда он будет запускать и исполнять файлы.
После этого сразу же нужно задать пароль для этого пользователя:
passwd vpn
Придумываем пароль и указываем его, далее попросит его прописать ещё раз и подтвердить:
Теперь я переключаюсь на этого пользователя:
su vpn
Переключаюсь и вижу, что в командной строке показано, кто я и где нахожусь.
Теперь, перед тем, как мы заблокируем root доступ и прокинем себе доступ по ssh, неплохо было бы убедиться в том, что у нас действительно есть привелегии исполнять команды с sudo. Потому что если мы закроем доступ от root, то у нас будут проблемы. Мы просто не сможем системой управлять:
sudo fdisk -l
Раз я переключилась на пользователя vpn, то и пароль теперь для подтверждения действий мне нужно вводить именно от него.
Данную команду невозможно исполнить без sudo, и если вам показался результат, то значит всё в порядке. Эта команда выводит список всех примонитрованных носителей информации, дисков проще говоря:
Теперь мы переходим в домашний каталог пользователя vpn, потому что изначально мы были в каталоге пользователя root:
cd
Чтобы узнать в каком каталоге вы находитесь сейчас, то вы можете прописать pwd, которая расшифровывается как present working directory, то есть текущий рабочий каталог:
pwd
Команда показывает, что я нахожусь в каталоге /home/vpn.
Теперь, чтобы обеспечивать защищённый доступ по ssh на сервер нужно скопировать ssh ключи на этот сервер.
Открываю второй терминал (первый не закрываю). В нём я генерирую ключи на основной машине:
ssh-keygen
Вас попросит задать пароль для этих ключей и подтвердить его:
Также вам покажет куда были сгенерированы эти ключи у вас на компьютере.
Далее мне нужно скопировать этот ключ на сервер. Прописываю во втором терминале на основной машине:
sudo ssh-copy-id vpn@ip_адрес_сервера
После этого вам покажет, что ключ был успешно записан на сервер:
Можем проверить. Возвращаемся в первый терминал, который подключён к серверу. Прописываем:
ls -la
Команда -ls la выведет нам все файлы, в том числе и скрытые, которые в конкретной директории есть. Если у файла или каталога стоит точка (.) перед началом, то это скрытый файл.
ls
То как видите ничего не вывелось, потому что тут все файлы и каталоги скрытые.
Нас интересует конкретно каталог .ssh:
cd .ssh
Как видим у нас тут лежит скопированный ключ:
ls
cat authorized_keys
Это тот самый ключ, который я сгенерировала на основной системе.
Вернёмся теперь обратно в домашний каталог:
Теперь мне нужно обезопасить мой сервер. Открываю с помощью текстового редактора nano файл sshd_config:
sudo nano /etc/ssh/sshd_config
Этот файл содержит в себе параметры для конфигурирования ssh. Для начала нахожу вот такие вот строчки:
Изменяю порт, который стоит по умолчанию. Сейчас у меня по умолчанию используется 22 порт для подключения к серверу.
Я убираю значок решётки #. Решётка означает, что строка закомментирована, то есть указанные в ней директивы не действуют. Я буду использовать порт 2211:
Дело в том, что многие IP адреса и сервера постоянно подвергаются сканированию со стороны всяких сторонних скриптов, которые хакеры запускают и нацелены они на то, чтобы взламывать сервера. Они будут сканировать серверы и если они увидят, что на сервере открыт 22 порт, то они могут попытаться исполнить атаку брутфорсом или задействовать какой-нибудь эксплойт для того, чтобы взломать ваш сервер. Для того, чтобы это пресечь нужно указать другой порт.
Дальше мне нужно найти вот такие строки:
PermitRootLogin yes означает, что сервер разрешает удалённо подключаться под пользователем root. Это небезопасно, поэтому я отключаю это и прописываю no:
Далее мне нужно найти вот такие строки:
PasswordAuthetication yes означает, что разрешён вход по паролю. Этот параметр я также отключу, раскомментирую строку и пропишу no:
Теперь я могу зайти на сервер только по ssh ключу.
Далее нажимаю Ctrl + O, а далее Enter, чтобы сохранить настройки в файле. После этого выхожу из файла с помощью нажатия Ctrl + X.
Теперь для того, чтобы изменения вступили в силу, мне нужно перезагрузить службу sshd:
sudo systemctl restart sshd
После этого служба будет перезапущена и теперь зайти под пользователем root, а также по паролю я не смогу. Доступ у меня будет только к пользователю vpn по ssh ключу.
Всё. Базовые настройки по безопасности я сделала. Теперь я перехожу к настройке VPN.
Я буду использовать bash скрипт, который вы можете найти на github. Это очень известный скрипт OpenVPN инсталяции, он содержит в себе набор команд, которые будут исполнены в терминале. Все эти команды безопасные, в этом плане можете быть спокойны. Можете его посмотреть, у самого скрипта открытый исходный код и он подтягивает решения также с открытым исходным кодом.
wget https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh
sudo bash openvpn-install.sh
Скрипт меня спрашивает какой протокол я буду использовать:
Я выберу протокол UDP и нажму клавишу Enter:
Делать это нужно для того, чтобы ваш VPN было очень сложно заблокировать. Так вы сможете в любом кафе или другом публичном месте подключаться к общедоступным Wi-Fi сетям. Иногда владельцы точек делают попытки заблокировать использование VPN. По умолчанию OpenVPN использует порт 1194 и все знают, что 1194 порт это порт от OpenVPN. Он может быть заблокирован, роутер или фаервол могут блокировать попытки соединиться с какой-нибудь службой на этом порту.
Некоторые могут подумать, что может же возникнуть конфликт, потому что браузер подключается к различным службам на 443 порту. Нет. Браузер использует TCP, именно поэтому я и выбрала UDP. Два разных протокола могут работать одновременно на одном порту.
Далее скрипт предлагает мне выбрать какой я буду использовать DNS:
Я выбрала 3, DNS от CloudFlare.
Дальше скрипт просто нас ввести имя для клиента:
Далее просто нажмите любую клавишу и скрипт начнёт применять настройки:
У меня создался конфиг, но его нет сейчас каталоге где я нахожусь, потому что я выполняла скрипт от имени суперпользователя. Поэтому этот файл создался в root.
Мне нужно его скопировать теперь в текущую директорию:
sudo cp /root/Alina.ovpn .
/root/Alina.ovpn - откуда скопировать и что. Файл будет называть тем именем, которое вы ему указали вводя имя клиента.
. - означает, что скопировать в текущую директорию, где я сейчас нахожусь.
Проверю командой ls, что файл скопировался:
ls
Файл скопировался, но сделать ничего с ним я пока что не могу, потому что этот файл принадлежит пользователю root:
ls -la
sudo chown vpn:vpn Alina.ovpn
ls -la
Я это сделала затем, что теперь мне нужно скачать этот файл на основную машину с помощью протокола sftp (Secure File Transfer Protocol).
Открываю второй терминал на основной машине. Захожу в каталог Загрузки, создаю каталог vpn, перехожу в него и подключаюсь к серверу:
cd Загрузки && mkdir vpn cd vpn sudo sftp -P 2211 vpn@ip_адрес_сервера
После подключения скачиваю файл:
get Alina.ovpn
Теперь мне нужно отключить логи у себя на сервере. Возвращаемся в первый терминал, который подключен к серверу и пишем:
sudo nano /etc/openvpn/server/server.conf
Сохраняем Ctrl + O > Enter и выходим Ctrl + X.
Перезапускаем службу OpenVPN, иначе логи писаться будут до тех пор, пока вы её не перезапустите:
sudo systemctl restart openvpn
Теперь добавлю VPN соединение в систему:
Выбираем наш скачанный файл. Жмём сохранить:
Первый VPN настроен. Далее устанавливайте виртуальную машину:
sudo apt install virtualbox
В ней устанавливайте вторую Linux систему (тут я думаю справитесь). После установки системы в VirtualBox нужно пробросить сетевой мост между основой и ней:
Далее включаете установленную систему на виртуальной машине и настраивайте второй сервер по точно такому же сценарию. Далее подключаете на виртуальной машине второй VPN и занимаетесь своими делами с неё.