Ubuntu 16.04でOpenVPNを使用してイントラネットを作成する方法

前書き

Intranetsは、通信とデータ転送を容易にするために組織によって作成されたプライベートネットワークです。 イントラネットは、世界中の複数のネットワークを接続して新しい仮想ネットワークを作成することにより構築されます。 イントラネットに接続しているユーザーは、特定の内部Webサイトにアクセスしたり、他のネットワークサービスやイントラネット上のコンテンツにアクセスしたりできます。 たとえば、オフサイトの従業員が雇用主のメインネットワークにある機密情報にアクセスする場合、従業員はオフィスのメインネットワークにあるVPNサーバーに接続します。 このVPN接続は、従業員とオフィスの間に安全なトンネルを作成します。 ネットワークでは、従業員の接続は、メインネットワークにローカルに接続され、オフサイト接続を使用していないかのように見えます。

このチュートリアルでは、ファイル共有やWebサイトなど、VPNに接続しているクライアントのみが利用できるサービスを構成し、それらのリソースへのアクセスを管理する方法を学習します。 完了すると、ニーズに合わせて簡単に拡張できる基本的なイントラネットが作成されます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • 新しいUbuntu 16.04サーバー。

  • sudo権限を持つ標準ユーザーアカウント。 Initial Server Setup with Ubuntu 16.04チュートリアルのステップ2と3に従って、標準アカウントを設定できます。

  • サーバーにインストールおよび構成されたOpenVPN。 先に進む前に、How to Set Up an OpenVPN Server on Ubuntu 16.04チュートリアルを完了してください。 VPNサーバーはVPNのIPアドレス10.8.0.1にあり、これはOpenVPNチュートリアルで使用されているアドレスであり、ローカルマシンからVPNに接続できると想定します。

  • DNSエントリを追加するための登録済みドメイン名とアクセス。 このチュートリアルではexample.comを使用し、DigitalOceanのDNSサービスを使用します。 ドメインでDigitalOceanのDNSサービスを使用するには、How To Set Up a Host Name with DigitalOceanチュートリアルの手順1と2に従って、ドメイン名をDigitalOceanのネームサーバーにポイントします。

  • ドメインに設定された2つの仮想ホストでインストールされたApache。 チュートリアルHow to Set Up Apache Virtual Hosts on Ubuntu 16.04に従って、example.comおよびintranet.example.comと呼ばれる2つの仮想ホストをセットアップします。それぞれにデフォルトのHTMLページがあります。

[[step-1 -—- installing-and-configuring-a-samba-file-server]] ==ステップ1—Sambaファイルサーバーのインストールと構成

イントラネット上のユーザーがファイルを共有できるように、Sambaをセットアップすることから始めましょう。 Sambaは、Webインターフェイスやストレージの制限がないという点で、Dropboxなどの他のファイル共有アプリケーションとは異なります。 代わりに、Sambaはサーバー自体のディレクトリとファイルを共有するので、管理していない外部サーバーにデータをアップロードする必要はありません。

2つの共有ディレクトリを作成します。 最初のディレクトリには、プライベートネットワーク上のすべてのユーザーがアクセスできます。 2番目のディレクトリには、指定したユーザーのみがアクセスできます。 これらの共有にそれぞれAllusersRestrictedという名前を付けます。

まず、次のコマンドを使用して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を使用して、独自の構成を最初から1つずつ作成します。

最初に、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設定は、クライアントからの照会時にサーバーが表示されるワークグループを指定します。 Windowsの場合、デフォルトのグループは「WORKGROUP」ですが、使用しているワークグループ名がすでにある場合は変更できます。

server string行とnetbios行は、それぞれSambaサーバーとそのプラットフォームの名前を指定します。

security設定は、これが独自のユーザーアカウントを持つスタンドアロンファイルサーバーになることを指定します。 map to guest設定は、無効なユーザー名またはパスワードを持つすべてのログインをゲストユーザーとして扱い、dns proxy設定は、このイントラネットに対して独自のDNSを実行していないため、ドメイン名を解決しようとしないようにSambaに指示します。

interfaces設定を使用して、VPNサーバーのIPを使用した接続のみをリッスンし、パブリックにアクセス可能なIPはリッスンしないように指定します。 bind interfaceは、VPNから発信されたリクエストのみをリッスンするようにSambaに指示します。

次に、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設定には、ログにタイムスタンプが含まれます。

これで、サーバーのグローバル設定が処理されます。 次に、実際の共有定義を作成しましょう。 これらの設定は、共有するファイルと、それらのファイルへのアクセスを許可するユーザーを指定します。

2株が必要です。 1つはAllusersと呼ばれ、もう1つは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設定は、イントラネット上で共有するフォルダーのファイルディレクトリを指定します。 browsablewritableyesに設定すると、ユーザーはそのフォルダー内を参照したり、ファイルを読み書きしたりすることができます。

サーバーにユーザーアカウントがない場合でも、すべてのユーザーがこの共有にアクセスできるようにします。 globalセクションでmap to guest設定を指定したことを思い出してください。つまり、アカウントまたは有効なログイン資格情報を持っていないユーザーでも、ゲストとして共有されているファイルにアクセスできます。 guest okyesに設定することにより、これらのゲストがこの共有にアクセスできるようにし、そのユーザーにnobodyforce user = nobodyのIDを想定させる。

nobodyユーザーグループは、Linuxシステムの既知のデフォルトユーザーグループです。 /samba/allusersフォルダーに必要なアクセス許可をnobodyユーザーに設定できます。 次に、Sambaを使用して、複数のゲストがそのIDを使用できるようにします。 これにより、ゲストユーザーによるシステムへのアクセスを簡単に管理できます。

nobodyユーザーの詳細については、the Ubuntu wikiおよびthis answer on StackExchangeにアクセスしてください。

次に、smbrestrictedグループのメンバーのみがアクセスできるRestrictedファイル共有を作成しましょう。

/etc/samba/smb.conf

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

もう一度、共有するディレクトリを指定し、allusers共有の場合と同じように、参照と書き込みのアクセス許可を付与します。 次に、valid users = @smbrestrictedを設定します。これにより、グループsmbrestrictedのメンバーのみが共有にアクセスできるようにSambaに指示します。 このグループはすぐに作成します。

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-shares]] ==ステップ2—Samba共有へのアクセスを構成する

共有へのアクセスを許可するには、ユーザーアカウントを作成し、共有する予定のフォルダーに適切な権限を適用する必要があります。

まず、次のコマンドを使用してsmbrestrictedグループを作成します。

sudo addgroup smbrestricted

次に、サーバー上にユーザーアカウントを作成し、それをsmbrestrictedグループに追加します。 前提条件のチュートリアルで作成したVPN接続の名前と一致するclient1のアカウントを作成します。

sudo useradd client1 -G smbrestricted

最後に、client1にSambaパスワードを割り当てる必要があります。 設定した構成では、Sambaは通常のLinuxシステムの検証システムとは別の独自の資格情報検証システムを使用します。 マシン自体にログインするためのアクセスを許可せずに、Sambaでファイル共有にアクセスできるユーザーを作成できるため、これは素晴らしいことです。

次のコマンドを使用して、client1ユーザーのSambaパスワードを作成します。

sudo smbpasswd -a client1

[.note]#Note:システム上にSamba共有にもアクセスできるようにしたいユーザーがいる場合は、ログインしてから、それらのユーザーのSambaパスワードも作成する必要があります。システムはこの構成で分離されています。

次に、共有するディレクトリのアクセス許可を設定します。 まず、allusersディレクトリの権限を設定します。

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

これにより、ディレクトリの所有者に完全なアクセス許可が付与され、グループと他のすべてのユーザーにのみ読み取りと書き込みのアクセス許可が付与されます。次に、chownコマンドを使用して共有ディレクトリの所有者とグループをnobody:nogroupに変更します。

ただし、所有者とグループをnobody:nogroupに変更することには小さな問題があります。 chmod -R 766コマンドは、ファイルまたはディレクトリの作成者に関係なく、/samba/allusersディレクトリ内の現在および新しいファイル/ディレクトリに読み取りおよび書き込み権限のみを付与します。 これは、withinディレクトリにあるフォルダー内に新しいファイルを作成しようとするとすぐに、不十分なアクセス許可エラーが発生することを意味します。 Allusers共有内で作業しているときは、nobodyのIDを想定しており、nobodyのアクセス許可は非常に制限されていることに注意してください。

この問題を克服するために、Access Control ListsまたはACLを利用します。 ACLルールを使用すると、新しく作成されたファイルやディレクトリにユーザーまたはグループ、あるいはその両方のパーミッションを自動的に割り当てることができます。

次のコマンドを使用して、/samba/allusersフォルダーのACLルールを設定します。

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

