个人工具

“UbuntuHelp:AppArmor”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(新页面: {{From|https://help.ubuntu.com/community/AppArmor}} {{Languages|UbuntuHelp:AppArmor}} == Introduction == AppArmor is a Linux Security Module implementation of name-based access control...)
 
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/AppArmor}}
 
{{From|https://help.ubuntu.com/community/AppArmor}}
 
{{Languages|UbuntuHelp:AppArmor}}
 
{{Languages|UbuntuHelp:AppArmor}}
 
 
 
== Introduction ==
 
== Introduction ==
 
 
AppArmor is a Linux Security Module implementation of name-based access controls. AppArmor confines individual programs to a set of listed files and posix 1003.1e draft capabilities.
 
AppArmor is a Linux Security Module implementation of name-based access controls. AppArmor confines individual programs to a set of listed files and posix 1003.1e draft capabilities.
 
 
AppArmor was first made available to Ubuntu in Ubuntu 7.04 in Universe.
 
AppArmor was first made available to Ubuntu in Ubuntu 7.04 in Universe.
 
 
== Installation ==
 
== Installation ==
 
 
=== Ubuntu 7.10 (Gutsy) ===
 
=== Ubuntu 7.10 (Gutsy) ===
 
 
AppArmor is installed and loaded by default in Gutsy. Some packages will install their own profiles. Additional profiles can found in the package ''apparmor-profiles'' from the Universe repository.
 
AppArmor is installed and loaded by default in Gutsy. Some packages will install their own profiles. Additional profiles can found in the package ''apparmor-profiles'' from the Universe repository.
 
 
==== Install additional AppArmor profiles ====
 
==== Install additional AppArmor profiles ====
 
* Enable the Universe repository.
 
* Enable the Universe repository.
 
* Install ''apparmor-profiles''. See InstallingSoftware.
 
* Install ''apparmor-profiles''. See InstallingSoftware.
 
 
=== Ubuntu 7.04 (Feisty) ===
 
=== Ubuntu 7.04 (Feisty) ===
 
 
AppArmor is not included by default in the Feisty kernel. It needs to be compiled manually.
 
AppArmor is not included by default in the Feisty kernel. It needs to be compiled manually.
 
 
* Enable the Universe repository.
 
* Enable the Universe repository.
 
* Install ''apparmor-modules-source'' and ''module-assistant'' packages. See InstallingSoftware.
 
* Install ''apparmor-modules-source'' and ''module-assistant'' packages. See InstallingSoftware.
第32行: 第21行:
 
</nowiki></pre>
 
</nowiki></pre>
 
* Install ''apparmor-profiles'', ''apparmor-utils'' and ''apparmor'' packages. See InstallingSoftware.
 
* Install ''apparmor-profiles'', ''apparmor-utils'' and ''apparmor'' packages. See InstallingSoftware.
 
 
==== Installing the latest version ====
 
==== Installing the latest version ====
 
To install the latest apparmor packages on feisty, the packages have to be rebuilt.  
 
To install the latest apparmor packages on feisty, the packages have to be rebuilt.  
 
See [https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/116627 latest apparmor utilities for feisty (LP #116627)].
 
See [https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/116627 latest apparmor utilities for feisty (LP #116627)].
 
 
==== Kernel upgrade / apparmor-module-source upgrade ====
 
==== Kernel upgrade / apparmor-module-source upgrade ====
 
When a new kernel is installed or when a new version of apparmor-module-source is installed, the apparmor module has to be recompiled :
 
When a new kernel is installed or when a new version of apparmor-module-source is installed, the apparmor module has to be recompiled :
第43行: 第30行:
 
sudo m-a -v -t install apparmor-modules
 
sudo m-a -v -t install apparmor-modules
 
</nowiki></pre>
 
</nowiki></pre>
 
 
In order to make sure that all running processes are protected, the system has then to be rebooted.
 
In order to make sure that all running processes are protected, the system has then to be rebooted.
 
 
== Usage ==
 
== Usage ==
 
 
All the commands should be executed from a terminal.
 
All the commands should be executed from a terminal.
 
 
=== List the current status of apparmor ===
 
=== List the current status of apparmor ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo apparmor_status
 
sudo apparmor_status
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Put a profile in complain mode ===
 
=== Put a profile in complain mode ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-complain /path/to/bin
 
sudo aa-complain /path/to/bin
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Example:
 
Example:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-complain /bin/ping
 
sudo aa-complain /bin/ping
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Put all profiles into complain mode ===
 
=== Put all profiles into complain mode ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-complain /etc/apparmor.d/*
 
sudo aa-complain /etc/apparmor.d/*
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Put a profile in enforce mode ===
 
=== Put a profile in enforce mode ===
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-enforce /path/to/bin
 
sudo aa-enforce /path/to/bin
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Example:
 
Example:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-enforce /bin/ping
 
sudo aa-enforce /bin/ping
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Put all profiles in enforce mode ===
 
=== Put all profiles in enforce mode ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-enforce /etc/apparmor.d/*
 
sudo aa-enforce /etc/apparmor.d/*
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Disable AppArmor framework ===
 
=== Disable AppArmor framework ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo /etc/init.d/apparmor kill
 
sudo /etc/init.d/apparmor kill
 
sudo update-rc.d -f apparmor remove
 
sudo update-rc.d -f apparmor remove
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Enable AppArmor framework ===
 
=== Enable AppArmor framework ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo /etc/init.d/apparmor start
 
sudo /etc/init.d/apparmor start
 
sudo update-rc.d apparmor start 37 S .
 
sudo update-rc.d apparmor start 37 S .
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Reload all profiles ===
 
=== Reload all profiles ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo /etc/init.d/apparmor reload
 
sudo /etc/init.d/apparmor reload
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Reload one profile ===
 
=== Reload one profile ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
 
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Example:
 
Example:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -r
 
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -r
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Disable one profile ===
 
=== Disable one profile ===
 
 
<pre><nowiki>
 
<pre><nowiki>
 
ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
 
ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
 
apparmor_parser -R /etc/apparmor.d/profile.name
 
apparmor_parser -R /etc/apparmor.d/profile.name
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Example:
 
Example:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
ln -s /etc/apparmor.d/bin.ping /etc/apparmor.d/disable/
 
ln -s /etc/apparmor.d/bin.ping /etc/apparmor.d/disable/
 
apparmor_parser -R /etc/apparmor.d/bin.ping
 
apparmor_parser -R /etc/apparmor.d/bin.ping
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Enable one profile ===
 
=== Enable one profile ===
 
 
By default, profiles are enabled (ie loaded into the kernel and applied to processes).
 
By default, profiles are enabled (ie loaded into the kernel and applied to processes).
 
 
<pre><nowiki>
 
<pre><nowiki>
 
rm /etc/apparmor.d/disable/profile.name
 
rm /etc/apparmor.d/disable/profile.name
 
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
 
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Example:
 
Example:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
rm /etc/apparmor.d/disable/bin.ping
 
rm /etc/apparmor.d/disable/bin.ping
 
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -a
 
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -a
 
</nowiki></pre>
 
</nowiki></pre>
 
 
== Profile customization ==
 
== Profile customization ==
 
 
Profiles can found in <code><nowiki>/etc/apparmor.d</nowiki></code>.  
 
Profiles can found in <code><nowiki>/etc/apparmor.d</nowiki></code>.  
 
 
Some customization can be made in <code><nowiki>/etc/apparmor.d/tunables/</nowiki></code>
 
Some customization can be made in <code><nowiki>/etc/apparmor.d/tunables/</nowiki></code>
 
 
=== Set home directories location ===
 
=== Set home directories location ===
 
 
The location of home directories can be tuned in <code><nowiki>/etc/apparmor.d/tunables/home</nowiki></code>.
 
The location of home directories can be tuned in <code><nowiki>/etc/apparmor.d/tunables/home</nowiki></code>.
 
 
== FAQ ==
 
== FAQ ==
 
 
=== apparmor_status reports processes that are unconfined but have a profile defined ===
 
=== apparmor_status reports processes that are unconfined but have a profile defined ===
 
 
Restart the listed processes. Rebooting will also fix the problem.
 
Restart the listed processes. Rebooting will also fix the problem.
 
 
AppArmor can only track and protect processes that are started after the kernel module has been loaded. After the apparmor packages have been installed, apparmor will be started. But running processes won't be protected by AppArmor. Either restarting the processes or rebooting will fix this.
 
AppArmor can only track and protect processes that are started after the kernel module has been loaded. After the apparmor packages have been installed, apparmor will be started. But running processes won't be protected by AppArmor. Either restarting the processes or rebooting will fix this.
 
 
You can also apply a profile to an already running process by issuing the following command:
 
You can also apply a profile to an already running process by issuing the following command:
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo sh -c "echo 'setprofile /path/to/bin' > /proc/pid/attr/current"
 
sudo sh -c "echo 'setprofile /path/to/bin' > /proc/pid/attr/current"
 
</nowiki></pre>
 
</nowiki></pre>
 
 
[[Anchor(newprofile)]]
 
[[Anchor(newprofile)]]
 
== Creating a new profile ==
 
== Creating a new profile ==
 
 
=== Design a test plan ===
 
=== Design a test plan ===
 
 
Try to think about how the application should be exercised. The test plan should be divided into small test cases. Each test case should have a small description and list the steps to follow.
 
Try to think about how the application should be exercised. The test plan should be divided into small test cases. Each test case should have a small description and list the steps to follow.
 
 
Some standard test cases are :
 
Some standard test cases are :
 
* starting the program
 
* starting the program
第188行: 第126行:
 
* reloading the program
 
* reloading the program
 
* testing all the command supported by the init script
 
* testing all the command supported by the init script
 
 
=== Generate the new profile ===
 
=== Generate the new profile ===
 
 
Use ''aa-genprof'' to generate a new profile.
 
Use ''aa-genprof'' to generate a new profile.
 
 
From a terminal, use the command ''aa-genprof'':
 
From a terminal, use the command ''aa-genprof'':
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-genprof executable
 
sudo aa-genprof executable
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Example:
 
Example:
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-genprof slapd
 
sudo aa-genprof slapd
 
</nowiki></pre>
 
</nowiki></pre>
 
 
The man page has more information: <code><nowiki>man aa-genprof</nowiki></code>.
 
The man page has more information: <code><nowiki>man aa-genprof</nowiki></code>.
 
 
=== Include your new profile in apparmor-profiles package ===
 
=== Include your new profile in apparmor-profiles package ===
 
 
To get your new profile included in the apparmor-profiles package, file a bug in Launchpad against the [https://bugs.launchpad.net/ubuntu/+source/apparmor/+filebug AppArmor package]:
 
To get your new profile included in the apparmor-profiles package, file a bug in Launchpad against the [https://bugs.launchpad.net/ubuntu/+source/apparmor/+filebug AppArmor package]:
** Include your test plan and testcases.
+
* Include your test plan and testcases.
** Attach your new profile to the bug.
+
* Attach your new profile to the bug.
 
+
 
[[Anchor(updateprofile)]]
 
[[Anchor(updateprofile)]]
 
== Update profiles ==
 
== Update profiles ==
 
 
When the program is misbehaving, audit messages are sent to the log files. The program ''aa-logprof'' can be used to scan log files for AppArmor audit messages, review them and update the profiles.
 
When the program is misbehaving, audit messages are sent to the log files. The program ''aa-logprof'' can be used to scan log files for AppArmor audit messages, review them and update the profiles.
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo aa-logprof
 
sudo aa-logprof
 
</nowiki></pre>
 
</nowiki></pre>
 
 
The man page has more information : <code><nowiki>man aa-logprof</nowiki></code>
 
The man page has more information : <code><nowiki>man aa-logprof</nowiki></code>
 
 
== Resources ==
 
== Resources ==
 
 
* [http://en.opensuse.org/AppArmor_Geeks Intro to AppArmor for Geeks] : detailed usage of apparmor.
 
* [http://en.opensuse.org/AppArmor_Geeks Intro to AppArmor for Geeks] : detailed usage of apparmor.
 
* [http://outflux.net/blog/archives/2007/04/02/apparmor-now-in-feisty/ AppArmor now in Feisty] : small tutorial about generating a new profile for evince.
 
* [http://outflux.net/blog/archives/2007/04/02/apparmor-now-in-feisty/ AppArmor now in Feisty] : small tutorial about generating a new profile for evince.
 
 
----
 
----
 
[[category:CategoryDocumentation]]
 
[[category:CategoryDocumentation]]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2007年11月30日 (五) 16:05的版本

Introduction

AppArmor is a Linux Security Module implementation of name-based access controls. AppArmor confines individual programs to a set of listed files and posix 1003.1e draft capabilities. AppArmor was first made available to Ubuntu in Ubuntu 7.04 in Universe.

Installation

Ubuntu 7.10 (Gutsy)

AppArmor is installed and loaded by default in Gutsy. Some packages will install their own profiles. Additional profiles can found in the package apparmor-profiles from the Universe repository.

Install additional AppArmor profiles

  • Enable the Universe repository.
  • Install apparmor-profiles. See InstallingSoftware.

Ubuntu 7.04 (Feisty)

AppArmor is not included by default in the Feisty kernel. It needs to be compiled manually.

  • Enable the Universe repository.
  • Install apparmor-modules-source and module-assistant packages. See InstallingSoftware.
  • Compile the apparmor kernel module :
sudo m-a -v -t prepare
sudo m-a -v -t -f build apparmor-modules
sudo m-a -v -t install apparmor-modules
  • Install apparmor-profiles, apparmor-utils and apparmor packages. See InstallingSoftware.

Installing the latest version

To install the latest apparmor packages on feisty, the packages have to be rebuilt. See latest apparmor utilities for feisty (LP #116627).

Kernel upgrade / apparmor-module-source upgrade

When a new kernel is installed or when a new version of apparmor-module-source is installed, the apparmor module has to be recompiled :

sudo m-a -v -t -f build apparmor-modules
sudo m-a -v -t install apparmor-modules

In order to make sure that all running processes are protected, the system has then to be rebooted.

Usage

All the commands should be executed from a terminal.

List the current status of apparmor

sudo apparmor_status

Put a profile in complain mode

sudo aa-complain /path/to/bin

Example:

sudo aa-complain /bin/ping

Put all profiles into complain mode

sudo aa-complain /etc/apparmor.d/*

Put a profile in enforce mode

sudo aa-enforce /path/to/bin

Example:

sudo aa-enforce /bin/ping

Put all profiles in enforce mode

sudo aa-enforce /etc/apparmor.d/*

Disable AppArmor framework

sudo /etc/init.d/apparmor kill
sudo update-rc.d -f apparmor remove

Enable AppArmor framework

sudo /etc/init.d/apparmor start
sudo update-rc.d apparmor start 37 S .

Reload all profiles

sudo /etc/init.d/apparmor reload

Reload one profile

cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r

Example:

cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -r

Disable one profile

ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/profile.name

Example:

ln -s /etc/apparmor.d/bin.ping /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/bin.ping

Enable one profile

By default, profiles are enabled (ie loaded into the kernel and applied to processes).

rm /etc/apparmor.d/disable/profile.name
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

Example:

rm /etc/apparmor.d/disable/bin.ping
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -a

Profile customization

Profiles can found in /etc/apparmor.d. Some customization can be made in /etc/apparmor.d/tunables/

Set home directories location

The location of home directories can be tuned in /etc/apparmor.d/tunables/home.

FAQ

apparmor_status reports processes that are unconfined but have a profile defined

Restart the listed processes. Rebooting will also fix the problem. AppArmor can only track and protect processes that are started after the kernel module has been loaded. After the apparmor packages have been installed, apparmor will be started. But running processes won't be protected by AppArmor. Either restarting the processes or rebooting will fix this. You can also apply a profile to an already running process by issuing the following command:

sudo sh -c "echo 'setprofile /path/to/bin' > /proc/pid/attr/current"

Anchor(newprofile)

Creating a new profile

Design a test plan

Try to think about how the application should be exercised. The test plan should be divided into small test cases. Each test case should have a small description and list the steps to follow. Some standard test cases are :

  • starting the program
  • stopping the program
  • reloading the program
  • testing all the command supported by the init script

Generate the new profile

Use aa-genprof to generate a new profile. From a terminal, use the command aa-genprof:

sudo aa-genprof executable

Example:

sudo aa-genprof slapd

The man page has more information: man aa-genprof.

Include your new profile in apparmor-profiles package

To get your new profile included in the apparmor-profiles package, file a bug in Launchpad against the AppArmor package:

  • Include your test plan and testcases.
  • Attach your new profile to the bug.

Anchor(updateprofile)

Update profiles

When the program is misbehaving, audit messages are sent to the log files. The program aa-logprof can be used to scan log files for AppArmor audit messages, review them and update the profiles.

sudo aa-logprof

The man page has more information : man aa-logprof

Resources