Как установить и настроить безопасный PPTP сервер на Debian Linux

Опубликовано: 29 февраля 2020
Раздел(ы): GNU Linux - CentOS / Debian
Просмотры: 9218
Комментарии: 5

Для объединения компьютеров между собой и даже целых локальных сетей через интернет используют VPN туннели. Как правило один из узлов используется в качестве сервера, а остальные подключаются к нему как клиенты.

Существует много ПО для построения VPN тоннелей, но PPTP, пожалуй, самый простой в настройке, поддерживается практически всеми операционными системами и устройствами, при этом быстро работает. Единственное «Но», он не самый безопасный (защищенный).

PPTP (англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.
Подробнее в Википедии

В этой статье я расскажу как настроить PPTP сервер на операционной системе Debian 9.

Как установить PPTP сервер на Debian

Чтобы установить PPTP сервер на Debian выполните последовательно следующие команды в консоли от имени ROOT:

# apt update
# apt upgrade
# apt install pptpd

Обратите внимание, что демон (сервис) PPTP в имени на конце содержит букву [d].

Как настроить PPTP сервер на Debian

Настройка сервера для построения VPN туннеля на основе PPTP сводится к редактированию трех файлов:

  • /etc/pptpd.conf
  • /etc/ppp/chap-secrets
  • /etc/ppp/pptpd-options

Настройка безопасности PPTP

Как правило файл /etc/ppp/pptpd-options уже содержит все необходимые инструкции для правильной и безопасной работы PPTP сервера и редактировать его не надо. В нем находятся не только настройки безопасности, но именно на них следует обратить особое внимание.

В Debian 9 по-умолчанию файл /etc/ppp/pptpd-options имеет следующее содержание:

###############################################################################
# $Id$
#
# Sample Poptop PPP options file /etc/ppp/pptpd-options
# Options used by PPP when a connection arrives from a client.
# This file is pointed to by /etc/pptpd.conf option keyword.
# Changes are effective on the next connection.  See "man pppd".
#
# You are expected to change this file to suit your system.  As
# packaged, it requires PPP 2.4.2 and the kernel MPPE module.
###############################################################################


# Authentication

# Name of the local system for authentication purposes
# (must match the second field in /etc/ppp/chap-secrets entries)
name pptpd

# Optional: domain name to use for authentication
# domain mydomain.net

# Strip the domain prefix from the username before authentication.
# (applies if you use pppd with chapms-strip-domain patch)
#chapms-strip-domain


# Encryption
# (There have been multiple versions of PPP with encryption support,
# choose with of the following sections you will use.)


# BSD licensed ppp-2.4.2 upstream with MPPE only, kernel module ppp_mppe.o
# {{{
refuse-pap
refuse-chap
refuse-mschap
# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2] authentication.
require-mschap-v2
# Require MPPE 128-bit encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
require-mppe-128
# }}}




# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients.  The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
# Attention! This information may not be taken into account by a Windows
# client. See KB311218 in Microsoft's knowledge base for more information.
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2

# If pppd is acting as a server for Microsoft Windows or "Samba"
# clients, this option allows pppd to supply one or two WINS (Windows
# Internet Name Services) server addresses to the clients.  The first
# instance of this option specifies the primary WINS address; the
# second instance (if given) specifies the secondary WINS address.
#ms-wins 10.0.0.3
#ms-wins 10.0.0.4

# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.  This will have the effect of making the peer appear to other
# systems to be on the local ethernet.
# (you do not need this if your PPTP server is responsible for routing
# packets to the clients -- James Cameron)
proxyarp

# Normally pptpd passes the IP address to pppd, but if pptpd has been
# given the delegate option in pptpd.conf or the --delegate command line
# option, then pppd will use chap-secrets or radius to allocate the
# client IP address.  The default local IP address used at the server
# end is often the same as the address of the server.  To override this,
# specify the local IP address here.
# (you must not use this unless you have used the delegate option)
#10.8.0.100

# Debian: do not replace the default route
nodefaultroute


# Logging

# Enable connection debugging facilities.
# (see your syslog configuration for where pppd sends to)
#debug

# Print out all the option values which have been set.
# (often requested by mailing list to verify options)
#dump


# Miscellaneous

# Create a UUCP-style lock file for the pseudo-tty to ensure exclusive
# access.
lock

# Disable BSD-Compress compression
nobsdcomp

# Disable Van Jacobson compression
# (needed on some networks with Windows 9x/ME/XP clients, see posting to
# poptop-server on 14th April 2005 by Pawel Pokrywka and followups,
# http://marc.theaimsgroup.com/?t=111343175400006&r=1&w=2 )
novj
novjccomp

# turn off logging to stderr, since this may be redirected to pptpd,
# which may trigger a loopback
nologfd

# put plugins here
# (putting them higher up may cause them to sent messages to the pty)

Если у вас этого файла нет или у него другое содержимое и вы хотите внести в него изменения, то с начала сделайте резервную копию файла настроек:

# cp /etc/ppp/pptpd-options /etc/ppp/pptpd-options-original

Оптимальные параметры PPTP сервера, проверьте их наличие и при необходимости добавьте в файл /etc/ppp/pptpd-options:

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

где,

  • name pptpd — имя сервиса, которое используется в файле аутентификации /etc/ppp/chap-secrets
  • refuse-pap — запрет небезопасной авторизации pap
  • refuse-chap — запрет небезопасной авторизации chap
  • refuse-mschap — запрет небезопасной авторизации mschap
  • require-mschap-v2 — требование безопасной авторизации mschap v2
  • require-mppe-128 — требование максимального шифрования mppe-128
  • proxyarp — необходим для трансляции ARP-ответов из одного сегмента сети в другой
  • nodefaultroute — запрещает изменять шлюз по-умолчанию на сервере при активации PPTP соединения
  • lock — параметр на создания файла блокировки на эксклюзивный доступ
  • nobsdcomp — используется на не BSD системах (OpenBSD, FreeBSD)
  • novj — запрет компресии, она используется только клиентами Windows 9x/ME/XP
  • novjccomp — запрет компрессии, она используется только клиентам Windows 9x/ME/XP
  • nologfd — блокирует запись в системный журнал через системную функцию stderr

Настройка адресации VPN тоннеля

Адресация компьютеров (устройств) в тоннеле не должна совпадать с уже используемой адресацией у всех участников VPN туннеля.

Адреса для туннеля следует выбирать из «серых» подсетей. Подробнее о них можно почитать здесь — https://moonback.ru/page/belye-i-serye-ip-adresa-ipv4.

В моем примере я буду использовать подсеть 172.22.22.0. Чтобы ее настроить для PPTP тоннеля необходимо отредактировать файл /etc/pptpd.conf.

По правилам «хорошего тона» сначала сделаем резервную копию оригинального файла конфигурации:

# cp /etc/pptpd.conf /etc/pptpd_original.conf

а затем в конец файла добавляем настройки адресов нашего тоннеля:

# IP-адрес сервера в локальной сети
localip 172.22.22.1

# Диапазон адресов для клиентов PPTP-сервера
remoteip 172.22.22.22-29

Сделать это можно с помощью редактора, например из состава MC (Midnight Commander):

Как установить и настроить безопасный PPTP сервер на Debian Linux

Или прямо из командной строки:

# echo -e '
# IP-адрес сервера в локальной сети 
localip 172.22.22.1 

# Диапазон адресов для клиентов PPTP-сервера 
remoteip 172.22.22.22-29 ' \
>> /etc/pptpd.conf

Список пользователей PPTP сервера

Следующим шагом добавим пользователей, которые будут подключаться к нашему PPTP серверу. Для этого необходимо внести правки в файл /etc/ppp/chap-secrets.

Не забываем про «правила хорошего тона» и делаем резервную копию файла настроек:

# cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets_original

Формат строки: имя-пользователя имя-сервиса пароль адрес-клиента-в-тоннеле.

Например:

vpn-user pptpd user-password 172.16.22.22

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

vpn-user pptpd user-password *

Как установить и настроить безопасный PPTP сервер на Debian Linux

Добавить пользователя можно не прибегая к редактору, прямо из консоли:

# echo -e '
vpn-user pptpd user-password 172.16.22.22' >> /etc/ppp/chap-secrets

Так как данные хранятся в окрытом виде, то для хоть какой-то безопасности присвоим файлу /etc/ppp/chap-secrets следующие права:

# chmod 0600 /etc/ppp/chap-secrets

Запуск PPTP сервера на Debian

Если все сделали без ошибок, то можно запустить PPTP сервер:

# service pptpd start

При необходимости можно проверить сатус его работы:

# service pptpd status

Как установить и настроить безопасный PPTP сервер на Debian Linux

Автозагрузка PPTP сервера при старте операционной системы

В Debian 9 PPTP сервер добавить в автозагрузку можно следующей командой:

# systemctl enable pptpd

исключить из автозагрузки соответственно:

# systemctl disable pptpd

Для просмотра сервисов добавленных в автозагрузку используйте команду:

# systemctl list-unit-files --type=service --state=enabled

Заключение

К серверу настроенному по этой инструкции беспроблемно подключаются клиенты Windows 8.1/10, Android 9, а так же роутеры серии Keenetic. Это проверено мной лично.

В прочем и другие клиенты так же не должны испытывать проблем при подключении.

Обсуждение (комментарии к статье)

  1. Сделал как тут написано,все работает. Только клиенты подключаются и уже не могут подключиться к ресурсам во внешней сети. Как это исправить?

    1. Drake, если вы хотите, чтобы клиенты ходили во внешнюю сеть через VPN, то настройте сервер по этой инструкции — https://moonback.ru/page/debian-vpn-client-to-inernet.

      Если нужно, чтобы интернет у клиентов оставался свой как и раньше, то у клиентов в настройках протокола IPv4 для VPN соединения в разделе дополнительные параметры отключите использование внешнего шлюза.

      1. Спасибо. Уже разобрался. Единственно,у меня нет файла /etc/rc.local. Я по другому эту проблему решил, через файл /etc/network/interfaces

  2. Благодарю за статью, но почему-то после всех настроек, не получается подключиться к серверу. Пишет, что сервер не отвечает. В чем может быть проблема?

    1. Попробуй именно 9-й дебиан. На 11-м у меня тоже никак не завелось. День танцевания с бубном в утиль. А на 9м пошло сразу и без проблем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности сайта.
© Юрий Рассадников, 2011 - 2024
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 7 | 0,259 сек. | 13.96 МБ