PhoenixContact#FL MGUARD 1105_Part5_LDAP Server経由でLoginしましょう

こちらはPhoenix ContactのSecurity Router FL MGUARD 1105を利用した新しい記事シリーズです!サイバーセキュリティは現在我々のFA業界にも欠かせない課題の一つであり、自分も勉強しないといけないと思いました。

第5 話はLDAP Serverを立ち上げ、MGUARD 1105からLDAP Serve経由でLoginする方法の説明や設定方法になります。

さ、FAを楽しもう。

Reference Link

PhoenixContact#FL MGUARD 1105_Part1_セキュリティルーターを立ち上げよう!
PhoenixContact#FL MGUARD 1105_Part2_Port Forwardingを使ってみよう
PhoenixContact#FL MGUARD 1105_Part3_NATを使ってみよう
PhoenixContact#FL MGUARD 1105_Part4_Stealth Mode

Reference Video

Phoenix Contact.FL MGUARD 1105開封しました!

LDAP?

LDAP (Lightweight Directory Access Protocol) は、クライアント/サーバー・プロトコルで、IP ネットワーク経由でリモート・ディレクトリ・サービスのデータを照会および管理できます。 今回の記事で使用するmGuardデバイスがLDAPクライアントとして機能します。

LDAP を使用することで、デバイスのユーザー管理を LDAP サーバー上の中央データベースに委託することができ、LDAP サーバーがユーザー認証を引き継ぎます。 デバイス上でローカル・ユーザーを構成することは可能ですが、原則的にその 必要はなくなります (例外: Super Admin ロールを持つローカル・ユー ザーが存在する必要があります)。 

注意するのは、LDAPサーバーによって認証されたユーザーは、LDAPサーバーのユーザー管理機能を使用してのみブロックできます。

mGuardにおける権限/役割

LDAP サーバーで管理されているユーザーは、中央で管理されているアクセス・データ (ユーザー名とパスワード) を入力することで、mGuard デバイスにログインできます。

機能

LDAPは、TCP/IP上で動作するディレクトリサービスにアクセスするためのアプリケーションプロトコルです。 ディレクトリサービスは、ユーザーやデバイスなどのリソースに関する構造化された情報を保持し、この情報を照会・管理するためのメカニズムを提供します。

LDAPサーバーの主な機能は以下になります。

✓情報の保存 

ユーザーアカウント、グループ情報、ネットワークデバイスなど、さまざまなディレクトリ情報を保持します。

✓アクセス管理

認証と認可を実行し、どのユーザーまたはグループが特定のリソースにアクセスできるかを制御します。

✓検索機能

LDAPクライアント(アプリケーションまたはサービス)がLDAPサーバー内の情報を検索するためのインターフェースを提供します。

✓階層的情報構造

ディレクトリはツリー構造で管理され、各エントリーはDN(識別名)で識別します。

主要コンポーネント

LDAP Serverには以下のメイン部品があります。

✓Directory‐ディレクトリ

プロファイルと設定を保持し、リソースを階層的に管理する組織構造になります。

✓Entries‐エントリー

すべてのLDAP情報は「エントリー」として表現され、各エントリーは複数の属性(ユーザー名、役割、電子メール、電話番号など)を持つことができます。

dc (Domain Component)

Domain Component と呼ばれ、LDAPディレクトリ情報ツリー(DIT)における ドメインの階層構造を示を示します。 例:dc=example,dc=com

dn (Distinguished Name)

“Distinguished Name “はLDAPディレクトリ内のエントリーの一意な識別子です。 DNは、ディレクトリ構造内のエントリの位置を示すパスの役割を果たします。

例: uid=user,ou=users,dc=example,dc=com

uid=user

特定のユーザーを指します。

ou=users

このユーザーが所属する組織単位になります。

dc=example,dc=com

domainコンポーネントは、エントリーが属するドメインを示します。

cu (Common User)

共有アカウントまたは共通の設定を持つユーザーを指します。

✓Attributes‐属性

各エントリーに関連する特定の情報(姓、名、Eメールアドレスなど)になります。

Example

こちらはLDAP Serverで構築するツリー構造の例です。

オブジェクトクラス

LDAPでは、個々のエントリーが持つべき属性を指定するためにオブジェクトクラスが使われます。 例えば、inetOrgPersonオブジェクト・クラスは一般的にユーザー情報を格納するために使用され、uid(ユーザー名)やmail(電子メール)などの属性を含んでいます。

メリット

LDAP Serverを導入することにより、このようなメリットがあります。

✓集中管理

LDAPを使用することで、ユーザーアカウントとリソースの一元管理が可能になり、管理効率が向上します。

✓スケーラビリティ

LDAPはスケーラブルに設計されており、大規模な環境における多数のユーザーとリソースに対応します。

✓多様なサポート

LDAPは多くのオペレーティングシステムやアプリケーションでサポートされており、クロスプラットフォームでの管理が容易になっています。

LDAP Server導入する前

LDAP Serverを導入する前は、EndデバイスはServerにアクセスするために毎回IDやPasswordを記憶し入力し>認証する形です。

LDAP Server導入した後

LDAP Serverを導入したあと、EndデバイスはLDAP Serverを経由し他のServerに認証を行うことができます。

工場に導入?

LDAP Serverを工場に導入することにより、このようなメリットがあります。

✓ユーザー管理の効率化:

大規模な産業や工場では、多数の従業員と複数のシステムを管理するには、効率的なユーザー管理が必要です。 LDAPを導入することで、アカウントの作成と管理が簡単になります。

✓セキュリティの強化:

工場では膨大な量の機密情報を扱う。 LDAPによる一元管理と認証強化により、アクセス制御を改善し、情報セキュリティを強化することができます。

✓システム統合:

生産管理システム(MES)、企業資源計画システム(ERP)、その他のITインフラをLDAPを使って統合することで、ユーザーの利便性を高めることができます。

✓将来の拡張性:

ビジネスの成長に伴い、LDAPによる柔軟なユーザー管理は、新しいITシステムやサービスへの拡張や接続を容易にします。

Implementation

こちらは今回記事の構成です。

Configure LDAP Server

最初にRaspberry pi3にLDAP Serverを構築します。今回記事で使用したRaspberry pi3にはkali OSがインストールされています。

Install LDAP Server

こちらのコマンドでLDAP Serverをインストールします。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo apt install slapd ldap-utils

Confirm the Information

sudo slapcat コマンドを実行し、自動設定されたベースDN等を確認します。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo slapcat
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Org
dc: example
structuralObjectClass: organization
entryUUID: 05e36c3c-657e-103f-862c-a5073dd390f2
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20250112221214Z
entryCSN: 20250112221214.684516Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20250112221214Z

Init 

こちらのコマンドでLDAP Serverの設定を初期化します。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo dpkg-reconfigure slapd

NOでLDAP Serverの設定を初期化します。

NDS domain 名を入力します。

組織名を入力します。

管理者のPasswordを設定します。

もう一回Passwordを入力します。

LDAP Serverにある既存のデータベースを削除します。

Yesで進んで、それでLDAP Serverの初期化が完了です。

Restart

こちらのコマンドでLDAP Serverを再起動します。

sudo systemctl restart slapd

Insert Entry

次にLDAPサーバーのディレクトリにエントリを追加します。

Insert ou

まずは組織単位を追加します。

  • people ユーザーを保存するorganizational unitになります。
  • groups グループを保存するorganizational unitになります。
add_ou.ldif

こちらのコマンドでLDIFファイルを作ります。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo nano add_ou.ldif

こちらはadd_ou.ldifの中身です。

add_ou.ldif
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
Add ou

ldapadd コマンドでou情報をLDAP Serverに追加します。

  • -x 簡易認証
  • -D ディレクトリサーバーにバインドするDN
  • -W 簡易認証のパスワードをコマンドラインではなくプロンプトで入力
  • -f エントリ情報の書かれているファイル
┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_ou.ldif

Insert user‐u11000.ldif

u11000.ldif を作成します。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo nano add_u11000.ldif

こちらはu11000.ldifの中身です。

dn: cn=u11000,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: u11000
gidNumber: 11000

dn: uid=u11000,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Suzuzki abc
sn: Suzuzki
displayName: Suzuzki abc
givenName: abc
title: staff
uid: u11000
userPassword: Somepassword
gidNumber: 11000
homeDirectory: /home/u11000
uidNumber: 11000
gecos: Suzuki abc
loginShell: /bin/bash
shadowExpire: -1
shadowInactive: 99999
shadowMax: 99999
shadowMin: 0
shadowWarning: 14
add User

ldapadd コマンドを使用しu11000 Userを追加します。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_u11000.ldif

Insert user‐u11001.ldif

u11001.ldif を作成します。こちらはu11001.ldifの中身です。

dn: cn=u11001,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: u11000
gidNumber: 11001

dn: uid=u11001,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: sasaki abc
sn: sasaki
displayName: sasaki abc
givenName: abc
title: mGAdmin
uid: u11001
userPassword: admin12345
gidNumber: 11000
homeDirectory: /home/u11000
uidNumber: 11000
gecos: sasaki abc
loginShell: /bin/bash
shadowExpire: -1
shadowInactive: 99999
shadowMax: 99999
shadowMin: 0
shadowWarning: 14

Insert user‐u11002.ldif

u11002.ldif を作成します。

先ほどu11000.ldifとu11001.ldifにもPlain TextでuserPassword Attributeを設定しましたが、u11002はRoot Userなので、slappasswdコマンドでPasswordのSSHA値を生成します。

そのSSHA値にもUserのPasswordを設定できます。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo slappasswd
New password:
Re-enter new password:
{SSHA}+Lk+VzufEXXKCZDzN4oIV56VHuwLXbkz

こちらはu11002.ldifの中身です。

dn: cn=u11002,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: u11002
gidNumber: 11002

dn: uid=u11002,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: yamagami abc
sn: yamagami
displayName: yamagami abc
givenName: abc
title: mGRoot
uid: u11000
userPassword: {SSHA}+Lk+VzufEXXKCZDzN4oIV56VHuwLXbkz
gidNumber: 11002
homeDirectory: /home/u11002
uidNumber: 11002
gecos: yamagami abc
loginShell: /bin/bash
shadowExpire: -1
shadowInactive: 99999
shadowMax: 99999
shadowMin: 0
shadowWarning: 14

Check your database

ldapsearchコマンドで先程追加したデータを再確認しましょう。

┌──(kali㉿kali-raspberrypi)-[~]
└─$ sudo ldapsearch -x -LLL -D cn=admin,dc=example,dc=com -b dc=example,dc=com -W

Done!これでLDAP Server側の準備が完成です。

mGuard Side

今度はPhoenix Contact のFL MGUARD 1105側です。

Users

今回の記事ではLDAP Server経由でUser認証するので、Authentication>User ManagmentでSuper Admin のみだけ残しておきましょう。

Enable LDAP

次はAuthentication>LDAP Tabを開きます。

LDAP authenticationを有効にします。この機能を有効にすると、デバイスは LDAP プロトコルを介して設定された LDAP サーバーにアクセスできます。注意するのは、LDAP 経由でログインしたユーザーは、進行中のセッション中にこの機能が解除されると、 自動的にログアウトされます。

User role mapping

LDAP認証を有効にするとUser role mapping・External LDAP serverの設定項目が表示されます。

Attribute

こちらはLDAPユーザーごとにロール/ユーザー・クラスが指定される属性名になります。

Roleを割り当てるには、LDAPサーバーとデバイスの両方で同じLDAP属性が割り当てられている必要があります。先ほどUserを追加したときtitleというAttributeがありますので、今回LDAP AttributeはTitleに参照するようにします。

Super Admin/Admin/Audit

LDAP認証するときtitleを該当すると設定しましたが、Phoenix Contact FL MGUARDのWeb ServerにLoginするには、Super Admin/Admin/Auditの権限があります。

どんなtitleはSuper Adminなのか?どんなtitleはAdminなのか?を識別するには下図の枠に設定する必要があります。

  • Super Admin→mGRoot
  • Admin→mGAdmin
  • Audit→staff

なので、u11000のtitle Attributeはstaffに設定されましたので、このUserでLoginすると権限はAuditになります。

External LDAP server

次はPhoenix ContactのFL MGUARD 1105に接続するLDAP Serverを設定します。

IP/Host name

こちらはデバイスがユーザー認証のリクエストを送信する外部 LDAP サーバーの IP アドレスまたはホスト名になります。

Port

LDAPサーバーがリクエストを受け付けるポートになります。

デフォルト設定: 389

Base DN

LDAP サーバー上のディレクトリのベースアドレスになります。

入力フォーマット:ディレクトリパス(DC=x,DC=y,DC=z)

Username/Password

ユーザー名 デバイスが LDAP サーバーにログインし、認証する際のユーザー名になります。注意するのはこのLogin情報はOS自体のLogin情報ではなく、LDAP ServerのLogin情報になります。

Result

こちらは今回記事で行った設定です。

Save

最後はLDAP設定をPhoenix Contact FL MGUARD 1105に保存します。

Result

最後はPhoenix Contact FL MGUARD 1105のWeb serverにLoginしてみます。

Done!Phoenix Contact FL MGUARD 1105本体に登録されてないUserでも、LDAP Server経由でLoginできました!

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする