問題タブ [linux-security-module]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-kernel - Linux Security Module をカーネル 2.6 に登録するには?
カーネル ubuntu 2.6.36 で LSM フレームワークを使用したいと考えています。
カーネル モジュールをコンパイルすると、次のように書かれていました。
警告: "register_security " 未定義!
多くのグーグル検索の後、その理由は、register_security()
シンボルが 2.6 カーネルでエクスポートされなくなったためであることがわかりました。
そこでEXPORT_SYMBOL(register_security)
、../security/security.c ファイルに追加し、カーネルを再コンパイルしました。
extern int register_security(struct security_operations *ops)
新しいカーネルで起動した後、カーネル モジュール ファイルを追加し、モジュールを再度コンパイルしました。ただし、WARNING 情報はまだ存在していました。insmode
モジュールに進むとdmesg
、
不明なシンボル register_security
私は何をすべきか?Linux セキュリティ モジュールを登録するにはどうすればよいですか?
compilation - LSM-Howto: エクスポートされていない関数を含むカーネルモジュール
現在、Linux セキュリティ モジュール (LSM) に依存する Linux カーネル モジュールを作成していますが、現時点では何もありません。ファイルが開かれるたびに簡単なメッセージを出力したかっただけです。問題は次のとおりです。フックに登録するには、関数 register_security が必要です。これは、グーグルで調べた後にわかりましたが、もうエクスポートされていないため、ロード可能なカーネルモジュールでは使用できません-カーネルに直接コンパイルされたモジュールでのみ使用できます. もちろん、これはセキュリティモジュールにとっては理にかなっていますが、開発している私にとっては最悪です。さて、あなたへの質問: 私のモジュールをカーネルにパッチする方法はありますか? つまり、バグ修正や小さな変更のたびにカーネルを再コンパイルしたくありません。新しい試行ごとにPCを再起動することで生活できますが、再コンパイルには少し時間がかかると思います..
編集:うーん、まだ誰も:(私はちょうどアイデアを持っていました.それが良いかどうか誰かが教えてくれるかもしれません.必要な関数のカーネルソースにEXPORT_SYMBOLを追加してから、再コンパイルしてから追加してください.モジュールとしてのコード? もちろん、これはテストとデバッグのためだけのものです
linux - カーネル セキュリティ モジュール: 構造体 inode の i_security
私の質問はおそらく非常に単純ですが、何も見つかりませんでした。Linux セキュリティ モジュールを作成しています。ご存知かもしれませんが、カーネルの struct inode には、LSM のセキュリティ関連情報を保存するための i_security フィールドが 1 つあります。ここで確認しておきましょう: どのユーザー (root でさえも) がこの値を読み書きできないと仮定しても安全でしょうか?つまり、この値は本当にカーネル空間からしかアクセスできないのでしょうか?
私の質問の理由は、一部の inode データがユーザー空間からアクセスできることは明らかだからです (私が推測するシステムコールを介して、しかしまだ chmod などを使用して、inode のいくつかの値を変更することができます)。つまり、すべての inode データ (i_security も) が何らかの方法でユーザー空間からアクセスできるということではありません。
乾杯
linux-security-module - Linux モジュール: タスクの作成と破棄に関する通知
Linux で Mach カーネル API エミュレーションを行うには、タスクの作成直後または終了時にカーネル モジュールが呼び出されるようにする必要があります。
私のカーネル モジュールでは、Linux セキュリティ モジュールを介してこれを行うのが最もうまくいきましたが、数年前、必要なシンボルをアンエクスポートすることで、外部モジュールが LSM として機能するのを防いでいました。
私が見つけた他の唯一の方法は、モジュールをルートキットのように動作させることでした。syscall テーブルを見つけてそこにフックします。
カーネルにパッチを当てることは問題外です。アプリを簡単にインストールする必要があります。他に方法はありますか?
linux - 新しい Linux カーネル、lkms を使用する lsm なし、カーネル フックなし。
セキュリティ上の理由から、バージョン 2.6.24 以降、カーネルは、ロード可能なカーネル モジュール (Linux Kernel Module、LKM) の形式でセキュリティ モジュールを作成するために必要な文字をエクスポートしなくなりました。
sys_call_table
また、セキュリティ上の理由から、エクスポートすることはできません。
しかし、どうすればファイルシステムリクエストをフィルタリングできますか?
簡単に言うと、「open」関数をフックしたいのです。
独自のバージョンのカーネルをコンパイルする必要はありません。ドライバのポイントは何ですか? すべてのカーネルで機能するはずです。
Linux を使えば Windows よりも自由になれると思っていたのですが、今では人生の最も貴重な部分が Linux でブロックされていることがわかります。
linux - Linux Security Module を使用したセキュリティ ソフトウェアはありますか?
LSM(Linux Security Module) はカーネル 2.6 で使用されました。カーネルが 4.x になりましたが、まだ LSM を使用しているものがあるかどうかわかりません。最新のカーネルは LSM のサポートを放棄していますか?
c - LSM - セキュリティ BLOB とメジャー/マイナー ユース ケース
現在、Linux LSM (カーネル 4.3.5) のソース コードをアップグレードして、Linux カーネルの最新バージョンと互換性を持たせています。
コードを正常に更新したので、GCC コンパイラは正常にコンパイルされますが、カーネルは起動しません。
この時点まで、モジュールの定義で LSM MAJOR フラグまたは EXCLUSIVE フラグを使用していませんでしたが、動作していないカーネルを起動すると、SMACK および SELinux (どちらがメジャーとして選択されているかによって異なります) がエラーになり、トレースで kmem_cache_free に言及します。私の理解では、このため、私の LSM はレガシー メジャーおよび排他的として実装する必要があります。これは、SMACK や Selinux が私の LSM とうまく連携していないためです。(注意として、SMACK と Selinux はどちらも排他的およびレガシーのメジャー フラグを使用します)
私が開発している LSM は、xattrs を使用してルールを inode に保存し、LSM はルールに基づいて inode を仲介します。
私が読んだすべてのドキュメントで、セキュリティ blob がポップアップし続けています。今では、それらはカーネル データ構造であり、inode にのみアクセスしている場合は実装する必要はないということです。
kmem_cache_create()
LSM は、SELinux も 4.3.5 カーネル バージョンで使用したカーネル キャッシュを使用しますが、これはセキュリティ blob ですか?
要点をまとめると:
このコンテキストでのメジャー LSM またはマイナー LSM の使用例は何ですか?
セキュリティ BLOB は の使用に取って代わります
kmem_cache_create()
か?