Донецкий техникум промышленной автоматики

VPN-сервер за допомогою PPTP на Ubuntu 14.04 »Crossroads

не є еталоном безпеки і погано дружить з фаєрвол, але є одним з найпростіших способів побудови ізольованій локальній мережі і установки захищеного з'єднання з нею. При тому, що протокол PPTP досить дірявий, щоб не використовувати його в корпоративних мережах і там, де потрібна гарантія конфіденційності, він цілком прийнятний для побудови приватних мереж для обміну інформацією, або виходу в Інтернет через такі мережі. У будь-якому випадку, вразливість протоколу не зупиняє багатьох інтернет-провайдерів від підключення своїх клієнтів саме через PPTP.
При певних налаштуваннях між клієнтом і сервером встановлюється пряме шифрування з'єднання в стандартній, незахищеною мережі. Таким чином даний тип з'єднання може бути використаний для виходу в Інтернет з публічних Wi-Fi мереж та інтернет-кафе.
І так, для початку нам потрібен сервер. Для VPN мереж з невеликим навантаженням віртуального сервера (VPS) більш ніж достатньо. Проблема в тому, що поріг входження на ринок інтернет-послуг, м'яко кажучи невисокий. Відповідно якість цих послуг часто залишає бажати кращого. У будь-якому випадку, перед покупкою необхідно уточнить чи дозволені у хост-провайдера VPN мережі взагалі і чи включені на їх VPS і.
На правах реклами я рекомендую провайдера DigitalOcean . Я користуюся їхніми послугами з моменту відкриття ними другого дата-центру в Нью-Йорку (майже 2 роки) і за цей час нарікань до їхньої роботи у мене не виникло. За майже десять років я змінила безліч провайдерів і мені є з чим порівняти. Тобто це дійсно сучасний сервіс «для людей». У випадку з DigitalOcean, підтримка VPN включається в один клік клієнтом при створенні VPS. Після реєстрації та внесення мінімального місячного платежу клієнт сам вибирає конфігурацію свого VPS (Droplet, в термінології DigitalOcean), яка варіюється від 512 MB RAM і 20 GB дискового простору, до тих потужностей, які клієнту по кишені. Система віртуалізації -, накопичувачі - диски. Гроші з рахунку клієнта списуються щодня з розрахунку погодинної оплати. не є еталоном безпеки і погано дружить з фаєрвол, але є одним з найпростіших способів побудови ізольованій локальній мережі і установки захищеного з'єднання з нею Клієнт у будь-який час може перебудувати, змінити або знищити свій Droplet, а так само створити новий. Вони пишаються своїми 55-ма секундами і за фактом, дійсно, між натисканням кнопки «створити» і отриманням листа з IP-адресою та паролем для root-доступу проходить не більше хвилини. DigitalOcean так само продають послуги в Амстердамі, що для європейських і східноєвропейських клієнтів, можливо, більш переважно через відстані і пінгу між сервером і аудиторією цього сервера. У будь-якому випадку, при створенні VPS потрібно поставити галку навпроти «Private Networking», щоб включити в конфігурацію NAT і TUN / TAP.
Я настійно не рекомендую без гострої необхідності використовувати 32-х бітні дистрибутиви сучасних операційних систем на увазі застарілої архітектури і того, що самі розробники приділяють їм набагато менша увага, в порівнянні з 64-х бітними. Таким чином в природі існує 32-х бітна серверна версія Ubuntu 14.04, але на офіційному сайті Ubuntu вона не представлена ​​там, де пропонується завантаження образу цієї ОС.
І так, після того як з сервером ми визначилися, то приступаємо до установки. У моєму випадку це VPS з 1024 RAM і 64-х бітної Ubuntu 14.04 в якості ОС.
aptitude install pptpd
Дозволяємо IP-forwarding. Для цього редагуємо файл /etc/sysctl.conf і в ньому або расскоментіруем, або додаємо наступний рядок, а якщо її немає:
net.ipv4.ip_forward = 1
Для прийняття змін до терміналі командуємо:
sysctl -p
Правимо файл /etc/pptpd.conf і наводимо його до наступного вигляду:
option / etc / ppp / pptpd-options logwtmp localip 10.30.1.1 remoteip 10.30.1.30-40,10.30.1.15
Де localip - IP віртуального мережевого інтерфейсу ppp0. Не потрібно прописувати сюди зовнішній IP сервера, або IP інших мережевих інтерфейсів сервера.
Remoteip - діапазон клієнтських адрес в кількості десяти (від 10.30.1.30 і до 10.30.1.40), а так само (через кому) виділені адреси (в разі їх необхідності). У моєму випадку виділений адреса один. Ви можете вказати тут будь-який прийнятний значення.
наприклад:
localip 10.10.1.1 remoteip 10.10.1.100-200,10.10.1.25,10.10.1.26
В такому випадку динамічні адреси, що роздаються клієнтам присутні в кількості ста штук і два адреси зарезервовані.
Далі редагуємо файл / etc / ppp / chap-secrets
user1 pptpd password "*" user2 pptpd password "10.30.1.15"
У файлі у нас два користувача user1 і user2, password - паролі користувачів, зірочка в лапках говорить про те, що user1 отримає вільний IP із зазначеного в /etc/pptpd.conf діапозона, а за user2 закріплений виділений адреса. Дотримання синтаксису обов'язково.
Редагуємо файл / etc / ppp / pptpd-options
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp nodefaultroute lock nobsdcomp novj novjccomp nologfd noipx mtu 1400 mru 1400
Де ms-dns - DNS мережі. Вказані публічні адреси Google, але можна виставити свої, якщо такі є. і MRU за замовчуванням встановлені в значення 1500. Якщо видалити ці два рядки, то буде використовуватися значення за замовчуванням. У моєму випадку при значеннях за замовчуванням спостерігається велика втрата пакетів. Тобто до цих рядків підхід індивідуальний. Все залежить від налаштувань клієнтської сторони і від швидкості з'єднання в цілому.
Перезавантажуємо pptp сервер
service pptpd restart
Перевіряємо.
netstat -alpn | grep: 1723
Якщо отримуємо щось схоже на те, що на скріншоті, то все працює як треба.

Створюємо правила NAT для iptables
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
Якщо хочемо, щоб клієнти бачили один одного в локальній мережі і могли обмінюватися файлами, то прописуємо наступні правила:
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT iptables --append FORWARD --in-interface eth0 -j ACCEPT
зберігаємо
iptables-save
Якщо ви використовуєте сторонню програму для налаштувань фаєрвола, то перед тим як вносити через неї зміни, слід переконатися, що прийняті тільки що правила відображаються в цій програмі. Я використовую панель управління Webmin і фаєрвол зазвичай налаштовую через неї. Відповідно там відображаються лише ті правила, які були внесені через неї. Якщо додати правило і застосувати, то зміни, прийняті через термінал в процесі настройки PPTP сервера перезапишуть. Щоб цього не сталося, в Webmin, в настройках фаервола потрібно повернути поточну конфігурацію iptables. Переконуємося, що прийняті зміни присутні в списку правил і тільки тоді тиснемо «зберегти».
На цьому все. Нижче два скріншота з настройками підключення на стороні клієнта (Windows і Linux).

Після вдалого з'єднання можна вивести список мережевих інтерфейсів за допомогою команди ifconfig і переконатися в тому, що все працює.
Оскільки PPTP не є прикладом безвідмовності через свої складних відносин з фаєрволом, то можна злегка прискорити Мережа, загорнувши трафік через проксі сервер. Тобто клієнти локальної мережі будуть виходити з неї в Інтернет через проксі сервер. Як встановити і налаштувати Squid я писала раніше . Нижче конфігурація Squid 3.3 для Ubuntu 14.04, що дозволяє клієнтам локальної мережі виходити в Інтернет.
http_port 8085 icp_port 0 cache_mem 256 MB memory_replacement_policy lru maximum_object_size_in_memory 512 KB cache_swap_low 90 cache_swap_high 95 access_log /var/log/squid3/access.log squid logfile_rotate 12 refresh_pattern ^ ftp 1440 20% 10080 refresh_pattern ^ gopher 1440 0% 1440 refresh_pattern -i ( / cgi-bin / | \?) 0 0% 0 refresh_pattern. 0 20% 4320 dns_nameservers 8.8.8.8 8.8.4.4 positive_dns_ttl 6 hours negative_dns_ttl 1 minutes #auth_param basic program / usr / lib / squid3 / basic_ncsa_auth / etc / squid3 / passwords #auth_param basic children 5 #auth_param basic realm Please provide your username and password . #auth_param basic credentialsttl 24 hour #acl ncsa_users proxy_auth REQUIRED acl localnet src 10.0.0.0/8 # RFC 1918 possible internal network acl localnet src 172.16.0.0/12 # RFC 1918 possible internal network acl localnet src 192.168.0.0/16 # RFC 1918 possible internal network acl localnet src fc00 :: / 7 # RFC 4193 local private network range acl localnet src fe80 :: / 10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 # https acl SSL_ports port 22 # ssh acl All_ports port 1-65535 # unregistered ports acl CONNECT method CONNECT http_access allow localnet #http_access allow ncsa_users http_access allow All_ports http_access allow CONNECT SSL_ports http_access deny all coredump_dir / var / spool / squid3 request_header_access Cache-Control deny all
У даній конфігурації Squid буде обслуговувати клієнтів локальної мережі без пароля, з зовнішніх мереж доступ до нього буде закритий. Якщо розкоментувати закомментірование рядки конфігурації, то клієнти локальної мережі як і раніше зможуть звертатися до нього без пароля, але так само буде можливий доступ ззовні, але вже з паролями, зазначеними у файлі «passwords».
Для клієнтів локальної мережі адреса проксі повинен бути локальним. Дивіться скріншот вище з висновком команди «ifconfig». У мене на сервері два фізичних мережевих інтерфейсу: eth0, який дивиться в Інтернет і eth1 - інтерфейс, що дивиться в локальну мережу. Таким чином в моєму випадку адреса проксі буде 10.128.9.55. Для клієнтів з зовнішніх мереж в якості адреси повинен служити зовнішній IP сервера.
Таким чином PPTP немає необхідності прокидати трафік від клієнта в зовнішню мережу через фаєрвол. Цим буде займатися Squid.
На цьому все. Наша мережа працює.

___
Tatyana K.

Cgi-bin / | \?