Чому не варто користуватися VPN сервісом

Чому треба користуватися VPN та не варто користуватися VPN-сервісом. Довгий та детальний пост з аргументами та поясненнями.

Хотів написати довгий та розлогий пост про те, чому вам не потрібно користуватися VPN-сервісами. Але згадав, що Sven Slootweg вже зробив це. В його тексту навіть є переклад російською. А є навіть кращий текст від Dennis Schubert.

Ви все ще тут? Добре, я додам від себе. Чисто з точки зору математики та моделювання загроз, у вас більше шансів стати жертвою (атаки хакерів, глобального спостереження спецслужб, або поведінкового трекінгу мега корпорацій) коли ви користуєтесь найкращим у світі VPN-сервісом, ніж коли не користуєтесь жодним. Справа тут в агрегації ризиків. Я поясню.

Модель загроз

Спершу, згадаймо, що відбувається, коли ви користуєтесь інтернетом. Найпростіший приклад – ви відкриваєте браузер та заходите на facebook.com. Ваше з’єднання розпочинається у вашій локальній мережі, перетинає мережі вашого інтернет-провайдера та кількох (2-5) операторів зв’язку, досягає мережі провайдера вебсайту і зрештою потрапляє на сам вебсайт. (У випадку з Фейсбуком все трохи інакше через його колосальні масштаби, але загалом десь так.)

Тепер, уявімо, від яких загроз на цьому шляху вас, як ви думаєте, захищає VPN-сервіс. Більшість користувачів сприймають VPN-сервіс як засіб захисту від таких загроз:

  1. Ваш провайдер (плюс будь-який інший провайдер на вашому шляху) та будь-хто, кому вдалося змусити його до співпраці (спецслужби, кіберзлочинці, інсайдери тощо) прослуховує та модифікує ваш трафік. Іншими словами, між вами й сайтом є шматок інтернету, і будь-хто, хто його контролює, може втрутитися у ваші із сайтом інтимні стосунки.
  2. Вебсайт за вами слідкує. Причому не лише коли ви на нього заходите, але й коли ви йдете собі далі. Це робиться безліччю способів, від занотовування вашої IP-адреси та розміщення у вашому браузері файлів cookie, до надсучасного профайлінгу зі штучним інтелектом та біг датами. Для цього вебсайти розміщують у себе програми-трекери один одного: відкрийте консоль браузера та самі подивіться що і звідки він завантажує. Facebook Pixel та Google Analytics це найпоширеніші трекінг-платформи, але є й інші.

Проблема в тому, що VPN-сервіс не захищає вас від ані від першого, ані від другого сценаріїв. Не вірите? Ну дивіться самі.

Аналіз ризиків

Далі, уявіть собі, що нас N і ми користуємось умовним VPN-сервісом NeutrinoVPN. Припустимо, кожен із нас становить певний інтерес для агентів загроз, позначимо наш середній рівень ризику як R.

Користуючись сервісом з метою захиститися від першого сценарію атаки, ми трохи змінюємо архітектуру нашого доступу до інтернету. Весь трафік від нашого комп’ютера до нашого VPN-сервіс провайдера буде захищений криптографією (якщо нам пощастить – сильною). Але чи зміниться від цього щось в термінах ризику?

Так, звісно: наш ризик підвищиться. Люди не користуються VPN від нема чого робити: всі N з нас тут через побоювання щодо нашої кібербезпеки (1) та приватності (2). І використовуючи VPN-сервіс ми явно це демонструємо усім зацікавленим особам та організаціям. Тому, коли ви користуєтесь звичайним “наземним” провайдером, середній ризик ваш і ваших сусідів r значно нижчий за наш VPN-юзерський R.

Nr << NR

Архітектура безпеки

Але ж провайдери логують сесії, а VPN-провайдери ні! Ви ніколи цього не взнаєте, тому просто забудьте це як казку про Діда Мороза. Сервіси VPN це повноцінні інтернет-провайдери, особливо в юрисдикціях, в яких не стрьомно розміщувати VPN-сервери. І навіть якщо збирати та зберігати користувацькі логи від них не вимагається по закону, робити це в їхніх інтересах щонайменше з двох причин: для розв’язання юзерських проблем зі з’єднанням, та щоб відвести від себе підозру під час розслідування кіберзлочинів. Але друге лише якщо злочинець буде достатньо дурним і скористається VPN-сервісом.

Ось це і називається агрегація ризиків і в архітектурі безпечних систем це, м’яко кажучи, не вітається. Звісно, коли мова йде про одного юзера, сучасну сім’ю або невелику компанію, “тримати всі яйця в одному кошику” може бути доцільно. На противагу цьому, тримати всі яйця тисяч зацікавлених в кібербезпеці користувачів в одному кошику – пряма дорога до прискіпливої уваги найпотужніших хакерів у світі.

Ризики приватності

Але бог вже з тою кібербезпекою: вона взагалі, як той казав, переоцінена. Що у нас з приватністю? Тут все теж дуже погано. Заміна вашого IP від провайдера на ваш IP від VPN-сервісу – вправа суто теоретична та на ефективність трекінгу не впливає. З цією задачею можна більш-менш впоратись двома шляхами:

  1. На рівні мережевої фільтрації: забанити всі трекери на рівні IP або DNS;
  2. На рівні браузера: аналізувати контент та трафік й різати всі спроби трекерів скористатися механізмами, які виробники браузерів їм надають.

Погані новини в тому, що шлях номер один – недосяжний. VPN-сервіс провайдеру нецікаво фільтрувати ваш трафік (це складно) та й побічні ефекти в цієї фільтрації неприємні вам обом (це ж типу втручання у вашу приватність). Щобільше, за це Facebook просто забанить його адресні простори, а Google перетворить життя його користувачів у суцільний пошук світлофорів та пожежних гідрантів у квадратиках капчі. А шлях номер два реалізується без допомоги VPN. Сучасні приватні браузери, такі як Firefox, Brave та Safari, прекрасно рубають трекери на рівні клієнта, тоді навіщо для цього пускати увесь свій трафік через чужі сервери?

Управління ризиком

Це все цікаво, Стиран, але що робити, якщо приватності та безпеки хочеться так, що аж зуби зціпило? Все просто, треба використовувати інструменти за призначенням. VPN створювався не для спільного використання тисячами не пов’язаних один з одним людей, а для іншого, і він чудово виконує свої оригінальні задачі. І те, що вам потрібно, це VPN. Просто VPN, а не VPN-сервіс.

На щастя, створити власний VPN-сервер не просто, а дуже просто. Для цього є безкоштовні інструменти, які дозволяють і від провайдера й місцевих спецслужб сховатися, і блокування трекерів налаштувати. За відео про налаштування персонального VPN-сервера мені дякують журналісти, юристи, лінгвісти та астрофізики, тому і ви впораєтесь. Так, у вашого VPN не буде гарного логотипу та розпіареної назви. Але разом із лого та назвою не буде й чужих, зайвих для вас ризиків. Ну і на додачу до цього – ви не обдаруєте своїми ризиками когось іншого.

Корисні посилання.

Безпечні програми для дистанційної роботи

Переходите в дистанційний режим? Вітаю у клюбі. Чесно кажучи, Бережа зовсім нещодавно (десь 2 роки тому) почала використовувати офісне приміщення, до того часу ми працювали хто звідки. І ось третій тиждень як повернулися до “домашнього” формату.

Не буду нависати з порадами, як реорганізувати процеси, бо наша модель консалтингової фірми то штука екзотична і не на всі бізнеси налазить. Натомість, поділюся порадами, які безпечні інструменти варто використовувати. Все з власного досвіду, тому не претендую на істину в останній інстанції та буду радий додатковим порадам в коментах.

Всі наведені нижче варіанти пройшли п’ятирічну еволюцію. В ретроспективі виглядає, що критерії природного відбору були такі:

  • відносна безпека дизайну;
  • непогана репутація;
  • широка доступність на різних платформах.

Отже, по черзі.

1. VoIP та віртуальні мітинги

Це найважливіше і тут треба усвідомлювати: Телеграми, Скайпи та інші Вайбери – це не засоби для захищеного спілкування. З іншого боку, Рікошети та Ретрошари – протилежна крайність, в якій подекуди немає навіть базової функціональності. Тому:

  • Конфіденційні перемовини всередині команди: Wire
  • Синк-коли, стендапи та решта напів-секретних тем: Google Meet
  • Вебінари та інші “відкриті” дзвінки: Zoom

2. Чати та месенджери

Тут важливо для себе вирішити, що у вас в пріоритеті: безпека, чи зручність. Якщо у вас є змога поставити безпеку вище (в мене вона є) то жодні Слаки чи Тімзи для роботи у вас не використовуватимуться. Отже:

  • Робочі питання: для груп Keybase
  • Приватне спілкування між собою та з зовнішнім світом: Signal
  • Операційний смітник для логів, нотифікацій, ботів, алертів тощо: Slack

3. Файли та шари

Якщо роль email у вашому житті можна якось обмежити, то з файлами поки що це не працює. Доводиться працювати в MS Office, як не крути. Але принаймні ви можете шифрувати їх end-to-end та зберігати в захищеному криптографією стані.

  • Boxcryptor згори чого завгодно (Dropbox, Google Drive, OneDrive)
  • Whisply Links (built-in) для передачі файлів назовні. А краще той самий Signal.

4. VPN

Специфіка роботи пентестерів та спеціалістів з Application Security вимагає того, щоб клієнт завжди знав “звідки нас чекати”. Інакше, декілька разів на день доведеться відповідати на питання “це не ви?” Ні, не ми. Ось ми: список IP вихідних точок, на яких розташовані наші джамп-хости та сервери VPN.

Звісно, що деколи доводиться використовувати інструменти, які не просто не є захищеними, а навпаки. Зв’язок з зовнішнім світом буває важливіший за рівень захисту, тому Google Meet та Zoom важко викреслити з життя. Проте не варто забувати, що у програмах, які не створювалися для зберігання та передачі даних у захищений спосіб, не варто зберігати та передавати дані, які потребують захисту. Тут хочеться підкреслити, що електронна пошта не є і ніколи не була засобом конфіденційного спілкування, так само як і мобільний та дротовий телефонний зв’язок.

Використання захищених каналів може створити на початку певні незручності колезі старшого віку або необізнаному клієнту чи партнеру. Але згодом вони будуть вам вдячні за слушну пораду та почнуть змінювати й інші свої звички в бік приватності та безпеки.

P.S. Звісно ж, скрізь бекапи та 2FA. Але це вже зовсім інша історія.

Бережіться.

Algo VPN: Personal DIY VPN. For normals.

In this post, I walk you through the process of creating your own self-managed do-it-yourself VPN server running Algo VPN.

I have spent some time teaching normal non-tech people how to use Algo VPN and other Do-It-Yourself VPN solutions, and there are several issues that we encountered each time. So I wanted to put up a manual that everyone could use and that helps remove those issues. If you still find problems along the way, please let me know.

First, a few words about the solution: Algo is not the easiest way to set up a personal VPN, but I think it is the best. Using Algo VPN alternatives, such as Outline or OpenVPN AS, might be simpler but far from better. I will not discuss the drawbacks here; I will say that I tried them and used them and many more for a while. After that, I have found Algo the best possible solution for my overall setup, which ensures a) top speed, b) native OS support on all clients, c) open design, and d) minimal overall potential for user tracking.


Read this manual carefully before you start. It will save you a lot of pain.

There is one thing you will need before we start. It is an active Amazon account with a payment method linked to it, as we will use Amazon LightSail as a cloud engine for the virtual hosts we create. LightSail provides the first month of free usage, but you will still need a credit card to activate the service.

Step 0. Create a deployment user account in IAM

First, let’s create a user account that we will need during the installation. We will create it in Amazon IAM, assign a policy to it, and then input its access keys to Algo when asked.

Go to IAM users configuration console to create a new user: https://console.aws.amazon.com/iam/home#/users$new?step=details. Give the user a unique name and mark its access type as programmatic.

Create Algo user in AWS IAM

Next step, select “Attach existing policies directly” and then press the “Create policy” button.

Create AWS ISM policy for Algo user

A new browser tab will open for policy creation. Edit the policy using JSON mode.

Create AWS IAM policy as JSON

Copy and paste the JSON content below to the policy editor. You can find the original policy in Algo documentation: https://github.com/trailofbits/algo/blob/master/docs/deploy-from-ansible.md#lightsail.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LightsailDeployment",
"Effect": "Allow",
"Action": [
"lightsail:GetRegions",
"lightsail:GetInstance",
"lightsail:CreateInstances",
"lightsail:OpenInstancePublicPorts"
],
"Resource": [
"*"
]
}
]
}

When the JSON content is there, preview the policy.

Edit AWS IAM policy as JSON

Give it a name and then hit “Create”.

Save AWS IAM policy

Go back to the IAM session and hit the refresh button to see your newly created policy in the list.

Refresh AWS IAM policy

Select the new policy by checking the box next to it and proceed.

Attach AWS IAM policy to Algo user

Skip the next step — don’t assign any tags — and go straight to Review your new user. After reviewing, hit “Create user.”

Review and create AWS IAM policy

If everything went well, you would see your new user and its access key parameters.

Review Algo IAM user

Copy these parameters somewhere safe and keep them until Algo asks you for them.

Step 1. Create a jump host

Now, let’s create a temporary jump host that we will use to run Algo. Running Algo could be hard if you are not running Linux or macOS on your desktop, so I found it more convenient to create a jump host for that. If you already have a Linux machine, you can skip this step.

Login to Amazon and go to https://lightsail.aws.amazon.com/ls/webapp/home/instances. There, manually create a new Ubuntu virtual host in any region.

Create Amazon LightSail instance

Make sure you create an “OS only” Linux host running Ubuntu 18.04 LTS.

Select Ubuntu Linus as instance OS

The most economical plan should be fine. Give the instance a unique name.

Select instance size and name

After the instance has been deployed, hit the terminal button. It will open an SSH session window.

Open instance virtual console
Review instance virtual console

Step 2. Install and configure Algo VPN

In the console window, run the following commands. You can copy and paste them to the terminal. When asked, “Restart services during package upgrades without asking?” answer “Yes.”

git clone https://github.com/trailofbits/algo
sudo apt update
sudo apt install -y python3-virtualenv
cd algo
python3 -m virtualenv — python=”$(command -v python3)” .env &&
  source .env/bin/activate &&
  python3 -m pip install -U pip virtualenv &&
  python3 -m pip install -r requirements.txt

If you did everything correctly, you will see something like this in the end.

Clone Algo and install Python virtual environment

Next, you will need to edit the config file with nano or any other console-based text editor. If you are new to nano and the Linux command line, make a copy of the config file before editing it.

cp config.cfg config.bak
nano config.cfg

Once the editor is open, go to the “users” section and change it to reflect your user plan. Make sure there is a line for every device you are planning to put through the VPN server. It is important to note that adding as many users as there will be people using VPN is not enough. In this case, they might experience networking problems while simultaneously using VPN on different devices.

Edit Algo setup configuration

After you have finished editing the file, exit and save by pressing Ctrl+X, choosing “Yes,” and pressing Enter.

Step 3. Run Algo to deploy your VPN server

Now, run the Algo script and follow the instructions below to set up the VPN service correctly. If you make mistakes, don’t worry: you can abort the script by pressing Ctrl+C, typing “A,” and restart it anytime.

./algo

The first thing Algo will ask you is the cloud provider to use. We will stay with Amazon LightSail for the sake of this manual.

Select VPN server cloud provider

Next, give your VPN server a unique name.

Choose VPN server name

When asked “Do you want macOS/iOS IPsec clients to enable “Connect On Demand” when connected to cellular networks?” and “Do you want macOS/iOS IPsec clients to enable “Connect On Demand” when connected to Wi-Fi?” answer “Yes”: type “y” and press Enter. This will allow you to configure your clients to route all traffic through the VPN server at all times.
When asked, “List the names of any trusted Wi-Fi networks where macOS/iOS IPsec clients should not use “Connect On Demand,” don’t answer anything. You will be able to configure it later at the client-side if required.

When asked “Do you want to retain the keys (PKI)?” your answer will depend on whether you have plans to add more VPN users in the future. In this manual, we will answer “Yes” and demonstrate how to retain the PKI keys and Algo configurations for future use. But it is important to understand that if someone gets ahold of your PKI keys, they would be able to fully compromise your VPN server and all your network communications through it as a result.

When asked “Do you want to enable DNS ad blocking on this VPN server?” I recommend answering “Yes.” We are going to change this configuration later manually. If you are lazy, it will allow you to skip that part and fall back to the Algo default adblocking mechanism. However, it is worth noting that in this case allowing access to particular resources you would like to whitelist will be much more complicated, and we are not going to cover it in this manual.

When asked “Do you want each user to have their own account for SSH tunneling?” answer “No.” If you have reasons to do otherwise, you probably do not really need this manual.

Now, you will have to use the access key credentials of the technical user we have previously created in IAM. Copy “Access key ID” and paste it to the Algo input in your jump host SSH window as “aws_access_key.” Then, copy the “Secret access key” and paste it to Algo as “aws_secret_key” at the next step. To ensure your content is pasted correctly, use the built-in clipboard editor instead of just pasting the data into the window.

Wait until Algo setup runs
Insert cloud access key

Once the keys are inserted correctly, Algo will proceed to region selection.

Select VPN server cloud region

You can choose a region of your liking based on your preference of jurisdiction and privacy regime. Also, keep in mind that it will affect the websites’ behavior (e.g., default language) as you will be seen as a resident of the selected region. For instance, if you speak French, I assume Paris is the location of your choice.

If everything went well, there would be no more questions, and Algo will start deploying your new VPN server. At this point, you clearly understand why I have recommended you to read through the manual and collect the keys before you run Algo. You have probably disconnected a few times from your jump host console and had to start the process from scratch. So, while you are waiting for Algo to complete, make sure you generate some action in the console window — just press Enter once in a while to prevent disconnection.

Once the Algo script is complete, you will see the following picture. Copy the full text of the congratulations message and put it somewhere safe. The last 3 lines are the most important.

Wait until Algo setup is complete

Step 4. Download your VPN configurations

Next, zip and download the Algo directory. Run the following commands in the console.