コマンドsetfacl -dmは、ディレクトリまたはファイルの新しいアクセス許可ルールを定義していること、および将来、これらのアクセス許可を新しく作成されたオブジェクトにも適用する必要があることを示します。 g:nogroup:rwおよびu:nobody:rwは、nobodyユーザーおよびグループnogroupのメンバーに読み取りおよび書き込み権限を付与する新しいACLルールです。

ACLの詳細については、Ubuntu Wikiを参照してください。

これでゲスト共有が処理されます。 これで、restrictedディレクトリのアクセス許可を設定できます。

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

今回は、chmod 770を持つsmbrestrictedグループの所有者とメンバーを除いて、このディレクトリへのアクセスを完全にブロックします。 認証されたユーザーアカウントを使用しているため、アクセス許可は通常この共有フォルダー内で機能するため、ACLルールを設定する必要はありません。

共有が構成されたので、新しい構成ファイルを使用するようにSambaサーバーを再起動します。

sudo service smbd restart

これで、Sambaサーバーに接続してファイルをアップロードまたはダウンロードできます。

[[step-3 -—- connecting-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

Quick accessツールバーのNetworkタブの下に新しいネットワークマウントポイントが作成されていることに注意してください。 マウントポイントの名前は10.8.0.1で、VPNのIPと同じです。

資格情報は必要ないため、他のフォルダーと同じように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ボタンをクリックします。 接続速度によっては、PCがサーバーに接続するのに数秒かかる場合があります。 接続すると、サーバー上のすべての共有ディレクトリを示す画面が表示されます。

Available shares

Allusers共有にアクセスするには、フォルダをダブルクリックするだけです。 ユーザー名とパスワードの入力を求めるログイン画面が表示されます。 Allusers共有にはユーザー名とパスワードは必要ないため、Connect AsオプションにはAnonymousを選択する必要があります。 Connectをクリックすると、共有ディレクトリが開きます。

Connecting anonymously

これらの共有ディレクトリにアクセスした後、これらの共有ディレクトリがファイルシステムにどのようにマウントされるかに注目してください。 Allusers共有は、他のローカルドライブと一緒にネットワークドライブとしてマウントされます。

Samba-6

システムが再起動されるか、ドライブがアンマウントされるまで、ドライブはマウントされたままになります。

Restricted共有にアクセスするには、ログインに有効なユーザー名とパスワードが必要です。 Restricted share
をダブルクリックすると、ログイン画面が再び表示されます。 Connect Asオプションには、Registered Userを選択し、適切なフィールドにユーザー名とパスワード
を入力し、Domainオプションはそのままにします。 次に、Connectをクリックすると、共有ファイルにアクセスできるようになります。

Connecting as the client1 user

Macから接続する

Macから接続するには、Finderを開き、Goメニューを選択して、Connect to Server…を選択します。 次に、Server Addresssmb://10.8.0.1/を使用します。

Connecting from a Mac

接続プロセスの残りは、LinuxまたはWindowsから接続するプロセスと同じです。 ユーザー名とパスワードの入力を求められ、利用可能な共有を表示して接続できるようになります。

これでファイルサーバーが処理されます。 次に、同じサーバー上でWebサイトを内部および外部でホストするようにApacheを構成する方法を見てみましょう。

[[step-4 -—- configuring-access-to-apache-virtual-hosts]] ==ステップ4—Apache仮想ホストへのアクセスの構成

このチュートリアルの前に、サーバーで使用するために設定する2つの仮想ホストを作成しました。 最初のホストexample.comは、一般の人々がアクセスできます。 これは、ドメインのメインの公開Webサイトである可能性があります。 2番目のホスト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

また、Apacheが適切に機能するためにUFWを介した接続を許可する必要があります。 まだ行っていない場合は、次のコマンドを実行して、Apacheのファイアウォールを通過するトラフィックを許可します。

sudo ufw allow http

また、HTTPSトラフィックを許可する予定がある場合は、すぐに許可するか、後で次のように設定します。

sudo ufw allow https

リソースにもっと簡単にアクセスできるように、ドメイン名を設定しましょう。

[[step-5 -—- configuring-domain-names]] ==ステップ5—ドメイン名の構成

この手順では、ドメイン名を設定して、イントラネットへのトラフィックをリダイレクトすると同時に、一般にアクセス可能なWebサイトにもサービスを提供します。 この記事を始める前に、ドメイン名をDigitalOceanのネームサーバーに指定しておく必要があります。

[.note]#Note:独自のネームサーバーがある場合は、代わりにDNSプロバイダーのコントロールパネルでこれらの設定を行う必要があります。

DigitalOceanアカウントにログインし、トップバーのNetworkingタブをクリックします。 次のような画面が表示されます。

Domain-screen-1

DigitalOceanアカウントにドメインを追加するには、Add a domain見出しの下の最初のボックスにドメイン名を入力します。 2番目のボックスにイントラネットサーバーのpublic IPと入力し、Create recordボタンをクリックします。

Domain-screen-2

新しいドメイン名は、2番目の図のようにDomains小見出しの下に表示されます。 次に、使用するドメインの横にあるMoreをクリックし、View domainを選択します。

View-domain

これにより、その特定のドメインの設定ページが開きます。

Domain-settings

このドメインに3つのレコードを追加する必要があります。 1つはイントラネット用、もう2つは公開Webサイトへのリクエストが正しく解決されるようにするためです。

最初に、イントラネットのレコードを作成します。

  1. Select record typeの下にあるオレンジ色の「A」ボックスをクリックします。

  2. Enter Nameフィールドにintranetを入力します。

  3. IPアドレスには、サーバーのprivate IP addressを入力します。これは10.8.0.1である必要があります。

Creating the Intranet subdomain record

次に、非イントラネットトラフィックを適切な場所に転送するレコードが必要です。 別の「A」レコードを作成し、名前を@に設定し、IPをサーバーのpublic IPに設定します。

Creating the @ A record

最後に、wwwのCNAMEレコードを作成します。 上隅にある[CNAME]タブをクリックし、名前をwwwに設定して、ドメイン名(example.comをホスト名として入力します。

Creating the www CNAME record

完了すると、ドメインレコードは次の画像のようになります。

Reviewing All records

intranet Aレコードは、VPNサーバーから発信された場合にのみ、要求をintranet.example.comに送信します。 これは、VPNに接続されているクライアントのみがintranet.example.comでホストされているWebコンテンツにアクセスできることを意味します。 2番目の「A」レコードとCNAMEレコードは、イントラネットにアクセスできない直接トラフィックを公開されているWebサイトに記録します。

[.note]#Note:これらのDNS変更が反映されるまでに最大72時間かかる場合があります。

ブラウザに移動し、http://intranet.example.comwithout being connected to the VPNにアクセスします。 エラーを返すためだけに、ブラウザがWebページをロードしようとしているのが見えるはずです。 ここでconnect to your VPNを実行し、Webページをリロードします。 DNSエントリが解決されるので、Webページにアクセスできるようになりました。

Successful connection to the internal web site

イントラネットを徹底的に構成してテストしたので、この新しく作成されたネットワークへのアクセスを管理する方法を見てみましょう。

[[step-6 -—- managing-access-to-the-intranet]] ==ステップ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

出力の最後の行は、alwayserror 23を示している必要があります。 このエラーは、証明書が取り消されたことを確認するだけです。

これにより、~/openvpn-ca/keys/ディレクトリにcrl.pemも作成されます。 証明書が取り消されていることを確認するには、任意のテキストエディタで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 [email protected]

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 [email protected]_server_ip:client-configs/files/client2.ovpn ~/

新しいユーザーに制限付きファイルへのアクセスを許可するには、このチュートリアルのSambaセクションでclient1に使用したのと同じ手順に従います。

  • ユーザーを作成し、それらをsmbrestrictedグループに追加します。

  • smbpasswordを使用してユーザーのSambaパスワードを作成します。

  • 接続をテストしてください。

次に、追加する必要があるユーザーごとにこのプロセスを繰り返します。

結論

OpenVPN、Samba、Apacheを使用して、独自のプライベートイントラネットを正常に作成して保護しました。 内部Webサイトと2つのファイル共有があります。

次に進む場所は、イントラネットを何に使用するかによって異なります。 ほとんどのサーバーアプリケーションはWebページを使用して情報を表示するため、このチュートリアルで行ったような仮想ホスト構成を使用して、そのページへのアクセスを制限できます。 内部ソーシャルネットワーク、Wiki、または電子メールサービスから複数のサービスをホストすることにより、ネットワークを拡張できます。 また、共有ファイルをさらに効率的に管理するために、Samba Web Administration Toolをダウンロードしてインストールできます。 ここで学んだことを使用して、新しいイントラネットで使用するサービスをいくつでも構成できるはずです。