- Регистрация
- 12.05.16
- Сообщения
- 1.927
- Реакции
- 523
- Репутация
- 0
Итак, собственно, поднимаем OpenVPN-server вручную на анонимном впс, снятом за биткойны.
Начнем с установки каких-то пакетов. Некоторые из этих пакетов мы устанавливали в прошлой теме.
Обновим систему:
Код:
apt-get update && apt-get dist-upgrade -y
apt-get install -y sudo nano htop curl perl python wget git openssl ca-certificates iptables
Код:
apt-get install -y openvpn easy-rsa ufw
Код:
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >/etc/openvpn/server.conf
Теперь немного отредактируем его:
Код:
nano /etc/openvpn/server.conf
Частичный разбор конфига будет ниже в статье.
Редактируем. В самом верху сразу будет port:
Код:
port 1194
Код:
port 16122
Идем дальше. Выбираем протокол - пара строк ниже:
Код:
proto udp
Опускаемся ниже в конфиге и находим строку:
Код:
dh dh1024.pem
Код:
dh dh2048.pem
Код:
;push "redirect-gateway def1 bypass-dhcp"
Код:
push "redirect-gateway def1 bypass-dhcp"
Еще чуть ниже находим две раскоментированные строки рядом:
Код:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Код:
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
Идем дальше и натыкаемся на строку
Код:
;tls-auth ta.key 0# This file is secret
Код:
tls-auth ta.key 0# This file is secret
Код:
;cipher AES-128-CBC # AES
Код:
cipher AES-256-CBC
Код:
;user nobody
;group nogroup
Код:
user nobody
group nogroup
Код:
#status /dev/null 2>&1
Еще чуть ниже, находим строку, которая начинается со слова log, и придаем ей такой вид:
Код:
log /dev/null2>&1
Код:
https://bdfclub.com/threads/dediki-shpiony-ili-pochemu-ne-stoit-ehkonomit-na-rabochej-srede.4915/
Строку
Код:
;log-append
Еще чуть ниже, verb 3 меняем на:
Код:
verb 0
Теперь включаем перенаправление пакетов, вводим команду:
Код:
echo 1>/proc/sys/net/ipv4/ip_forward
Код:
cat /proc/sys/net/ipv4/ip_forward
Теперь надо чтобы изменения были и при перезагрузке сервера, поэтому редактирум файл /etc/sysctl.conf:
Код:
nano /etc/sysctl.conf
Код:
#net.ipv4.ip_forward=1
Код:
net.ipv4.ip_forward=1
Настроим Firewall
Ранее мы установили пакет ufw. Теперь нам нужно добавить некоторые правила. Во-первых, нам нужно дать разрешить траффик на SSH. Я ввожу:
Код:
ufw allow 1488
Код:
ufw allow ssh
Код:
ufw allow 16122/udp
Если вы ничего не меняли в конфиге, то у вас слушает порт 1194 UDP, а значит:
Код:
ufw allow 1194/udp
Код:
nano /etc/default/ufw
Код:
DEFAULT_FORWARD_POLICY="DROP"
Код:
DEFAULT_FORWARD_POLICY="ACCEPT"
Код:
ip addr
Код:
1: lo:<LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
Код:
2: venet0:<BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/void
inet 127.0.0.2/32 scope host venet0
inet МОЙ IP/32 brd МОЙ IP scope global venet0:0
Вам нужен интерфейс, который показывает ваш внешний IP. Из кода выше понятно, что venet0 показывает внешний IP. (inet МОЙ IP)
Далее, что нужно редактировать файл /etc/ufw/before.rules:
Код:
nano /etc/ufw/before.rules
Код:
# START
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8-o <ВАШИНТЕРФЕЙС>-j MASQUERADE
COMMIT
# END
Код:
# START
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8-o venet0 -j MASQUERADE
COMMIT
# END
После всего этого включаем ufw:
Код:
ufw enable
Код:
ufw status
You must be registered for see images attach
где 1488 - для SSH и 16122 - UDP опенвпн.
Отключить ufw можно так:
Код:
ufw disable
Код:
cp -r /usr/share/easy-rsa/ /etc/openvpn
Код:
mkdir /etc/openvpn/easy-rsa/keys
Код:
openssl dhparam -out/etc/openvpn/dh2048.pem 2048
Код:
openvpn --genkey --secret /etc/openvpn/ta.key
Переходим в папку easy-rsa:
Код:
cd /etc/openvpn/easy-rsa
Код:
nano vars
Код:
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
# X509 Subject Field
export KEY_NAME="EasyRSA"
Но конкретно здесь нас интересует строка
Код:
export KEY_NAME="EasyRSA"
Код:
export KEY_NAME="server"
Если дали название отличное от server - запомните его.
Вот так. Сохраняем, закрываем файл.
Далее вводим следующее:
Код:
source vars
Код:
./clean-all && ./build-ca
Следующим делом вводим:
Код:
./build-key-server <ИМЯВ KEY_NAME>
Код:
./build-key-server server
Потом дважды вводим символ y, где попросит:
Код:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
В конце вы увидите:
Код:
Write out database with 1 new entries
Data Base Updated
Теперь нам нужно переместить все сгенерированные ключи и сертификаты в папку /etc/openvpn.
Всё добро находится в папке /etc/oepnvpn/easy-rsa/keys. Нас интересуют 3 файла (исплючая dh2048.pem и ta.key, которые мы сгенерировали ранее) - ca.crt, server.crt, server.key,
где файлы server.crt и server.key - имеют название, которое вы указывали в KEY_NAME, я указывал server, помним да.
Перемещаем их следующим образом:
Код:
cp /etc/openvpn/easy-rsa/keys/{ca.crt,server.crt,server.key}/etc/openvpn/
Код:
cd /etc/openvpn
root@ppVPS:/etc/openvpn# ls
ca.crt dh2048.pem easy-rsa server.conf server.crt server.key update-resolv-conf
Теперь запускаем openvpn:
Код:
systemctl start openvpn
Код:
/etc/init.d/openvpn start
Код:
systemctl status openvpn
Код:
/etc/init.d/openvpn status
Active: active (exited) since
Проверяем, слушает ли порт:
Код:
netstat -tulpn | grep vpn
У меня вывод такой:
udp 0 00.0.0.0:16122 0.0.0.0:* 484/openvpn
Все проверили, молодцы. Теперь остановим:
Код:
systemctl stop openvpn
Код:
/etc/init.d/openvpn stop
Для начала нам нужно скопировать пример конфиг. файла для клиента.
Скопируем его в папочку /etc/openvpn/easy-rsa/keys и переименуем (даем расширение .ovpn):
Код:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn
Код:
nano /etc/openvpn/easy-rsa/keys/client.ovpn
Код:
remote my-server-11194
Меняйте эту строку, я меняю:
Код:
remote 111.222.111.22216122
Код:
ns-cert-type server
Код:
remote-cert-tls server
Код:
;cipher x
Код:
cipher AES-256-CBC
Все. Сохраняем и закрываем.
Теперь нужно сгенерировать ключи и серты для клиента.
Перейдем в папку easy-rsa:
Код:
cd /etc/openvpn/easy-rsa
Код:
./build-key client1
Таким же образом, как и с сервом, везде жмем Enter. И соглашаемся, нажимая y, там где это нужно.
Клиентский конфиг состоит из:
.ovpn файла. В моем случае это client.ovpn.
файла ca.crt - который общий для сервера и все клиентов.
файл ta.key - тоже общий для сервера и клиента. Это для tls-auth, что не обязательно.
файлов client1.crt и client1.key - которые индивидуальные для каждого клиента.
Дело в том, что все эти файлы нужны .ovpn конфигу, без них он не будет работать. Но не будем же мы их везде вместе таскать! Поэтому есть возможность все эти файлы строить в .ovpn конфиг, чтобы был один единый файл и все.
Нужно проделать кое-какие манипуляции, поэтому для удобства создаем папку client1:
Код:
mkdir /etc/openvpn/easy-rsa/keys/client1
по аналогии с сервером, файлы client1.crt и client1.key имеют названия специфические, в зависимости от того, какое вы указывали имя клиента, выполняя команду выше. Я назвал client1 поэтому у меня они называются именно так.
Копируем:
Код:
cp /etc/openvpn/easy-rsa/keys/{ca.crt,client1.crt,client1.key}/etc/openvpn/easy-rsa/keys/client1
Код:
cp /etc/openvpn/easy-rsa/keys/client.ovpn /etc/openvpn/easy-rsa/keys/client1
Код:
cp /etc/openvpn/ta.key /etc/openvpn/easy-rsa/keys/client1/
Код:
cd /etc/openvpn/easy-rsa/keys/client1
ca.crt client.ovpn (конфигфайл) client1.crt client1.key ta.key
Теперь нужно быть внимательнее! В особенности с именами файлов.
Внедряем содержимое нужных файлов в наш конфиг .ovpn.
По очереди, в том порядке, в котором это у меня, выполняем следующие команды.
Для ca.crt:
Код:
echo ''>> client.ovpn
cat ca.crt >> client.ovpn
echo ''>> client.ovpn
Теперь для client1.crt:
Код:
echo ''>> client.ovpn
cat client1.crt >> client.ovpn
echo ''>> client.ovpn
Теперь для client1.key:
Код:
echo ''>> client.ovpn
cat client1.key >> client.ovpn
echo ''>> client.ovpn
Код:
echo 'key-direction 1'>> client.ovpn
echo ''>> client.ovpn
cat ta.key >> client.ovpn
echo ''>> client.ovpn
Теперь нужно еще немного отредактировать файл client.ovpn:
Код:
nano client.ovpn
Код:
ca ca.crt
cert client.crt
key client.key
Код:
#ca ca.crt
#cert client.crt
#key client.key
Можем запускать OpenVPN:
Код:
systemctl start openvpn
Код:
/etc/init.d/openvpn start
Код:
systemctl restart openvpn
Код:
/etc/init.d/openvpn restart
Для начала я хотел бы привести оба конфига в более читабельный и простой вид, а именно, удалить все комментарии и пустые строки.
Сделать это легко. Но для начала, на всякий случай, сделаем backup:
Код:
server.conf
cp /etc/openvpn/server.conf /etc/openvpn/server.conf.bak
Код:
cp /etc/openvpn/easy-rsa/keys/client1/client.ovpn /etc/openvpn/easy-rsa/keys/client1/client.ovpn.bak
Код:
server.conf
sed -i '/^[#;]\|^$/ d'/etc/openvpn/server.conf
client.ovpn
sed -i '/^[#;]\|^$/ d'/etc/openvpn/easy-rsa/keys/client1/client.ovpn
Открываем server.conf
Код:
nano /etc/openvpn/server.conf
Код:
sndbuf 0
rcvbuf 0
topology subnet
auth SHA512
Код:
nano /etc/openvpn/easy-rsa/keys/client1/client.ovpn
Код:
sndbuf 0
rcvbuf 0
keepalive 10120
auth SHA512
Код:
port 16122
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
tls-auth ta.key 0
topology subnet
server 10.8.0.0255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10120
cipher AES-256-CBC
auth SHA512
comp-lzo
persist-key
persist-tun
log /dev/null2>&1
verb 0
Код:
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 111.222.111.22214500
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA512
keepalive 10120
comp-lzo
verb 3
Разберем немного конфиг.
proto udp
Какой протокол юзать, TCP или UDP?
UDP обычно работает быстрее.
TCP более надежный, стабильный, лучше обходит фаерволл - например можно повестить на порт 443.
UDP, также можно повесить на порт, который обычно не блокируют - 53.
Если вас не блокируют, то лучше я думаю UDP. Сам юзаю UDP. На сервере и клиенте должен быть указан один протокол.
Port16122
На какой порт повесить? Лучше на нестандартный, как у меня. Или замаскировать под какой-то сервис - 443/ssl для tcp и 53/dns для udp
cipher AES-256-CBC
Какое шифрование использовать?
Используйте AES-256-CBC или AES-128-CBC. Если явно не задать, то по-умолчанию будет исопльзоваться Blowfish (cipher BF-CBC).
Этот параметр должен быть и на сервере и на клиенте. Если на сервере есть, на клиенте нет или они отличаются, может не законнектить.
auth SHA512
Если не задавать, будет использоваться auth SHA1. Используйте auth SHA512 или auth SHA256. Этот параметр должен быть и на сервере и на клиенте. Если на сервере есть, на клиенте нет или они отличаются, может не законнектить.
#status /dev/null 2>&1
По умолчанию будет записываться в файл какой-то, какие клиенты сейчас онлайн. Чтобы ничего не писало, нужно закомментировать строку. Я также ЗАЧЕМ то написал /dev/null 2>&1 ...
log /dev/null2>&1
Это то самое логирование OpenVPN которое для безопасности лучше выключить. Дело в том, что выключить его нельзя, а если закоментировать, то логи будут писаться в /var/log/syslog
Поэтому я раскоментировал и сказал писать в /dev/null.
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
Какие DNS юзать?
Юзайте паблик DNS от Google (8.8.8.8 и 8.8.4.4.) или от OpenDNS (208.67.222.222 и 208.67.220.220).
Утечка DNS под Windows и Linux
Если вы будете юзать этот конфиг на Windows, в конфиг добавляем следующую строку:setenv opt block-outside-dns
Да, вот так просто. Под MacOS с Tunnelblick все норм.
А под Linux есть файл update-resolv-conf, который находится в папке /etc/openvpn на клиентской машине. Файл может иметь название или update-resolv-conf или update-resolv-conf.sh. Поэтому на клиентском Линукс вводим в терминале:
Код:
ls /etc/openvpn | grep update
Далее, в конфиг .ovpn нужно вставить следующие строки:
Код:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Перекидываем конфиг .ovpn с серва на клиент.
Можете просто открыть клиентский конфиг, скопировать все полностью и вставить у себя на машине, окда.
Если вы создавали пользователя и запрещали ssh коннект от рута, то первым делом нужно поместить .ovpn конфиг в домашнюю папку созданного пользователя. У меня это был pp-ruloh
Код:
cp /etc/openvpn/easy-rsa/keys/client1/client.ovpn /home/pp-ruloh
Код:
chown pp-ruloh:pp-ruloh /home/pp-ruloh/client.ovpn
Код:
sftp -P 1488pp-ruloh@ip
где 1488 - порт на котором слушает sshd.
Как законнектились, мы уже будем в домашней папке pp-ruloh. Можем посмотреть файлы - вводим ls.
копируем конфиг:
Код:
get client.ovpn ~/
и подключаемся к серву по sftp. Нужено будет указать port sftp (у меня 1488), пользователя (pp-ruloh, ибо руту зарпетили). Копируем файл куда хотим и радуемся. Как пользоваться программой разберетесь сами.
Вложения
Последнее редактирование модератором:
marinad
Заблокирован
- Регистрация
- 28.07.17
- Сообщения
- 27
- Реакции
- 0
- Репутация
- 3
Обратите внимание, если вы хотите провести сделку с данным пользователем, на то, что он заблокирован!
Обязательно используйте услуги гаранта и не переводите денежные средства данному пользователю первым.
Вот я понимаю Статья.Спасибо.Почитав твои темы понял что ты самое годное выкладываешь.Надеюсь все получится.Если возникнут вопросы можно в личку писать,что бы не флудить?
prad
.
- Регистрация
- 29.03.17
- Сообщения
- 594
- Реакции
- 452
- Репутация
- 0
Конечно. ЛС всегда открыт.Вот я понимаю Статья.Спасибо.Почитав твои темы понял что ты самое годное выкладываешь.Надеюсь все получится.Если возникнут вопросы можно в личку писать,что бы не флудить?
prad
.
- Регистрация
- 29.03.17
- Сообщения
- 594
- Реакции
- 452
- Репутация
- 0
А вы как-то можете узнать, не хранит ли логи ваших действий - покупной впн?А зачем нужен свой впн если его можно тупо купить за копейки?
Поделиться: