CentOSでバッファーオーバーフロー脆弱性に対する防御機能が有効になっているか確認する

カーネルパラメータやCPUに関する機能であまり普段設定する箇所ではないのですが、そのような設定項目があって有効になっている事の確認方法ぐらいは知っておいた方が良さそうです。

RedhatES5の資料になりますが下記資料を参考にしました。
NSA(National Security Agency)の『Guide to the Secure Configuration of Red Hat Enterprise Linux 5』
 

(1)ExecShieldが有効になっているか確認


 
1)ExecShieldとは?
 
・下記サイトの説明によると、特定のメモリー領域から命令を実行できないようするLinuxの機能で、バッファ・オーバーフロ-攻撃に対して有効な防御機能のようです。
Exec-Shieldとは
  
・デフォルトで有効になっているようですが、何かの手順ミスで無効になってしまっていないか確認します。
 
2)ExecShieldが有効になっている事を確認するには?
 
“kernel.exec-shield”、”kernel.randomize_va_space”というカーネルパラメータで制御されています。
 
sysctlコマンドで現時点で有効になっているか確認出来ます。
 

$ sysctl kernel.exec-shield
kernel.exec-shield = 1
 
$ sysctl kernel.randomize_va_space
kernel.randomize_va_space = 2

 
1と2の値の違いの意味はよく分かりませんが、有効にはなっているようです。
 

(2)Execute Disable (XD)、No Execute (NX)機能が有効になっているか確認


 
1)Execute Disable (XD)、No Execute (NX)機能とは?
 
・新しいのx86ファミリーの32ビットプロセッサーは、ページメモリ単位にコードの実行を保護する機能をサポートしています。
 この機能は、AMDプロセッサーではNo Execute (NX)、インテルプロセッサーではExecute Disable (XD)と呼ばれるそうです。
 
・この機能はバッファーオーバーフロー脆弱性に対する不正な攻撃を防ぐのに役立つので出来るだけ有効にすべきとの事です。
 
・その他のプロセッサー(Itanium、POWER、64ビットx86)はこの機能をサポートしていて、これらのプラットフォーム用の標準カーネルもサポートしているようです。
 
2)使用しているCPUがこの機能サポートしているか確認するには?
 
PAE(Physical Address Extension、物理アドレス拡張)とNX機能がサポートされているか確認します。
 
下記コマンドで確認します。
$ cat /proc/cpuinfo
 
①CPUが32ビットか64ビットか?
 
“flags”欄に”lm”の文字があれば64ビット
 
②PAEとNX機能がサポートされているか?
 
“flags”欄に”pxe”、”nx”の文字があればサポートされている。
 
3)x86システム上で新しいカーネルがインストールされているか確認する
 
32ビットカーネルの場合は、XDまたはNXサポートを有効にするためにkernel-PAEパッケージがインストールされている必要があります。(64ビットx86カーネルパッケージの場合は対応済みなので必要ありません。)
 
①OSが32ビットか64ビットか?
 
以下のコマンドで確認できます。
$ uname -m
 
②インストールする場合
 
下記コマンドでインストールします。
# yum install kernel-PAE
 
インストール後、必要に応じて、新しいカーネルが起動時にロードされるように/etc/grub.confを編集します。
 
4)BIOSでNX、XD機能を有効にする
 
システムによってはこの機能をBIOSで選択して有効にする必要があります。
BIOSの設定画面でXD、NX機能が有効になっていることを確認します。

関連記事の目次
 
ネットワーク、ポート番号
  • iptablesを使ってCentOSのファイアウォール設定
  • nmapでオープンしているポート番号とバージョンを確認
  •  
    yum、rpmパッケージ、サービス
  • CentOSで不要なサービスは起動しないようにする
  • RPMパッケージのインテグリティチェック
  •  
    パーミッション
  • cronで使用するファイルのパーミッション設定
  • CentOSのumaskの設定
  • ユーザーホームディレクトリ内の権限設定をセキュアにする
  • CentOSのパスワードファイルのパーミッション設定
  • findコマンドでファイル書込権限をいっせいにチェック
  • findコマンドでセットユーザ(グループ)IDが不要にセットされていないかチェック
  • findコマンドで所有者、グループが存在しないファイルを抽出
  •  
    ログイン、認証、パスワード、アカウント制御
  • ログイン時などに表示されるシステムバナーを変更するには?
  • CentOSのユーザーアカウントのパスワードポリシーを設定
  • pam_cracklibモジュールでパスワードポリシーを設定
  • pam_unix.soモジュールを使って過去のパスワード再使用を制限する
  • システムコンソールでのrootログインを制限する方法
  • suコマンドによるrootへのスイッチを制限する
  • root権限でのコマンド実行、sudoだと監査ログが取得できる
  • デーモン用アカウントなどに対しシェルを使用を無効にする
  • パスワード認証を失敗時にアカウントをロックアウトする設定
  • rootアカウントのPATH環境変数のセキュリティについて
  •  
    auditdでシステム監査
  • auditdを使ってシステム監査
  • auditdのログ容量の設定
  • auditd監査ルールの設定方法
  • auditdで時間設定変更操作を監査する
  • auditdでユーザー・グループ設定ファイル変更操作を監査する
  • auditdでネットワーク関連の設定変更を監査する
  • auditdでログイン記録のログファイルの変更を監査する
  • auditdでファイル所有者や権限の変更に関するイベントを監査する
  • auditdでsetuid、setgidプログラムの実行を監査する
  • auditdでマウント操作を監査する
  • auditdでファイル削除操作を監査する
  • auditdでsudo設定ファイルに対する操作を監査する
  • auditdでカーネルモジュールのロード、アンロードを監査する
  • マシン再起動後にauditdの設定変更を有効にする設定
  • ausearch、aureportで監査ログのサマリレポートを作成
  •  
    ツール
  • NTPのセキュリティを考慮した設定
  • セキュリティを考慮してX Windowsを設定または削除する方法
  • ファイルの改ざん対策用にTripwireを導入
  • CentOSにホスト型侵入検知ソフトAIDE(Advanced Intrusion Detection Environment)を導入
  •  
    トラブルシューティング
  • アイドルのシェルを自動で強制終了させるには?
  • CentOSでコアダンプを無効にする方法
  • Linuxのbash脆弱性CVE-2014-6271、Shellshockを修整
  • CentOSでバッファーオーバーフロー脆弱性に対する防御機能が有効になっているか確認する
  • VPSサーバーでスナップショットを取得
    ~障害に備え、リカバリーポイントを作成。
    VPSサーバーにログインして、設定内容を確認
    ~グローバルIPアドレス確認、SSHキーを作成。
    VPSサーバーにSSHでログイン
    ~Tera Term、SSH、公開鍵認証方式
    yumコマンドで最新のパッケージにアップデート
    ~全パッケージを最新にアップデート
    Apacheのインストール
    ~yumコマンドでApacheインストール、iptablesでファイアウォールの設定
    PHPとMySQLをインストール
    ~yumコマンドでPHP、MySQLインストール
    WinSCPを使ってWordPressをアップロード
    ~WinSCPをクライアントPCにインストール、ファイルアップロード方法
    WordPressをインストール
    ~MySQLでWordPress用データベース作成、wp-config.phpファイルの設定
    CentOSのファイアウォール設定
    ~iptablesを使ってネットワークフィルタリング設定を一から行う
    OpenSSHの設定をよりセキュアに
    ~ログイン制限、ポート変更、認証方式
    ApacheでTCPのTraceメソッドを無効にする
    ~Apacheの設定変更、Telnetで動作確認
    ヘッダーにApacheバージョンが表示されないようにする
    ~Apacheの設定変更、Telnetで動作確認
    Apacheでディレクトリ内一覧表示を無効にする
    ~autoindex_moduleのロードを無効にする
    セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
    ~MySQLの匿名ユーザーにパスワードを設定、または削除
    PHPのバージョンが表示されないようにする
    ~php.iniの設定変更
    WordPressディレクトリのパーミッションをセキュアに
    ~WordPress用ディレクトリの所有グループ、ユーザー、パーミッション設定
    パーマリンク設定時のApache設定
    ~WordPressパーマリンクの設定、Apache .htaccessの設定
    WordPressテーマの選定
    ~テーマ追加の特徴フィルターの項目、テンプレートキング
    WordPressで画像のアップロード、サイズ調整、リンクを設定
    ~アップロード画像の画像サイズ、サムネイル、画像編集、リンク設定
    更新可能なRPMパッケージのリストをメールで送信する
    ~yumコマンド、Bashスクリプト、Cron
    Linuxでディスク使用量が多いディレクトリを調べる方法(1)
    ~du --max-depth
    Linuxでディスク使用量が多いディレクトリを調べる方法(2)
    ~duコマンド、sortコマンド
    WordPressデータベースのバックアップとリストア
    ~コマンドラインでバックアップ、リストア
    WordPressのバージョンアップと旧バージョンへの戻し
    ~データベースとディレクトリのバックアップ、リストア
    BashスクリプトでWordPressデータベースを自動バックアップ
    ~MySQLデータベースをBash、Cronを使って自動バックアップ、メール通知
    BashスクリプトでDos攻撃など大量アクセスのログを検知
    ~Apacheアクセスログ、Dos、Cron、メール通知
    テーマ作成
     
    ブートストラップ3を使って自作テーマ作成
    ~Bootstrap3、自作テーマ作成、TwentyFourteen
    Bootstrapのフリーのテーマを使ってデザインを簡単にカスタマイズ
    ~Bootstrap3のスタイルをカスタマイズ
     
    WordPresssショートコード
     
    簡単なショートコードを作ってみる
    ~ショートコードの作り方
    ショートコードを使って関連記事のリンクを自動で挿入
    ~ショートコードの簡単なサンプル
    ショートコードを使ってディレクトリ内のファイル名を取得し、投稿内にリンクを挿入
    ~カスタムフィールド利用、PHPで日本語文字列検索などのコーディング
     
    AJAX、AngularJSなどその他応用
     
    WordPress投稿内でAngularJSを使用
    ~AngularJS、Bootstrap、アコーディオン
    Bootstrap3で作成したナビゲーションメニューをAngularJSに変更
    ~AngularJS、Bootstrap、自作テーマheder.php
    WordPressでAngularJSを使ったGoogleマップを使えるようにする
    ~AngularJSを使って投稿内にGoogleマップ

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください