Найти тему
Записки на обоях.

Настройка PPTPD cервера

PPTP (Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка.

PPTP работает, устанавливая обычную PPP сессию с противоположной стороной с помощью протокола Generic Routing Encapsulation (GRE). Второе соединение на TCP-порте 1723 используется для инициации и управления GRE-соединением. PPTP сложно перенаправлять за сетевой экран, так как он требует одновременного установления двух сетевых сессий.

PPTP-трафик может быть зашифрован с помощью MPPE. Для аутентификации клиентов могут использоваться различные механизмы, наиболее безопасные из них — MS-CHAPv2 и EAP-TLS.

Шифрование в PPTP исключительно не надежное и Большинство провайдеров блокируют GRE трафик, поэтому предпочтительнее использовать OpenVPN.

Установка

Устанавливаем пакет pptpd:

sudo apt update
sudo apt install pptpd

Настройка Сначала необходимо отредактировать основной конфигурационный файл /etc/pptpd.conf:

sudo vi /etc/pptpd.conf

Приведем его к следующему виду:

# TAG: option
# Specifies the location of the PPP options file.
# By default PPP looks in '/etc/ppp/options'
#
option /etc/ppp/pptpd-options

# TAG: debug
# Turns on (more) debugging to syslog
#
#debug

# TAG: stimeout
# Specifies timeout (in seconds) on starting ctrl connection
#
stimeout 15

# TAG: logwtmp
# Use wtmp(5) to record client connections and disconnections.

logwtmp

# TAG: connections
# Limits the number of client connections that may be accepted.
#
# If pptpd is allocating IP addresses (e.g. delegate is not
# used) then the number of connections is also limited by the
# remoteip option. The default is 100.
connections 20

# TAG: localip
# TAG: remoteip
localip 192.168.10.1
remoteip 192.168.10.100-250

Теперь необходимо отредактировать файл /etc/ppp/pptpd-options, откроем его с помощью редактора:

sudo vi /etc/ppp/pptpd-options

Приведем его к следующему виду:

name pptpd

# Encryption
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128

#DNS
ms-dns 192.168.10.1
#свой днс сервер, ну или любой другой
ms-dns 1.1.1.1

#proxyarp

nodefaultroute

debug
#dump
nologfd
logfile /var/log/pptpd/pptpd.log

lock

nobsdcomp

idle 120
#Количество секунд простоя, по истечении которых простаивающее соединение будет отключено

lcp-echo-interval 30
#Посылать echo-запросы каждые 30 секунд
lcp-echo-failure 3
#Разорвать соединение с клиентом, если он не ответит на 3 echo запроса

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

sudo vi /etc/ppp/chap-secrets

Приведем его к следующему виду:

# Secrets for authentication using CHAP
# client server secret IP addresses
user1 pptpd password *
user2 pptpd password *

Настройка PPTP сервера завершена, теперь необходимо перезапустить pptpd:

sudo service pptpd restart

Правила IPTABLES для защиты нашего сервера

Пример настройки пакетного фильтра IPTABLES, где мы разрешаем принимать все входящие пакеты по протоколу GRE и разрешаем не более 4 запросов на подключение к нашему серверу в течении 60 секунд с одного IP адреса:

# GRE
iptables -A INPUT -p gre -d 88.198.175.73 -j ACCEPT

# PPTP
iptables -N PPTP_CHK
iptables -A INPUT -i $EXTIF -p tcp --dport 1723 -m state --state NEW -j PPTP_CHK
iptables -A PPTP_CHK -m recent --set --name PPTP
iptables -A PPTP_CHK -m recent --update --seconds 60 --hitcount 5 \
--name PPTP -j LOG --log-prefix "PPTPD_FLOOD " --log-level info
iptables -A PPTP_CHK -m recent --update --seconds 60 --hitcount 5 \
--name PPTP -j REJECT --reject-with icmp-port-unreachable
iptables -A PPTP_CHK -j ACCEPT

–log-prefix "PPTPD_FLOOD " – здесь обязательно должен быть пробел перед закрывающими кавычками.

Пример вывода лога срабатывания фильтра из syslog:

cat /var/log/syslog |grep PPTP_FLOOD
Jun 26 06:26:22 gate kernel: [316374.566430] PPTPD_FLOOD IN=ens160 OUT= MAC=00:50:56:9c:51:47:54:a0:50:e7:c9:06:08:00 SRC=111.111.111.11 DST=1.1.1.1