このインストラクター主導のコースでは、Linux カーネルのセキュリティ モデルと、オペレーティング システムを保護するために使用されるメカニズムについて理解できます。
Security and the Linux Kernel (LFD441)
対象者
このコースは、Linux カーネルが提供するセキュリティ オプションについて詳しく知りたいシステム レベル プログラマーまたはカーネル エンジニア、および Linux カーネルのセキュリティ軽減策について詳しく知りたいユーザー空間開発者向けに設計されています。学習者は、Linux カーネルの構築方法、Linux カーネル モジュールの作成方法と使用方法、および基本的な Linux コマンド ラインとシステム管理のスキルを習得している必要があります。
折りたたむ
続きを読む
学習内容
このコースでは、メモリ保護、プロセス管理、システム コール、ファイル システム セキュリティなど、Linux カーネル セキュリティの基礎について説明します。受講者は、Mandatory Access Control (MAC)、Linux Security Modules (LSM)、secureboot など、Linux カーネルのさまざまなセキュリティ メカニズムについて学習します。コース全体を通して、受講者は、さまざまなセキュリティ メカニズムを通じてユーザー空間と Linux カーネルの両方を保護する実践的な経験を積むことができます。
折りたたむ
続きを読む
身につく知識
このコースの受講者は、Linux カーネルとオペレーティング システムが提供するさまざまなメカニズムとシステムを使用してシステムを保護する方法を学ぶことができます。これらのスキルは、組み込みシステムから、モバイル コンピューター、デスクトップ システム、サーバー、または仮想マシンに至るまで、あらゆるものを保護するために使用できます。
折りたたむ
続きを読む
- 対象受講者
- Linux Foundation
-著作権および機密情報なし
- Linux Foundationが提供するトレーニング
- 認定プログラムおよびデジタルバッジ
- Linuxディストリビューション
- プラットフォーム
- Linux とオープン ソース プロジェクトの進化の影響
-カーネルソースとgitの使用
- なぜ proxmox {?
- 私たちのラボ環境
- 演習
-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴはドアに置いておいてください。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
- セキュリティの種類
- 脆弱性
- 保護層
- ソフトウェアの悪用
- 演習
-ユーザースペースとカーネルスペース
-システムコールとは何ですか?
-利用可能なシステムコール
-スケジューリングアルゴリズムとタスク構造
-プロセスコンテキスト
- 演習
- __非推奨
- BUG() と BUG_ON()
-kmalloc()の計算されたサイズ
- simple_strtol() ルーチンのファミリー
--strcpy()、strncpy()、strlcpy()
--printk()%pフォーマット指定子
-可変長配列
-スイッチケースのフォールスルー
-構造体のゼロ長および1要素配列
- ASLR の使用方法
- 特定のプログラムの ASLR を無効にする
-カーネル構成
- カーネル アドレス空間レイアウトのランダム化 (KASLR)
- KASLR のしくみ
- KASLR を有効にする
- 演習
- 構造ランダム化の仕組み
- 構造の初期化
- オプトイン vs オプトアウト
- 部分ランダム化
- 構造ランダム化の有効化
- 構造のランダム化によるツリー外モジュールの構築
-随意アクセス制御(DAC)
-POSIX ACL
-POSIX機能
-名前空間
-Linuxセキュリティモジュール(LSM)
-Netfilter
-暗号化手法
-カーネル自己保護プロジェクト
- 概要
- CGroup のコンポーネント
- cgroup の初期化
- cgroup アクティベーション
- cgroups パラメータ
- cgroup のテスト
- systemd と cgroup
- 演習
-eBPF
-インストール
--bccツール
--bpftrace
- 演習
- seccomp インターフェイス
- seccomp ストリクトモード
- seccompフィルターモード
- 演習
- セキュア ブート x86
- エンベデッド システム セキュア ブート
- 演習
- 署名の基本
- モジュール署名キー
- モジュール署名検証の有効化
- 使い方
- 署名モジュール
- 演習
- 概念操作
- 操作モード
- 収集モードのテキスト{(収集して保存)
- ロギング モード textit {(評価と監査)
- Enforceing Mode textit {(鑑定と保護)
- 拡張検証モジュール (EVM)
- 演習
- dm-verity の仕組み
- dm-verity の有効化
- dm-verity のセットアップ
- dm-verity の使用
- dm-verity での署名
- dm-verity での起動
- 演習
- データ暗号化ソリューション
- ストレージ暗号化オプションの調査
- ブロック暗号化
- 暗号化の使用をブロックする
- ファイルシステムの暗号化
- ファイルシステム暗号化の使用
- 階層化されたファイルシステム暗号化
- 階層化ファイルシステム暗号化の使用
- 演習
-LSMの基本
-LSMの選択
-LSMのしくみ
- LSM の例: 山
- 演習
--SELinuxの概要
-SELinuxモード
-SELinuxポリシー
-コンテキストユーティリティ
-SELinuxおよび標準コマンドラインツール
-SELinuxコンテキストの継承と保存**
--restorecon **
--semanage fcontext **
-SELinuxブール値の使用**
--getseboolとsetsebool **
-トラブルシューティングツール
- 演習
-ステータスの確認
-モードとプロファイル
-プロファイル
-ユーティリティ
- ヤマの設定
- ヤマの仕組み
- 演習
- LoadPin を有効にする
- LoadPin の使用
- LoadPin のしくみ
- ロックダウンモード
- ロックダウンされているものは何ですか?
- 使い方
- いくつかのメモ
- 演習
- Safesetid の設定
- Safesetid の仕組み
- 演習
-Netfilterフック
-Netfilterの実装
-Netfilterに接続する
--Iptables
-nftables
- 演習
-ネットリンクソケットを開く
--netlinkメッセージ
- 演習
-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルコンポーネント
-ユーザースペースとカーネルスペース
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-オブジェクト指向の継承-一種の
-リンクリスト
-ジフィー
- 演習
-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュール ユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
- 演習
-カーネルプリエンプション
-リアルタイムプリエンプションパッチ
- 演習
-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築とMakefiles
--initrdおよびinitramfs
- 演習
-一般的なカーネルルーチンとメソッドの使用
-カーネルパッチの作成
-まばら
-possible()とlikely()の使用
-ポータブルコードの記述、CPU、32/64ビット、エンディアン
-SMPの作成
-ハイメモリシステム向けの書き込み
- パワー管理
-セキュリティを念頭に置いて
- 演習
-不可分操作
-ビット演算
-スピンロック
-Seqlocks
-プリエンプションの無効化
-ミューテックス
-セマフォ
-完了関数
-リードコピーアップデート(RCU)
-参照カウント
- 演習
-MMUとTLBがあるシステムとないシステム
-メモリアドレス
-高メモリと低メモリ
-メモリゾーン
-特別なデバイスノード
-NUMA
-ページング
-ページテーブル
-ページ構造
- 演習
- バディシステム
-スラブとキャッシュの割り当て
-メモリプール
--kmalloc()
--vmalloc()
-早期割り当てとbootmem()
-メモリの最適化
- 演習
これらのセクションは、部分的にまたは全体を
オプションとして考えることができます。これらのセクションには、
背景となる参考資料、専門的なトピック、または高度なテーマが含まれています。
講師は、教室での経験や時間の制約に応じて、
これらをカバーするかしないかを選択することができます。
前提条件
- Cプログラミング言語に精通している。
- ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに精通している。
- 利用可能なテキストエディタ(emacs、viなど)を快適に使用できます。
- 主要なLinuxディストリビューションの経験は役立ちますが、必ずしも必要ではありません。
- LFD420:Linux Kernel Internals and Developmentを取得した経験と同等の経験がある。
クラスを開始する前に、受講前の準備資料が提供されます。
2024年11月
幅広いトピックが取り上げられました。バーチャルで参加できたので、参加もずっと簡単でした。
2024年9月
実行できる例や menuconfig で試してみる機会があれば、カーネルについて学習するときに常に役立ちます。
2024年9月
ラボは非常によく整備されており、すべてが稼働する準備ができていました。
2024年6月
ソースからカーネルを再コンパイルするのがいかに簡単であるか、また、さまざまなカーネル機能の全体的な説明とカーネルの開発がどのように行われているかがわかりやすく説明されている点が評価できます。
2024年4月
ジョンを講師として迎えることができて本当に良かったです。彼は細かいことにこだわりすぎずに、それでも私が常に新しいことを学べるように、そして自分でさらに深く掘り下げるためにどこに行けばよいかがわかるように、物事をうまく説明してくれました。
2024年4月
これは私にとって初めての LFD オフライン トレーニングでした。ペースは良く、すべての資料をカバーできました。ジョンは準備が整っており、プロフェッショナルで、話し方も上手で、面白かったです。
2024年4月
一番気に入ったのはラボ、特にネットフィルターラボです。ここで自分のスキルを深めることができ、達成感も得られました。やりがいはありましたが、イライラするほどではありませんでした。
2024年4月
コースの教材は幅広く、多くの内容をカバーしています。その結果、どの分野に重点を置く必要があるか、学習を進めるためにどのクラスが必要かがわかります。
2024年4月
カーネルのセキュリティ機能と考えられるすべての機能について学ぶなど、知識の幅広さが気に入りました。また、さまざまな機能の使い方だけでなく、その実装方法についてもよく理解できたのも良かったです。