GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu Apparmor の紹介と Apparmor プロファイルの設定方法

AppArmor は強制アクセス制御または MAC システムです。

Linux Security Module を使用してプログラムを制限します。 AppArmor は、Linux サービスを保護するために既定のアプリケーション プロファイルのコレクションを設定します。

プロファイル ファイルを自分で作成することにより、システムで実行されている他のアプリケーションを保護することもできます。

Ubuntu では、AppArmor がデフォルトでインストールされ、有効になっています。システムの起動時に apparmor プロファイルが読み込まれます。

AppArmor は次の 2 種類のプロファイル モードで動作します:

<オール>
  • 強制 - 強制モードでは、システムはルールの強制を開始し、syslog または auditd (auditd がインストールされている場合のみ) で違反の試みを報告し、操作は許可されません。
  • 不平 – 不平モードでは、システムはルールを適用しません。違反の試みのみが記録されます。
  • 追加のプロファイルは apparmor-profiles パッケージにあります。

    Apparmor ステータスを表示

    以下に示すように、apparmor の現在のステータスと読み込まれたすべてのプロファイルを表示できます。

    $ sudo apparmor_status
    apparmor module is loaded.
    5 profiles are loaded.
    5 profiles are in enforce mode.
       /sbin/dhclient
       /usr/lib/NetworkManager/nm-dhcp-client.action
       /usr/lib/connman/scripts/dhclient-script
       /usr/sbin/mysqld
       /usr/sbin/tcpdump
    0 profiles are in complain mode.
    2 processes have profiles defined.
    2 processes are in enforce mode.
       /sbin/dhclient (585)
       /usr/sbin/mysqld (799)
    0 processes are in complain mode.
    0 processes are unconfined but have a profile defined.

    上記の出力を確認すると、5 つのプロファイルが強制モードになっていることがわかります。

    これは、現在 2 つのプロセスが強制モードで実行されていることも示しています (プロファイルのため)。たとえば、PID が 585 の /sbin/dhclient は強制モードで実行されています。

    プロフィール モードの変更

    プロファイルを不平モードに設定するには、apparmor-utils パッケージがまだインストールされていない場合は、最初にインストールしてください。

    apt-get install apparmor-utils

    aa-complain コマンドを使用して、プロファイルを苦情モードに設定します。たとえば、mysqld の苦情モードを有効にするには、次のようにします。

    $ sudo aa-complain /usr/sbin/mysqld
    Setting /usr/sbin/mysqld to complain mode.

    apparmor_status を実行すると、mysqld が不平モードになっていることがわかります。

    $ sudo apparmor_status
    apparmor module is loaded.
    5 profiles are loaded.
    4 profiles are in enforce mode.
       /sbin/dhclient
       /usr/lib/NetworkManager/nm-dhcp-client.action
       /usr/lib/connman/scripts/dhclient-script
       /usr/sbin/tcpdump
    1 profiles are in complain mode.
       /usr/sbin/mysqld
    2 processes have profiles defined.
    1 processes are in enforce mode.
       /sbin/dhclient (585)
    1 processes are in complain mode.
       /usr/sbin/mysqld (799)
    0 processes are unconfined but have a profile defined.

    以下に示すように、aa-enforce コマンドを使用して、プロファイルを強制モードに戻すことができます。

    $ sudo aa-enforce /usr/sbin/mysqld
    Setting /usr/sbin/mysqld to enforce mode.

    AppArmor プロファイル ファイル

    AppArmor プロファイルは、/etc/apparmor.d/ ディレクトリにあるテキスト ファイルです。

    ファイルは、プロファイリングする実行可能ファイルへのフル パスに基づいて名前が付けられますが、「/」は「.」に置き換えられます。

    たとえば、ping コマンドは /bin/ping にあります。同等の AppArmor プロファイル ファイルは bin.ping という名前になります

    以下は、usr.sbin.mysqld の Apparmor プロファイル ファイルです。 /usr/sbin/mysqld は、このプロファイルが適用されるバイナリの絶対パスです。

    # cat usr.sbin.mysqld
    # vim:syntax=apparmor
    # Last Modified: Tue Jun 19 17:37:30 2007
    #include <tunables/global>
    /usr/sbin/mysqld {
      #include <abstractions/base>
      #include <abstractions/nameservice>
      #include <abstractions/user-tmp>
      #include <abstractions/mysql>
      #include <abstractions/winbind>
      capability dac_override,
      capability sys_resource,
      capability setgid,
      capability setuid,
      network tcp,
      /etc/hosts.allow r,
      /etc/hosts.deny r,
      /etc/mysql/*.pem r,
      /etc/mysql/conf.d/ r,
      /etc/mysql/conf.d/* r,
      /etc/mysql/*.cnf r,
      /usr/lib/mysql/plugin/ r,
      /usr/lib/mysql/plugin/*.so* mr,
      /usr/sbin/mysqld mr,
      /usr/share/mysql/** r,
      /var/log/mysql.log rw,
      /var/log/mysql.err rw,
      /var/lib/mysql/ r,
      /var/lib/mysql/** rwk,
      /var/log/mysql/ r,
      /var/log/mysql/* rw,
      /var/run/mysqld/mysqld.pid rw,
      /var/run/mysqld/mysqld.sock w,
      /run/mysqld/mysqld.pid rw,
      /run/mysqld/mysqld.sock w,
      /sys/devices/system/cpu/ r,
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }

    プロファイル ファイルでは、コメントは常に # 記号で始まります。 #include 行がファイルをロードします。

    以下は、プロファイルで使用されるさまざまなタイプのルールです。

    <オール>
  • パス エントリ:これには、アプリケーションがアクセスできるファイルに関する情報が含まれています。
  • 機能エントリ:限定されたプロセスが使用できる権限を決定します。
  • ネットワーク エントリ:接続タイプを決定します。例:tcp.パケット アナライザー ネットワークの場合は、raw またはパケットなどを指定できます。
  • 中括弧 {} 内には、他の include ステートメントがあり、アクセス許可/モード [read(r)/write (w)/execute (x) (k) lock (requires r or w、AppArmor 2.1 以降)] も含まれています。さまざまなファイルとディレクトリには、中かっこ {} で囲まれた include ステートメントの正規表現グロビングが含まれており、Novell AppArmor プロファイルのコンポーネントをロードするのに役立ちます。

    AppArmor を無効にする

    一部のプロセスが期待どおりに動作している場合、および apparmor プロファイルがその理由であるかどうかをデバッグしたい場合は、デバッグのために apparmor を一時的に無効にすることをお勧めします。

    # /etc/init.d/apparmor stop
     * Clearing AppArmor profiles cache  [OK]

    上記のコマンドを実行すると、プロファイル キャッシュのみがクリアされます。プロファイルをアンロードするには、次のコマンドを実行します。

    # /etc/init.d/apparmor teardown
     * Unloading AppArmor profiles [OK]

    Linux
    1. Ubuntu18.04にRedisをインストールして構成する方法

    2. UbuntuにFail2banをインストールして設定する方法は?

    3. Ubuntu 18.04 に Elasticsearch をインストールして構成する方法

    1. Ubuntu18.04にRedmineをインストールして設定する方法

    2. Ubuntu18.04にSambaをインストールして設定する方法

    3. Ubuntu20.04にRedisをインストールして構成する方法

    1. Ubuntu20.04にJenkinsをインストールして構成する方法

    2. Ubuntu16.04にAskbotをインストールして構成する方法

    3. Ubuntu14.04にMongoDBをインストールして構成する方法