Как создать интранет с OpenVPN в Ubuntu 16.04

Вступление

Intranets - это частные сети, созданные организациями для облегчения связи и передачи данных. Интранет создается путем соединения нескольких сетей по всему миру для создания новой виртуальной сети. Пользователи, подключенные к интрасети, могут получить доступ к определенным внутренним веб-сайтам или получить доступ к другим сетевым службам и контенту в интрасети. Например, если сотрудник за пределами площадки хочет получить доступ к конфиденциальной информации, расположенной в основной сети своего работодателя, он подключится к VPN-серверу, расположенному в основной сети в офисе. Это VPN-соединение создаст безопасный туннель между сотрудником и офисом. В сети подключение сотрудника будет выглядеть так, как если бы оно было локально подключено к основной сети и не использовало удаленное подключение.

В этом руководстве вы настроите службы, доступные только клиентам, подключенным к VPN, включая общие папки и веб-сайт, а также узнаете, как управлять доступом к этим ресурсам. Когда вы закончите, у вас будет базовая интрасеть, которую вы легко сможете расширить в соответствии со своими потребностями.

Предпосылки

Для завершения этого урока вам понадобится следующее:

  • Новый сервер Ubuntu 16.04.

  • Учетная запись стандартного пользователя с привилегиямиsudo. Вы можете настроить стандартную учетную запись, выполнив шаги 2 и 3 руководстваInitial Server Setup with Ubuntu 16.04.

  • OpenVPN установлен и настроен на вашем сервере. Прежде чем продолжить, прочтите руководствоHow to Set Up an OpenVPN Server on Ubuntu 16.04. Предположим, что VPN-сервер расположен по IP-адресу10.8.0.1 в VPN, который является адресом, используемым в учебнике OpenVPN, и что вы можете подключиться к VPN со своего локального компьютера.

  • Зарегистрированное доменное имя и доступ для добавления записей DNS. В этом руководстве мы будем использоватьexample.com, а также службу DNS DigitalOcean. Чтобы использовать службу DNS DigitalOcean с вашим доменом, выполните шаги 1 и 2 нашего руководстваHow To Set Up a Host Name with DigitalOcean, чтобы указать свое доменное имя на серверах имен DigitalOcean.

  • Apache установлен с двумя виртуальными хостами, настроенными для вашего домена. Следуйте руководствуHow to Set Up Apache Virtual Hosts on Ubuntu 16.04, чтобы настроить два виртуальных хоста с именамиexample.com иintranet.example.com, каждый со своей HTML-страницей по умолчанию.

[[step-1 -—- install-and-configuring-a-samba-file-server]] == Шаг 1. Установка и настройка файлового сервера Samba

Давайте начнем с настройки Samba, чтобы люди в нашей интрасети могли обмениваться файлами. Samba отличается от других приложений для обмена файлами, таких как Dropbox, тем, что у нее нет веб-интерфейса или ограничений на хранение. Вместо этого Samba предоставляет общий доступ к каталогам и файлам на самом сервере, поэтому вам не нужно загружать свои данные на внешние серверы, которые вы не контролируете.

Мы создадим два общих каталога. Первый каталог будет доступен всем пользователям нашей частной сети. Второй каталог будет доступен только указанным нами пользователям. Назовем эти долиAllusers иRestricted соответственно.

Сначала установите Samba и его компоненты с помощью следующей команды:

sudo apt-get install samba samba-common python-glade2 system-config-samba

Затем сделайте резервную копию конфигурационного файла Samba на тот случай, если мы сделаем ошибку, когда изменим его позже.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Samba также нуждается в доступе через брандмауэр, поэтому добавьте правило для трафика Samba:

sudo ufw allow samba

Теперь создайте каталоги, которыми мы поделимся. Сначала создайте каталогallusers:

sudo mkdir -p /samba/allusers

Затем создайте каталогrestricted:

sudo mkdir -p /samba/restricted

Теперь давайте отредактируем файл конфигурации Samba, чтобы настроить службу и определить общие ресурсы. Откройте файл конфигурации Samba:

sudo nano /etc/samba/smb.conf

Затемdelete all the content, поскольку мы будем писать нашу собственную конфигурацию с нуля по частям.

Сначала мы указываем некоторые глобальные настройки для сервера Samba. Добавьте следующие строки в файл конфигурации:

/etc/samba/smb.conf

[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = ubuntu
        security = user
        map to guest = bad user
        dns proxy = no
        interfaces = 10.8.0.1/8
        bind interfaces only = yes

Давайте разберем каждый параметр:

Параметрworkgroup указывает рабочую группу, в которой будет отображаться сервер при запросе клиентов. Группа по умолчанию - WORKGROUP для Windows, но вы можете изменить ее, если у вас уже есть имя рабочей группы, которое вы используете.

Строкиserver string иnetbios указывают имя сервера Samba и его платформу соответственно.

Параметрsecurity указывает, что это будет автономный файловый сервер со своими собственными учетными записями пользователей. Параметрmap to guest рассматривает все входы в систему с недопустимым именем пользователя или паролем как гостевые пользователи, а параметрdns proxy указывает Samba не пытаться разрешать имена доменов, поскольку мы не используем собственный DNS для этой интрасети.

Параметрinterfaces указывает, что мы прослушиваем только подключения, использующие IP-адрес VPN-сервера, а не общедоступный IP-адрес. bind interface указывает Samba прослушивать только запросы, исходящие из нашей VPN.

Далее нам нужно указать параметры ведения журнала для Samba. Добавьте этот блок конфигурации в файл в разделе[global]:

/etc/samba/smb.conf

[global]
        ...

        ## Logging
        log level = 2
        log file = /var/log/samba.log.%m
        max log size = 50
        debug timestamp = yes

Параметрlog level определяет уровень детализации ваших файлов журнала. Эти уровни варьируются от 1 до 10, но мы будем придерживаться уровня 2, так как это относительно легкий уровень отладки. Параметрlog file указывает путь к файлу и имя файла журнала, аmax log size ограничивает размер файла журнала. Параметрdebug timestamp включает отметки времени в журнале.

Это заботится о глобальных настройках нашего сервера. Теперь давайте создадим фактические определения общего ресурса. Эти настройки определяют файлы, которыми мы хотим поделиться, и кому разрешен доступ к этим файлам.

Мы хотим две акции; один называетсяAllusers, а другой -Restricted. Давайте сначала определим долюAllusers. Для этого общего ресурса пользователи могут просматривать, записывать и читать файлы в каталоге/samba/allusers. Добавьте эту конфигурацию в файл:

/etc/samba/smb.conf

#============ Share Defenitions ==================
[Allusers]
        path = /samba/allusers
        browsable = yes
        writable = yes
        guest ok = yes
        read only = no
        force user = nobody

Блок[Allusers] указывает, что следующие настройки применимы только к долеAllusers. Он также определяет имя общего ресурса, который увидят пользователи. Параметрpath указывает файловый каталог папки, к которой мы хотим предоставить общий доступ в нашей интрасети. Установкаbrowsable иwritable наyes дает пользователям разрешение на просмотр в этой папке, а также на чтение и запись файлов.

Мы хотим, чтобы все пользователи имели доступ к этой общей папке, даже если у них нет учетной записи на сервере. Помните, что в разделеglobal мы указали параметрmap to guest, что означает, что пользователи, у которых нет учетной записи или действительных учетных данных, могут по-прежнему получать доступ к файлам, к которым предоставлен общий доступ в качестве гостя. Мы разрешаем этим гостям получить доступ к этой общей папке, установивguest ok наyes, а затем заставляем этого пользователя принять идентичностьnobody сforce user = nobody.

Группа пользователейnobody - известная группа пользователей по умолчанию в любой системе Linux. Мы можем установить желаемые разрешения для папки/samba/allusers пользователюnobody. Затем с помощью Samba мы разрешаем нескольким гостям использовать эту личность. Таким образом, мы можем легко управлять доступом гостевых пользователей к нашей системе.

Для получения дополнительной информации о пользователеnobody посетитеthe Ubuntu wiki иthis answer on StackExchange.

Теперь давайте создадим общую папкуRestricted, которая должна быть доступна только членам группыsmbrestricted:

/etc/samba/smb.conf

[Restricted]
        path = /samba/restricted
        valid users = @smbrestricted
        guest ok = no
        writable = yes
        browsable = yes

И снова мы начинаем с указания каталога, которым хотим поделиться, и предоставления разрешений на просмотр и запись, как мы это сделали с общим ресурсомallusers. Затем мы устанавливаемvalid users = @smbrestricted, что указывает Samba разрешить доступ к общему ресурсу только членам группыsmbrestricted. Мы создадим эту группу в ближайшее время.

Это касается файлаsmb.conf. Ваш файл должен выглядеть следующим образом:

/etc/samba/smb.conf

[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = ubuntu
        security = user
        map to guest = bad user
        dns proxy = no
        interfaces = 10.8.0.1/8
        bind interfaces only = yes

        ## Logging
        log level = 2
        log file = /var/log/samba.log.%m
        max log size = 50
        debug timestamp = yes

#============ Share Defenitions ==================

[Allusers]
        path = /samba/allusers
        browsable = yes
        writable = yes
        guest ok = yes
        read only = no
        force user = nobody

[Restricted]
        path = /samba/restricted
        valid users = @smbrestricted
        guest ok = no
        writable = yes
        browsable = yes

Имея конфигурацию Samba, мы можем создать группуsmbrestricted и создать нашего первого пользователя.

[[step-2 -—- configuring-access-to-samba-share]] == Шаг 2 - Настройка доступа к общим ресурсам Samba

Чтобы разрешить доступ к нашим общим ресурсам, мы должны создать учетную запись пользователя и применить соответствующие разрешения к папкам, которые мы планируем предоставить для общего доступа.

Сначала создайте группуsmbrestricted с помощью следующей команды:

sudo addgroup smbrestricted

Теперь создайте учетную запись пользователя на сервере и добавьте ее в группуsmbrestricted. Мы создадим учетную запись дляclient1, которая соответствует имени VPN-соединения, созданного в предварительном руководстве:

sudo useradd client1 -G smbrestricted

Наконец, нам нужно назначить пароль Samba дляclient1. С настроенной нами конфигурацией Samba использует собственную систему проверки учетных данных, которая отделена от обычной системы проверки Linux. Это хорошо, потому что мы можем создавать пользователей, которые могут получать доступ к общим файлам с помощью Samba, не давая им доступа для входа на саму машину.

Создайте пароль Samba для пользователяclient1 с помощью следующей команды:

sudo smbpasswd -a client1

[.note] #Note: Если в вашей системе есть пользователи, которым вы хотели бы также иметь доступ к общим ресурсам Samba, вам также необходимо создать пароль Samba для этих пользователей, поскольку вход в систему системы разделены с этой конфигурацией.
#

Затем мы устанавливаем разрешения для каталогов, которые мы хотим поделиться. Сначала мы установим разрешения для каталогаallusers:

sudo chmod -R 766 /samba/allusers
sudo chown -R nobody:nogroup /samba/allusers

Это дает владельцу каталога полные разрешения, а права чтения и записи предоставляются только группе и всем остальным. Затем мы меняем владельца и группу общего каталога наnobody:nogroup с помощью командыchown.

Однако есть небольшая проблема с изменением владельца и группы наnobody:nogroup. Командаchmod -R 766 предоставляет разрешения на чтение и запись только для текущих и новых файлов / каталогов в каталоге/samba/allusers, независимо от того, кто создал эти файлы или каталоги. Это означает, что как только вы попытаетесь создать новый файл в папке, расположеннойwithin в каталоге/samba/allusers, вы получите ошибку недостаточных разрешений. Помните, что когда вы работаете с общей папкойAllusers, вы предполагаете, что идентичностьnobody, а уnobody очень ограниченные разрешения.

Чтобы решить эту проблему, мы используемAccess Control Lists или ACL. Правила ACL позволяют нам автоматически назначать разрешения для пользователя и / или группы вновь создаваемым файлам и каталогам.

Установите правила ACL для папки/samba/allusers с помощью следующих команд:

sudo setfacl -dm g:nogroup:rw /samba/allusers/
sudo setfacl -dm u:nobody:rw /samba/allusers/

Командаsetfacl -dm указывает, что мы определяем новые правила разрешений для каталога или файла, и что в будущем эти разрешения должны применяться и к вновь созданным объектам. g:nogroup:rw иu:nobody:rw - это новые правила ACL, предоставляющие разрешения на чтение и запись пользователюnobody и членам группыnogroup.

Вы можете узнать больше о ACL изUbuntu Wiki.

Это заботится о гостевой доле. Теперь мы можем установить разрешения для каталогаrestricted:

sudo chmod -R 770 /samba/restricted
sudo chown root:smbrestricted /samba/restricted

На этот раз мы полностью блокируем доступ к этому каталогу, за исключением владельца и членов группыsmbrestricted сchmod 770. Нам не нужно устанавливать правила ACL, потому что разрешения обычно работают в этой общей папке, так как мы используем аутентифицированные учетные записи пользователей.

Теперь, когда у нас настроены общие ресурсы, перезапустите сервер Samba, чтобы он использовал новый файл конфигурации:

sudo service smbd restart

Теперь мы можем подключиться к серверу Samba для загрузки или скачивания файлов.

[[step-3 -—- connected-to-the-samba-server-from-a-client]] == Шаг 3. Подключение к серверу Samba от клиента

Целью нашей интрасети является доступ к файлам и обмен ими в безопасной среде, как если бы мы были подключены к основной сети. Когда клиент подключается к Samba, он монтирует общие каталоги в проводнике файлов этого клиента. Давайте проверим это.

Подключение из Windows

Для подключения из Windows откройте проводник Windows. На панели навигации введите адрес сервера Samba,\10.8.0.1 и нажмите клавишуEnter.

Windows explore connection through the navbar

Подключение Windows может занять несколько минут. После успешного подключения вы увидите общие папки, размещенные в интрасети:

Available shares

Обратите внимание, что новая точка подключения к сети создается на вкладкеNetwork на панели инструментовQuick access. Имя точки подключения -10.8.0.1, то же самое, что и IP-адрес VPN.

Вы получаете доступ к общему ресурсуAllusers так же, как и к любой другой папке, поскольку учетные данные не требуются. Просто дважды щелкните по папке, чтобы просмотреть ее содержимое:

The Allusers share contents

Чтобы получить доступ к общему ресурсуRestricted, дважды щелкните папку с именемRestricted. Появится всплывающее окноWindows Security, в котором сообщается, что для получения доступа требуются сетевые учетные данные.

Restricted share permissions prompt

Введите имя пользователя и пароль для пользователя, которого вы создали, и при необходимости установите флажок, чтобы запомнить свои учетные данные. Затем щелкнитеOk для подключения.

The contents of the restricted share

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

Подключение из Ubuntu

Чтобы подключиться из Ubuntu, откройте проводник и выберите параметрConnect to Server на боковой панели слева. Это открывает новый экран, где мы можем ввести адрес сервера.

The Connect To Server option

Введитеsmb://10.8.0.1/ и нажмите кнопкуConnect в правом нижнем углу. Подключение вашего компьютера к серверу может занять несколько секунд в зависимости от скорости вашего соединения. Когда вы подключитесь, появится экран, показывающий все общие каталоги на сервере:

Available shares

Чтобы получить доступ к общему ресурсуAllusers, просто дважды щелкните папку. Появится экран входа в систему с запросом имени пользователя и пароля. Общий ресурсAllusers не требует имени пользователя и пароля, поэтому вы должны выбратьAnonymous для параметраConnect As. ЩелкнитеConnect, и он откроет для вас общий каталог.

Connecting anonymously

Обратите внимание, как эти общие каталоги монтируются в вашей файловой системе после того, как вы получили к ним доступ. Общий ресурсAllusers монтируется как сетевой диск вместе с другими локальными дисками.

Samba-6

Привод будет оставаться подключенным до тех пор, пока система не будет перезапущена или диск не будет отключен.

Чтобы получить доступ к общему ресурсуRestricted, вам потребуется действующее имя пользователя и пароль для входа. Дважды щелкните долюRestricted
, и снова появится экран входа в систему. Для параметраConnect As выберитеRegistered User и введите имя пользователя и пароль
в соответствующие поля, оставив параметрDomain как есть. Затем нажмитеConnect, и вы получите доступ к общим файлам.

Connecting as the client1 user

Подключение с Mac

Чтобы подключиться с вашего Mac, откройте Finder, выберите менюGo и выберитеConnect to Server…. Затем используйтеsmb://10.8.0.1/ дляServer Address:

Connecting from a Mac

Остальная часть процесса подключения идентична процессу подключения из Linux или Windows. Вам будет предложено ввести имя пользователя и пароль, и вы сможете просматривать и подключаться к доступным общим ресурсам.

Это заботится о вашем файловом сервере. Теперь давайте рассмотрим, как настроить Apache для внутреннего и внешнего размещения сайтов на одном сервере.

[[шаг-4 -—- configuring-access-to-apache-virtual-hosts]] == Шаг 4. Настройка доступа к виртуальным хостам Apache

До этого урока вы создали два виртуальных хоста, которые мы настроим для использования на нашем сервере. Первый хост,example.com, будет доступен широкой публике. Это может быть основной общедоступный веб-сайт для вашего домена. Второй хост,intranet.example.com, будет доступен только клиентам, подключенным к интрасети.

Чтобы ограничить доступ кintranet.example.com, мы отредактируем файл конфигурации для этого виртуального хоста. Откройте файл/etc/apache2/sites-available/intranet.example.com.conf:

sudo nano /etc/apache2/sites-available/intranet.example.com.conf

Затем измените объявлениеVirtualHost следующим образом:

example.com.conf’>/etc/apache2/sites-available/intranet.example.com.conf

к этому:

example.com.conf’>/etc/apache2/sites-available/intranet.example.com.conf

До этого изменения Apache обслуживал запросыinternal.example.com на всех сетевых интерфейсах. После этого изменения он обслуживает только запросы в нашем интерфейсе интрасети. Это похоже на конфигурацию, которую мы использовали для Samba.

Сохраните файл и перезапустите службу Apache:

sudo systemctl restart apache2

Нам также нужно разрешить соединения через UFW для правильной работы Apache. Если вы этого еще не сделали, выполните эту команду, чтобы разрешить трафик через брандмауэр для Apache:

sudo ufw allow http

И если вы планируете разрешить HTTPS-трафик, разрешите это сейчас или настройте его позже:

sudo ufw allow https

Теперь давайте настроим доменные имена, чтобы мы могли более легко получить доступ к нашим ресурсам.

[[step-5 -—- configuring-domain-names]] == Шаг 5. Настройка доменных имен

На этом шаге мы настроим наше доменное имя для перенаправления трафика в интрасеть, одновременно обслуживая общедоступный веб-сайт. Перед началом этой статьи вы должны были указать ваше доменное имя на серверах имен DigitalOcean.

[.note] #Note: Если у вас есть собственные DNS-серверы, вы захотите сделать эти настройки в панели управления вашего DNS-провайдера.
#

Войдите в свою учетную запись DigitalOcean и щелкните вкладкуNetworking на верхней панели. Вы увидите экран, подобный следующему:

Domain-screen-1

Чтобы добавить домен в свою учетную запись DigitalOcean, введите свое доменное имя в первое поле под заголовкомAdd a domain. Во втором поле введитеpublic IP вашего интранет-сервера и нажмите кнопкуCreate record.

Domain-screen-2

Ваше новое доменное имя появится под подзаголовкомDomains, как на втором рисунке. Теперь щелкнитеMore рядом с доменом, который вы хотите использовать, а затем выберитеView domain.

View-domain

Это откроет страницу настроек для этого конкретного домена.

Domain-settings

Нам нужно добавить три записи для этого домена. Один для Интранета и еще два для обеспечения правильного разрешения запросов на наш общедоступный веб-сайт.

Сначала создайте запись для интранета.

  1. Щелкните оранжевое поле «A» подSelect record type.

  2. Введитеintranet в полеEnter Name.

  3. В качестве IP-адреса введитеprivate IP address для вашего сервера, который должен быть10.8.0.1.

Creating the Intranet subdomain record

Далее нам нужна запись, которая направляет не интранет-трафик в нужное место. Создайте еще одну запись «A», задайте имя@ и установите IP-адрес вашего сервераpublic IP.

Creating the @ A record

Наконец, создайте запись CNAME дляwww. Щелкните вкладку CNAME в верхнем углу, установите имяwww и введите имя своего домена (example.com в качестве имени хоста:

Creating the www CNAME record

Когда вы закончите, ваши доменные записи должны выглядеть следующим образом:

Reviewing All records

A-записьintranet направляет запросы кintranet.example.com, только если она исходит от сервера VPN. Это означает, что только клиенты, подключенные к VPN, смогут получить доступ к веб-контенту, размещенному наintranet.example.com. Вторая запись «А» и CNAME записывают прямой трафик, который не имеет доступа к интрасети на общедоступный веб-сайт.

[.note] #Note: распространение этих изменений DNS может занять до 72 часов.
#

Зайдите в свой браузер и посетитеhttp://intranet.example.comwithout being connected to the VPN. Вы должны увидеть, что ваш браузер пытается загрузить веб-страницу только для того, чтобы вернуть ошибку. Теперьconnect to your VPN и перезагрузите веб-страницу. Теперь вы можете получить доступ к веб-странице, поскольку запись DNS будет разрешена.

Successful connection to the internal web site

Теперь, когда мы тщательно настроили и протестировали нашу интрасеть, давайте посмотрим, как мы управляем доступом к этой недавно созданной сети.

[[шаг-6 -—- управление-доступом-к-интрасети]] == Шаг 6 - Управление доступом к интрасети

Последний шаг в этом руководстве будет посвящен управлению доступом к нашей внутренней сети и ее общим файлам. Сначала мы рассмотрим, как отзывать клиентские сертификаты для доступа VPN. Затем мы рассмотрим, как удалить пользователей из группыsmbrestricted. Наконец, мы рассмотрим добавление дополнительных пользователей и предоставление им необходимого им доступа.

Отмена VPN-доступа

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

Во-первых, нам нужно добавить дополнительную строку в файл конфигурации нашего VPN-сервера, чтобы мы могли отозвать любой сертификат клиента без изменения исходного сертификата CA или сертификата сервера. Это значительно упрощает контроль доступа
, поскольку теперь вы можете легко отозвать один сертификат на лету, не прерывая других клиентских подключений.

Откройте файл конфигурации VPN:

sudo nano /etc/openvpn/server.conf

Добавьте следующую строку кода в конец файла:

/etc/openvpn/server.conf

crl-verify crl.pem

Это указывает серверу VPN искать файлcrl.pem, который представляет собой список отозванных сертификатов. Он будет содержать список всех сертификатов, которым больше не разрешен доступ к нашей VPN.

Сохраните и закройте файл конфигурации, но пока не перезагружайте сервер; нам нужно создать файлcrl.pem, который ищет наша конфигурация.

Чтобы создать этот файл, перейдите в каталог~/openvpn-ca/ на вашем сервере:

cd ~/openvpn-ca/

Представим, что нам нужно отозвать сертификатыclient1, потому что они больше не работают в нашей организации. Для этого выполните следующие команды:

source vars
./revoke-full client1

Вы увидите следующий вывод:

OutputUsing configuration from /home/intranetexapmle/openvpn-ca/openssl-1.0.0.cnf
Revoking Certificate 02.
Data Base Updated
Using configuration from /home/intranetexample/openvpn-ca/openssl-1.0.0.cnf
client1.crt: C = US, ST = NY, L = New-York City,
error 23 at 0 depth lookup:certificate revoked

Последняя строка вывода должна указыватьalways наerror 23. Эта ошибка только подтверждает, что сертификаты были отозваны.

Это также создаетcrl.pem в каталоге~/openvpn-ca/keys/. Чтобы убедиться, что сертификаты отозваны, откройте файлkeys/index.txt в любом текстовом редакторе или отобразите его содержимое с помощьюcat:

cat keys/index.txt

Рядом с клиентом будет буква «R», сертификаты которой мы отозвали:

OutputV       260904153313Z           01      unknown /C=US/ST=NY/L=New York/O=DigitalOcean/OU=Community/CN=server/name=server/[email protected]
R       260904172539Z   160915150543Z   02      unknown /C=US/ST=NY/L=New York/O=DigitalOcean/OU=Community/CN=client1/name=server/[email protected]

Теперь скопируйте файлcrl.pem в каталог/etc/openvpn/, где мы сказали нашему серверу OpenVPN искать файл:

sudo cp keys/crl.pem /etc/openvpn/

Затем перезапустите сервер OpenVPN, чтобы опция отзыва сертификата вступила в силу.

sudo systemctl restart openvpn@server

Сервер OpenVPN обращается к файлуcrl.pem каждый раз, когда устанавливается новое соединение с сервером. Каждый раз, когда вы отзываете сертификаты клиента, вы заменяете старый файлcrl.pem новым. Вам не нужно перезагружать сервер.

Важно отметить, что после отзыва сертификата VPN его нельзя будет повторно использовать в будущем. Клиенту, чей VPN-сертификат был отозван, потребуется новый сертификат, если мы хотим, чтобы они могли снова подключиться к сети.

Блокировка доступа пользователя к ограниченному общему ресурсу.

Мы создали общий каталог, доступный только пользователям в группеsmbrestricted. Чтобы запретить доступ пользователю, уже находящемуся в этой группе, мы удаляем пользователя из этой группы. Например, чтобы удалитьclient1, используйте следующую команду:

sudo deluser client1 -G smbrestricted

Вы увидите следующий вывод:

OutputRemoving user `client1' from group `smbrestricted' ...
Done.

Если вы не уверены, что пользователь уже включен в группу, или хотите дважды проверить, был ли удален пользователь, вы можете использовать командуmembers:

sudo apt-get install members
members smbrestricted

Любые пользователи в группе будут отображаться на экране.

Добавление нового пользователя в интранет

Каждому новому пользователю интрасети потребуется собственный сертификат VPN, поэтому вы должны следовать инструкциям в руководствеHow to Set Up an OpenVPN Server on Ubuntu 16.04, исходя из предварительных требований для каждого пользователя. Например, чтобы создать пользователя с именемclient2, вы должны сделать следующее:

Сначала соберите ключ:

cd ~/openvpn-ca
./build-key client2

Затем сгенерируйте конфигурацию клиента:

cd ~/client-configs
./make_config.sh client2

Затем на локальном компьютере загрузите конфигурацию клиента:

sftp sammy@openvpn_server_ip:client-configs/files/client2.ovpn ~/

Чтобы предоставить новому пользователю доступ к файлам с ограниченным доступом, выполните те же действия, которые вы использовали дляclient1 в разделе Samba этого руководства:

  • Создайте пользователя и добавьте его в группуsmbrestricted.

  • Создайте пароль Samba для пользователя сsmbpassword.

  • Проверьте соединение.

Затем повторите этот процесс для каждого пользователя, которого нужно добавить.

Заключение

Вы успешно создали и защитили свою собственную частную интрасеть, используя OpenVPN, Samba и Apache. У вас есть внутренний веб-сайт и два файловых ресурса.

То, куда вы пойдете дальше, зависит от того, для чего вы будете использовать свою интрасеть. Поскольку большинство серверных приложений используют веб-страницу для отображения информации, вы можете ограничить доступ к этой странице с помощью конфигурации виртуального хоста, аналогичной той, которую мы использовали в этом руководстве. Вы можете расширить свою сеть, разместив несколько служб из внутренней социальной сети, Wiki или службы электронной почты, чтобы назвать несколько. А для еще более эффективного управления общими файлами вы можете загрузить и установитьSamba Web Administration Tool. Используя то, что вы узнали здесь, вы сможете настроить любое количество сервисов для использования с вашей новой интрасетью.

Related