Цель: я хочу иметь возможность безопасно пользоваться Интернетом через домашний ПК, когда мой ноутбук подключен к открытой точке доступа / точке доступа.
Я знаю , что могу использовать SSH-туннель / SOCKS-прокси, но я не хочу возиться с приложениями (заставляя их использовать это, если это возможно). Я предполагаю, что мне нужна установка OpenVPN, поэтому я ищу подробное руководство о том, как:
Версии Ubuntu, с которыми это должно работать, - 10.10 и 11.04.
У меня есть точный вопрос несколько месяцев назад, но дополнительно я хотел иметь IPv6-соединение, если это возможно. Вас могут заинтересовать мои вопросы по Serverfault:
На моем сервере была только одна сетевая карта ("сетевой интерфейс") для использования. В моей настройке NetworkManager было недостаточно, потому что мне нужно было запустить пользовательский скрипт для поддержки IPv6. Для простоты, однако, я буду использовать NetworkManager здесь и опущу поддержку IPv6.
Во-первых, просто примите решение о способе аутентификации. Я буду использовать более безопасный метод сертификации, который работает как SSL: во время рукопожатия выбирается общий секрет, который будет использоваться для сеанса. Остальные методы представляют собой общий ключ; имя пользователя и пароль.
Сначала установите сервер openvpn. Это так же просто, как sudo apt-get install openvpn
. Сложной частью является его настройка. Конфигурация присутствует в /etc/openvpn
.
Серверу нужны сертификаты для идентификации себя и своих клиентов. Эти сертификаты извлекаются из CA (Common Authority - общий центр сертификации). Создание сертификатов и связанных с ними закрытых ключей может быть сделано на любой машине, это не обязательно должно быть сделано на сервере. Если вы действительно параноик, вы должны сделать это на машине, которая не подключена к сети, и использовать карту памяти для передачи сертификатов.
Этот шаг необходимо выполнить один раз, если только частный ключ вашего CA не был скомпрометирован. В этом случае, Могут быть созданы действительные сертификаты, которые будут приняты сервером, что приведет к нарушению безопасности.
Официальная документация предлагает делать администрирование в /etc/openvpn
. Я не большой поклонник запускать все как root, поэтому я поместил бы его в другой каталог.
Создайте каталог администрирования и скопируйте в него файлы, запустив:
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easyy-rsa
vars
по мере необходимости, например, установка KEY_SIZE=2048
, потому что вы параноик.Загружайте переменные и создайте каталог ключей, запустив:
. vars.
Если вы получите ошибку, что Нет ... файл openssl.cnf может быть найден...
Дальнейшие вызовы будут неудачными
, запустите ln -s openssl-1.0.0.cnf openssl.cnf
, затем . vars
.
Если Вы используете этот CA в первый раз, подготовьте среду ключей. Выполните , а не , если хотите сохранить ранее созданный центр сертификации. Для этого необходимо установить новый ca.crt
.
./clean-all
./build-ca
. Вы можете заполнить любую информацию, но учтите, что эта информация будет видна в лог-файлах, когда клиенты подключатся к серверу. При этом будут созданы файлы ca.key
и ca.crt
в подпапке key
. Храните в секрете файл ca.key
при любых обстоятельствах . В противном случае любой, у кого есть ключ, сможет подключиться к вашему серверу../revoke-full server
. В противном случае вы получите ошибку в базе данных.Создайте сертификат для сервера, запустив:
./build-key-server server
При запросе пароля оставьте его пустым, если вы не желаете вводить пароль каждый раз при запуске сервера (не рекомендуется). Подтвердите при подписании сертификата и его фиксации. В директории ключи
появятся два новых файла: server.key
и server.crt
.
Сгенерируйте параметры Diffie-Hellman, используя:
./build-dh
Per helpening tips, используйте tls-auth
. Для этого сгенерируйте разделяемый секретный ключ, используя:
openvpn --genkey --secret ta.key
результирующий файл (ta.key
) также должен быть распространен среди клиентов, но вы не должны делать его публичным.
Для каждого клиента эти шаги нужно повторить:
Введите каталог, в котором вы создали свой CA и серверный сертификат:
cd ~/openvpn-admin/easy-rsa
Если вы пропустили шаг создания CA, потому что у вас уже есть один, вам нужно сначала загрузить переменные:
. vars.
./revoke-full you
. В противном случае вы получите ошибку базы данных.Создайте клиентский сертификат you.key
и соответствующий ему сертификат you.crt
:
./build-key you
Общее имя Общее имя
должно быть уникальным. Оставьте пароль пустым, если Вы используете KDE, так как он еще не поддерживается начиная с 10.10. Как и в случае с генерацией сертификата сервера, подтвердите подписание сертификата и фиксацию изменений.
По умолчанию OpenVPN запускается как root при приеме соединений. Не очень хорошая идея, если сервис доступен из злого Интернета.
Создайте выделенного пользователя для OpenVPN, скажем openvpn
:
sudo useradd openvpn
Скопируйте файлы server.key
, server.crt
, ca.crt
и dh1024.pem
(или dh2048.pem
, если вы изменили размер ключа) из каталога ключей в /etc/openvpn
. Разрешение 400 (только для владельца на чтение) вполне допустимо.
sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
Скопируйте файл ta.key
, а также:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
Создайте файл /etc/openvpn/server.conf
и поместите в него следующие строки:
proto udp.
смеситель
ca.crt
сервер cert.crt
ключ-сервер.ключ
дх1024.пем
сервер 10.8.0.0 255.255.255.0
нажать "redirect-gateway def1"
ifconfig-pool-persist ipp.txt
запас прожиточного минимума 10 120
tls-auth ta.key 0
# Сжатие данных для экономии пропускной способности
пользователь openvpn
групповой openvpn
горячий клавиш
устойчивая настройка
# Журналы полезны для отладки
log-append openvpn-log
глагол 3
немой 10
Установите на него соответствующие разрешения, это не обязательно должно быть секретным, но я предпочитаю не пропускать подробности конфигурации:
sudo chmod 640 /etc/openvpn/server.conf
Если вы создали сертификаты на сервере, то лучше зашифровать их или перенести с сервера. В любом случае не теряйте ca.key
и server.key
. В первом случае другие смогут подключиться к Вашему серверу. В последнем случае возможно использование MITM.
Помимо IP-адреса сервера администратор сервера должен передать следующие файлы:
ca.crt
: для проверки сертификатовсервера. crt
: для проверки сервера и связи с нимta.key
: для укрепления безопасностиyou.crt
: для идентификации себя с серверомyou.key
: это как ваш пароль, файловые разрешения должны быть 400 (только для чтения владельцу)Install OpenVPN и плагин NetworkManager (подходящий для KDE и Gnome):
sudo apt-get install openvpn network-manager-openvpn
network-manager-openvpn
находится во вселенском репозитории.
В панели управления используйте следующую информацию:
ca.crt
you.crt
you.key
At Advanced:
ta.key
и установите "Направление ключа" на 1
.Если вы не можете заставить работать NetworkManager или не хотите его использовать, поместите файлы (ca.crt
, ...) в /etc/openvpn
и создайте файл /etc/openvpn/client. conf
файл:
client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20
Если вы не хотите включать эту VPN во время загрузки, отредактируйте /etc/default/openvpn
и снимите комментарии со следующей строки, удалив #
:
#AUTOSTART="none"
Для запуска этого соединения, запустите:
sudo /etc/init.d/openvpn start client
клиент
должен быть переименован, если ваш конфигурационный файл не имеет имени client.conf
. Пример: если Вы назвали свой файл конфигурации safe.conf
, то необходимо запустить sudo /etc/init.d/openvpn start safe
.
Чтобы остановить OpenVPN, необходимо запустить:
sudo /etc/init.d/openvpn stop
На самом деле вам не нужно выполнять скрипку с какими-либо приложениями. Это работает "как VPN".
Сначала установите tsocks
пакет (временные носки):
sudo apt-get install tsocks
Затем отредактируйте /etc/tsocks.conf
и введите
server = 127.0.0.1.
server_port = 3333
Теперь откройте терминал и наберите (это соединяет вас):
ssh -ND 3333 ssh.url.на вашем домашнем компьютере.
Запуск (через другой терминал или ALT-F2):
ток-фокс firefox
Теперь Firefox передает все соединения на сервер SOCKS на вашем компьютере, который создал SSH. Далее это передается по туннелю на вашу домашнюю машину, где она выходит в интернет. Все, что вам нужно на вашей домашней машине, это SSH сервер. После первого раза просто повторите шаги 3 и 4.
Он работает как шарм! Увы, хром не любит туков, но эй, Firefox работает.
Решение туннеля SSH проще, чем Вы думаете. Программа типа gSTM запустит/остановит туннели с помощью GUI. Затем просто откройте Network Proxy и измените его с Прямого Интернет-соединения на Ручную настройку прокси, нажмите "Apply system-wide" и все ваши приложения должны отправить свои данные в туннель - не нужно будет выполнять скрипку с каждым из них по отдельности.