Внимание: в этом блоге могут описываться события, явления и факты при помощи ненормативной лексики. Убедитесь, что Вы готовы к этому.

четверг, 9 февраля 2017 г.

How to block any non-VPN connections

Some people care about their internet privacy and some of them also use GNU/Linux distros. Most VPN apps for Windows have killswitch option, so if VPN suddenly disconnects, some applications or whole internet connection will be stopped.
However, there's no such option for Linux systems. But there's a beatiful thing called iptables, a very powerful firewall.

My setup is mostly automated (check the link to understand), so I have put this script in /etc/openvpn/ and named it iptables-update.sh

Here's the content:

# CLEAR all previous iptables rules
iptables -F;

### List of the rules ###

# ALLOW loopback access
iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT;

# ALLOW connections within own network (e.g. to router)
iptables -A INPUT -s -d -j ACCEPT;  iptables -A OUTPUT -s -d -j ACCEPT;

# ALLOW eth+ and tun+ to communicate
iptables -A FORWARD -i eth+ -o tun+ -j ACCEPT; sudo iptables -A FORWARD -i tun+ -o eth+ -j ACCEPT; # ALLOW eth+ and tun+ to communicate

# Complicated stuff
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE;

# DROP any eth+ outgoing packets with different destination than server IP
iptables -A OUTPUT -o eth+ ! -d $(grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/openvpn/openvpn.conf) -j DROP;

# SAVE iptables rules
/etc/init.d/iptables save;
This script works perfectly for me with NordVPN setup. Last rule is the most crucial one - it takes server IP from /etc/openvpn/openvpn.conf and drops any packets with different destination to prevent leaks.

NOTE: make sure you have iptables starting at system boot.

It is reworked version of the information I found here.
And to make it automated, I put the following aliases examples in my ~/.bashrc:

alias de100="sudo /etc/init.d/openvpn stop; sudo /etc/init.d/iptables stop; sudo cp /etc/openvpn/de100.nordvpn.com.udp1194.ovpn /etc/openvpn/openvpn.conf; sudo /etc/openvpn/iptables-update.sh; sudo /etc/init.d/iptables start; sudo /etc/init.d/openvpn start"

alias de101="sudo /etc/init.d/openvpn stop; sudo /etc/init.d/iptables stop; sudo cp /etc/openvpn/de101.nordvpn.com.udp1194.ovpn /etc/openvpn/openvpn.conf; sudo /etc/openvpn/iptables-update.sh; sudo /etc/init.d/iptables start; sudo /etc/init.d/openvpn start"
Every time I change server with this alias, bash script automatically updates the rules.
As always, maybe not the most elegant way, but it's working fine :-)

How to setup NordVPN in a more convenient way

NordVPN allows you to connect to their VPN servers using multiple devices and there are many ways to connect (L2TP, PPTP, IKEv2, OpenVPN etc). One of the best way to connect is via OpenVPN, one of the most flexible and secure protocol.

NordVPN installation instructions for Linux systems can be found here, however NM Gui is laggy as hell and proposed command like method isn't the most convenient because it's not fully automated and requires a lot of typing to change servers and / or start and turn off service.

So here's my way. I don't claim it to be most elegant, but it works for me and is certainly more comfortable.

0. Assumptions.
You have:
  • active NordVPN subscription;
  • OpenVPN, ca-certificates and ZIP installed; 
1. Getting OVPN files. Download and extract .OVPN files the same way as stated in tutorial (steps 3-7).
cd /etc/openvpn/
sudo wget  https://nordvpn.com/api/files/zip
sudo unzip zip
sudo rm zip

2. Autologin. Create pass.txt file in /etc/openvpn/ directory containing your login and pass so it will look like this:
1st line - login, 2nd line - password, make sure there are no extra symbols or spaces. You can make this file not readable for a unpriviledged user if you care about your NordVPN login and password and your environment isn't trusted.

Add a line to all extracted NordVPN files so they will get credentials from pass.txt and you won't have to type it manually. It's better to achieve with simple sed script:

sed -i 's/auth-user-pass/auth-user-pass pass.txt/' *.ovpn

3. Setup and start OpenVPN service. 

Now you need to copy content from certain .ovpn file to your openvpn.conf.
Let's say you want to connect to de101 server using UDP.

sudo cp /etc/openvpn/de101.nordvpn.com.udp1194.ovpn /etc/openvpn/openvpn.conf

After that you need to restart openvpn service so changes will apply:
sudo /etc/init.d/openvpn restart

The command above might be different for a certain Linux distros.
If everything is OK, you will be connected to de101 server.
In case if there are messages like this:
WARNING: openvpn has started, but is inactive
there's no reason to panic, it's totally OK.

4. Make sure OpenVPN daemon is started at the system boot.
It is different for every Linux distro and it's easy to find how to do that. If you're using Ubuntu chances are it will start automatically itself and you won't need to do anything at all.
For some distros like Gentoo however you will need to do:
sudo rc-update add openvpn default

5. Adding aliases.
Edit your ~/.bashrc to simply change servers using command-line aliases.

It's always better to type things like "de100" rather than typing manually a lot of letters.
So I just put things like this in my .bashrc.
For those who don't know what it is, just type this in command line:
cd ~
nano .bashrc
and add following lines after the existing content:

alias de100="sudo /etc/init.d/openvpn stop; sudo cp /etc/openvpn/de100.nordvpn.com.udp1194.ovpn /etc/openvpn/openvpn.conf; sudo /etc/init.d/openvpn start"

alias de101="sudo /etc/init.d/openvpn stop; sudo cp /etc/openvpn/de101.nordvpn.com.udp1194.ovpn /etc/openvpn/openvpn.conf; sudo /etc/init.d/openvpn start"
NOTE: it must be one single line for every alias in your .bashrc even if it looks like I pressed "enter" and broke it into 2 or 3 lines.

Those 2 lines above will add aliases to connect or reconnect to de100 and de101 servers.
And the list goes on -  just copy those lines change "de101" and "de100" to whatever you please from the server list to add more server-changing alieases for example:

alias nl11="sudo /etc/init.d/openvpn stop; sudo cp /etc/openvpn/nl11.nordvpn.com.udp1194.ovpn /etc/openvpn/openvpn.conf; sudo /etc/init.d/openvpn start"
Don't forget to control-O to save it. Changes will apply when you open a new tab in terminal.

After that you can just type de100 or nl11 (or whatever else you put in your .bashrc) in your shell and you will connect or reconnect to appropriate server.

If you're looking for more security and want to block any non-secured internet traffic, check this post.

вторник, 10 января 2017 г.

OpenVPN через GUI Network Manager в Ubuntu (rage-пост)

В ubuntu для подключения VPN через OpenVPN через network-manager нужно не только установить network-manager-openvpn, но ещё и network-manager-openvpn-gnome.
В противном случае через GUI будет доступен только способ подключения VPN через PPTP.
Где логика?
Почему в "линуксе для человеков" (именно так, ага) не тянется пакет с графическим интерфейсом автоматически?
В общем, вдогонку sudo apt-get install network-manager-openvpn-gnome для решения.

P.S. если в Проводном соединении указать "автоматически подключаться к VPN после установки соединения",то автоконнект после загрузки системы срабатывает через 4 минуты с лишним, практически через 5 минут. Если нужно быстрее - то ручками, ручками. (Что это за 3.14здец?)
P.P.S. баги касательно проблем с автоконнектом VPN в NM были описаны ещё в 2008 году.
Network Manager такой, сука, Network Manager.

среда, 28 декабря 2016 г.

Как я в ДНС мышку возвращал

История с хэппи-эндом, без мата и экстремизма.

Дисклеймер: защита прав потребителей — не моя специализация, у меня совсем другая сфера права (IP), поэтому прошу оценивать пост как просто историю из жизни одного человека (да, юрист тоже человек).

Купил я, значит, взамен служившей мне много лет Bloody V5, внезапно утратившей способность скроллить, мышку Steel Series Rival 100. Брал по принципу «по описанию вроде характеристики норм, много кто пользует, значит и мне сойдёт» и решил приобрести такую по пути из суда в ближайшем салоне сети «ДНС». В магазине особо не исследуешь, показалась мелковатой, но больше размерами моделей от Steel Series в наличии не было. Покупать временную мышку А4 или Logitech (читать — «выкидывать деньги на ветер до покупки комфортной мышки») желание не было. А работать нужно.

Примечание: большая часть моего рабочего времени — работа с документами, их составление, редактирование, анализ и т. п., поэтому комфорт во время работы для меня очень важен.

При покупке обратил внимание на небольшие царапинки на тефлоновых ножках, но внимания особого не придал. Ножки ("скейты") — расходник же по большому счёту. Коробка была открытой, мало ли кто по столу пошаркал проверить работу мыши, вот и царапки.

Дома попробовал пользоваться мышой и сразу понял, что не моё: надо побольше для моих рук и моего хвата (полной ладонью — palm grip). Потому решил воспользоваться правом, предусмотренным ст. 25 ЗоЗПП, а именно, правом на обмен не бывшего в употреблении товара, сохранившего товарный вид, бирки и т. п., не подошедшего по фасону / размеру / цвету / габаритам / комплектации. Мышка дома пробовалась на коврике QcK от Steel Series, и учитывая моё общее аккуратное отношение к вещам, следов эксплуатации не прибавилось совсем. Т.е. их всех видимых следов использования — уже упомянутые выше царапинки на ножках.

Относимость мышки к технически сложным товарам (ТСТ) согласно «Перечню непродовольственных товаров надлежащего качества, не подлежащих возврату или обмену на аналогичный товар других размера, формы, габарита, фасона, расцветки или комплектации» пока опускаем. Да и ранее я менял уже мышки в «ДНС», никто на ножки пристально не смотрел.

Использовать мышку я прекратил, и "пофиксил" скролл у старой мыши Bloody v5 пассатижами - стало трудно крутить, но хотя бы работало).

Соответственно, затем созвонился с сотрудником магазина, объяснил ситуацию, мне сказали «да, окей, обменяем на другую модель с доплатой вообще без проблем». Но когда я явился для обмена, оказалось, что не всё так просто. Управляющий магазина сослался на царапины на ножках (которые, напоминаю, были с самого начала) и сказал, что «товарный вид утрачен, мышь была в употреблении, обмен по 25-й статье сделать не можем». Продавец, продавший мне эту мышку, присутствовавший при этом диалоге, добавил: «я Вам эту мышь продавал, никаких там царапин не было». Разумеется, мне никто не поверил, что я видел царапинки и всё равно купил мышь.

При мне при этом открыли другую коробку (которую привезли взамен купленной мной модели, т. к. их нечасто берут по словам продавцов) и показали мышь без царапин на ножках. Мои замечания о том, что открывается новая мышь в запечатанной коробке, и что в наборе присутствует Quick Start Guide (которого у меня не было) остались без внимания. В общем, мне пожелали удачи.

Кто-то может бы и остановился на этом, но мне стало немного обидно, и я решил это так не оставлять.

понедельник, 5 декабря 2016 г.

Отзыв на расчёску Skull & Bones от Metal Comb Works

Внезапно решил, что мне нужна металлическая расчёска. И как-то в процессе заказа очередных мелочей с ebay решил поискать там и расчёску. По мере просмотра товаров, их характеристик и цен, психологическая планка с предельно допустимой ценой повышалась и повышалась. Стало ясно, что нужна расчёска либо из титанового сплава, либо из хорошей стали.

В процессе просмотра и прочтения отзывов на не слишком качественные образцы с не самой низкой ценой, планка стала повышаться ещё выше и стала достигать уже существенно отличных от начальных значений.

Так, я в своих поисках пришёл к 2-м производителям, которые делают действительно качественные расчёски - Chicago Comb Co. и Metal Comb Works.
На самом деле достойных производителей больше, но эти два - известны, и несложно найти отзывы.
И, тем не менее, это был сложный выбор. У Metal Comb Works есть несколько сильно отличающихся друг от друга вариантов, а у Chicago Comb - набор "типовых" форм и различные материалы и покрытия а также уникальный комбинированный дизайн расчёска + чехол с вырезом под узнаваемое кольцо.

У обоих производителей были примечательные модели, но в конце концов выбор пал на Skull & Bones - Black Out Edition от Metal Comb Works.
Не последнюю роль сыграла цена :-)
Купить расчёску с чехлом из кожи (простите, защитники животных) можно было за $55, что на $15-25 дешевле "чикагской модели", на которую я тоже положил глаз. При прочих равных (т.к. оба варианта одинаково нравились) это сыграло свою роль, особенно, при курсе доллара по 65 р.

В итоге, 26 октября я оформил заказ через официальный сайт, и через несколько дней посылка с товаром поехала в мой адрес. Прибыв в РФ, недельку посылка побыла в Москве, затем 4 дня в Н. Новгороде, и уже 12 ноября ожидала меня в почтовом отделении.
Отдельно хочу отметить качество коммуникации: мне приходили не только автоматические сообщения, но и оперативные ответы на мои вопросы от имени Jeff Grant на почту.

Итак, что я получил за свои кровные:
  • крутую стальную расчёску;
  • чехол из чёрной кожи;
  • брелок в виде якоря из латуни;
  • конвертики и упаковочки с визиткой;
  • временное повышение самооценки.

Вот так по-царски всё выглядит. Упаковано словно для господ. Всё-таки умеют люди преподносить товар (и продавать труд).