Аутентификация через Active Directory
Проверка подлинности через активный каталог от Microsoft в xl2tp выполняется с помощью winbind и samba.
Подготовка сервера
Для корректной работы сервера с Active Directory необходимо задать ему имя (hostname), которое будет доступно в DNS. Также на сервере должно быть задано точное время.
1. Необходимо убедиться, что сервер доступен по своему доменному имени. Если серверу так и не было задано вменяемого имени, вводим команду:
hostnamectl set-hostname vpn.dmosk.local
* где vpn — имя сервера; dmosk.local — домен.
После добавляем в DNS наш сервер VPN. Ждем минут 15 (если у нас используется доменная инфраструктура с несколькими сайтами, иначе ждать не нужно).
2. Задаем временную зону:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере мы задаем зону по московскому времени.
Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.
yum install chrony
systemctl enable chronyd
systemctl restart chronyd
Присоединяем сервер к домену
Устанавливаем необходимые компоненты:
dnf install samba-client samba-winbind samba-winbind-clients krb5-workstation
Открываем конфигурационный файл samba:
vi /etc/samba/smb.conf
В разделе редактируем следующие опции:
workgroup = DMOSK
security = ads
* где DMOSK — NETBIOS имя домена; ads — указывает, что для samba будет использоваться модель безопасности LDAP Active Directory.
Также в добавим следующие строки:
kerberos method = secrets and keytab
realm = DMOSK.LOCAL
winbind enum groups = Yes
winbind enum users = Yes
idmap config * : rangesize = 1000000
idmap config * : range = 1000000-19999999
idmap config * : backend = autorid
* где:
- kerberos method — метод проверки kerberos. В данном примере сначала используется secretts.tdb, а затем системная таблица ключей.
- realm — сервер Active Directory. В нашем примере прописан домен, так как по нему можно обратиться к любому из серверов AD.
- winbind enum groups — задает пределы перечисления групп через setgrent(), getgrent() и endgrent().
- winbind enum users — задает пределы перечисления пользователей через setpwent(), getpwent()и endpwent().
- idmap config * : rangesize — определяет количество доступных uids и gids в каждом доменном диапазоне.
- idmap config * : range — определяет доступные совпадающие диапазоны uid и gid, для которых серверная часть является авторитетной.
- idmap config * : backend — задает idmap плагин для использования в качестве SID/uid/gid подсистемы
Вводим сервер в домен:
net ads join -U Administrator@dmosk.local
* где Administrator — учетная запись пользователя AD с правами на ввод компьютеров в домен; dmosk.local — наш домен.
Мы должны увидеть, примерно, следующее:
Using short domain name — DMOSK
Joined ‘SAMBA’ to dns domain ‘dmosk.local’
Разрешаем автозапуск winbind и стартуем его:
systemctl enable winbind —now
Выбираем профиль для аутентификации:
authselect select winbind —force
Проверяем, что наш сервер может получить список пользователей Active Directory:
wbinfo -u
… и групп:
wbinfo -g
Если мы увидели список пользователей и групп, то присоединение сервера к домену завершено.
После проверяем, что аутентификация в AD через модуль ntlm_auth работает корректно:
ntlm_auth —request-nt-key —domain=DMOSK.LOCAL —username=Administrator
* где DMOSK.LOCAL — наш домен; Administrator — пользователь, под которым будем логиниться для проверки работы модуля.
Настройка PPP для аутентификации через AD
Открываем конфигурационный файл options.xl2tpd:
vi /etc/ppp/options.xl2tpd
Добавляем в самый низ:
…
plugin winbind.so
ntlm_auth-helper ‘/usr/bin/ntlm_auth —helper-protocol=ntlm-server-1 —require-membership-of=»DMOSK\\VPN Users»‘
* где VPN Users — группа в AD, пользователи который будут иметь возможность использовать VPN.
Перезапускаем xl2tpd:
systemctl restart xl2tpd
Проверка
В Active Directory добавляем группу VPN Users (если еще нет). Группа должна быть локальная в домене. В группу добавим пользователей, которым хотим дать доступ для VPN-подключения.
В настройках подключения к серверу меняем пользователя и пароль на доменные.
Доступ клиентам друг к другу
Ранее мы настроили более безопасный сценарий подключения — туннели, которые не позволяют подключенным клиентам видеть друг друга. Но если мы хотим сделать так, чтобы все подключенные к VPN устройства видели друг друга по сети, нам нужно изменить некоторые настройки на сервере и клиенте.
Настройка сервера
Открываем файл настроек:
vi /etc/openvpn/server/server.conf
Добавляем строку:
client-to-client
* данная настройка как раз и говорит, что клиенты могут видеть друг друга через нашу сеть VPN.
Теперь находим настройку:
dev tun
… и меняем ее на:
dev tap
* туннели создают небольшие подсети на 4 адреса для каждого подключения, таким образом, изолируя клиентов друг от друга. Нам же нужно сделать так, чтобы клиенты были в одной сети VPN. Поэтому мы меняем тип интерфейса на tap.
Перезапускаем нашу службу сервиса:
systemctl restart openvpn-server@server
Подготовка операционной системы
Мы внесем небольшие правки в настройки. Настроим время для правильного формирования клиентских сертификатов, отключим систему безопасности SELinux, откроем нужные порты брандмауэра.
1. Настройка времени
Установим правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере мы укажем московское время.
Устанавливаем утилиту для синхронизации времени:
dnf install chrony
Разрешаем автозапуск службы chronyd и запускаем ее:
systemctl enable chronyd
systemctl start chronyd
Проверить корректность времени можно командой:
date
2. Настройка SELinux
В нашей инструкции мы просто отключим SELinux. Если необходимо его настроить и оставить включенным, используем инструкцию Настройка SELinux в CentOS 7 (для CentOS 8 она также подходит).
И так, отключаем Selinux командой:
setenforce 0
Чтобы Selinux не включился после перезагрузки, открываем на редактирование файл:
vi /etc/selinux/config
… и редактируем опцию SELINUX:
…
SELINUX=disabled
…
3. Настройка брандмауэра
Создаем правило для firewalld:
firewall-cmd —permanent —add-port=443/udp
* в данной инструкции мы настроим работу OpenVPN на порту 443 по UDP. Если в вашем случае необходим другие порт и протокол, меняем значения на соответствующие. По умолчанию, OpenVPN использует порт 1194.
Применяем настройку:
Настройка клиентов
Инструкции по настройке клиентов для OpenVPN для разных устройств и систем вы можете найти в сети. В большинстве случаев достаточно установить клиент и импортировать файл конфигурации.
Для примера рассмотрим настройку клиентов на компьютере с системами Windows и MacOS.
Windows
- После установки скопируйте полученный файл конфигурации в папку .
- Запустите OpenVPN. Это необходимо сделать от имени администратора: кликните на значке правой кнопкой и выберите «Запуск от имени администратора». Чтобы OpenVPN всегда по умолчанию запускался от имени администратора, кликните на его значке правой кнопкой и выберите Свойства. На вкладке «Совместимость» отметьте пункт «Выполнять эту программу от имени администратора» и сохраните.
- В появившемся при запуске окне с предупреждением (разрешить программе внести изменения) нажмите «Да.»
- Кликните правой кнопкой мыши на значке OpenVPN в трее, выберите загруженный профиль и нажмите Connect / Подключиться.
Откроется окно с логом соединения, и, как только соединение будет установлено, появится соответствующее уведомление.
Для отключения снова кликните на значок OpenVPN в трее, выберите нужный профиль и нажмите Disconnect / Отключиться.
MacOS
- Для MacOS можно использовать бесплатный клиент Tunnelblick.
- Дважды кликните на загруженном файле и пройдите процесс установки.
- При завершении установки выберите «Нет» в ответ на вопрос о наличии конфигурационных файлов.
- После завершения установке откройте Finder и кликните дважды на вашем конфигурационном файле. Tunnelblick автоматически установит профиль.
Для установки соединения запустите Tunnelblick, после чего кликните на его иконку в верхней части экрана и нажмите Connect. Далее выберите установленный профиль.
Примеры команд
Рассмотрим отдельно примеры работы с FreeIPA посредством командной строки.
Работа с группами
1. Создание группы безопасности:
ipa group-add —desc=’Group for managers departmen’ managers
* создаем группу безопасности managers.
2. Добавить пользователя в группу:
ipa group-add-member managers —users=user1,user2,user3
* добавим в группу managers пользователей user1, user2 и user3.
3. Переименовать группу:
ipa group-mod —rename=<новое имя> <старое имя>
Например:
ipa group-mod —rename=admins users
* в данном примере мы переименуем группу users в группу admins.
Работа с сертификатами
1. Выпустить сертификат для компьютера (выполняется на компьютере, который присоединен к freeipa):
ipa-getcert request -k /etc/pki/tls/certs/freeipa.key -f /etc/pki/tls/certs/freeipa.crt -r
* в данном примере будет сформирован запрос на получение сертификата и сохранен в каталог /etc/pki/tls/certs.
2. Посмотреть список запросов на сертификат с узла можно командой:
ipa-getcert list
3. Удалить запрос можно командой:
ipa-getcert stop-tracking -i <идентификатор>
Например:
ipa-getcert stop-tracking -i openvpn
4. Обновить сертификат:
ipa-getcert resubmit —id=»20210923072007″
* где 20210923072007 — идентификатор запроса, который можно посмотреть командой ipa-getcert list.
Step 5: Firewall and Routing Configuration
Set Firewall Rules
1. Start by checking your active firewalld zone:
The output will show your firewalld zone. In the example below, it is public.
2. Add the openvpn service to the list of services firewalld allows within the active zone. The active zone in our example is public. If your active zone is trusted, modify the command accordingly.
3. Next, make the settings above permanent by running the command:
4. To check whether the openvpn service was added use:
5. Then, add a masquerade to the runtime instance:
6. And make it permanent:
7. Verify the masquerade was added by running:
The output should respond with .
Routing the Configuration
Once you have completed the steps above, move on to routing to your OpenVPN subnet.
1. Create a variable that represents the primary network interface used by your server. In the command below, the variable is named . However, you can create a variable under the name of your choice.
2. Next, permanently add the routing rule using the variable created above:
3. Reload firewalld for the changes to take place:
4. Move on to routing all web traffic from the client to the server’s IP address by enabling IP forwarding. Open the sysctl.conf file:
5. Add the following line at the top of the file:
6. Finally, restart the service:
Настройка на FreeIPA
На сервере аутентификации мы должны создать учетную запись, с помощью которой мы будем подключаться по ldap и выполнять поиск учетных записей. Мы создадим сервисный аккаунт.
Заходим по SSH на сервер FreeIPA и авторизуемся под администратором:
kinit admin
Создадим сервисную учетную запись командой:
ipa service-add openvpn/oserver.dmosk.local
Чтобы создать пароль для сервисного аккаунта, создаем файл ldif:
vi openvpn-passwd.ldif
dn: krbprincipalname=openvpn/oserver.dmosk.local@dmosk.local,cn=services,cn=accounts,dc=dmosk,dc=local
changetype: modify
add: objectClass
objectClass: simpleSecurityObject
—
add: userPassword
userPassword: openvpn
* в данном примере мы создаем атрибут userPassword и задаем ему значение openvpn (наш пароль) для пользователя openvpn/oserver.dmosk.local.
Применяем изменения для нашего каталога:
ldapmodify -f ./openvpn-passwd.ldif -D ‘cn=Directory Manager’ -W -H ldap://localhost -Z
Зададим позднее время для истечение срока действия пароля:
ipa service-mod openvpn/oserver.dmosk.local —setattr=krbPasswordExpiration=20300317010000Z
* в данном примере до 2030 года.
Удаляем тикет для авторизации на ldap под администратором:
kdestroy
Доступ к локальной сети
По инструкции выше мы сможем получить доступ только к серверу, на котором установлен OpenVPN. Для получения доступа ко всей внутренней сети, выполним следующие шаги.
1. Настройка реестра
Для включения IP маршрутизации в Windows необходимо в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters найти параметр IPEnableRouter и задать ему значение 1. Это можно сделать в утилите редактирования реестра (regedit) или командой:
reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /v IPEnableRouter /t REG_DWORD /d 1 /f
* командную строку необходимо запускать от администратора.
2. Настройка OpenVPN Server
В конфигурационный файл OpenVPN добавим:
push «route 172.16.10.0 255.255.255.0»
push «route 192.168.2.0 255.255.255.0»
* где 172.16.10.0 — VPN сеть; 192.168.2.0 — локальная сеть, в которую необходимо «попасть» пользователям openvpn.
При необходимости использовать DNS внутренней сети также добавим:
push «dhcp-option DNS 192.168.0.15»
push «dhcp-option DNS 192.168.0.16»
push «dhcp-option DOMAIN dmosk.local»
* где 192.168.0.15 и 192.168.0.16 — внутренние DNS-серверы; dmosk.local — домен, который будет добавляться к узлам, обращение к которым идет по неполному имени.
Если нам нужно, чтобы все запросы клиента (в том числе, Интернет) ходили через сервер OpenVPN, добавляем:
push «redirect-gateway def1»
* в таком случае, нам не обязательно добавлять push route, который мы использовали выше.
Перезагружаем службу OpenVpnService.
3. Разрешаем доступ к локальной сети
Заходим в управление сетевыми подключениями (Панель управления\Сеть и Интернет\Сетевые подключения). Кликаем правой кнопкой мыши по адаптеру локальной сети — Свойства:
На вкладке Доступ ставим галочку Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера:
… и сохраняем настройки.
Дополнительные настройки
Рассмотрим отдельно некоторые настройки и возможности работы с FreeIPA.
SSH аутентификация через FreeIPA
По умолчанию, клиент конфигурируется на возможность входа по SSH с использованием пользователей из FreeIPA. Внесем некоторые изменения для удобства.
Открываем конфигурационный файл для pam:
vi /etc/pam.d/common-session
Добавим в конец одну строку:
…
session required pam_mkhomedir.so skel=/etc/skel umask=0022
* данная настройка укажет на необходимость автоматического создания домашней директории для пользователя.
Готово.
Вывод клиента из домена
Если необходимо вывести клиентский компьютер из домена, вводим команду:
ipa-client-install —uninstall
Система выполнит необходимые настройки самостоятельно:
Unenrolling client from IPA server
Removing Kerberos service principals from /etc/krb5.keytab
Disabling client Kerberos and LDAP configurations
Redundant SSSD configuration file /etc/sssd/sssd.conf was moved to /etc/sssd/sssd.conf.deleted
Restoring client configuration files
Unconfiguring the NIS domain.
nscd daemon is not installed, skip configuration
nslcd daemon is not installed, skip configuration
Systemwide CA database updated.
Client uninstall complete.
The original nsswitch.conf configuration has been restored.
И отправляем компьютер в перезагрузку:
You may need to restart services or reboot the machine.
Do you want to reboot the machine? : yes
Возможные ошибки
Разберем некоторые ошибки, которые могут возникнут в процессе установки FreeIPA.
Ошибка появляется при попытке запустить команду ipa-server-install.
Причина: если в системе отключен IPv6 с помощью параметра в ядре net.ipv6.conf.all.disable_ipv6 или net.ipv6.conf.default.disable_ipv6, то команда выдаст ошибку, так как для локальной петли нам нужен IPv6. Если же IPv6 отключен через GRUB, то необходимо его включить.
Решение:
1. sysctl
Открываем конфигурационный файл sysctl:
vi /etc/sysctl.d/99-sysctl.conf
Добавляем строку:
net.ipv6.conf.lo.disable_ipv6 = 0
Применяем настройки:
sysctl -p /etc/sysctl.d/99-sysctl.conf
2. GRUB
Открываем конфигурационный файл grub:
vi /etc/default/grub
Находим строку опцию GRUB_CMDLINE_LINUX — в ее значении мы должны найти ipv6.disable=1:
GRUB_CMDLINE_LINUX=»crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap ipv6.disable=1 crashkernel=auto rhgb quiet»
Удаляем данную опцию из значения — в моем случае получилось:
GRUB_CMDLINE_LINUX=»crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap crashkernel=auto rhgb quiet»
Переконфигурируем grub:
grub2-mkconfig -o /boot/grub2/grub.cfg
Для применения, перезагрузим систему:
shutdown -r now
2. Invalid hostname ‘XXX’, must be fully-qualified
Появляется при запуске команды ipa-server-install.
Причина: имя нашего сервера не является FQDN (полным доменным).
Решение: задаем полное имя с доменом командой:
hostnamectl set-hostname ipa-server.dmosk.local
* в данном примере у сервера будет имя ipa-server в домене dmosk.local.
Создание CA с помощью EasyRSA
- Сертификат центра сертификации (CA) и закрытый ключ.
- Отдельный сертификат и пара закрытого ключа для сервера, выданный нашим центром сертификации.
- Отдельная пара сертификата и закрытого ключа для каждого клиента, выданная нашим центром сертификации.
Как упоминалось в предварительных требованиях по соображениям безопасности, мы создадим центр сертификации на автономном компьютере.
Для создания CA, запросов сертификатов и подписи сертификатов мы будем использовать утилиту CLI с именем EasyRSA.
Выполните следующие шаги на вашем компьютере CA.
-
После завершения загрузки извлеките архив , набрав:
-
Перейдите в каталог EasyRSA и создайте файл конфигурации с именем , скопировав файл :
-
Откройте файл, раскомментируйте и обновите следующие записи, чтобы они соответствовали вашей информации.
~ / EasyRSA-3.0.5 / вары
Сохраните и закройте файл.
-
Перед созданием пары ключей CA сначала необходимо инициализировать новую PKI с помощью:
-
Следующим шагом будет создание ЦС:
Если вы не хотите, чтобы при каждой подписи сертификатов пароль, запустите команду с параметром : .
Вам будет предложено установить пароль для ключа CA и ввести общее имя для вашего CA.
После завершения сценарий создаст два файла — открытый сертификат CA и закрытый ключ CA .
Теперь, когда центр сертификации (CA) создан, вы можете использовать его для подписи запросов на сертификаты для одного или нескольких серверов и клиентов OpenVPN.
Перемещение сертификатов и ключей
Сервер
Ключи и сертификаты созданы. Настало время раздать их пользователям, а серверные ключи скопировать в соответствующие каталоги на сервере.
1. Переходим в каталог с ключами:
2. Копируем только необходимые серверу файлы:
Важно понимать, что перечисленные выше файлы являются основой работы и безопасности VPN сервера. Утеря или подмена этих файлов может иметь крайне негативные последствия
Важно хранить их в надежном месте и не передавать по открытым каналам связи.
Клиенты
Клиенту понадобится всего 3 файла ca.crt, client1.crt, client1.key. Каждому клиенту необходимо отдавать только его ключи. Данные файлы можно разместить в директории /etc/openvpn на машине клиента, если она под управлением Linux-подобной ОС.
В ОС Windows их следует разместить в пользовательский каталог.
Общая информация
В рамках этой инструкции мы будем решать задачу по предоставлению доступа клиентам VPN в локальные сети компании.
Для этого потребуется:
- установить и настроить OpenVPN на VDS-сервере;
- настроить доступ через него в локальную сеть компании;
- организовать доступ к VPN-серверу с компьютеров-клиентов, на которых установлено соответствующее ПО (клиент OpenVPN).
Рассмотрим следующую схему:
Конечная цель — предоставление доступа клиенту Сlient3 (он подключен к VPN) к компьютеру Comp1, который не имеет доступа в сеть Интернет, однако к нему есть доступ через Client1. Для этого мы установим OpenVPN-клиент на сервер Client1, у которого есть доступ к сети 192.168.1.0/24.
Эти значения IP-адресов и сетей мы будем использовать в примерах по ходу статьи.
Создание инфраструктуры конфигурации клиента
В этом руководстве мы создадим отдельный сертификат SSL и сгенерируем отдельный файл конфигурации для каждого клиента VPN.
Клиентский закрытый ключ и запрос сертификата могут быть сгенерированы либо на клиентском компьютере, либо на сервере. Для простоты мы сгенерируем запрос сертификата на сервере, а затем отправим его в ЦС для подписи.
Весь процесс создания сертификата клиента и файла конфигурации выглядит следующим образом:
- Сгенерируйте закрытый ключ и запрос сертификата на сервере OpenVPN.
- Отправьте запрос на компьютер CA для подписания.
- Скопируйте подписанный сертификат SSL на сервер OpenVPN и сгенерируйте файл конфигурации.
- Отправьте файл конфигурации на компьютер VPN-клиента.
Начнем с создания набора каталогов для хранения файлов клиентов:
- каталоге будут храниться базовые файлы и конфигурация, которые будут использоваться всеми клиентскими файлами.
- каталоге будет храниться сгенерированная конфигурация клиента.
- каталоге будет храниться пара сертификатов и ключей для конкретного клиента.
Скопируйте файлы и :
Затем скопируйте образец файла конфигурации VPN-клиента в каталог client- . Мы будем использовать этот файл в качестве базовой конфигурации:
Теперь нам нужно отредактировать файл, чтобы он соответствовал настройкам и конфигурации нашего сервера. Откройте файл конфигурации в текстовом редакторе:
-
Найдите удаленную директиву и замените заполнитель по умолчанию на общедоступный IP-адрес вашего сервера OpenVPN:
~ / OpenVPN-клиенты / база / client.conf
-
Найдите и прокомментируйте директивы , и . Сертификаты и ключи будут добавлены в файл конфигурации:
~ / OpenVPN-клиенты / база / client.conf
-
Добавьте следующие строки в конец файла, чтобы они соответствовали настройкам сервера:
~ / OpenVPN-клиенты / база / client.conf
Когда вы закончите, файл конфигурации сервера должен выглядеть примерно так:
~/openvpn-clients/base/client.conf
Затем создайте простой сценарий bash, который объединит базовую конфигурацию и файлы с сертификатом и ключом клиента и сохранит сгенерированную конфигурацию в каталоге .
Откройте текстовый редактор и создайте следующий скрипт:
~/openvpn-clients/gen_config.sh
Сохраните файл и сделайте его исполняемым с помощью :
Step 2: Install Easy RSA
The next step is to build a Public Key Infrastructure (PKI). To do this, you need to install easy RSA, a CLI utility for creating and managing a PKI Certificate Authority (CA).
Easy RSA helps you set up an internal certificate authority (CA) and generate SSL key pairs to secure the VPN connections.
1. To download the easy RSA package, use the command. If you don’t have wget on your CenOS system, install it by running:
2. At the time of writing, the latest version of the CLI utility is 3.0.8, which we will download. To use another version, check out easy RSA’s release page on GitHub.
3. Next, extract the downloaded archive:
4. Create and move into a new openvpn directory:
5. Then, create a subdirectory under the path :
6. Move the extracted directory into /etc/openvpn/easy-rsa:
To check whether you have successfully moved everything from the easy-rsa-3.0.8 directory, move into easy-rsa with and list the content with . You should see a list of files and folders, as in the image below.
Настройка VPN сервера
Теперь, мы должны настроить наш сервер VPN. Скопируйте файл server.conf в /etc/openvpn/, для этого выполните:
# cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/
Сейчас отредактируем данный конфигурационный файл и настроим мы его под себя:
# vim /etc/openvpn/server.conf
#Найти и раскомментируйте следующие строки # (see "pkcs12" directive in man page). ca ca.crt cert my_server.crt key my_server.key # 2048 bit keys. dh dh2048.pem push "redirect-gateway def1 bypass-dhcp" Кроме того, Раскомментировать и измените DNS-сервера, чтобы отразить свои собственные значения DNS. Здесь я использую Google серверы общих ДНС. push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nobody
Сохраните и закройте файл.
ПС: Если у Вас не будет что то работать, то проверьте правильность ключей ( именно их расположение) и если что пропишите полный путь к ключам. Можно проверить работоспособность нашего конфига, для этого служит следующая команда:
# sudo openvpn --config /etc/openvpn/server.conf
Тогда нам нужно скопировать и отредактировать файл client.conf. Этот файл должны быть передан в VPN клиентам. Во-первых скопируйте файл в любое место (напр./home/your_user/ ).
# cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf /home/captain/
И сейчас я его поправлю:
# vim /home/captain/client.conf
Установите для сервера хост имя / IP-адрес для VPN: # Имя хоста / IP + порт сервера. # Вы можете иметь несколько удаленных записей # Для балансировки нагрузки между серверами. remote 78.140.189.243 1194
ПС: Если у Вас не будет что то работать, то проверьте правильность ключей ( именно их расположение) и если что пропишите полный путь к ключам.
Здесь 78.140.189.243 мой IP адрес сервера VPN. Затем Скопируйте файл client.conf на машину клиента:
# sudo scp root@78.140.189.243:/home/admin/client.conf /etc/openvpn/
Установка и настройка Squid Server
Кстати, ранее мы говорили о том, что нового в Debian 9 и чего стоит ждать от новой версии системы.
Установка Squid в Ubuntu 16.04 очень проста, все, что вам нужно сделать, это просто запустить следующую команду в терминале.
Конфигурационный файл по умолчанию для squid находится в разделе «/etc/squid3/squid.conf» или «/etc/squid/squid.conf». Этот файл содержит некоторые директивы конфигурации, которые необходимо настроить, чтобы повлиять на поведение Squid.
Теперь откройте этот файл для редактирования с помощью редактора Vi и внесите изменения, как показано ниже.
Теперь вы можете искать нужные строки и изменять их по своему усмотрению. В редакторе Vi, вы можете искать эти строки, нажав «ESC» и набрав «/», чтобы записать конкретные строки, которые нужно искать.
- Http_port: это порт по умолчанию для прокси-сервера HTTP, по умолчанию он 3128, вы можете изменить его на любой другой порт, который вы хотите, вы также можете добавить «прозрачный» тег в конец строки, например, http_port 8888 transparent для того, Чтобы заставить Squid proxy действовать, как прозрачный прокси, если хотите.
- Http_access deny all: эта строка не позволит никому получить доступ к прокси-серверу HTTP, поэтому вам нужно изменить его на http_access, чтобы все могли начать использовать ваш прокси-сервер Squid.
- Visible_hostname: эта директива используется для установки конкретного имени хоста на сервер squid. Вы можете дать любое имя хоста Squid.
После внесения вышеуказанных изменений вы можете перезапустить прокси-сервер Squid с помощью команды.
ИЛИ
Теперь, чтобы проверить, работает ли ваш прокси-сервер или нет, вы можете открыть Firefox или Chrome и перейти в Edit -> Preferences -> Advanced -> Network -> Settings и выбрать «Ручная настройка прокси» и ввести IP-адрес и порт вашего прокси-сервера. И поставить галочку «Используется для всех соединений, как следует».
После заполнения всех необходимых сведений прокси-сервера вы сможете просматривать веб-страницы с помощью прокси-сервера Squid, вы можете сделать то же самое в любом другом браузере или программе, которую хотите.
Работа с учетными записями
Создадим пользователя. Для этого рассмотрим пример использования командной строки и веб-интерфейса.
Командная строка
Авторизуемся на FreeIPA:
kinit admin
Создаем нового пользователя командой:
ipa user-add dmosk —first=Дмитрий —last=Моск —password
* где dmosk — логин; first — имя пользователя; last — фамилия; password — ключ для запроса пароля.
… после ввода команды система запросит пароль для создаваемого пользователя — вводим его дважды.
Мы должны увидеть сводку по параметрам для созданного пользователя:
Добавлен пользователь «dmosk»
——————————
Логин пользователя: dmosk
Имя: Дмитрий
Фамилия: Моск
Полное имя: Дмитрий Моск
Отображаемое имя: Дмитрий Моск
Инициалы: ДМ
Домашний каталог: /home/dmosk
GECOS: Дмитрий Моск
Оболочка входа: /bin/sh
Principal name: dmosk@DMOSK.LOCAL
Principal alias: dmosk@DMOSK.LOCAL
User password expiration: 20190725205853Z
Электронный адрес: dmosk@dmosk.local
UID: 1798800001
ID группы: 1798800001
Пароль: True
Member of groups: ipausers
Kerberos ключей доступно: True
Примет более полной команды для создания пользователя:
* в данном примере мы использовали дополнительные поля:
- cn — полное имя.
- displayname — отображаемое имя.
- email — адрес электронной почты.
* более полный список атрибутов можно найти на странице с мануалом Fedora Project.
Веб-интерфейс
Открываем браузер и переходим по адресу имени сервера — в нашем примере, https://ipa-server.dmosk.local. Закрываем всплывающее окно с запросом пароля. В появившейся странице авторизации вводим логин admin и его пароль.
Откроется страница управления пользователями:
На панели справа (над списком пользователей) кликаем по Добавить:
В открывшемся окне заполняем поля для создания пользователя и нажимаем по Добавить:
Проверка
На компьютере с клиентом вводим команду для проверки:
kinit dmosk
… и вводим пароль от созданной учетной записи:
Password for dmosk@DMOSK.LOCAL:
При вервом входе система попросит поменять пароль на новый:
Password expired. You must change it now.
Enter new password:
Enter it again:
Редактирование учетных записей
Редактирование выполняется командой:
ipa user-mod <имя записи> <опции>
Например, поменять пароль можно командой:
ipa user-mod username —password
* в данном примере будет запрошен новый пароль для учетной записи username.
Для удаления вводим:
ipa user-del <имя записи>
Например:
ipa user-del user_name
Подробная информация
Получить информацию мы можем о любой сущьности в LDAP с помощью командной строки.
Для пользователей:
ipa user-find —all
ipa user-find user_name —all
* первая команда вернет информацию по всем пользователям, вторая — по конкретному (в данном примере user_name).
Для групп:
ipa group-find —all
ipa group-find admins —all
* первая команда вернет информацию по всем группам, вторая — только для admins.
Исходящий сетевой интерфейс
На нашем сервере может быть несколько внешний IP-адресов. По умолчанию, все исходящие запросы будут работать через интерфейс со шлюзом по умолчанию. Чтобы иметь возможность работы со squid через разные интерфейсы в настройку вносим:
vi /etc/squid/squid.conf
acl 217_66_157_33 localip 217.66.157.33
tcp_outgoing_address 217.66.157.33 217_66_157_33
acl 217_66_157_34 localip 217.66.157.34
tcp_outgoing_address 217.66.157.34 217_66_157_34
* в данном примере, при подключении к прокси через IP 217.66.157.33, исходящие пакеты будут от IP 217.66.157.33; аналогично для IP 217.66.157.34.
Перечитываем конфигурацию squid:
squid -k reconfigure
Конфигурационный файл клиента
Некоторые опции должны быть симметричны опциям сервера, в частности тип шифрования (здесь BF-CBC), сжатия трафика и др. Все приведенные ниже конфиги рабочие.
Приведены примеры конфигов клиентов OpenVPN для Windows. Для Linux все то же, только пути до файлов ключей надо указать как в конфиге сервера (см. выше).
Пример 1 (конфиг клиента OpenVPN):
client dev tun proto udp remote 1.2.3.4 3876 resolv-retry infinite nobind persist-key persist-tun mute-replay-warnings ns-cert-type server tls-auth "C:Program FilesOpenVPNconfigta.key" 1 auth MD5 ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPNconfig\\client1.crt" key "C:\\Program Files\\OpenVPN\\config\\client1.key" cipher BF-CBC comp-lzo verb 3
Пример 2 (соотв. примеру 2-го конфига сервера):
client dev tun proto udp remote 1.2.3.4 3876 resolv-retry infinite nobind block-outside-dns persist-key persist-tun mute-replay-warnings remote-cert-eku "TLS Web Server Authentication" remote-cert-tls server tls-client tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1 auth SHA512 ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\client1.crt" key "C:\\Program Files\\OpenVPN\\config\\client1.key" cipher AES-256-CBC comp-lzo verb 3