linux nx は、Linux の保護メカニズムである「No-eXecute」を指します。つまり、プログラム中のオーバーフローにより攻撃者のシェルコードがデータ領域で実行しようとするのを防ぐために、データは実行可能ではありません。操作の場合。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
Linux nx とは何ですか?
Linux プログラムで一般的に使用されるいくつかの保護メカニズム
1. NX (Windows の DEP)
NX: No-eXecute、DEP: データ実行防止
- つまり、データは実行可能ではないため、プログラム動作中のオーバーフローにより攻撃者のシェルコードがデータ領域で実行されるのを防ぎます。
- gcc はデフォルトで有効になっており、オプションは次のとおりです:
gcc -o test test.c // 默认情况下,开启NX保护 gcc -z execstack -o test test.c // 禁用NX保护 gcc -z noexecstack -o test test.c // 开启NX保护
2. PIE (ASLR)
PIE: 位置に依存しない実行可能ファイル、 ASLR: アドレス空間レイアウトのランダム化
- fpie/fPIE: 実行可能ファイルをコンパイルするために pie オプションをオンにするには、オプション
-pie
とともに使用する必要があります。ファイルは elf に共有ライブラリ属性を持たせるため、メモリ内のどこにでもロードして実行できます。似たものに fpic/fPIC がありますが、説明は https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
-fpic Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all constant addresses through a global offset table (GOT). The dynamic loader resolves the GOT entries when the program starts (the dynamic loader is not part of GCC; it is part of the operating system). If the GOT size for the linked executable exceeds a machine-specific maximum size, you get an error message from the linker indicating that -fpic does not work; in that case, recompile with -fPIC instead. (These maximums are 8k on the SPARC, 28k on AArch64 and 32k on the m68k and RS/6000. The x86 has no such limit.) Position-independent code requires special support, and therefore works only on certain machines. For the x86, GCC supports PIC for System V but not for the Sun 386i. Code generated for the IBM RS/6000 is always position-independent. When this flag is set, the macros `__pic__` and `__PIC__` are defined to 1. -fPIC If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding any limit on the size of the global offset table.This option makes a difference on AArch64, m68k, PowerPC and SPARC. Position-independent code requires special support, and therefore works only on certain machines. When this flag is set, the macros `__pic__` and `__PIC__` are defined to 2. -fpie -fPIE These options are similar to -fpic and -fPIC, but the generated position-independent code can be only linked into executables. Usually these options are used to compile code that will be linked using the -pie GCC option. -fpie and -fPIE both define the macros `__pie__` and `__PIE__`. The macros have the value 1 for `-fpie` and 2 for `-fPIE`.
- 違いはfpic /fPIC は共有ライブラリのコンパイルに使用され、fpie/fPIE は pie ファイルのコンパイルのオプションです。ドキュメントには、pic (位置独立コード) によって生成された共有ライブラリは、実行可能ファイルにのみリンクできると書かれています。その後、簡単な C プログラムを自分でコンパイルすれば、pie は正常に動作します。ネット上では、pie オプションで生成された位置に依存しないコードが This プログラムにあると考えられますが、fpie/fPIE に違いは見当たりません。マクロ定義が 1 と 2 の違いだけです。どうやら...
コンパイル コマンド (PIE はデフォルトでは有効になっていません):
gcc -fpie -pie -o test test.c // 开启PIE gcc -fPIE -pie -o test test.c // 开启PIE gcc -fpic -o test test.c // 开启PIC gcc -fPIC -o test test.c // 开启PIC gcc -no-pie -o test test.c // 关闭PIE
- ASLR (アドレス空間ランダム化) は、もともとスタック、ライブラリのアドレスのみをランダム化するように設計されていました。 、ヒープおよびその他のセグメント。 ASLR の値は、次のように
/proc/sys/kernel/randomize_va_space
に保存されます。
0 - プロセスのアドレス空間のランダム化がオフになっていることを示します。
1 - mmap、スタック、および vdso ページのベース アドレスをランダム化することを示します。
2 - 1 に基づいてスタック (ヒープ) のランダム化を増やすことを示します。 (デフォルト)
値の変更方法: echo 0 > /proc/sys/kernel/randomize_va_space
vDSO: 仮想動的共有オブジェクト;
mmap: メモリマッピング。 PIE
は、実行可能プログラムのランダムなベース アドレスを担当します。
以下は Wiki からの抜粋です:
位置独立実行可能ファイル (PIE) は、メイン実行可能バイナリのランダムなベース アドレスを実装し、2003 年から導入されています。同じアドレスのランダム性を提供します。
PIE は ASLR の一部であり、ASLR はシステム関数であり、PIE はコンパイル オプションです。
注: ヒープを割り当てる場合、mmap()
と brk()
の 2 つのメソッドがあり、malloc() によって制御されます。
メモリが割り当てられるときに呼び出され、割り当てが小さいときは brk、それ以外の場合は mmap、128k の差。
3. Canary (スタック保護)
Canary はスタックを保護し、関数が実行されるたびに Canary 値がスタック上にランダムに生成されます。その後、関数が実行から戻ると、Canary 値が検出され、矛盾する場合、システムは例外を報告します。
- Wiki:
- Canaries または カナリア語 は、バッファとスタック上の制御データの間に配置される既知の値ですバッファ オーバーフローが発生した場合、通常、最初に破損するデータはカナリアであるため、カナリア データの検証に失敗するとオーバーフローが警告され、その後、破損したデータを無効にするなどして対処できます。データ。カナリア値をセンチネル値と混同しないでください。
上で説明したように、カナリア値はバッファと制御データの間に配置されます。バッファがオーバーフローすると、値は上書きされます。エラーまたは攻撃があるかどうかを判断するため。バッファ オーバーフロー攻撃を軽減します。
- コンパイル オプション:
gcc -o test test.c //默认关闭 gcc -fno-stack-protector -o test test.c //禁用栈保护 gcc -fstack-protector -o test test.c //启用堆栈保护,不过只为局部变量中含有 char 数组的函数插入保护代码 gcc -fstack-protector-all -o test test.c //启用堆栈保护,为所有函数插入保护代码
4. RELRO (RELocation Read Only)
Linux には 2 つの RELRO モードがあります: "Partial RELRO 「
および 「完全な RELRO」
。 Linux では、部分的な RELRO がデフォルトで有効になっています。
部分的な RELRO:
- コンパイル コマンド:
gcc -o test test.c // デフォルトで部分的に有効になります
gcc -Wl, - z,relro -o test test.c // RELRO の一部をオンにします
gcc -z Lazy -o test test.c // パーツの一部をオンにします - ELF ファイルのさまざまな部分並べ替えられます。内部データ セクション (.got、.dtors など) はプログラムのデータ セクション (.data や .bss など) の前に配置されます。
- no plt が指す GOT は読み取りのみです。
- GOT テーブルを記述できます (上記とは異なるはずです)。
完全な RELRO:
- コンパイル コマンド:
gcc -Wl,-z,relro,-z,now -o test test.c // フル RELRO をオンにする
gcc -z now -o test test.c / / すべて有効にする - Partial モードのすべての機能をサポート;
- GOT テーブル全体が読み取り専用にマッピングされます。
gcc -z norelro -o a a.c // RELRO はオフ、つまり RELRO はありません
注:
- .dtors: .dtors で定義された共有ライブラリがロードされるときに呼び出されます;
- BSS エラーまたはデータ オーバーフロー エラーの場合、部分および完全 RELRO は ELF 内のデータ セグメントを保護します。上書きされてます。ただし、GOT テーブル上書き攻撃を軽減できるのは Full RELRO のみですが、プログラムは開始前にすべてのシンボルを解析する必要があるため、比較的コストがかかります。
- 関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がLinux NXとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Linux Recoveryモードを入力する手順は次のとおりです。1。システムを再起動し、特定のキーを押してGrubメニューを入力します。 2。[RecoveryMode)でオプションを選択します。 3. FSCKやrootなどの回復モードメニューで操作を選択します。リカバリモードを使用すると、シングルユーザーモードでシステムを開始し、ファイルシステムのチェックと修理を実行し、構成ファイルを編集し、システムの問題を解決するのに役立ちます。

Linuxのコアコンポーネントには、カーネル、ファイルシステム、シェル、および共通ツールが含まれます。 1.カーネルはハードウェアリソースを管理し、基本的なサービスを提供します。 2。ファイルシステムはデータを整理して保存します。 3.シェルは、ユーザーがシステムと対話するインターフェイスです。 4.一般的なツールは、毎日のタスクを完了するのに役立ちます。

Linuxの基本構造には、カーネル、ファイルシステム、およびシェルが含まれます。 1)カーネル管理ハードウェアリソースとUname-Rを使用してバージョンを表示します。 2)ext4ファイルシステムは、大きなファイルとログをサポートし、mkfs.ext4を使用して作成されます。 3)シェルは、BASHなどのコマンドラインインタラクションを提供し、LS-Lを使用してファイルをリストします。

Linuxシステムの管理とメンテナンスの重要な手順には、次のものがあります。1)ファイルシステム構造やユーザー管理などの基本的な知識をマスターします。 2)システムの監視とリソース管理を実行し、TOP、HTOP、その他のツールを使用します。 3)システムログを使用してトラブルシューティング、JournalCtlおよびその他のツールを使用します。 4)自動化されたスクリプトとタスクのスケジューリングを作成し、Cronツールを使用します。 5)セキュリティ管理と保護を実装し、iPtablesを介してファイアウォールを構成します。 6)パフォーマンスの最適化とベストプラクティスを実行し、カーネルパラメーターを調整し、良い習慣を開発します。

Linuxメンテナンスモードは、起動時にinit =/bin/bashまたは単一パラメーターを追加することにより入力されます。 1.メンテナンスモードの入力:GRUBメニューを編集し、起動パラメーターを追加します。 2。ファイルシステムを読み取りおよび書き込みモードに再マウントします:Mount-Oremount、RW/。 3。ファイルシステムの修復:FSCK/dev/sda1などのFSCKコマンドを使用します。 4.データをバックアップし、データの損失を避けるために慎重に動作します。

この記事では、DebianシステムのHadoopデータ処理効率を改善する方法について説明します。最適化戦略では、ハードウェアのアップグレード、オペレーティングシステムパラメーターの調整、Hadoop構成の変更、および効率的なアルゴリズムとツールの使用をカバーしています。 1.ハードウェアリソースの強化により、すべてのノードが一貫したハードウェア構成、特にCPU、メモリ、ネットワーク機器のパフォーマンスに注意を払うことが保証されます。高性能ハードウェアコンポーネントを選択することは、全体的な処理速度を改善するために不可欠です。 2。オペレーティングシステムチューニングファイル記述子とネットワーク接続:/etc/security/limits.confファイルを変更して、システムによって同時に開くことができるファイル記述子とネットワーク接続の上限を増やします。 JVMパラメーター調整:Hadoop-env.shファイルで調整します

このガイドでは、Debian SystemsでSyslogの使用方法を学ぶように導きます。 Syslogは、ロギングシステムとアプリケーションログメッセージのLinuxシステムの重要なサービスです。管理者がシステムアクティビティを監視および分析して、問題を迅速に特定および解決するのに役立ちます。 1. syslogの基本的な知識Syslogのコア関数には以下が含まれます。複数のログ出力形式とターゲットの場所(ファイルやネットワークなど)をサポートします。リアルタイムのログ表示およびフィルタリング機能を提供します。 2。syslog(rsyslogを使用)をインストールして構成するDebianシステムは、デフォルトでrsyslogを使用します。次のコマンドでインストールできます:sudoaptupdatesud

Debianシステムに適したHadoopバージョンを選択する場合、次の重要な要因を考慮する必要があります。1。安定性と長期的なサポート:安定性とセキュリティを追求するユーザーにとって、Debian11(Bullseye)などのDebianの安定したバージョンを選択することをお勧めします。このバージョンは完全にテストされており、最大5年のサポートサイクルがあり、システムの安定した動作を確保できます。 2。パッケージの更新速度:最新のHadoop機能と機能を使用する必要がある場合は、DebianのUnstableバージョン(SID)を検討できます。ただし、不安定なバージョンには互換性の問題と安定性のリスクがあることに注意する必要があります。 3。コミュニティのサポートとリソース:Debianには、豊富なドキュメントを提供できるコミュニティサポートが大きくなり、


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Dreamweaver Mac版
ビジュアル Web 開発ツール
