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操作をマスターする理由は、幅広いアプリケーションシナリオと強力な機能です。 1)Linuxは、開発者、システム管理者、テクノロジー愛好家に適しており、サーバー管理、組み込みシステム、コンテナ化テクノロジーで使用されています。 2)Linuxの学習は、ファイルシステム構造、シェルの使用、ユーザー許可管理、プロセス管理から始めることができます。 3)Linuxコマンドラインは、LS、MKDIR、CDなどのシェルを介してコマンドを実行し、リダイレクトおよびパイプライン操作をサポートするコアツールです。 4)高度な使用法には、バックアップスクリプトなどの自動化されたスクリプトの書き込み、TARコマンド、条件付き判断が含まれます。 5)一般的なエラーには、エコー、セットX、$?を介してデバッグできます。 6)パフォーマンス最適化の提案

Linuxシステムの5つの柱は次のとおりです。1。Kernel、2。SystemLibrary、3。Shell、4。FileSystem、5。SystemTools。カーネルはハードウェアリソースを管理し、基本的なサービスを提供します。システムライブラリは、アプリケーション用の事前コンパイルされた機能を提供します。シェルは、ユーザーがシステムと対話するインターフェイスです。ファイルシステムはデータを整理して保存します。また、システムツールはシステム管理とメンテナンスに使用されます。

Linux Systemsでは、起動時に特定のキーを押すか、「sudosystemctlrescue」などのコマンドを使用することにより、メンテナンスモードを入力できます。メンテナンスモードを使用すると、管理者は、ファイルシステムの修復、パスワードのリセット、セキュリティの脆弱性など、干渉なしにシステムメンテナンスとトラブルシューティングを実行できます。

Linuxの初心者は、ファイル管理、ユーザー管理、ネットワーク構成などの基本操作をマスターする必要があります。 1)文件管理:使用mkdir、タッチ、ls rm 3)ネットワーク構成:ifconfig、echo、およびufwコマンドを使用します。これらの操作はLinuxシステム管理の基礎であり、それらをマスターすることでシステムを効果的に管理できます。

この記事では、LinuxのSudo特権を管理する方法について説明します。重要な焦点は、 /etc /sudoersの安全性とアクセスを制限することです。

この記事では、Google Authenticatorを使用してLinux上のSSH用の2要素認証(2FA)のセットアップ、インストール、構成、およびトラブルシューティング手順の詳細に関するガイドを提供します。 Enhanced Secなど、2FAのセキュリティ利益を強調しています

この記事では、Linuxシステムのパフォーマンスを監視するためにTop、HTOP、およびVMSTATを使用して、効果的なシステム管理のための独自の機能とカスタマイズオプションを詳述することについて説明します。

記事では、APT、Yum、およびDNFを使用してLinuxでソフトウェアパッケージの管理を行い、インストール、更新、および削除をカバーしています。さまざまな分布に対する機能と適合性を比較します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
