「SELinux」の版間の差分

提供: セキュリティ
移動: 案内検索
 
(同じ利用者による、間の12版が非表示)
行1: 行1:
<!--
+
[[SELinux]] は、[[Linuxカーネル]] に [[強制アクセス制御]] (MAC) 機能を付加するモジュールです。[[SELinux]] は、[[セキュアOS]]です。
vim: filetype=mediawiki
+
-->
+
[[SELinux]] は、[[Linux]] [[カーネル]] に [[強制アクセス制御]] (MAC) 機能を付加するモジュールです。
+
  
読み方
+
'''読み方'''
 
;[[SELinux]]: えすぃーりなっくす
 
;[[SELinux]]: えすぃーりなっくす
 
;Security-Enhanced Linux: せきゅりてぃ えんはんすど りなっくす
 
;Security-Enhanced Linux: せきゅりてぃ えんはんすど りなっくす
行10: 行7:
  
 
== 概要 ==
 
== 概要 ==
 +
[[SELinux]] は、[[Linuxカーネル]] に [[強制アクセス制御]] (MAC) 機能を付加するモジュールです。
  
[[SELinux]] は、[[Linux]] [[カーネル]] に [[強制アクセス制御]] (MAC) 機能を付加するモジュールです。
+
[[Unix]] のシステムは、ディレクトリやファイルなどのリソースに対するアクセス制御は、パーミッションで行われます。パーミッションは、[[任意アクセス制御]] (DAC) と呼ばれます。
 
+
[[Unix]] のシステムは、ディレクトリやファイルなどのリソースに対するアクセス制御は、パーミッションで行われます。
+
 
パーミッションは、オーナー、グループ、その他に対して、rwx(読み、書き、実行) を設定します。
 
パーミッションは、オーナー、グループ、その他に対して、rwx(読み、書き、実行) を設定します。
 
[[root]] ユーザは、パーミッションの制限を受けることなく、あらゆるリソースにアクセスできるため、 [[Linux]] を含む [[Unix]] 系の OS では、 [[root]] ユーザに権限が集中し過ぎているといえます。
 
[[root]] ユーザは、パーミッションの制限を受けることなく、あらゆるリソースにアクセスできるため、 [[Linux]] を含む [[Unix]] 系の OS では、 [[root]] ユーザに権限が集中し過ぎているといえます。
行23: 行19:
 
; [[ロールベースアクセス制御]](RBAC): [[root]]ユーザを含むすべてのユーザに制限をかける
 
; [[ロールベースアクセス制御]](RBAC): [[root]]ユーザを含むすべてのユーザに制限をかける
  
 +
== SELinux の アクセス制御 ==
 +
[[SELinux]] の '''アクセス制御'''
 +
 +
* [[強制アクセス制御]] (MAC, Mandatory Access Control)
 +
* [[最小特権]]
 +
** TE ([[Type Enforcement]])
 +
** [[ドメイン遷移]]
 +
** [[ロールベースアクセス制御]] (RBAC, Role Base Access Control)
 +
* 監査ログ ( [[SELinuxの監査ログ]] )
 +
== SELinux では防げないもの ==
 +
* 設定の不備
 +
* 付与された権限内での破壊活動
 +
* 過大な権限を付与したユーザによる不正行為
 +
* 脆弱なパスワードの設定による「なりすまし行為」
 +
* システムやアプリケーションの脆弱性への攻撃
 +
* [[DoS攻撃]]
 
== インストール ==
 
== インストール ==
 
+
[[SELinux]] は、あらかじめインストールされている場合があります。
[[SELinux]] は、OSに組み込まれています。
+
* [[SELinux を Ubuntu にインストールする]]
 
+
== 使い方 ==
+
 
+
=== SELinux の動作状況を確認する ===
+
 
+
<syntaxhighlight lang="bash">
+
% getenforce
+
</syntaxhighlight>
+
 
+
[[getenforce]] で表示されるモードの意味は、下記の通りです。
+
  
 
{|class="wikitable"
 
{|class="wikitable"
|+ SELinux の動作状況
+
|+ OSとSELinux
!モード
+
! ディストリビューション
!説明
+
! どのように入れるか
|-
+
|-
|Enforcing
+
| Red Hat Enterprise Linux (4+)
|SELinux機能は有効でアクセス制御も有効です。
+
| デフォルト
|-
+
|-
|Permissive
+
| CentOS
|SElinuxはwarningを出すが、アクセス制限は行われません。
+
| デフォルト
|-
+
|-
|disabled
+
| Fedora (2+)
|SElinux機能・アクセス制御ともに無効です
+
| デフォルト
|}
+
|-
 +
| Ubuntu
 +
| インストール
 +
|-
 +
| Debian
 +
| アドオン
 +
|-
 +
| Gentoo
 +
| インストール
 +
|}
 +
== セキュリティコンテキストとファイルシステム ==
 +
[[SELinux]] の [[SELinuxのセキュリティコンテキスト|セキュリティコンテキスト]] は、ファイルシステムの拡張属性(EXtended Attribute, xattr) に保存されます。
  
[[sestatus]] は、 [[SELinux]] ステータスツールです。
+
ext2, ext3, ext4, jff2 などの [[ファイルシステム]] が拡張属性をサポートしています。
 +
== SELinux のモード ==
 +
* [[SELinuxのモード]]
 +
** [[sestatus]]
 +
**: [[SELinux]] のステータスの確認
 +
** [[getenforce]]
 +
**:  動作モードの確認
 +
** [[setenforce]]
 +
**:  動作モードの変更
 +
** [[/etc/selinux/config]]
 +
**: 設定ファイル
 +
== SELinux の設定 ==
 +
* [[SELinuxの設定ファイル]]
 +
** [[/etc/selinux/config]]
 +
* SELinuxのポリシーファイル
 +
* [[SELinuxのセキュリティコンテキスト]]
 +
== ラベル ==
 +
* [[SELinux]] が無効のときに、作成されたファイルには、ラベルが設定されません。
 +
== ラベルの再設定 ==
 +
起動時にファイルシステム全体にラベルが設定されます。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ sestatus
+
sudo touch /.autorelabel
SELinux status:                enabled
+
sudo shutdown -r now
SELinuxfs mount:                /selinux
+
Current mode:                  enforcing
+
Mode from config file:          error (Success)
+
Policy version:                24
+
Policy from config file:        targeted
+
</syntaxhighlight>
+
 
+
=== SELinux をEnforcingモードにする ===
+
 
+
[[setenforce]] コマンドを使用します。
+
<syntaxhighlight lang="bash">
+
% sudo setenforce 1
+
</syntaxhighlight>
+
 
+
=== SELinux を Permissive モードにする ===
+
 
+
[[setenforce]] コマンドを使用します。
+
<syntaxhighlight lang="bash">
+
% sudo setenforce 0
+
</syntaxhighlight>
+
 
+
=== SELinux の設定ファイル ===
+
 
+
[[SELinux]] の設定ファイルは、 /etc/selinux/config です。
+
/etc/sysconfig/selinux は、 /etc/selinux/config への[[シンボリックリンク]]です。
+
 
+
=== SELinux の設定 ===
+
 
+
[[SELinux]] の設定は、 /etc/selinux/config で行います。
+
 
+
[[SELinux]] を有効にする。
+
<syntaxhighlight lang="bash">
+
SELINUX=enforcing
+
</syntaxhighlight>
+
 
+
[[SELinux]] を無効にする。
+
<syntaxhighlight lang="bash">
+
SELINUX=disable
+
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
== SELinuxのログ ==
 +
SELinuxには、拒否ログと監査ログの2つがあります。
 +
;拒否ログ:SELinuxの設定で許可されていないアクセスに対して、出力されるログです。
 +
;[[SELinuxの監査ログ]]:SELinuxの設定で「アクセスの証跡を残す」設定がされているアクセスに対して、出力されるログです。
  
 +
拒否ログは、不正なアクセスの検知に利用できます。
 +
== 使い方 ==
 
=== ファイルやディレクトリのセキュリティコンテキストの確認方法 ===
 
=== ファイルやディレクトリのセキュリティコンテキストの確認方法 ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
$ ls -Z /etc/hosts.allow
 
$ ls -Z /etc/hosts.allow
行110: 行109:
 
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 17377 pts/7 S+  0:00 fgrep auditd
 
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 17377 pts/7 S+  0:00 fgrep auditd
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== コマンド ===
 
=== コマンド ===
 
+
* selinuxconlist
* [[selinuxconlist]]
+
* secon
* [[secon]]
+
* chcon
  
 
* [[sestatus]]
 
* [[sestatus]]
行120: 行118:
 
* [[setenforce]]
 
* [[setenforce]]
  
* [[setsebool]]
+
* setsebool
  
== 関連項目 ==
+
* sealert
 +
* semanage
  
 +
* audit2allow
 +
* ausearch
 +
 +
* semodule
 +
== 関連項目 ==
 
* [[SELinuxのモード]]
 
* [[SELinuxのモード]]
 
* [[Linux]]
 
* [[Linux]]
* [[パーミッション]]
+
* パーミッション
 
* [[強制アクセス制御]]
 
* [[強制アクセス制御]]
 +
 +
* [[SELinux Policy Editor]] (SEEdit)
 +
* SETroubleShoot
 +
 +
* [[auditd]]
 +
* [[syslog]]
 +
* [[Linux Security Modules]] (LSM)
 +
* [[Access Vector Cache]] (AVC)
 +
 +
* [[セキュアOS]]
 +
 +
* Multi Level Security (MLS)
 +
* Multi Category Security (MCS)
 +
<!-- vim: filetype=mediawiki
 +
-->

2015年9月22日 (火) 21:04時点における最新版

SELinux は、Linuxカーネル強制アクセス制御 (MAC) 機能を付加するモジュールです。SELinux は、セキュアOSです。

読み方

SELinux
えすぃーりなっくす
Security-Enhanced Linux
せきゅりてぃ えんはんすど りなっくす

概要

SELinux は、Linuxカーネル強制アクセス制御 (MAC) 機能を付加するモジュールです。

Unix のシステムは、ディレクトリやファイルなどのリソースに対するアクセス制御は、パーミッションで行われます。パーミッションは、任意アクセス制御 (DAC) と呼ばれます。 パーミッションは、オーナー、グループ、その他に対して、rwx(読み、書き、実行) を設定します。 root ユーザは、パーミッションの制限を受けることなく、あらゆるリソースにアクセスできるため、 Linux を含む Unix 系の OS では、 root ユーザに権限が集中し過ぎているといえます。 root ユーザのパスワードの漏えいは、致命的な被害を及ぼす可能性をもたらします。

SELinux では、以下の制限を設け、root ユーザの権限の集中を防ぎ、堅牢なシステム構築を目指しています。

Teyp Enforcement (TE)
プロセスごとのアクセス制御
ロールベースアクセス制御(RBAC)
rootユーザを含むすべてのユーザに制限をかける

SELinux の アクセス制御

SELinuxアクセス制御

SELinux では防げないもの

  • 設定の不備
  • 付与された権限内での破壊活動
  • 過大な権限を付与したユーザによる不正行為
  • 脆弱なパスワードの設定による「なりすまし行為」
  • システムやアプリケーションの脆弱性への攻撃
  • DoS攻撃

インストール

SELinux は、あらかじめインストールされている場合があります。

OSとSELinux
ディストリビューション どのように入れるか
Red Hat Enterprise Linux (4+) デフォルト
CentOS デフォルト
Fedora (2+) デフォルト
Ubuntu インストール
Debian アドオン
Gentoo インストール

セキュリティコンテキストとファイルシステム

SELinuxセキュリティコンテキスト は、ファイルシステムの拡張属性(EXtended Attribute, xattr) に保存されます。

ext2, ext3, ext4, jff2 などの ファイルシステム が拡張属性をサポートしています。

SELinux のモード

SELinux の設定

ラベル

  • SELinux が無効のときに、作成されたファイルには、ラベルが設定されません。

ラベルの再設定

起動時にファイルシステム全体にラベルが設定されます。

sudo touch /.autorelabel
sudo shutdown -r now

SELinuxのログ

SELinuxには、拒否ログと監査ログの2つがあります。

拒否ログ
SELinuxの設定で許可されていないアクセスに対して、出力されるログです。
SELinuxの監査ログ
SELinuxの設定で「アクセスの証跡を残す」設定がされているアクセスに対して、出力されるログです。

拒否ログは、不正なアクセスの検知に利用できます。

使い方

ファイルやディレクトリのセキュリティコンテキストの確認方法

$ ls -Z /etc/hosts.allow
-rw-r--r--. root root system_u:object_r:etc_t:s0       /etc/hosts.allow

プロセスのコンテキスト。

$ ps axZ |fgrep auditd
system_u:system_r:kernel_t:s0     467 ?        S      0:01 [kauditd]
unconfined_u:system_r:auditd_t:s0 16834 ?      S<sl   0:00 auditd
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 17377 pts/7 S+   0:00 fgrep auditd

コマンド

  • selinuxconlist
  • secon
  • chcon
  • setsebool
  • sealert
  • semanage
  • audit2allow
  • ausearch
  • semodule

関連項目

  • Multi Level Security (MLS)
  • Multi Category Security (MCS)