前書き

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

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

前提条件

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

  • 新しいUbuntu 16.04サーバー。

  • `+ sudo +`特権を持つ標準ユーザーアカウント。 Ubuntu 16.04での初期サーバーセットアップのステップ2および3に従って、標準アカウントをセットアップできます。チュートリアル。

  • サーバーにインストールおよび構成されたOpenVPN。 Ubuntu 16.04でOpenVPNサーバーをセットアップする方法チュートリアルを完了する続行する前に。 VPNサーバーは、OpenVPNチュートリアルで使用されるアドレスであるVPNのIPアドレス「10.8.0.1」にあり、ローカルマシンからVPNに接続できると仮定します。

  • DNSエントリを追加するための登録済みドメイン名とアクセス。 このチュートリアルでは「++」を使用し、DigitalOceanのDNSサービスを使用します。 ドメインでDigitalOceanのDNSサービスを使用するには、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [How To DigitalOceanを使用してホスト名を設定する]チュートリアルでは、ドメイン名がDigitalOceanのネームサーバーを指すようにします。

  • ドメイン用に構成された2つの仮想ホストでインストールされたApache。 チュートリアルに従ってくださいhttps://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04[Ubuntu 16.04でApache仮想ホストをセットアップする方法] `+`と ` intranet。+`という2つの仮想ホストを設定し、それぞれにデフォルトのHTMLページを設定します。

手順1-Sambaファイルサーバーのインストールと構成

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

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

まず、次のコマンドを使用してSambaとその前提条件をインストールします。

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

次に、後で修正するときに間違えた場合に備えて、Samba構成ファイルのバックアップを作成します。

sudo cp /etc/samba/smb.conf

Sambaはファイアウォールを介したアクセスも必要とするため、Sambaトラフィックのルールを追加します。

sudo ufw allow

次に、共有するディレクトリを作成します。 最初に、 `+ allusers +`ディレクトリを作成します:

sudo mkdir -p

次に、 `+ restricted +`ディレクトリを作成します:

sudo mkdir -p

次に、Samba構成ファイルを編集して、サービスをセットアップし、共有を定義しましょう。 Samba構成ファイルを開きます。

sudo nano

次に、すべてのコンテンツを削除します*独自の構成を一から一から作成するので。

最初に、Sambaサーバーのいくつかのグローバル設定を指定します。 構成ファイルに次の行を追加します。

/etc/samba/smb.conf

[global]
       workgroup =
       server string =
       netbios name =
       security =
       map to guest =
       dns proxy =
       interfaces =
       bind interfaces only =

各設定を分解しましょう:

`+ workgroup `設定は、クライアントがクエリしたときにサーバーが表示されるワークグループを指定します。 Windowsのデフォルトグループは「 WORKGROUP +」ですが、使用しているワークグループ名が既にある場合は変更できます。

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

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

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

次に、Sambaのログ設定を指定する必要があります。 `+ [global] +`セクションで、この構成ブロックをファイルに追加します。

/etc/samba/smb.conf

[global]
       ...

       ## Logging
       log level =
       log file =
       max log size =
       debug timestamp =

+ 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 =
       browsable =
       writable =
       guest ok =
       read only =
       force user =

`+ [Allusers] `ブロックは、続く設定が ` Allusers `共有にのみ適用可能であることを示します。 また、ユーザーに表示される共有の名前も定義します。 ` path `設定は、イントラネット上で共有したいフォルダーのファイルディレクトリを指定します。 ` browsable `と ` writable `を ` yes +`に設定すると、ユーザーはそのフォルダー内を閲覧したり、ファイルを読み書きしたりすることができます。

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

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

`+ nobody +`ユーザーの詳細については、https://wiki.ubuntu.com/nobody [the Ubuntu wiki]およびhttp://askubuntu.com/questions/329714/what-is-the-purpose-ofをご覧ください。 -the-nobody-user [StackExchangeのこの回答]。

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

/etc/samba/smb.conf

[Restricted]
       path =
       valid users =
       guest ok =
       writable =
       browsable =

もう一度、共有したいディレクトリを指定し、 `+ allusers `共有で行ったのと同じように、閲覧と書き込みの許可を与えます。 次に、 ` valid users = @ smbrestricted `を設定します。これは、グループ ` smbrestricted +`のメンバーにのみ共有へのアクセスを許可するようにSambaに指示します。 このグループはすぐに作成します。

それは `+ smb.conf`ファイルに対してそれをします。 ファイルは次の例のようになります。

/etc/samba/smb.conf

[global]
       workgroup =
       server string =
       netbios name =
       security =
       map to guest =
       dns proxy =
       interfaces =
       bind interfaces only =

       ## Logging
       log level =
       log file =
       max log size =
       debug timestamp =

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

[Allusers]
       path =
       browsable =
       writable =
       guest ok =
       read only =
       force user =

[Restricted]
       path =
       valid users =
       guest ok =
       writable =
       browsable =

Sambaの設定が完了したら、 `+ smbrestricted +`グループを作成して最初のユーザーを作成できます。

ステップ2-Samba共有へのアクセスの構成

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

まず、次のコマンドで `+ smbrestricted +`グループを作成します:

sudo addgroup

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

sudo useradd  -G

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

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

sudo smbpasswd -a

次に、共有するディレクトリのアクセス許可を設定します。 最初に、 `+ allusers +`ディレクトリのパーミッションを設定します:

sudo chmod -R  /samba/allusers
sudo chown -R  /samba/allusers

これにより、ディレクトリの所有者に完全な権限が付与され、グループおよびその他すべてのユーザーに読み取りおよび書き込み権限のみが付与されます。次に、共有ディレクトリの所有者とグループを「+ chown 」コマンドで「 nobody:nogroup +」に変更します。

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

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

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

sudo setfacl -dm  /samba/allusers/
sudo setfacl -dm  /samba/allusers/

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

ACLの詳細については、https://help.ubuntu.com/community/FilePermissionsACLs [Ubuntu Wiki]をご覧ください。

これでゲスト共有が処理されます。 これで、 `+ restricted +`ディレクトリにパーミッションを設定できます:

sudo chmod  /samba/restricted
sudo chown  /samba/restricted

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

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

sudo service smbd restart

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

手順3-クライアントからSambaサーバーへの接続

イントラネットの目標は、メインネットワークに接続しているかのように、安全な環境でファイルにアクセスして共有することです。 クライアントがSambaに接続すると、そのクライアントのファイルエクスプローラーで共有ディレクトリがマウントされます。 これをテストしてみましょう。

Windowsから接続する

Windowsから接続するには、Windowsエクスプローラーを開きます。 ナビゲーションバーで、Sambaサーバーのアドレス「+ \\ 10.8.0.1+」を入力し、「+ Enter +」キーを押します。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/AeUPLlp.png?2 [Windowsナビゲーションバーを介した接続の探索]

Windowsが接続するまでに少し時間がかかる場合があります。 接続が成功すると、イントラネットでホストされている共有フォルダーが表示されます。

画像:https://assets.digitalocean.com/articles/openvpn_intranet_1604/aHJKHEW.png?2 [利用可能な共有]

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

資格情報は必要ないので、他のフォルダーと同じように `+ Allusers +`共有にアクセスします。 フォルダをダブルクリックして、その内容を表示します。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/n0LkdGN.png?2 [すべてのユーザーがコンテンツを共有する]

`+ Restricted `共有にアクセスするには、 ` Restricted +`という名前のフォルダーをダブルクリックします。 アクセスするにはネットワーク資格情報が必要であることを示す* Windows Security *ポップアップが表示されます。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/dzXzJNU.png?2 [制限された共有許可プロンプト]

作成したユーザーのユーザー名とパスワードを入力し、オプションでチェックボックスをオンにして資格情報を記憶します。 次に、[OK]をクリックして接続します。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/IoMDj0h.png?2 [制限付き共有の内容]

接続したら、新しいファイルやフォルダを作成したり、フォルダをサーバーにドラッグしてアップロードしたりできます。

