Как настроить OpenVPN, чтобы я мог безопасно использовать Интернет из незащищенной точки доступа?

Цель: я хочу иметь возможность безопасно пользоваться Интернетом через домашний ПК, когда мой ноутбук подключен к открытой точке доступа / точке доступа.

Я знаю , что могу использовать SSH-туннель / SOCKS-прокси, но я не хочу возиться с приложениями (заставляя их использовать это, если это возможно). Я предполагаю, что мне нужна установка OpenVPN, поэтому я ищу подробное руководство о том, как:

  1. Установка и настройка сервера OpenVPN
  2. Настройка клиента OpenVPN (NetworkManager )

Версии Ubuntu, с которыми это должно работать, - 10.10 и 11.04.

31
задан 18 April 2011 в 00:06

3 ответа

У меня есть точный вопрос несколько месяцев назад, но дополнительно я хотел иметь IPv6-соединение, если это возможно. Вас могут заинтересовать мои вопросы по Serverfault:

На моем сервере была только одна сетевая карта ("сетевой интерфейс") для использования. В моей настройке NetworkManager было недостаточно, потому что мне нужно было запустить пользовательский скрипт для поддержки IPv6. Для простоты, однако, я буду использовать NetworkManager здесь и опущу поддержку IPv6.

Во-первых, просто примите решение о способе аутентификации. Я буду использовать более безопасный метод сертификации, который работает как SSL: во время рукопожатия выбирается общий секрет, который будет использоваться для сеанса. Остальные методы представляют собой общий ключ; имя пользователя и пароль.

Сервер

1. Подготовьте

Сначала установите сервер openvpn. Это так же просто, как sudo apt-get install openvpn. Сложной частью является его настройка. Конфигурация присутствует в /etc/openvpn.

2. Настройка аутентификации

Серверу нужны сертификаты для идентификации себя и своих клиентов. Эти сертификаты извлекаются из CA (Common Authority - общий центр сертификации). Создание сертификатов и связанных с ними закрытых ключей может быть сделано на любой машине, это не обязательно должно быть сделано на сервере. Если вы действительно параноик, вы должны сделать это на машине, которая не подключена к сети, и использовать карту памяти для передачи сертификатов.

Создание CA и сертификатов для сервера

Этот шаг необходимо выполнить один раз, если только частный ключ вашего CA не был скомпрометирован. В этом случае, Могут быть созданы действительные сертификаты, которые будут приняты сервером, что приведет к нарушению безопасности.

Официальная документация предлагает делать администрирование в /etc/openvpn. Я не большой поклонник запускать все как root, поэтому я поместил бы его в другой каталог.

  1. Создайте каталог администрирования и скопируйте в него файлы, запустив:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easyy-rsa
    
  2. Редактируйте настройки по умолчанию в vars по мере необходимости, например, установка KEY_SIZE=2048, потому что вы параноик.
  3. Загружайте переменные и создайте каталог ключей, запустив:

    . vars.
    
  4. Если вы получите ошибку, что Нет ... файл openssl.cnf может быть найден... Дальнейшие вызовы будут неудачными, запустите ln -s openssl-1.0.0.cnf openssl.cnf, затем . vars.

  5. Если Вы используете этот CA в первый раз, подготовьте среду ключей. Выполните , а не , если хотите сохранить ранее созданный центр сертификации. Для этого необходимо установить новый ca.crt.

    ./clean-all
    
  6. Создайте ЦС, выполнив ./build-ca. Вы можете заполнить любую информацию, но учтите, что эта информация будет видна в лог-файлах, когда клиенты подключатся к серверу. При этом будут созданы файлы ca.key и ca.crt в подпапке key. Храните в секрете файл ca.key при любых обстоятельствах . В противном случае любой, у кого есть ключ, сможет подключиться к вашему серверу.
  7. Если у вас есть предыдущий сертификат, который потерян или срок действия которого истек, вам необходимо сначала отозвать старый с помощью ./revoke-full server. В противном случае вы получите ошибку в базе данных.
  8. Создайте сертификат для сервера, запустив:

    ./build-key-server server
    

    При запросе пароля оставьте его пустым, если вы не желаете вводить пароль каждый раз при запуске сервера (не рекомендуется). Подтвердите при подписании сертификата и его фиксации. В директории ключи появятся два новых файла: server.key и server.crt.

DH и используйте подготовку к tls-auth

Сгенерируйте параметры Diffie-Hellman, используя:

./build-dh

Per helpening tips, используйте tls-auth. Для этого сгенерируйте разделяемый секретный ключ, используя:

openvpn --genkey --secret ta.key

результирующий файл (ta.key) также должен быть распространен среди клиентов, но вы не должны делать его публичным.

Создавайте сертификаты для клиентов

Для каждого клиента эти шаги нужно повторить:

  1. Введите каталог, в котором вы создали свой CA и серверный сертификат:

    cd ~/openvpn-admin/easy-rsa
    
  2. Если вы пропустили шаг создания CA, потому что у вас уже есть один, вам нужно сначала загрузить переменные:

    . vars.
    
  3. Если вы создаете новые сертификаты, так как старые утрачены или истекли срок действия , необходимо сначала отозвать старый с помощью ./revoke-full you . В противном случае вы получите ошибку базы данных.
  4. Создайте клиентский сертификат you.key и соответствующий ему сертификат you.crt:

    ./build-key you
    

    Общее имя Общее имя должно быть уникальным. Оставьте пароль пустым, если Вы используете KDE, так как он еще не поддерживается начиная с 10.10. Как и в случае с генерацией сертификата сервера, подтвердите подписание сертификата и фиксацию изменений.

3. Настройте службу OpenVPN

По умолчанию OpenVPN запускается как root при приеме соединений. Не очень хорошая идея, если сервис доступен из злого Интернета.

  1. Создайте выделенного пользователя для OpenVPN, скажем openvpn:

    sudo useradd openvpn
    
  2. Скопируйте файлы 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}
    
  3. Скопируйте файл ta.key, а также:

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. Создайте файл /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
    
  5. Установите на него соответствующие разрешения, это не обязательно должно быть секретным, но я предпочитаю не пропускать подробности конфигурации:

     sudo chmod 640 /etc/openvpn/server.conf
    

4. Завершение работы сервера

Если вы создали сертификаты на сервере, то лучше зашифровать их или перенести с сервера. В любом случае не теряйте ca.key и server.key. В первом случае другие смогут подключиться к Вашему серверу. В последнем случае возможно использование MITM.

Клиент

Помимо IP-адреса сервера администратор сервера должен передать следующие файлы:

  • ca.crt: для проверки сертификатов
  • сервера. crt: для проверки сервера и связи с ним
  • ta.key: для укрепления безопасности
  • you.crt: для идентификации себя с сервером
  • you.key: это как ваш пароль, файловые разрешения должны быть 400 (только для чтения владельцу)

1. Installation

Install OpenVPN и плагин NetworkManager (подходящий для KDE и Gnome):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn находится во вселенском репозитории.

2. Configuration

В панели управления используйте следующую информацию:

  • Шлюз: IP-адрес сервера
  • Тип: "Сертификаты (TLS)" (Gnome) или "Сертификат X.509" (KDE)
  • CA Сертификат: путь к ca.crt
  • Сертификат пользователя: путь к you.crt
  • Частный ключ: путь к you.key

At Advanced:

  • Порт шлюза: Автоматически (1194) (не нуждается в изменении)
  • Use LZO data compression: enabled
  • Use TCP connection: disabled
  • Use TAP device: enabled
  • Cipher: default
  • HMAC authentication: default
  • Use TLS-authentication: enabled
    Укажите путь к файлу ключа ta.key и установите "Направление ключа" на 1.
  • (todo - проверка) сервер выталкивает шлюз по умолчанию, чтобы весь трафик проходил через VPN-соединение. Последний раз, когда я проверял, плагин NetworkManager-openvpn этого не делал.

Если вы не можете заставить работать 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
40
ответ дан 18 April 2011 в 00:06

На самом деле вам не нужно выполнять скрипку с какими-либо приложениями. Это работает "как VPN".

  1. Сначала установите tsocks пакет (временные носки):

    sudo apt-get install tsocks
    
  2. Затем отредактируйте /etc/tsocks.conf и введите

    server = 127.0.0.1.
    server_port = 3333
    
  3. Теперь откройте терминал и наберите (это соединяет вас):

    ssh -ND 3333 ssh.url.на вашем домашнем компьютере.
    
  4. Запуск (через другой терминал или ALT-F2):

    ток-фокс firefox
    

Теперь Firefox передает все соединения на сервер SOCKS на вашем компьютере, который создал SSH. Далее это передается по туннелю на вашу домашнюю машину, где она выходит в интернет. Все, что вам нужно на вашей домашней машине, это SSH сервер. После первого раза просто повторите шаги 3 и 4.

Он работает как шарм! Увы, хром не любит туков, но эй, Firefox работает.

8
ответ дан 18 April 2011 в 00:06

Решение туннеля SSH проще, чем Вы думаете. Программа типа gSTM запустит/остановит туннели с помощью GUI. Затем просто откройте Network Proxy и измените его с Прямого Интернет-соединения на Ручную настройку прокси, нажмите "Apply system-wide" и все ваши приложения должны отправить свои данные в туннель - не нужно будет выполнять скрипку с каждым из них по отдельности.

1
ответ дан 18 April 2011 в 00:06

Другие вопросы по тегам:

Похожие вопросы: