Go to main content
Oracle® Solaris 11.3 でのユーザーとプロセスのセキュリティー保護

印刷ビューの終了

更新: 2016 年 11 月
 
 

ユーザーの権利の制限

このセクションの例では、通常のユーザーの権利を制限するか、または管理者から一部の管理権利を削除します。ユーザー、役割、および権利プロファイルを変更する方法を示します。権利の詳細については、権利を使用したユーザーとプロセスの制御についてを参照してください。

使用例 24  ユーザーの制限セットからの特権の削除

次の例では、jdoe の最初のログインから開始されるすべてのセッションで sys_linkdir 特権を使用できないようにします。su コマンドの実行後でも、ユーザーはディレクトリへのハードリンクの作成やディレクトリのリンク解除を実行できません。

# usermod -K 'limitpriv=all,!sys_linkdir' jdoe
# userattr limitpriv jdoe
all,!sys_linkdir
使用例 25  権利プロファイルからの基本特権の削除

次の例では、徹底的なテストのあとで、セキュリティー管理者は Sun Ray Users 権利プロファイルから別の基本特権を削除します。管理者は使用例 45でプロファイルを作成したときに、制限セットから 1 つの特権を削除しています。ここでは、管理者は 2 つの基本特権を削除します。このプロファイルが割り当てられているユーザーは、現在のセッションの外部ではどのプロセスも検査できず、さらに別のセッションを追加することもできません。

# profiles -p "Sun Ray Users"
profiles:Sun Ray Users> set defaultpriv="basic,!proc_session,!proc_info"
profiles:Sun Ray Users> end
profiles:Sun Ray Users> exit
使用例 26  ユーザー自身からの基本特権の削除

次の例では、通常のユーザーが .bash_profile を変更して proc_info 基本特権を削除します。psprstat などのプログラムの出力にはユーザー自身のプロセスだけが含まれており、有用な情報を示していることがあります。

##  .bash_profile
## Remove proc_info privilege from my shell
##
ppriv -s EI-proc_info $$

ppriv 行は、現在のシェルプロセス ($$) でユーザーの有効特権セットと継承可能特権セット (EI-) から proc_info 特権を削除します。

次の prstat 出力では、プロセスの合計が 74 から 3 に減少しています。

## With all basic privileges
Total: 74 processes, 527 lwps, load averages: 0.01, 0.00, 0.00

## With proc_info removed from the effective and inheritable set
Total: 3 processes, 3 lwps, load averages: 0.00, 0.00, 0.00
使用例 27  システムをそのユーザーが使用できる権限を制限するように変更する

この例では、管理者がネットワークの管理にのみ役立つシステムを作成します。管理者は、policy.conf ファイルから Basic Solaris User 権利プロファイルとすべての承認を削除します。Console User 権利プロファイルは削除されません。結果となる policy.conf ファイルで影響を受けた行は次のとおりです。

...
##AUTHS_GRANTED=
##AUTH_PROFS_GRANTED=
##PROFS_GRANTED=Basic Solaris User
CONSOLE_USER=Console User
...

承認、コマンド、または権利プロファイルが明示的に割り当てられているユーザーのみがこのシステムを使用できます。ログイン後、その承認ユーザーは管理責務を果たすことができます。承認されたユーザーがシステムコンソールの前に座っている場合、そのユーザーには Console User の権利があります。

使用例 28  明示的に割り当てられた権利への管理者の制限

    2 つの方法で、ユーザーまたは役割を限られた数の管理操作に制限できます。

  • ユーザーのプロファイルリストの最終プロファイルとして、Stop 権利プロファイルを割り当てます。

    Stop 権利プロファイルは、制限付きシェルを作成するもっとも簡単な方法です。policy.conf ファイル内の承認と権利プロファイルは、ユーザーまたは役割には割り当てられません。

  • システム上の policy.conf ファイルを変更して、役割またはユーザーがそのシステムを管理タスクに使用するよう要求します。使用例 27を参照してください。

次のコマンドは、auditrev 役割を監査レビューの実行のみに制限します。

# rolemod -K profiles="Audit Review,Stop" auditrev

auditrev 役割には Console User 権利プロファイルがないため、監査担当者はシステムをシャットダウンできません。この役割には solaris.device.cdrw 承認がないため、監査担当者は CD-ROM ドライブに対して読み取りまたは書き込みを行うことができません。この役割には Basic Solaris User 権利プロファイルがないため、そのプロファイルのコマンドをこの役割で実行できません。All 権利プロファイルが割り当てられていないため、ls コマンドは実行されません。この役割は、ファイルブラウザを使用してレビューする監査ファイルを選択します。

詳細は、割り当てられた権利の検索順序および権利プロファイルのリファレンスを参照してください。

使用例 29  LDAP ユーザーや役割がその権利を使用できる場所と時間の修飾

この一連の例は、ユーザーや役割へのセキュリティー属性の割り当てを集中管理する方法を示しています。これらのコマンドは LDAP ネームサービスでのみ機能し、files ネームサービスでは機能しません。

次の例では、ユーザー jdoe がシステム labsys1 および labsys2 を管理できるようにします。jdoe は LDAP アカウントです。

# usermod -q labsys1 -K profiles="System Administrator" jdoe
# usermod -q labsys2 -K profiles="System Administrator" jdoe

次の例では、system1 上の役割 admin への管理アクセスを平日の午前 5 時から午後 3 時までに制限します。admin は LDAP アカウントです。システムのローカルタイムゾーンが使用されます。

# rolemod -q system1 -k access_times="(*}:Wk0500-1500" \
  -K profiles="System Administrator" admin
使用例 30  ユーザーや役割が管理権利を持つシステムの修飾

この一連の例は、セキュリティー属性の割り当てをホスト名、またはネットグループと呼ばれるホストのグループで修飾する方法を示しています。netgroup(4) のマニュアルページを参照してください。

次の例では、ユーザー jdoelab1 ネットグループとして定義されている一連のシステムを管理できるようにします。jdoe および lab1 ネットグループは、LDAP ディレクトリで管理されます。

# usermod -q @lab1 -K profiles="System Administrator" jdoe

次の例では、ユーザー jdoe を平日の午前 5 時から午後 3 時までの lab1 ネットグループの管理に制限します。

# usermod -q @lab1 -k access_times="(*}:Wk0500-1500" -K profiles="System Administrator" jdoe
使用例 31  選択したアプリケーションによる新規プロセス生成の防止

この例では、適切な動作のためにサブプロセスが不要なアプリケーションの権利プロファイルを管理者が作成します。便宜上、管理者はこれらの実行可能ファイルを保管するディレクトリを作成します。サブプロセスを必要としない新しいアプリケーションが追加されたら、実行可能ファイルをこのディレクトリに追加できます。あるいは、実行可能ファイルが特定のディレクトリに存在している必要がある場合、管理者は /opt/local/noex/app-executable からそれにリンクできます。

# profiles -p "Prevent App Subprocess"
profiles:Prevent App Subprocess> set desc="Keep apps from execing processes"
profiles:Prevent App Subprocess> add cmd=/opt/local/noex/mkmod
... Subprocess:mkmod> set limitprivs=all,!proc_exec
... Subprocess:mkmod> end
... Subprocess> add cmd=/opt/local/noex/gomap
... Subprocess:gomap> set limitprivs=all,!proc_exec
... Subprocess:gomap> end
... Subprocess> commit
... Subprocess> exit
使用例 32  ゲストによるエディタサブプロセス生成の防止

この例では、管理者がエディタコマンドから proc_exec 基本特権を削除して、ユーザーが 1 つまたは複数のエディタからサブシェルを作成することを防止します。

  1. 管理者は、vim エディタの制限特権セットから proc_exec を削除する権利プロファイルを作成します。

    # profiles -p -S ldap "Editor Restrictions"
    profiles:Editor Restrictions> set desc="Site Editor Restrictions"
    ... Restrictions> add cmd=/usr/bin/vim
    ... Restrictions:vim> set limitprivs=all,!proc_exec
    ... Restrictions:vim> end
    ... Restrictions> commit
    ... Restrictions> exit
  2. 管理者がほかの一般的なエディタを権利プロファイルに追加します。

    # profiles -p "Editor Restrictions"
    profiles:Editor Restrictions> add cmd=/usr/bin/gedit
    ... Restrictions:gedit> set limitprivs=all,!proc_exec
    ... Restrictions:gedit> end
    ... Restrictions> add cmd=/usr/bin/gconf-editor
    ... Restrictions:gconf-editor> set limitprivs=all,!proc_exec
    ... Restrictions:gconf-editor> end
    ... Restrictions> add cmd=/usr/bin/ed
    ... Restrictions:ed> set limitprivs=all,!proc_exec
    ... Restrictions:ed> end
    ... Restrictions> add cmd=/usr/bin/ex
    ... Restrictions:ex> set limitprivs=all,!proc_exec
    ... Restrictions:ex> end
    ... Restrictions> add cmd=/usr/bin/edit
    ... Restrictions:edit> set limitprivs=all,!proc_exec
    ... Restrictions:edit> end
    ... Restrictions> commit
    ... Restrictions> exit
  3. 管理者は、権利プロファイルのエントリに誤字、脱字、繰り返しなどのエラーがないかどうかを確認します。

    # profiles -p "Editor Restrictions" info
    Found profile in files repository.
    name=Editor Restrictions
    desc=Site Editor Restrictions
    cmd=/usr/bin/vim
    limitprivs=all,!proc_exec
    ...
  4. 管理者は Editor Restrictions 権利プロファイルを guest ユーザーに割り当てます。

    # usermod -K profiles+="Editor Restrictions" guest

    管理者は profiles+ を使用して、この権利プロファイルをアカウントの現在の権利プロファイルに追加します。

  5. エディタ特権が制限されていることを確認するため、管理者はエディタを開き、別のウィンドウでエディタプロセスの特権を調べます。

    # ppriv -S $(pgrep vi)
    2805:   vi .bash_profile
    flags = PRIV_PFEXEC User is running a profile shell
            E: basic,!proc_info proc_info is removed from basic set
            I: basic,!proc_info
            P: basic,!proc_info
            L: all,!proc_exec proc_exec is removed from limit set
使用例 33  全ユーザーへの Editor Restrictions 権利プロファイルの割り当て

この例では、管理者が Editor Restrictions 権利プロファイルを policy.conf ファイルに追加します。管理者は、ゲストがログインできるパブリックシステムにこのファイルが配布されていることを確認します。

# cd /etc/security; cp policy.conf policy.conf.orig
# pfedit /etc/security/policy.conf
...
AUTHS_GRANTED=
AUTH_PROFS_GRANTED=
#PROFS_GRANTED=Basic Solaris User
PROFS_GRANTED=Editor Restrictions,Basic Solaris User

User Security 管理者は、すべてのユーザーにプロファイルシェルを割り当てました。理由と手順については、ユーザーへの権利の割り当てを参照してください。