Ubuntuから接続する

Ubuntuから接続するには、ファイルエクスプローラーを開き、左側のサイドバーで[サーバーに接続]オプションを選択します。 これにより、サーバーのアドレスを入力できる新しい画面が開きます。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/upemuy0.png?2 [サーバーへの接続オプション]

「+ smb://10.8.0.1/+」と入力し、右下の[接続]ボタンをクリックします。 接続速度によっては、PCがサーバーに接続するのに数秒かかる場合があります。 接続すると、サーバー上のすべての共有ディレクトリを示す画面が表示されます。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/EVaIvMr.png?1 [利用可能な共有]

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

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/iKmXzFX.png?2 [匿名接続]

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

画像:https://assets.digitalocean.com/articles/openvpn_intranet_1604/xAujZ7c.png?3 [Samba-6]

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

`+ Restricted `共有にアクセスするには、ログインに有効なユーザー名とパスワードが必要です。 ` Restricted +`共有+をダブルクリックすると、ログイン画面が再び表示されます。 接続*オプションでは、*登録ユーザー*を選択し、適切なフィールドにユーザー名とパスワードを入力し、*ドメイン*オプションはそのままにします。 [*接続]をクリックすると、共有ファイルにアクセスできるようになります。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/5k9RxKR.png?1 [client1ユーザーとして接続]

Macから接続する

Macから接続するには、Finderを開き、[移動]メニューを選択して、[サーバーに接続…]を選択します。 次に、* Server Address *に `+ smb:// 10.8.0.1 / +`を使用します。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/ygGFOar.png [Macから接続]

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

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

ステップ4-Apache仮想ホストへのアクセスの構成

このチュートリアルの前に、サーバーで使用するために設定する2つの仮想ホストを作成しました。 最初のホスト「+」は、一般の人々がアクセスできます。 これは、ドメインのメインの公開Webサイトである可能性があります。 2番目のホスト ` intranet。+`は、イントラネットに接続されたクライアントのみがアクセスできます。

`+ intranet。`へのアクセスを制限するために、その仮想ホストの設定ファイルを編集します。 ファイル ` / etc / apache2 / sites-available / intranet..conf +`を開きます。

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

次に、これから `+ VirtualHost +`宣言を変更します。

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

<VirtualHost *:80>

これに:

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

<VirtualHost :80>

変更前は、Apacheはすべてのネットワークインターフェイスで「+ internal。+」のリクエストを処理していました。 この変更後、イントラネットインターフェイスでのみリクエストを処理します。 これは、Sambaで使用した構成に似ています。

ファイルを保存し、Apacheサービスを再起動します。

sudo systemctl restart apache2

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

sudo ufw allow http

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

sudo ufw allow https

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

ステップ5-ドメイン名の構成

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

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

画像:https://assets.digitalocean.com/articles/openvpn_intranet_1604/B50lXWj.png?2 [Domain-screen-1]

DigitalOceanアカウントにドメインを追加するには、* Add a domain *見出しの下の最初のボックスにドメイン名を入力します。 2番目のボックスに、イントラネットサーバーの*パブリックIP *を入力し、[レコードの作成]ボタンをクリックします。

画像:https://assets.digitalocean.com/articles/openvpn_intranet_1604/BYIrRIM.png?2 [Domain-screen-2]

新しいドメイン名は、2番目の図のように* Domains サブヘッダーの下に表示されます。 使用するドメインの横にある[*詳細]をクリックし、[*ドメインの表示]を選択します。

画像:https://assets.digitalocean.com/articles/openvpn_intranet_1604/qkGVTS1.png?1 [View-domain]

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

