クライアント証明書と失効リストを使用してMikroTikをOVPNサーバーとして構成する

私の前に、クライアント証明書とそれらを取り消す機能を使用して、MikroTikをOVPNサーバーとして構成するタスクがありました。 このテーマに関する明確なハウツーをインターネット上で見つけられなかったので、自分の自転車を発明することにしました。 この記事では、この奇跡の構成スキームについて説明します。



PKI ROSの使用



PKIについては、2つのオプションがあります。



1.組み込みのPKI ROSの使用:





2.サードパーティのPKI-openssl、またはPKI Windowsサーバーを使用します(StartSSLなどの信頼できるCAは使用しないでください。クライアント証明書はあなただけに発行されません)。





第一に、それは私に合っているので、第二に、それはより柔軟であるため、最初のオプションのみを検討します。 また、証明書のパラメーターや標準ROSツールの他のさまざまなパラメーターについては説明しません。 包括的な説明は、公式のMikroTik Wikiにあります。



ROSでOVPNサーバーを構成する



1. PKIの構成


1.1。 CA証明書:



/certificate add name=template-CA country="" state="" locality="" organization="" unit="" common-name="test-CA" key-size=4096 days-valid=3650 key-usage=crl-sign,key-cert-sign









/certificate sign template-CA ca-crl-host=127.0.0.1 name="test-CA"









注:ca-crl-host =は必須パラメーターです。それ以外の場合、レビューリストは作成されません。 失効リストへの完全なパスは、証明書のパラメーターの列「[1]失効リストの配布ポイント(CRL)」に示されます。 原則として、MikrotikのIPアドレスのいずれかを指定できます。これは、指定したものであり、証明書に登録されます。 残念ながら、ドメイン名はパラメーターでサポートされていません。



1.2。 サーバー証明書:



/certificate add name=template-SRV country="" state="" locality="" organization="" unit="" common-name="test-srv-OVPN" key-size=4096 days-valid=1095 key-usage=digital-signature,key-encipherment,tls-server









/certificate sign template-SRV ca="test-CA" name="test-srv-OVPN"









注:鍵使用サーバー証明書の場合、 ここで説明されている理由を変更しないことをお勧めします(実際に変更したい場合は、クライアントの構成に登録する必要があることを示します)。



注:SSTPとは異なり、OVPNは、サーバー証明書の共通名がこのサーバーのfqdnと一致するかどうかをチェックしません。



1.3。 顧客証明書のテンプレート:



/certificate add name=template-CL country="" state="" locality="" organization="" unit="" common-name="test-client-ovpn-template" key-size=4096 days-valid=365 key-usage=tls-client









1.3.1最初のクライアントの証明書:



/certificate add name=template-CL-to-issue copy-from="template-CL" common-name="test-client-ovpn-1"









/certificate sign template-CL-to-issue ca="test-CA" name="test-client-ovpn-1"









1.3.2。 2番目以降の顧客の証明書:



セクション3.1を参照してください。ただし、パラメーターの値を変更します。



common-name="test-client-ovpn-1"









最初のコマンドの場合、この値は同じCA内で一意でなければなりません。



name="test-client-ovpn-1"







2番目のチームの場合、この値は1つのマイクロティック内で一意でなければなりません。



1.4将来、証明書を取り消すには、次のコマンドを使用します。



certificate issued-revoke %cert-name%









ここで、%cert-name%は、署名された証明書の名前=フィールドです。つまり、PKI mikrotikaが表示されます。



2. OVPNサーバーを構成する



注:tunモード(ROSの「ip」)で構成するか、tapモード(ROSの「ethernet」)で構成できます。 Tunモードは通常のトンネルです。 タップモード-フルイーサネットのエミュレーション、特にタップモードでは、クライアントをブリッジモードに結合でき、お互いを完全に認識します。 理論的には、タップモードでDHCPサーバーを起動できますが、これはROSの現在のバージョンでは実装されていません。



2tun。 調整モード



2トン1​​。 OVPNクライアントのアドレスプールを設定します(PPPプロファイルで直接設定できます)。



/ip pool add name=OVPN_srv_pool ranges=192.168.100.2-192.168.254









2トン2。 OVPNサーバーのPPPプロファイルを作成します。



/ppp profile add name=OVPN_server local-address=192.168.100.1 remote-address=OVPN_srv_pool









オプション! 残りのパラメーターは、お客様の好みに合わせて、目標に応じて決まります。 例:dns = 192.168.100.1 use-ipv6 = no



2tun。3。 ユーザー認証モードを構成します。



/ppp aaa set accounting=yes









2トン4。 ユーザーを追加します。



/ppp secret add name=test-user-1 password=P@ssword1 service=ovpn profile=OVPN_server









/ppp secret add name=test-user-2 password=P@ssword2 service=ovpn profile=OVPN_server









2トン5。 OVPNサーバーの電源を入れます。



/interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ip netmask=24 require-client-certificate=yes certificate=test-srv-OVPN enabled=yes









2タップ タップモード



2タップ1。 OVPNクライアントのアドレスプールを設定します(PPPプロファイルで直接設定できます)。



/ip pool add name=OVPN_srv_pool ranges=192.168.100.2-192.168.254









2tap.1 +。 OVPN接続用のブリッジを作成します。



/interface bridge add name=OVPN_bridge arp=enabled









注:ブリッジのIPは割り当てる必要がありません、それは既にPPPプロファイルにあります(さらに、ブリッジのアドレスを指定するが、PPPプロファイルでlocal-address =を指定しない場合、クライアントは接続しません)。



注:arpを有効にする必要があります。有効にしないと、クライアントはお互いを見ることができません。



2トン2。 OVPNサーバーのPPPプロファイルを作成します。



/ppp profile add name=OVPN_server local-address=192.168.100.1 remote-address=OVPN_srv_pool bridge=OVPN_bridge









オプション! 残りのパラメーターは、お客様の好みに合わせて、目標に応じて決まります。 例:dns = 192.168.100.1 use-ipv6 = no



2タップ3。 ユーザー認証モードを構成します。



/ppp aaa set accounting=yes









2タップ4。 ユーザーを追加します。



/ppp secret add name=test-user-1 password=P@ssword1 service=ovpn profile=OVPN_server









/ppp secret add name=test-user-2 password=P@ssword2 service=ovpn profile=OVPN_server









2タップ5。 OVPNサーバーの電源を入れます。



/interface ovpn-server server set auth=sha1 cipher=blowfish128 default-profile=OVPN_server mode=ethernet netmask=24 require-client-certificate=yes certificate=test-srv-OVPN enabled=yes









両方のモードに関する注意:



1.証明書の承認にもかかわらず、ユーザーの存在は必須です。 すべてのクライアントに対して1人のユーザーを作成し、クライアント構成に同じユーザー名/パスワードを登録できますが、これにより特定のユーザーの接続とアクションを追跡できなくなります-不便で、やや安全ではありません。



2. RADIUS認証については、テストしていないという理由だけで検討していません。 ユーザー名/パスワードに対してのみ機能すると想定できますが、証明書は引き続きMikrotikでチェックされます。



3.アドレスプールがOVPNサーバー設定で指定されたサブネットと一致することを確認します。 さらに、ROS OVPNサーバーは、たとえば、マスク29を使用し、ranges = 192.168.100.0 / 29をプールとして指定した場合、ローカルアドレス=サーバーとプールから割り当てられたクライアントアドレスが同じネットワークに属しているかどうかを判断しません。ブロードキャスト192.168.100.7は、私が持っていたように、クライアントに簡単に割り当てることができます。 示されたプールがマスクが示すよりも大きい場合、まったく同じ状況が発生する可能性があります。問題のみがすぐには明らかにならず、少し後で明らかになります。



3.証明書をエクスポートしてクライアントを構成する



3.1。 CA証明書のエクスポート:



/certificate export-certificate test-CA export-passphrase=""









注:証明書自体が必要なだけで、秘密キーは必要ないため、パラメーターexport-passphrase = ""は空でなければなりません。



3.2。 顧客証明書のエクスポート:



/certificate export-certificate test-client-ovpn-1 export-passphrase=private-key-password1









/certificate export-certificate test-client-ovpn-2 export-passphrase=private-key-password2









注:export-passphrase =-秘密鍵をエクスポートするための必須パラメーター。 各クライアントにパスワードを使用します。 2.4項でユーザーに指定したものと同じパスワードを使用しないでください!



3.3。 受け取った証明書とキーファイルを便利な方法でMikrotikから抽出します(原則として、winboxから直接ファイルを前後にドラッグします)。



Windowsクライアントのセットアップ



1. openvpn.netからOVPNディストリビューションを取得します。

2.構成モードに必要なタップインターフェイスを含む、すべてのオプションをデフォルトでインストールします。

3. OpenVPN \ config(デフォルトではC:\ Program Files \ OpenVPN \ config)に移動し、そこにclient.ovpnファイルを作成します(またはOpenVPN \ sample-configからコピーします)。

4.クライアント構成を作成するか、sample-configで変更を加えます。



client.ovpnの内容と小さなコメント
#OVPNサービスが機能するモード

client







#注意! 2つのパラメーターを1つだけ指定します

#tupモードの場合、パラメーターを指定します

dev tun





#タップモードの場合、パラメーターを指定します

dev tap







#このパラメーターは、タップモードが使用される場合にのみ指定され、MyTapの代わりに、Windowsのタップインターフェイス名(ipconfig / all、またはコントロールパネルのネットワーク接続)に置き換えられます。

dev-node MyTap







#使用されるプロトコル。 ROS OVPNサーバーはTCPモードでのみ動作します

proto tcp







#接続するサーバーのアドレスとポート。 ovpn.my.domainの代わりに-DNS名またはIPアドレス。 複数のサーバーを指定できます。

remote ovpn.my.domain 1194

;remote my-server-2 1194








#このパラメーターは、複数のサーバーが使用されている場合にのみ必要です。 接続中にこのパラメーターを指定すると、クライアントは指定されたサーバーの1つをランダムに選択します

;remote-random







#指定されたDNSサーバー名からIPアドレスを決定する試行間のタイムアウト(秒単位)(または無限-無限)

resolv-retry infinite







#このパラメーターが指定されている場合、クライアントは動的な発信ポートを使用して接続します

nobind







#クライアントが再接続時にトンネル設定を保存できるようにするとともに、キーファイルを再読み取りしないようにする

persist-key

persist-tun








#プロキシ設定

;http-proxy-retry # retry on connection failures

;http-proxy [proxy server] [proxy port #]








#重複パケットメッセージを無効にします

;mute-replay-warnings







#証明書ファイルへのパス

#ca-クライアント証明書とサーバー証明書を発行したCA証明書

#cert-クライアント証明書

#key-クライアント証明書の秘密鍵

ca cert_export_test-CA.crt

cert cert_export_test-client-ovpn-1.crt

key cert_export_test-client-ovpn-1.key








#auth-user-passは、クライアントに認証にユーザー名とパスワードを使用するように指示します(ただし、証明書の代わりではなく、証明書を使用します)

#auth-user-passは、OVPNクライアントにユーザー名とパスワードを使用するように指示します(ただし、証明書の代わりではなく、証明書を使用します)

#user-pwd.txtは、ログインとパスワードが保存されているファイルを指します。 ファイルの最初の行はログイン、2番目の行はパスワードです。 この引数がない場合、接続するたびにユーザー名とパスワードが要求されます

#注:接続するたびにすでにキーを入力する必要がある秘密キーを持つ証明書を使用する場合、ユーザーにパスワードによるログインを記憶させる必要はないと考えます

--auth-user-pass user-pwd.txt







#正しいキー使用法についてサーバー証明書をチェックする必要があることをクライアントに伝えます

remote-cert-tls server







#認証プロセス(ハンドシェイク)の開始を暗号化するキー、追加のセキュリティ対策。 証明書なしでログイン/パスワードのみを使用する場合に意味があります。

;tls-auth ta.key 1







#特別な暗号化方式の設定、デフォルトではblowfish128が使用されます。

;cipher x







#lzo圧縮を使用します。 ROS上のOVPNはサポートされていません。

;comp-lzo







#ログレベル。 値が大きいほど詳細になります。

verb 3







#重複するログメッセージのブロック

;mute 20







#上記のパラメーターには、クライアントの構成の「ネイティブ」例に存在するパラメーター+ 1パラメーターが必要です

#以下に、私の意見では、さらに有用なパラメーターを示します。



#接続開始時に設定されたルート

#ルートはゲートウェイを示すのではなく、接続を直接示す

route 192.168.88.0 255.255.255.0







#接続を確立した後、ルートを設定する前に一時停止します(秒単位)

route-delay 5







#OVPN接続をメインゲートウェイとして設定する場合

route-gateway 192.168.100.1

redirect-gateway def1 //




route-gateway 192.168.100.1

redirect-gateway def1 //




. , .





route-gateway 192.168.100.1

redirect-gateway def1 //




@bibliary . , .





route-gateway 192.168.100.1

redirect-gateway def1 //




. , .





. , .











注:構成で指定されたルーティングパラメーターを使用するには、OVPNサービス自体、またはOVPN GUIを管理者権限で開始する必要があります。



注:ほとんどのパラメーターのリストはここにありますが、やや時代遅れです。



MikroTikクライアントを構成する



1証明書のインポート


1.1 microtic CA証明書ファイルと証明書ファイルとクライアントキーファイルを便利な方法で配置します



1.2 CA証明書のインポート



/certificate import file-name=cert_export_test-CA.crt passphrase=""









1.3証明書とクライアントキーをインポートする



/certificate import file-name=cert_export_test-client-ovpn-1.crt passphrase=""









/certificate import file-name=cert_export_test-client-ovpn-1.key passphrase=private-key-password1









2.クライアントを構成します



/interface ovpn-client add name=OVPN_client connect-to={ovpn.my.domain|xxx.xxx.xxx.xxx} port=1194 mode={ip|ethernet} user=test-user-1 password=P@ssword1 profile=default certificate=cert_32 auth=sha1 cipher=blowfish128 add-default-route={no|yes} disabled=no









以前の設定とニーズに従って、{}の値を指定します。



実験には、次のハードウェアとソフトウェアが使用されました。
RouterOS 6.32.2を搭載したRouterBoard 2011UiAS-2HnD-2個。1つはサーバーとして、もう1つはクライアントとして。 どちらも境界ゲートウェイとして機能します-自宅でも職場でも。



ボットにWindows 10 Pro x64を搭載したラップトップ-1台、クライアントとして。 仕事と研究室としての役割を果たします。



次のリソースが認知に使用されました。
wiki.mikrotik.com

openvpn.net/index.php/open-source/documentation/howto.html

tuxnotes.ru/note/1

www.v13.gr/blog/?p=386

そして、検索結果からさらに詳細に。



ご清聴ありがとうございました。



All Articles