cd ..
sudo apt -y install zip
zip -e -x “algo/.env/*” -r algo.zip algo/

Zip utility will ask you for a password. Select a strong one. Then, create a new directory “www,” move the zip file there, enter it, and fire up a simple web server.

mkdir www
mv algo.zip www/
cd www
sudo python3 -m http.server 80

Now, open the public IP address of your jump host in a new browser window. You can find the IP in the LightSail console.

Access jump host via HTTP
Download VPN client config

Just download the archive to your local disk and unzip it. Make sure you stop the webserver after that.

Stop the HTTP server

Check if all the config files are present in the archive.

Access VPN client configuration files

If you see the directory named by IP address and a bunch of config files in it, this means that everything went well, and you can shut down or kill your jump host now. In the LightSail console, you should see the newly created VPN server with the name you gave it during the Algo execution and the IP address the same as in the “configs” subdirectory name.

You can start using your VPN by configuring the client devices. I recommend using native WireGuard software wherever possible. Otherwise, use IPSec/IKE2.


Next, I will show you how to configure DNS-based anti-tracking mechanisms in your new VPN service. For now, play around with it and tell me if you had any trouble configuring it.

“Як не стати кібер-жертвою” оновлено

Оновлено посібник з персональної кібербезпеки ширше відомий під назвою Don’t Click Shit. Основні зміни: скорочення, оновлення застарілих фрагментів, вилучення нещодавно скомпрометованих опцій, реорганізація вмісту.

tl;dr: 

1. Не натискайте каку

Не відкривайте, не натискайте, та не запускайте підозрілі файли, посилання та програми.
Основне правило: якщо ви на це (лист, файл, посилання тощо) не чекали, це підозріло.

2. Використовуйте парольні менеджери

3. Використовуйте двохфакторну автентифікацію

Посилання на налаштування в різних сервісах: https://twofactorauth.org

4. Використовуйте безпечні месенджери

5. Використовуйте VPN

А також рекомендації з шифрування даних в мережі та на диску, захисту програмного забезпечення, використання персональних антивірусів, фаєрволів, налаштування резервних копій, мобільної та фізичної кібер-безпеки. 

Далі буде.

P.S. Будь ласка, не критикуйте та не викладайте тут коментарі до вмісту посібника. Покажіть, що ви шарите, не тут, а в Pull Request. Дякую.

Як зберегти приватність відвідувань вебсайтів від власного інтернет-провайдера

від власного інтернет-провайдера

Останнім часом, зважаючи на неприємні новини з-за океану про відміну Конгресом США вимог щодо приватності метаданих відвідування інтернету, досить часто постає питання “а що ж робити?” Відклавши політичні та суспільні компоненти проблеми, якими най опікуються резиденти та громадяни Штатів, перейду до суто технічного розв’язання. Коли мова йде про вашого інтернет-сервіс провайдера (ISP), є два популярні та дієві способи приховати від нього практично всю вашу активність в мережі. Це Tor та VPN.

Tor здійснює трошки більше ніж просто приховування вашого трафіку. По суті це величезна розподілена мережа, яка шифрує трафік від вашого пристрою до точки виходу з неї (але не за її межами), та при цьому додає вашим діям відносної анонімності. Відносної, тому що абсолютної анонімності в інтернеті немає, проте Tor це непоганий варіант, якщо вашим опонентом є “вичіслітєль по ІР”, а не FBI чи ФСБ. Хоча щодо ФСБ в мене сумніви, але я б не радив ризикувати.

Віртуальна приватна мережа (VPN) анонімності не гарантує, але від прослуховування на обладнанні інтернет-провайдера захистить. Під’єднуючись до VPN, ви встановлюєте зашифрований тунель від вашого пристрою до серверу VPN-провайдера (або вашого власного VPN-серверу, якщо аж настільки припекло). Звісно ж, VPN-провайдери теж не янголи, але більшість з них отримує за послуги ваші гроші, а не гроші рекламодавців, жадібних до журналів ваших відвідувань. Отже, є VPN-провайдери з гарною репутацією, яких не соромно й друзям порадить.

Важливе зауваження. Ані Tor, ані VPN не гарантують вам приватності за межами мережі/тунелю. Отже, використовуючи ці технології, переконайтеся, що “завертаєте” в них лише комунікації, які самі по собі захищені шифруванням. Тобто, що відвідуєте веб-сайти по протоколу HTTPS та спілкуєтеся з друзями в програмах, які здійснюють шифрування даних. В противному випадку, особливо коли мова йде про Tor, ваші дані можуть опинитися навіть в більшій небезпеці, ніж зазвичай.

Список рекомендованих VPN-провайдерів міститься в настановах щодо персональної кібербезпеки під кодовою назвою Don’t Click Shit: https://github.com/sapran/dontclickshit#Користуйтеся-vpn

Охочім отримати досвід з використання Tor — сюди: https://www.torproject.org

Бережіться.


Оновлено 21 грудня 2018 р.

Очевидно, тепер до переліку суб’єктів, від нам яких слід приховувати метадані, треба додати й постачальників послуг, якими ми користуємось. Таких як, наприклад, Slack, що заблокував цілу купу користувачів, які нещодавно побували на підсанкціних територіях.



Originally published at blog.styran.com on April 8, 2017.