Как создать собственный vpn сервер
Как создать собственный vpn сервер и пользоваться безопасным серфингом. В этой статье я рассказывал, про впн предоставляемый сервисами. Плюс, множество ip адресов. Минус, вы не контролируете ничего. Например, большинство сервисов утверждают, что не ведут логи и не знают какие сайты посещаете.
На самом деле убедится в этом нельзя. И некоторых из них уже были уличены в том, что обманывали клиентов. Но это не значит, что нет сервисов честных. Хотя сегодня не об этом. Узнайте так же как создать собственную почту из этой статьи.
- 1 Покупка vps сервера для vpn
- 2 Настройка сервера vpn на операционной системе Debian
- 2.1 Подключение к серверу с помощью putty и терминала
- 2.2 1. Установка OpenVPN
- 2.3 2. Настройка OpenVPN
- 2.4 3. Включить Packet Forwarding
- 2.5 4. Установка и конфигурирование файерволла ufw
- 2.6 5. Создаем центр сертификации
- 2.7 6. Генерируем сертификаты и ключи для сервера
- 2.8 7. Копирование серверных сертификатов и ключей
- 2.9 8. Генерация ключей и сертификатов для клиента
- 2.10 9. Унифицируем ключи для клиентов
- 2.11 Отключаем логи сервера openvpn
Покупка vps сервера для vpn
Для работы vpn потребуется виртуальный выделенный сервер. Сейчас они не дорогие поэтому не будет разорительно. Я нашел очень дешево сервера. Всего 2,9 $ в месяц. При этом достаточно для нужд впн. Данный хостер предлагает серверы которые находятся в Нидерландах. Поэтому никаких ограничений для доступа к ресурсам недоступным из других стран не будет.
Для наших целей подойдет тариф "VDS/VPS "Micro"". В дополнение к безопасному серфингу вы получите ещё и персональное облако на 20 Гб. Если нужно больше места то выберите тариф с большим объемом.
Итак закажите сервер в 3 шага:
- Зайдите НА САЙТ;
- Перейдите в раздел "Оптимальные VPS/VDS"
- Выберите тариф и нажмите кнопку "Заказать сервер"
Бюджетные серверы на которых применяется технология OpenVZ не подойдет! На них нельзя сделать vpn. Для активации потребуется номер телефона!
Заполните обязательные поля.
После регистрации вы попадете на страницу заказа в своего кабинета.
Здесь еще раз подтвердите выбранный тариф. Укажите период оплаты и нажмите кнопку "Заказать".
На следующей странице Выберите операционную систему Debian-8x86_64. Прочитайте условия предоставления услуг и поставьте галочку о согласии с ними. Нажмите кнопку "В корзину".
Оплатите хостинг удобным для вас способом. Затем потребуется активировать сервер. Для активации сервера нужно указать номер телефона. Вам позвонит робот и сообщит код активации. После того как сервер будет активирован. В колонке "Состояние", будет написано зеленым цветом "Активен".
Настройка сервера vpn на операционной системе Debian
Теперь можно настраивать. Перейдите в раздел "Товары/Услуги". Кликните по вашему серверу. Панель инструментов станет активна. Нажмите кнопку "Инструкция".
Откроется страница с информацией о сервере. Его ip адрес, пароль пользователя "root". Ссылка на страницу управления сервером и реквизитами для входа. Технический домен и тп. Это важная информация не сообщайте её никому.
Подключение к серверу с помощью putty и терминала
Для управления сервером из под windows используйте программу putty. Скачайте её - скачать putty. Установите и запустите её. В поле "Host Name (or ip address)" впишите ip адрес вашего сервера и нажмите кнопку "Open".
В linux Debian так же есть putty. Установить командой:
1 |
sudo apt-get update && sudo apt-get install putty |
Можно использовать обычный терминал. Для доступа к серверу укажите:
1 |
ssh root@ip-сервера |
При первом подключении откроется окно с сообщением о подключении. Нажмите кнопку "Да".
Затем откроется терминал с предложением указать имя пользователя с помощью которого мы хотим зайти "login as". Пользователь у нас пока один -"root" впишите его, затем введите пароль указанный на странице с информацией о сервере.
После того как войдете на сервер измените пароль для пользователя "root". Сделать это можно командой:
1 |
# passwd |
введите новый пароль и подтвердите его. Учтите, что при вводе в терминале не будет отображаться символов, как будто вы ничего не набираете.
Менять пароль нужно сразу. Так будет удобней работать в будущем. А некоторые хостеры при первом входе на сервер сразу требуют изменить пароль на свой. И это правильно. В этой статье я рассказал как авторизоваться с помощью ssh-ключа. Это безопасно и можно заходить на сервер не вводя пароль.
1. Установка OpenVPN
Итак, все подготовительные процедуры выполнены. Приступим. Что бы не вводить команды вручную копируйте их и вставляйте в терминал с помощью сочетания двух клавиш "Shift+Insert". Обновите систему:
1 2 |
# apt-get update # apt-get upgrade -y |
Теперь установим openvpn:
1 |
# apt-get install openvpn easy-rsa |
2. Настройка OpenVPN
Распакуем пример файла конфигурации из /etc/openvpn.
1 |
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf |
Откройте файл для редактирования с помощью "nano" или любым другим редактором. Я буду показывать на примере нано.
1 |
# nano /etc/openvpn/server.conf |
В этом файле потребуется изменить параметры. Найдите сроку "dh dh1024.pem" (в более новых версиях уже проставлено нужное значение) и замените её значение на "dh dh2048.pem" (без кавычек). Это повысит уровень шифрования.
Учтите, что мышка здесь не работает. Пользуйтесь курсорными клавишами. Для поиска в редакторе используйте сочетание клавиш "Ctrl+w". Вставлять можно так же по "Shift+insert". Для сохранения изменений используйте сочетание "Ctrl+o" (буква "о" не ноль). Что бы подтвердить сохранение изменений нажмите "Enter". Для выходя из редактора используйте сочетание "Ctrl+x".
Теперь найдите, по очереди, строки:
1 2 3 |
;push "redirect-gateway def1 bypass-dhcp" ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220" |
Удалите знак точка с запятой ";" в начале строки. Это называется - "раскоментировать". В результате они должны выглядеть так:
1 2 3 |
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" |
Далее, раскоментируйте строки:
1 2 |
;user nobody ;group nogroup |
Сохраните файл и закройте редактор.
3. Включить Packet Forwarding
Разрешим пересылку пакетов:
1 |
echo 1 > /proc/sys/net/ipv4/ip_forward |
Что бы после перезагрузки перенаправление работало. Откройте и отредактируйте файл:
1 |
# nano /etc/sysctl.conf |
Найдите строку "#net.ipv4.ip_forward=1". Раскоментируйте её удалив знак решетка ("#") в начале строки. В результате она должна выглядеть так:
1 |
net.ipv4.ip_forward=1 |
Сохраните и закройте редактор.
4. Установка и конфигурирование файерволла ufw
Для установки сначала обновите информацию о пакетах:
1 |
# apt-get update |
Теперь установите ufw командой:
1 |
# apt-get install ufw |
Включим разрешение работать с ssh:
1 |
# ufw allow ssh |
Разрешим трафик для openvpn по udp порт 1194:
1 |
# ufw allow 1194/udp |
Разрешим проброс. Откройте в редакторе файл настроек:
1 |
# nano /etc/default/ufw |
Найдите строку - DEFAULT_FORWARD_POLICY="DROP". И замените "DROP" на "ACCEPT". В результате строка должна выглядеть так:
1 |
DEFAULT_FORWARD_POLICY="ACCEPT" |
Сохраняем и закрываем.
Если будете использовать на сервере свою почту и сайт то разблокируйте трафик https. Команда:
1 |
ufw allow 'WWW Full' |
Добавим правило для nat. Откроем файл /etc/ufw/before.rules:
1 |
# nano /etc/ufw/before.rules |
Сразу после записи - "ufw-before-forward". Вставьте добавьте правило:
1 2 3 4 5 6 7 8 |
# START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES |
Должно выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES |
Вот скришот, для наглядности.
Включим ufw командой:
1 |
# ufw enable |
Будет выведено сообщение - "Command may disrupt existing ssh connections. Proceed with operation (y|n)?". Ответить "y". Проверим состояние:
1 |
# ufw status |
Вывод должен быть примерно таким:
1 2 3 4 5 6 7 8 |
Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 1194/udp ALLOW Anywhere 22 ALLOW Anywhere (v6) 1194/udp ALLOW Anywhere (v6) |
Если так. Значит всё в порядке. Переходим к следующему шагу.
5. Создаем центр сертификации
Копируем скрипты командой:
1 |
# cp -r /usr/share/easy-rsa/ /etc/openvpn |
Создадим директорию для ключей:
1 |
# mkdir /etc/openvpn/easy-rsa/keys |
Измените настройки по умолчанию:
1 |
# nano /etc/openvpn/easy-rsa/vars |
Измените значения, выделенные красным, на свои.
export KEY_COUNTRY="US"
export KEY_PROVINCE="TX"
export KEY_CITY="Dallas"
export KEY_ORG="My Company Name"
export KEY_EMAIL="sammy@example.com"
export KEY_OU="MYOrganizationalUnit"
Замените в строке:
# X509 Subject Field
export KEY_NAME="EasyRSA"
Значение "EasyRSA" на "server". Можно изменить на любое другое. В этом случае дальше в инструкции не забывайте менять "server" на своё.
Должно получиться так:
# X509 Subject Field
export KEY_NAME="server"
Сохраните и закройте редактор.
Генерируем ключи Diffie-Helman:
Дайте команду:
1 |
# openssl dhparam -out /etc/openvpn/dh2048.pem 2048 |
Генерация займет какое то время. Затем перейдите в каталог /etc/openvpn/easy-rsa:
1 |
# cd /etc/openvpn/easy-rsa |
Инициализируем скрипт:
1 |
# . ./vars |
Будет выведено предупреждение - "NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys". Не нужно волноваться.
Очистим ключи:
1 |
# ./clean-all |
Далее:
1 |
# ./build-ca |
Нажимайте "Enter" на все запросы.
Если создаете в версии более свежей чем на момент написания данного руководства то можете столкнуться с сообщением:
"The correct version should have a comment that says: easy-rsa version 2.x"
Это и понятно, такого файла нет. Что бы решить проблему создайте линк на существующий файл. Для этого перейдите в папку (если вы еще не в этой директории) /etc/openvpn/easy-rsa:
1 |
cd /etc/openvpn/easy-rsa |
и дайте команду:
1 |
ln -s openssl-1.0.0.cnf openssl.cnf |
Затем повторите команду "./build-ca"
6. Генерируем сертификаты и ключи для сервера
Создадим ключ для сервера:
1 |
# ./build-key-server server |
Начнется генерация и будут отображаться значения заполненные нами ранее в файле vars. Подтверждайте нажимая "Enter". В полях:
A challenge password []:
An optional company name []:
ничего не пишете, так же нажмите "Enter". На впопросы:
Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]
Отвечайте утвердительно, нажав клавишу "y". Если все было сделано правильно, увидим сообщение:
Write out database with 1 new entries
Data Base Updated
Последний ключ для tls аутентификации:
# openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key
Переходим к следующему шагу.
7. Копирование серверных сертификатов и ключей
Скопируем сертификаты и ключи командой:
# cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt,ta.key} /etc/openvpn
*Если значение "server" менялось. Не забудьте подставлять своё.
Проверить можно командой:
1 |
# ls /etc/openvpn |
Теперь можно запустить openvpn командой:
1 |
# service openvpn start |
Проверим статус работы openvpn:
1 |
# service openvpn status |
Если всё в порядке. Сообщение должно быть примерно таким:
"* openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled)
Active: active (exited) since Thu 2015-06-25 02:20:18 EDT; 9s ago
Process: 2505 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 2505 (code=exited, status=0/SUCCESS)"
Скриншот для наглядности:
Если для соединения с сервером используете программу putty то для продолжения работы нажмите клавишу "q".
8. Генерация ключей и сертификатов для клиента
Первое:
1 |
# ./build-key client1 |
*отвечаем по примеру сервера.
Копируем:
1 |
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn |
Редактируем файл client.ovpn:
1 |
# nano /etc/openvpn/easy-rsa/keys/client.ovpn |
Указываем адрес своего сервера в строке - "my-server-ip":
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote my-server-ip 1194
Вместо слов "my-server-ip" укажите ip вашего сервера.
К сожалению слова "my-server-ip" постоянно меняются на другие. Например на "my-server-1" и т.п. Учитывайте это.
Раскоментировать строки, user nobody и group nogroup. Должно выглядеть так:
1 2 3 |
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup |
Сохраните.
9. Унифицируем ключи для клиентов
Откройте файл client.ovpn:
1 |
# nano /etc/openvpn/easy-rsa/keys/client.ovpn |
Закоментируйте строки; ca ca.crt, cert client.crt, key client.key. Приведя к виду:
1 2 3 4 5 |
# SSL/TLS parms. # . . . ;ca ca.crt ;cert client.crt ;key client.key |
Обратите внимание. Здесь нужно добавить знак ";" а не удалить! Сохраняем и продолжаем.
Далее по очереди выполнить команды в три этапа:
1. Блок команд:
1 2 3 |
# echo '<ca>' >> /etc/openvpn/easy-rsa/keys/client.ovpn # cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn # echo '</ca>' >> /etc/openvpn/easy-rsa/keys/client.ovpn |
2. Блок
1 2 3 |
# echo '<cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn # cat /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn # echo '</cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn |
3. Блок
1 2 3 |
# echo '<key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn # cat /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn # echo '</key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn |
На этом всё. Теперь нужно скопировать сертификаты и ключи на локальный компьютер. Это можно сделать с помощью любого ftp менеджера, например filezilla. При настройке подключения к серверу выберите протокол - "SFTP - SSH File Transport Protocol". Тип входа - "Нормальный". Укажите логин и пароль.
Скачайте себе 4 файла:
- client1.crt
- client1.key
- client.ovpn
- ca.crt
- ta.key
Файл "ca.crt" лежит в папке - /etc/openvpn/. Остальные в папке - /etc/openvpn/easy-rsa/keys/.
Для работы с сервером не требующем прав главного пользователя root, например, загрузка файлов на сервер с помощью filezilla и т.п., создайте обычного пользователя. Вот в этой статье я рассказал как создавать пользователей в линукс. Обязательно сделайте. Это нужно для безопасности вашего сервера!
Отключаем логи сервера openvpn
После того как убедились, что всё работает отключите логи. Для этого отредактируем файл server.conf.
1 |
# nano /etc/openvpn/server.conf |
Найдите параметр "verb". Измените его значение с 3 на 0. В самый конец файла допишите:
1 2 3 |
log /dev/null status /dev/null log-append /dev/null |
Сохраните и закройте. После этого перезапустите сервис командой:
1 |
# /etc/init.d/openvpn restart |
Теперь у вас есть собственный vpn сервис без логов и дополнительное место для хранения данных. Эта инструкция подойдет, почти, для любого хостера который позволяет создавать впн и операционной системы Debian. Если нужен сервер в России то хорошим вариантом по соотношению цена/качество будет firsvds. Как подключится к своему впн читайте в этой статье. Также изучите этот материал в котором рассказано как настроить брандмауэр, что бы весь трафик шел через vpn.
Такой вариант будет хорошим решением для защиты своей частной жизни. Не используйте vpn для противозаконных действий!
Я подготовил список самых востребованных команд терминала: