この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 28349|答える: 4

[Linux] LinuxにおけるSELinuxとは何かを徹底的に理解すること

[リンクをコピー]
掲載地 2019/07/05 11:25:50 | | | |
1. 前文

セキュリティ強化Linux(SELinux)はLinuxカーネルモジュールであり、Linuxのセキュリティサブシステムです。

SELinuxは主にNSAによって開発されました。 Linuxカーネル2.6以降はすでにSELinuxモジュールを統合しています。

SELinuxは非常に複雑で、覚えるのが難しい概念的な部分が多いです。 多くのLinuxシステム管理者は、SELinuxが面倒だと感じてオフにしています。

SELinuxを習得し正しく使えれば、システム全体がほぼ「壊れない」状態に到達できると思います(絶対的な安全は存在しないことを常に忘れないでください)。

SELinuxの基本概念と簡単な設定手法を習得することは、すべてのLinuxシステム管理者にとって必須のコースです。

この記事はCentOS 7.4.1708に基づいています。

この記事はあくまで個人的な学び体験の共有と交換のためのものです。間違いは避けられませんが、あくまで参考にしてください! もし間違いを見つけたら、ぜひ指摘してください。どうもありがとうございます!

2. SELinuxの役割と許可管理メカニズム

2.1 SELinuxの役割

SELinuxの主な機能は、システム内のサービスプロセスがアクセスできるリソースを最小化することです(最小権限の原則)。

もしrootとして動作するネットワークサービスに0day脆弱性があれば、ハッカーはこの脆弱性を利用して、rootとしてあなたのサーバー上で好きなことをできると想像してください。 怖くない?

SELinuxはこの問題を解決するためにここにいます。

2.2 DAC

SELinuxを使わないオペレーティングシステムでは、リソースへのアクセス可能かどうかを決める要素は、対応するユーザーの権限(読み込み、書き込み、実行)を持っているかどうかです。

このリソースにアクセスするプロセスが上記の条件を満たしていれば、アクセス可能です。

最も致命的な問題は、ルートユーザーが規制の対象外であり、システム上のリソースに制限なくアクセスできることです。

この権限管理機構の主な役割はユーザー、すなわち自律アクセス制御(DAC)です。

2.3 MAC

SELinuxを使用するオペレーティングシステムでは、リソースへのアクセス可能かどうかを決定する要因は上記の要素だけでなく、各タイプのプロセスが特定のリソースにアクセスできるかどうかも含まれます。

このようにして、たとえプロセスがrootとして実行されていても、アクセス許可を決める前に、プロセスの種類やアクセス可能なリソースの種類を決定する必要があります。 プロセスのアクティブスペースも最小限に圧縮できます。

ルートとして動作するサービスプロセスでさえ、必要なリソースしかアクセスできません。 たとえプログラムが脆弱であっても、その影響範囲はアクセス許可されているリソースに限定されます。 セキュリティが大幅に強化されます。

この権限管理メカニズムの主な部分はプロセスであり、必須アクセス制御(MAC)とも呼ばれます。

MACは2つのモードに細分されており、1つはカテゴリーセキュリティ(MCS)モード、もう1つはマルチレベルセキュリティ(MLS)モードと呼ばれます。

以下の操作はMCSモードで行われます。

2.4 DACとMACの比較

こちらが図示用の写真です。



ご覧の通り、DACモードでは対応するディレクトリに対応するユーザーの権限があればアクセス可能です。 MACモードでは、プロセスがアクセスできるディレクトリの範囲にも制限があります。

3. SELinuxの基本概念

3.1 対象

それは完全にプロセスと同一視されることもあります。

注:特に明記がない限り、このプロセスは以下の本文とみなします。

3.2 目的

校長がアクセスするリソース。 ファイル、ディレクトリ、ポート、デバイスなどが何であれます。

注:特に明記がない限り、理解しやすくするために、以下の文書またはディレクトリは対象物とみなされます。

3.3 方針と規則

システム内には通常多数のファイルやプロセスがあり、時間とオーバーヘッドを節約するために、特定のプロセスのみを選択的に規制します。

どのプロセスを規制し、どのように管理するかは政策によって決まります。

ポリシーには複数のルールがあります。 必要に応じて有効または無効化できるルールもあります(以下、ブールルールと呼びます)。

ルールはモジュール式で拡張可能です。 新しいアプリケーションをインストールする際、アプリケーションは新しいモジュールを追加してルールを追加できます。 ユーザーは手動でルールを追加・削除することも可能です。

CentOS 7システムには、以下の3つのポリシーセットがあります。

1. ターゲット:ほとんどのネットワークサービスプロセスを制御。 これはシステムがデフォルトで使用するポリシーです(以下すべてが使用されています)。

2. 最小限:ターゲットに基づき、選ばれたネットワークサービスプロセスのみが規制されます。 一般的にはそうではありません。

3. MLS:多層セキュリティ保護。 すべてのプロセスを規制する。 これが最も厳しい方針であり、設定は非常に難しいです。 一般的に、非常に高いセキュリティ要件がある場合を除き、使用されません。

ポリシーは /etc/selinux/config で設定できます。

3.4 セキュリティコンテキスト

セキュリティコンテキストはSELinuxの中心にあります。

セキュリティコンテキスト:私はこれを「プロセスセキュリティコンテキスト」と「ドキュメントセキュリティコンテキスト」に分けています。

プロセスセキュリティコンテキストは通常、複数のドキュメントセキュリティコンテキストに対応します。

両者のセキュリティコンテキストが対応している場合にのみ、プロセスはファイルにアクセスできます。 彼らのやり取りは保険契約のルールによって決まります。

ファイルセキュリティのコンテキストは、ファイルが作成された場所と作成プロセスによって決まります。 システムにはデフォルト設定があり、ユーザーはそのデフォルト値を設定できます。

ファイルを単に移動するだけでは、ファイルのセキュリティコンテキストが変わるわけではないことに注意が必要です。

セキュリティコンテキストの構造と意味

セキュリティコンテキストは4つのフィールドで構成され、コロンで区切られています。 例えば:system_u:object_r:admin_home_t:s0のような形です。


3.5 SELinux作業モード

SELinuxには3つの動作モードがあります。すなわち:

1. 強制:強制方式。 SELinuxルール違反はブロックされ、ログに記録されます。

2. 許容:寛容モード。 SELinuxルール違反はログにのみ記録されます。 一般的にはデバッグ用です。

3. 無効化:SELinuxをオフにする。

SELinuxの動作モードは/etc/selinux/configで設定できます。

無効化から強制または許可に切り替えたい場合は、システムを再起動する必要があります。 その逆もまた然りです。

強制モードと許可モードは、Setenforce 1|0コマンドで素早く切り替えることができます。

SELinuxをオフにしてしばらく稼働している場合、SELinuxをオンにした後の最初の再起動は遅くなることがあります。 システムがディスク上のファイルの安全なコンテキストを作成しなければならないからです(約10分間再起動して死んだと思ったと言いました...... )。

SELinuxのログはauditd.serviceの助けを借りて記録する必要があります。無効化しないでください。

3.6 SELinux ワークフロー

ここに、あまり説明のない写真からの引用があります。



注:上記のセキュリティテキストはセキュリティコンテキストを指しています。

4. 基本的なSELinux操作

4.1 ファイルやディレクトリのセキュリティコンテキストを問い合わせる

コマンドの基本用法

ls -Z

使用例

/etc/hostsのセキュリティコンテキストをクエリしてください。

ls -Z /etc/hosts

実行結果

-r-r-r--. ルートルート system_u:object_r:net_conf_t:s0 /etc/hosts

4.2 プロセスのセキュリティコンテキストを問い合わせる

コマンドの基本用法

ps auxZ | グレップ -V グレップ | グレップ

使用例

Nginx関連プロセスのセキュリティコンテキストを問い合わせてください。

ps auxZ | グレップ -V グレップ | グレップ・ンギンクス

実行結果

system_u:system_r:httpd_t:s0 ルート 7997 0.0 0.0 122784 2156 ? SS 14:31 0:00 nginx: マスタープロセス /usr/sbin/nginx

system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: ワーカープロセス

4.3 ファイルやディレクトリのセキュリティコンテキストを手動で変更する

コマンドの基本用法

CHCON [...]

オプション関数 -u セキュリティコンテキストのユーザーフィールドを修正 -r セキュリティコンテキストの役割フィールドを修正 -t セキュリティコンテキストのタイプフィールドを修正 -l セキュリティコンテキストのレベルフィールドを修正 --参照 指定ファイルまたはディレクトリに整合したセキュリティコンテキストを修正 -R 再帰操作 -h ソフトリンクのセキュリティコンテキストを修正(このオプションなしで対応するソフトリンクのファイルを修正)

使用例

テストのセキュリティコンテキストをaaa_u:bbb_r:ccc_t:s0に変更します。

chcon -u aaa_u -r bbb_r -t ccc_t テスト

4.4 ファイルやディレクトリのセキュリティコンテキストをデフォルトの値に戻す

コマンドの基本用法

restorecon [オプション] [...]

オプション関数 - V プリント操作手順 - R 再帰操作

使用例

Nginxサーバーのディレクトリにウェブファイルを追加した後、これらの新しいファイルに対して正しいセキュリティコンテキストを設定してください。

restorecon -R /usr/share/nginx/html/

4.5 クエリブールルールとそのシステム内でのステータス

コマンドの基本用法

ゲッツェブール -a

コマンドはすべてのルールまたは1つのルールのみを問い合わせるため、通常はまずすべてのルールを問い合わせ、その後grepでフィルタリングします。

使用例

httpdに関連するブールルールをクエリします。

ゲッツボール -a | grep httpd

実行結果

httpd_anon_write――>

httpd_builtin_scripting――>

httpd_can_check_spam――>

httpd_can_connect_ftp――>

#以下省略

4.6 ブールルールの切り替え

コマンドの基本用法

Setsebool [オプション]

オプション機能 -P 再起動は依然として有効です

使用例

ルールhttpd_anon_write入れましょう。

setsebool -P httpd_anon_write on

4.7 ディレクトリのデフォルトセキュリティコンテキストの追加

コマンドの基本用法

semanage fcontext -a -t "(/.*)?"

注:ディレクトリやファイルのデフォルトのセキュリティコンテキストは、semanage fcontext -lコマンドとgrepフィルタリングを組み合わせて確認できます。

使用例

新しいサイトディレクトリ /usr/share/nginx/html2 を Nginx に追加した後は、元のディレクトリと同じデフォルトのセキュリティコンテキストを設定する必要があります。

Semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"

4.8 特定の種類のプロセスで許可されるポートの追加

コマンドの基本用法

Semanage port -a -t -p

注:さまざまなサービスタイプで許可されるポート番号は、semanageポート-lコマンドとgrepフィルタリングで確認できます。

使用例

Nginxの場合はHTTPサービス用にポート10080を使う必要があります。

Semanage port -a -t http_port_t -p TCP 10080

5. SELinux誤差解析と解決

5.1 SELinuxログの理解

SELinuxが有効になると、多くのサービスの通常の動作が違反と見なされます(タイトルや以下の誤りの両方に記載されています)。

現時点では、SELinux違反ログを使ってそれらを分析し解決する必要があります。

SELinux違反ログは/var/log/audit/audit.logに保存されます。

/var/log/audit/audit.log 的内容大概是这样的。

type=LOGIN msg=audit(1507898701.391:515): PID=8523 uiD=0 subj=system_u:system_r:crond_t:S0-S0:C0.C1023 Old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=25 res=1

type=USER_START msg=audit(1507898701.421:516): PID=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_ keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" hostname=? addr=? terminal=cron res=success'

...

ファイルは大量のコンテンツで、SELinuxエラーとは関係のないシステム監査ログも混ざっています。 分析のためにsealertユーティリティを使います(プロンプトでコマンドが見つからない場合は、setroubleshootパッケージをインストールしてください)。

5.2 sealertによる誤差分析

コマンドの基本用法

Sealert -a /var/log/audit/audit.log

コマンドを実行した後、システムはログ内の違反を分析し、分析レポートを提供するために時間をかける必要があります。




先の:CentOS7を表示してファイアウォールをオフにする
次に:HDFSのJava APIインターフェースアクセスをマスターしてください
 地主| 掲載地 2021/07/22 17:17:58 |
SELinuxをオフにしてください

GetenForce #查看是否是 無効化しなければ、以下のコマンドを実行してください
vim /etc/selinux/config
SELINUX=enforceingをSELINUX=disabledに変更し、セーブして終了します
 地主| 掲載地 2021/10/15 13:21:42 |
 地主| 掲載地 2021/10/15 14:22:40 |
スワップパーティションスワップを無効にしてください

 地主| 掲載地 2024/09/03 14:16:43 |
SELINUXを閉じる





免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com