画像:https://assets.digitalocean.com/articles/openvpn_intranet_1604/iA5gCwC.png?2 [ドメイン設定]

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

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

  1. * [レコードタイプの選択]の下のオレンジ色の[A]ボックスをクリックします。

  2. * Enter Name *フィールドに「+ intranet +」と入力します。

  3. IPアドレスには、サーバーの*プライベートIPアドレス*を入力します。これは「10.8.0.1」である必要があります。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/aKlotm8.png?1 [イントラネットサブドメインレコードの作成]

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

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/VQtv5jx.png?2 [@ Aレコードの作成]

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

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/GMKNtrs.png?1 [www CNAMEレコードの作成]

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

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/3Od9eNr.png?2 [すべてのレコードの確認]

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

ブラウザにアクセスして、VPNに接続せずに「+ http://intranet.+」にアクセスします*。 エラーを返すためだけに、ブラウザがWebページをロードしようとしているのが見えるはずです。 VPNに接続して、Webページをリロードします。 DNSエントリが解決されるので、Webページにアクセスできます。

image:https://assets.digitalocean.com/articles/openvpn_intranet_1604/YUIpusN.png?1 [内部Webサイトへの接続に成功しました]

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

ステップ6-イントラネットへのアクセスを管理する

このチュートリアルの最後のステップでは、イントラネットとその共有ファイルへのアクセスを管理します。 最初に、VPNアクセスのクライアント証明書を失効させる方法を見ていきます。 次に、* smbrestricted *グループからユーザーを削除する方法を見ていきます。 最後に、ユーザーの追加と必要なアクセス権の取得について確認します。

VPNアクセスの取り消し

VPNへのアクセスを無効にするには、クライアントの証明書を無効にします。 これにより、他のクライアントまたはサーバーの新しい証明書を生成せずに、イントラネットへのアクセスを拒否できます。

最初に、VPNサーバーの構成ファイルに追加の行を追加して、元のCA証明書またはサーバー証明書を変更せずにクライアント証明書を取り消せるようにする必要があります。 これにより、他のクライアント接続を中断することなく、オンザフライで単一の証明書を簡単に取り消すことができるため、アクセス制御がはるかに簡単になります。

VPN構成ファイルを開きます。

sudo nano /etc/openvpn/server.conf

ファイルの最後に次のコード行を追加します。

/etc/openvpn/server.conf

これは、証明書失効リストであるファイル「+ crl.pem +」を探すようにVPNサーバーに指示します。 これには、VPNへのアクセスが許可されなくなったすべての証明書のリストが含まれます。

構成ファイルを保存して閉じますが、サーバーをまだ再起動しないでください。設定が探している `+ crl.pem +`ファイルを作成する必要があります。

このファイルを作成するには、サーバーの `+〜/ openvpn-ca / +`ディレクトリに移動します:

cd ~/openvpn-ca/

証明書が組織で機能しなくなったため、証明書を取り消す必要があるとしましょう。 これを行うには、次のコマンドを実行します。

source vars
./revoke-full

次の出力が表示されます。

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

出力の最後の行は、常に *エラー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]
      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 *グループのユーザーのみがアクセスできる共有ディレクトリを作成しました。 そのグループに既に存在するユーザーのアクセスを拒否するには、そのグループからユーザーを削除します。 たとえば、を削除するには、次のコマンドを使用します。

sudo deluser  -G smbrestricted

次の出力が表示されます。

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

ユーザーがグループに既に含まれているかどうか不明な場合、またはユーザーが削除されたかどうかを再確認したい場合は、 `+ members +`コマンドを使用できます。

sudo apt-get install members
members smbrestricted

グループ内のすべてのユーザーが画面に表示されます。

イントラネットに新しいユーザーを追加する

イントラネットの新しいユーザーごとに独自のVPN証明書が必要になるため、https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-の手順に従ってください。 on-ubuntu-16-04 [Ubuntu 16.04でOpenVPNサーバーをセットアップする方法]各ユーザーの前提条件のチュートリアル。 たとえば、「+ client2 +」というユーザーを作成するには、次のようにします。

まず、キーを作成します。

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

次に、クライアント構成を生成します。

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

次に、ローカルマシンでクライアント構成をダウンロードします。

sftp sammy@:client-configs/files/ ~/

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

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

  • `+ smbpassword +`でユーザーのSambaパスワードを作成します。

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

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

結論

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

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