Создание VPN-сервера на базе pptpd и ppp с использованием аутентификации MSCHAP-V2. Доступ в сеть будет основываться на членстве в выделенной группе размещенной в Active Directory.
Исходные данные
Домен = asiainvest.local
Можете заменить asiainvest на company, то есть будет company.local
Установим PPP/PPTP
Для CentOS 6
# rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
# yum install pptpd ppp pptp -y
Для CentOS 5
# rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel5/pptp-release-current.noarch.rpm
# yum install pptpd ppp pptp -y
Откроем файл /etc/pptpd.conf
# cp /etc/pptpd.conf /etc/pptpd.conf.original
# vi /etc/pptpd.conf
И внесем в него следующие настройки:
speed 115200
option /etc/ppp/options.pptpd
bcrelay eth1
debug
localip 192.168.100.3
remoteip 192.168.110.1-254
logwtmp
Откроем файл /etc/ppp/options.pptpd
# cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.original
# vi /etc/ppp/options.pptpd
Запишем в него следующий текст:
name pptpd
debug
lock
### Authentication ###
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
nomppe-40
### Network Settings
nodefaultroute
ms-dns 192.168.100.10
ms-dns 192.168.100.11
proxyarp
nobsdcomp
Откроем файл /etc/ppp/chap-secrets
# cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.original
# vi /etc/ppp/chap-secrets
Впишите в него текст:
# client server secret IP addresses
guest pptpd qwerty *
Далее включаем форвардинг пакетов в /etc/sysctl.conf
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
Применим наши сетевые настройки:
# sysctl -p
Перезапустим демон pptdp и внесем его в автозагрузку:
# service pptpd start
# chkconfig --level 35 pptpd on
Отключаем встроенную цепочку RH-Input (фаервол) на время проверок:
# setup
Firewall -> убрать звездочку
Теперь можно создать новое подключение к сети, встроенными средствами windows.
Пуск – Подключения – Создание нового подключения – Подключение к сети на рабочем месте (VPN) – Подключение к виртуальной частной сети
вводим имя подключения, указываем адрес сервера. Затем заходим в свойства подключения и во вкладке “Безопасность” указываем дополнительные (выборочные) параметры, там казываем стойкое шифрование, и отмечаем использование протокола MSCHAP-V2, сохраняем настройки и пробуем подключиться. Логин и пароль при этом подключении : guest /qwerty
Для одновременной работы в частной сети, и чтобы оставался работоспособным интернет, необходимо в свойствах нового подключения зайти во вкладку Сеть и в параметрах протокола TCP\IPнажать кнопку “Дополнительно” и снять галочку “Использовать основной шлюз в удаленной сети”
Теперь сделаем аутентификацию через контроллер домена, с учетом того, что подключающийся юзер должен находится в группе VPN домена asiainvest.local. Я предполагаю что машина на которой будет размещен VPN-сервер уже введена в домен. Если нет то для начала следует ее вести, для этого выполните howto отсюда http://www.linuxmail.info/active-directory-integration-samba-centos-5/
Этот howto ориентирован на CentOS 5, в шестой версии возможно будет по другому.
Предварительно пропишите в файл /etc/hosts и /etc/samba/smb.conf ваши IP адреса доменного контроллера и VPN сервера:
vi /etc/hosts
192.168.50.1 PDC.ASIAINVEST.LOCAL PDC
vi /etc/samba/smb.cfg
192.168.50.2 FILESRV
Обязательно запустите команду вывода списка пользователей домена, перед тем чтобы продолжать дальше:
# wbinfo -u
administrator
guest
support_388945a0
iusr_server2003
iwam_server2003
krbtgt
vasya
На экране будет выведен список похожий на тот который вы видите.
Добавляем дополнительные настройки в конец файла /etc/ppp/options.pptpd указываем чтобы проверка осушествлялась на членстве домена. То есть если пользователь имеет доменную учетную запись, ему есть доступ к нашему серверу.
# vi /etc/ppp/options.pptpd
plugin winbind.sontlm_auth-helper "/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1"
Если нужно давать доступ на членстве в определенной группе, в нашем случае группе vpn, добавляем к конец файла /etc/ppp/options.pptpd, следующею строку, удалив предыдущею:
# vi /etc/ppp/options.pptpd
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --require-membership-of='asiainvest\\vpn' --helper-protocol=ntlm-server-1"
# service pptpd restart
Теперь создаем подключение, и пробуем подключиться под доменным пользователем который в группе vpn.
Заведем нового пользователя vasya и включим его в группу vpn
Логинимся под учеткой vasya
Настроим подключение к нашему серверу: ПУСК -> Панель управления -> Сеть и подключения к Интернету -> Сетевые подключения -> Создание нового подключения
Все как обычно, вводим IP адрес нашего сервера, другие настройки оставляем по умолчанию.
В окошке ввода логина и пароля, не надо вводить логин/пароль и домен!!!
Жмете только на кнопке "Подключение".
Теперь мы можем дать доступ в Интернет пользователям нашей виртуальной сети, для этого требуется настроить iptables, а точнее включить правило NAT.
# iptables -F
# iptables -t nat -F
# iptables -t mangle -F
# iptables -X
# iptables -t nat -X
# iptables -t mangle -X
# iptables -t nat -A POSTROUTING -s 192.168.110.0/24 -j SNAT --to-source 10.20.30.40
# service iptables save
В этом правиле NAT мы указали нашу виртульную подсеть с адресом 192.168.110.0/24, а также IP адрес сетевой карты которая подключена к провайдеру.
Также вы можете развернуть службу Bind для организации кэширущего DNS сервера.
_________________________________________________________________________
Дополнительные материалы:
2. http://poptop.sourceforge.net/dox/replacing-windows-pptp-with-linux-howto.phtml